🌳 存储结构
🌲系统常见的目录
目录名称 | 应放置的文件内容 |
---|
/boot | 开机所需的文件 —— 内核、开机菜单以及所需的文件等 | /dev | 以文件的形式存放任何设备与接口 | /etc | 配置文件 | /home | 用户主目录 | /bin | 存放单用户模式下开可以操作的命令 | /lib | 开机时用到的函数库,以及 /bin 与 /sbin 下面的命令要调用的函数 | /sbin | 开机过程中需要的命令 | /media | 用于挂载设备文件的目录 | /opt | 放置第三方的软件 | /root | 系统管理员的家目录 | /srv | 一些网络服务的数据文件目录 | /tmp | 任何人可以使用的 共享 临时目录 | /proc | 虚拟文件系统,例如系统内核和进程,外部设备以及网络状态等 | /usr/local | 用户自行安装软件 | /usr/sbin | Linux 系统开机时不会使用到的软件/命令/脚本 | /usr/share | 帮助和说明文件,也可以放置文件 | /var | 主要存放经常变化的文件,如日志 | /lost+found | 当文件系统发生错误时,将丢失文件片段存放在这里 |
🌲 物理设备的命名规则
常见的硬件设备以及文件名称
硬件设备 | 文件名称 |
---|
IDE 设备 | /dev/hd[a-d] | SCSI/SATA/U 盘 | /dev/sd[a-z] | Virtio 设备 | /dev/vd[a-z] | 软驱 | /dev/fd[0-1] | 打印机 | /dev/lp[0-15] | 光驱 | /dev/cdrom | 鼠标 | /dev/mouse | 磁带机 | /dev/st0 或 /dev/ht0 |
由于现在 IDE 设备已经很少见了,所以一般硬盘的设备都是以 /dev/sd 开头。而一台主机上可以有多块硬盘,因此系统采用 a~z 来代表 26 块不同的硬盘(默认是从 a 开始分配),而且硬盘的分区编号也很讲究:
- 主分区或扩展分区的编号从
1 开始,到 4 结束。 - 逻辑分区从编号
5 开始。
如果购买了云主机,会发现类似于 /dev/vda 或者 /dev/vdb 这样的设备。这种以 vd 开头的设备叫做 Virtio 设备。简单的来说就是虚拟化设备。
拿到一块新的硬盘存储设备后,先进行分区,然后格式化文件系统,最后才能正常的挂载使用。硬盘的分区取决于您的需求和硬盘的大小;也可以选择不进行分区,但必须对硬盘进行格式化处理。
🌲 挂载硬件设备
mount 命令: 该命令用于挂载文件系统,格式为: mount 文件系统 挂载目录 。 挂载是使用引荐设备前所执行的最后一步操作。只需要使用 mount 命令把硬盘设备或分区与一个目录文件进行关联,然后就能在这个目录中看到硬件设备中的数据了。
参数及其作用
参数 | 作用 |
---|
-a | 挂载所有在 /etc/fstab 中定义的文件系统 | -t | 指定文件系统的类型 |
在工作中,挂载一块网络存储设备,该设备的名字可能变来变去的。这是推荐使用UUID (Universally Unique Identifier,通用唯一识别码 ) ,进行挂载,该标识是每块独立硬盘的字符串,具有唯一性以及稳定性,特别适合挂载网络设备。
blkid 命令: 用于显示设备属性信息,全称为 block id ,语法格式为: block [设备] 。
用于挂载信息中,各字段的含义(/etc/fstab )
字段 | 意义 |
---|
设备文件 | 一般为设备的路径+设备名称,也可以是通用唯一识别码(UUID ) | 挂载目录 | 指定要挂载到的目录,需要在挂载之前创建好 | 格式类型 | 指定文件系统的格式,比如 Ext3 ,Ext4 ,XFS ,SWAP ,iso9660 等 | 权限选项 | 若设置为 defaults ,则默认权限 rw ,suid ,dev ,exec ,auto ,nouser ,async 。也可以添加 _netdev 参数,加上之后系统会等联网之后再次尝试挂载网络存储设备。从而避免开机时间过长或者失败的情况。 | 是否备份 | 若为 1 则开机后使用 dump 进行磁盘备份,为 0 则不备份 | 是否自检 | 若为 1 则开机后自动进行磁盘自检,为 0 则不自检 |
df 命令:
该命令用于查看已经挂载的磁盘空间使用情况,全称为 disk frww ,语法格式为:df -h
umount 命令:
该命令用于卸载设备或文件系统,全称为:un mount ,语法格式为 umount [设备文件/挂载目录]
🌰
umount /dev/vdb1
lsblk 命令:
若我们硬盘中的设备,分区特别多,我们 lsblk 命令以树状图的形式列举。该命令用于查看已挂载的空间的使用情况。全称为:list block id 。
fdisk 命令:
用于新建,修改,删除磁盘的分区表信息,英文全称为: format disk ,语法格式为: fdisk 磁盘名称 。在 linux 系统中,管理硬盘设备最常用的方法当属 fdisk 命令。它提供了添加,删除,转换分区等功能。
参数及其作用
参数 | 作用 |
---|
m | 查看全部可用的参数 | n | 添加新的分区 | d | 删除某个分区信息 | l | 列出所有可用的分区类型 | t | 改变某个分区的类型 | p | 查看分区表信息 | w | 保存并且退出 | q | 不保存直接退出 |
在 linux 系统中用于格式化的操作命令是 mkfs 。
du 命令:
查看分区或目录所占用的磁盘容量大小,全称为:disk usage ,语法格式为:du -sh 目录名称 。
🌲 磁盘容量配额
Linux系统的设计初衷就是让许多人一起使用并执行各自的任务,从而成为多用户、多任务的操作系统。但是,硬件资源是固定且有限的,如果某些用户不断地在Linux系统上创建文件或者存放电影,硬盘空间总有一天会被占满。针对这种情况,root管理员就需要使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。
quota 技术进行磁盘容量配额管理,从而去限制用户的硬盘可用容量或者所能创建的最大文件个数。quota 技术还有软限制和硬限制。
RHEL 8 中,已经安装了 quota 磁盘配额服务程序包,但是存储设备默认是没有开启的。此时需要手动编辑配置文件并重启系统,让系统目录支持 quota 磁盘配额技术。
对于早期的 Linux 系统,或者 RHEL5/6 系统,早期想要磁盘支持 quota 磁盘容量配额服务,使用的是 usrquota 参数。重启系统,使用 mount 命令查看,既可以发现 /boot 目录已经支持 quota 技术了。
xfs_quota 命令:
用于设置磁盘容量配额,语法格式为:xfs_quota [参数]配额 文件系统
参数含义
参数 | 含义 |
---|
-c | 用于以参数的形式设置要执行的命令 | -x | 专家模式,能对 quota 进行更复杂的配置 |
切换到 tom 用户,在创建 8m 的文件时候,受到了系统的限制。
edquota 命令:
用于管理系统的磁盘配额,全称为:edit quota ,语法格式为:edquota [参数] 用户名 。
在为用户设置了 quota 磁盘容量配额限制后,可以使用 edquota 命令按需要修改限额的数值。
参数以及作用
参数 | 作用 |
---|
-u | 对某个用户进行设置 | -g | 对某个用户组进行设置 | -p | 复制原有的规则到新的用户/组 | -t | 限制宽限期限 |
🌲 VDO (虚拟数据优化)
通过压缩或删除存储设备上的数据来优化存储空间的技术。
VDO 针对各种类型文件的压缩效果
RHEL/CentOS 8 系统中默认已经启用了VDO 技术。VDO 技术现在是红帽公司自己的技术,兼容性自然没得说。如果您所用的系统没有安装VDO 的话也不要着急,用dnf命令即可完成安装:
首先,创建一个全新的 VDO 卷。
新添加进来的物理设备就是使用 vdo 命令来管理的,其中 name 参数代表新的设备卷的名称;device 参数代表由哪块磁盘进行制作;vdoLogicalSize 参数代表制作后的设备大小。依据红帽公司推荐的原则,20GB 硬盘将翻成200GB 的逻辑存储:
在创建成功后,使用 status 参数查看新建卷的概述信息:
[root@linuxprobe ~]
VDO status:
Date: '2022-06-01 05:59:08+08:00'
Node: linuxprobe.com
Kernel module:
Loaded: true
Name: kvdo
Version information:
kvdo version: 6.2.0.293
Configuration:
File: /etc/vdoconf.yml
Last modified: '2022-06-01 05:57:55'
VDOs:
storage:
Acknowledgement threads: 1
Activate: enabled
Bio rotation interval: 64
Bio submission threads: 4
Block map cache size: 128M
Block map period: 16380
Block size: 4096
CPU-work threads: 2
Compression: enabled
Configured write policy: auto
Deduplication: enabled
Device mapper status: 0 419430400 vdo /dev/sdb normal - online online 1051408 5242880
Emulate 512 byte: disabled
Hash zone threads: 1
Index checkpoint frequency: 0
Index memory setting: 0.25
Index parallel factor: 0
Index sparse: disabled
Index status: online
Logical size: 200G
Logical threads: 1
Max discard size: 4K
Physical size: 20G
Physical threads: 1
Slab size: 2G
Storage device: /dev/sdb
有上可见,在输出信息中包含了 VDO 卷创建的时间、主机名、版本、是否压缩(Compression )及是否删重(Deduplication )等关键信息。
新建的 VDO 卷设备会被乖乖地存放在 /dev/mapper 目录下,并以设备名称命名,对它操作就行。另外,挂载前可以用 udevadm settle 命令对设备进行一次刷新操作,避免刚才的配置没有生效。
打开 /etc/fstab 文件,把对应的字段填写完整。建议再加上 _netdev 参数,表示等系统及网络都启动后再挂载 VDO 设备卷,以保证万无一失。
🌲 软硬方式链接
Linux 系统中存在软链接和硬链接两种不同的类型。
-
软链接(soft link): 也叫符号链接( symbolic link ),仅仅包含所链接文件的名称和路径,很像一个记录地址的标签。当原始文件被删除或移动后,新的链接文件也会随之失效,不能被访问。可以针对文件、目录设置软链接,跨文件系统进行链接也不是问题。从这一点来看,它与Windows系统的“快捷方式”具有一样的性质。 -
硬链接(hard link): 可以将它理解为一个“指向原始文件 block 的指针”,系统会创建出一个与原来一模一样的 inode 信息块。所以,硬链接文件与原始文件其实是一模一样的,只是名字不同。每添加一个硬链接,该文件的 inode 个数就会增加 1 ;而且只有当该文件的 inode 个数为 0 时,才算彻底将它删除。换言之,由于硬链接实际上是指向原文件 block 的指针,因此即便原始文件被删除,依然可以通过硬链接文件来访问。需要注意的是,由于技术的局限性,不能跨分区对目录文件进行硬链接。
参数和作用
参数 | 作用 |
---|
-s | 创建“符号链接”(如果不带-s参数,则默认创建硬链接) | -f | 强制创建文件或目录的链接 | -i | 覆盖前先询问 | -v | 显示创建链接的过程 |
🌰
ln -s old.txt new.txt
ln old.txt new.txt
|