-
常见文件系统
Ext2:最早可追溯到1993年,是Linux系统第一个商业级文件系统,基本沿袭的是Unix文件系统的设计标准。但由于不包含读写日志功能,数据丢失可能性很大,能不用就不要用,或者顶多建议用于SD存储卡或U盘。
Ext3:是一款日志文件系统,它会把整个硬盘的每个写入动作的细节都预先记录下来,然后再实际操作,以便在发生异常宕机后能回溯追踪到被中断的部分。Ext3能够在系统异常宕机时避免文件系统资料丢失,并能自动修复数据的不一致与错误。然而,当硬盘容量较大 时,所需的修复时间也会很长,而且也不能百分之百地保证资料不会丢失。
Ext4:Ext3的改进版本,作为RHEL 6系统中的默认文件管理系统,它支持的存储容量高达1EB(1EB=1,073,741,824GB),且能够有无限多的子目录。另外,Ext4文件系统能够批量分配block块,从而极大地提高了读写效率。现在很多主流服务器也会使用。
XFS:是一种高性能的日志文件系统,而且是RHEL 7/8中默认的文件管理系统,它的优势在发生意外宕机后尤其明显,即可以快速地恢复可能被破坏的文件,而且强大的日志功能只用花费极低的计算和存储性能。并且它最大可支持的存储容量为18EB,这几乎满足了所有 需求。
计算机系统在发展过程中产生了众多的文件系统,为了使用户在读取或写入文件时不用关心底层的硬盘结构,Linux内核中的软件层为用户程序提供了一个VFS(Virtual File System,虚拟文件系统)接口,这样用户实际上在操作文件时就是统一对这个虚拟文件系统进行操作了。从中可见,实际文件系统在VFS下隐藏了自己的特性和细节,这样用户在日常使用时会觉得“文件系统都是一样的”,也就可以随意使用各种命令在任何文件系统中进行各种操作了(比如使用cp命令来复制文件)。
VFS虚拟文件系统也有点像是一个翻译官,我们不需要知道对方的情况,只要告诉VFS想进行的操作是什么,它就会自动判断对方能够听得懂什么指令,然后翻译并交代下去,让用户不用操心这些“小事情”,专注于自己的操作。
-
挂载硬件设备
mount命令:
用于挂载文件系统,格式为“mount 文件系统 挂载目录”
对于比较新的Linux系统来讲,一般不需要使用-t参数来指定文件系统的类型,Linux系统会自动进行判断。而mount 中的-a参数则厉害了,它会在执行后自动检查/etc/fstab文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作。
mount命令中的参数以及作用:
参数 | 作用 |
-a | 挂载所有在/etc/fstab中定义的文件系统 |
-t | 指定文件系统的类型 |
# mount /dev/sdb2 /backup
blkid命令:用于显示设备的属性信息,英文全称为:“block id”,语法格式为:“blkid [设备名]”。
# blkid
#/dev/sdb2: UUID="478fRb-1pOc-oPXv-fJOS-tTvH-KyBz-VaKwZG" TYPE="ext4" PARTUUID="eb23857a-02"
# mount UUID=478fRb-1pOc-oPXv-fJOS-tTvH-KyBz-VaKwZG /backup
自动挂载文件 /etc/fstab
用于挂载信息的指定填写格式中,各字段所表示的意义
字段 | 意义 |
设备文件 | 一般为设备的路径+设备名称,也可以写唯一识别码(UUID,Universally Unique Identifier) |
挂载目录 | 指定要挂载到的目录,需在挂载前创建好 |
格式类型 | 指定文件系统的格式,比如Ext3、Ext4、XFS、SWAP、iso9660(此为光盘设备)等 |
权限选项 | 若设置为defaults,则默认权限为:rw, suid, dev, exec, auto, nouser, async |
是否备份 | 若为1则开机后使用dump进行磁盘备份,为0则不备份 |
是否自检 | 若为1则开机后自动进行磁盘自检,为0则不自检 |
fdisk命令:
新建、修改及删除磁盘的分区表信息,英文全称为:“format disk”,语法格式为:“fdisk 磁盘名称”。
它提供了集添加、删除、转换分区等功能于一身的“一站式分区服务”。不过与前面讲解的直接写到命令后面的参数不同,这条命令的参数是交互式的,一问一答的形式,因此在管理硬盘设备时特别方便,可以根据需求动态调整。
fdisk命令中的参数以及作用:
参数 | 作用 |
m | 查看全部可用的参数 |
n | 添加新的分区 |
d | 删除某个分区信息 |
l | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区表信息 |
w | 保存并退出 |
q | 不保存直接退出 |
有些时候系统并没有自动把分区信息同步给Linux内核,而且这种情况似乎还比较常见(但不能算作是严重的bug)。我们可以输入 partprobe命令 手动将分区信息同步到内核,而且一般推荐连续两次执行该命令,效果会更好。如果使用这个命令都无法解决问题,那么就重启计算机吧,这个杀手锏百试百灵,一定会有用的。
mkfs命令:
格式化操作
# mkfs.xfs /dev/sdb1
du命令:
用查看分区或目录所占用的磁盘容量大小,英文全称为:“Disk Usage”,语法格式为:“du -sh 目录名称”。
# du -sh /*
mkswap命令:
用于对新设备做交换分区格式化,语法格式为:“mkswap 设备名称”。
swapon命令:
用于激活新的交换分区设备,英文全称为:“swap on”,语法格式为:“swapon设备名称”。
- 磁盘容量配额
root管理员可以使用磁盘容量配额服务来限制某位用户或某个用户组针对特定文件夹可以使用的最大硬盘空间或最大文件个数,一旦达到这个最大值就不再允许继续使用。可以使用quota技术进行磁盘容量配额管理,从而限制用户的硬盘可用容量或所能创建的最大文件个数。quota技术还有软限制和硬限制的功能。
软限制:当达到软限制时会提示用户,但仍允许用户在限定的额度内继续使用。
硬限制:当达到硬限制时会提示用户,且强制终止用户的操作。
RHEL 8系统中已经安装了quota磁盘容量配额服务程序包,但存储设备却默认没有开启对quota技术的支持,此时需要手动编辑配置文件再重启一次,让系统中的启动目录(/boot)能够支持quota磁盘配额技术。
UUID=812b1f7c-8b5b-43da-8c06-b9999e0fe48b /boot xfs defaults,uquota 1 2
xfs_quota命令:
用于管理设备的磁盘容量配额,语法格式为:“xfs_quota [参数] 配额 文件系统”。# xfs_quota -x -c ‘limit bsoft=3m bhard=6m isoft=3 ihard=6 tom‘ /boot
edquota命令:
用于管理系统的磁盘配额,英文全称为:“edit quota”,语法格式为:“edquota [参数] 用户名”。edquota命令中可用的参数以及作用
参数 作用 -u 对某个用户进行设置 -g 对某个用户组进行设置 -p 复制原有的规则到新的用户/组 -t 限制宽限期限
VDO虚拟数据优化
VDO技术的关键就是对硬盘内原有的数据进行删重操作,理论上只用原来的一半空间就够了,有点类似于大家平时用的网盘服务,第一次正常上传特别慢,第二次上传的文件几乎可以达到“秒传”的效果,无需再多占用一份空间及漫长等待。除了删重操作,还可以对日志和数据库进行自动压缩,进一步减少存储浪费的情况
第1步:创建一个全新的VDO卷
# vdo create --name=storage --device=/dev/sdc --vdoLogicalSize=200G
第2步:创建成功后,使用status参数查看新建卷的概述信息。# vdo status --name=storage
第3步:对新建卷做格式化操作并挂载使用。# mkfs.xfs /dev/mapper/storage# udevadm settle 对设备进行一次刷新操作,避免刚刚的配置没有生效# mkdir /storage# mount /dev/mapper/storage /storage如果想看下设备的实际使用情况,用vdostats命令即可,human-readable参数作用是存储容量自动进位,以人们更易读的单位输出(显示20G而不是20971520K):
# vdostats --human-readable
这里显示的Size是实际物理存储空间大小,20.0G是硬盘的大小,如果想看逻辑存储空间可以用df命令进行查看:# df -h
第4步:随便复制来一个大文件,看看占用了多少容量,以及空间节省率Space saving是多少呢?# ls -lh /media/cdrom/images/install.img# cp /media/cdrom/images/install.img /storage/# vdostats --human-readable
第5步:将设备设置成永久挂载生效,一直提供服务。
对于这种逻辑存储设备,其实不太建议用/dev/mapper/storage作为设备名进行挂载,不如试试前面所说的UUID唯一标识符# blkid /dev/mapper/storage# vim /etc/fstab
- 书本笔记截图