目录
1. Linux磁盘分区
Linux磁盘分区是将物理硬盘划分为多个独立区域的过程,每个区域可以单独使用文件系统进行管理。这些独立区域称为分区。磁盘分区的主要目的是为了更好地组织和管理数据,提高系统性能,以及在多操作系统共存时提供隔离。
分区创建后需要格式化为特定的文件系统,以便操作系统可以存储和读取数据。常见的文件系统类型有:
XFS:是一种高性能的日志文件系统,特别擅长于处理大文件,可支持上百万 T 字节的存储空间。由于 XFS 文件系统开启日志功能,所以即便发生宕机也不怕数据遭到破坏,这种文件系统可以根据日志记录在短时间内进行数据恢复。
SWAP:交换文件系统,用于为 Linux 系统建立交换分区。交换分区的作用相当于虚拟内存,能够在一定程度上缓解物理内存不足的问题。一般建议将交换分区的大小设置为物理内存的 1.5~2 倍。例如,对于拥有 512MB物理内存的主机,其交换分区的大小建议设置为 1024MB。如果服务器的物理内存足够大(如 8GB 以上),也可以不设置交换分区。交换分区不用于直接存储用户的文件和目录等数据。
EXT4:第 4 代扩展文件系统,用于存放文件和目录数据的分区,是 Linux 系统中默认使用的文件系统(CentOS 7 默认使用 XFS)。EXT4 是典型的日志型文件系统,其特点是保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。
1.1 命令
接下来讲一下磁盘分区常用的命令
1.1.1 fdisk
使用主启动记录(MBR) 磁盘分区,MBR总共512字节, 前446字节是主引导记录,分区表保存在MBR扇区中的第447-510字节中。分区表有4个分区记录区,每个分区记录区占16字节 主启动记录(MBR)磁盘分区支持最大卷为2.2TB,每个磁盘最多有4个主分区,或3个主分区、1个扩展分区和在扩"展分区里面分多个逻辑分区。
fdisk -l 查看硬盘的整体情况和分区情况
a 设置可引导标记
b 修改bsd的磁盘标签
c 设置DOS操作系统兼容标记
d 删除一个分区
l 显示已知的分区类型,其中82为 Linux swap分区,83为Linux分区
m 显示帮助菜单
n 增加一个新的分区
o 创建一个新的空白的DOS分区表
p 显示磁盘当前的分区表
q 退出fdisk程序,不保存任何修改
s 创建一个新的空白的Sun磁盘标签
t 改变一个分区的系统号码
u 改变显示记录单位
v 对磁盘分区表进行验证
w 保存修改结果并退出fdisk程序
x 特殊功能,不建议初学者使用
注:以上选项都是在交互模式下使用,在分区步骤里会讲如何使用。
1.1.2 lsblk
以树形查看磁盘分区
-a 显示所有设备
-b 以bytes方式显示设备大小
-e 排除设备
-f 显示文件系统信息
-h 显示帮助信息
-r 使用原始格式显示
-t 显示拓扑结构信息
1.1.3 gdisk
gdisk类似于fdisk,用法也不尽相同,只是gdisk专门设计用于处理 GPT 分区表,而且支持的磁盘容量远大于MBR的2TB限制,也支持更多分区,并使用 CRC 校验,提供更高的数据完整性。
b 将GPT数据备份到一个文件
c 更改分区名称
d 删除一个分区
i 显示分区详细信息
l 列出已知分区类型。此处8200是Linux swap,8300是Linux filesystem(对应fdisk的82和83)。还有一个8e00是Linux LVM
n 增加一个新的分区
o 创建一个新的空白的GPT分区表
p 显示当前磁盘的分区表
q 退出gdisk程序,不保存任何修改
r 恢复和转换选项(仅限专家)
s 排序分区
t 改变分区的类型
v 验证磁盘分区表
w 将分区表写入裁判并退出(保存并退出)
x 额外功能(仅限专家)
? 显示帮助信息
1.1.4 mount
挂载文件系统、ISO镜像到指定文件夹
mount [-t 类型] 存储设备 挂载点目录
umount命令用来卸载已挂载的文件系统
1.1.5 创建系统文件(格式化)
mkfs -t xfs /dev/sdb1 或者 mkfs.xfs /dev/sdb1
1.1.6 df
df命令用来检查文件系统的磁盘空间占用情况
df -a 递归地显示指定目录中各文件及子目录中各文件占用的数据块数
-s:对每个Names参数只给出占用的数据块总数
-T:显示文件系统类型。
-k:以1024字节为单位列出磁盘空间使用情况。
-x:跳过在不同文件系统上的目录不予统计。
-l:计算所有的文件大小,对硬链接文件则计算多次。
-i:显示inode信息而非块使用量。
-h:以容易理解的格式印出文件系统大小,例如136KB、24MB、21GB。
1.2 分区步骤
接下来讲一下详细步骤
首先打开虚拟器设置,挂不挂起都无所谓,能打开就行
点击下方添加,添加一块硬盘,然后全部默认点到头,然后添加完后记得确定。
添加完后我们打开虚拟机,输入fdisk -l查看磁盘的整体情况和分区情况。
这里我们并没有发现新的硬盘,我们需要通过命令来重新扫描SCSI总线。
输入命令:echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
有时候写入host0后效果不明显,三个都输入一下就好了。
现在我们再fdisk -l 就可以发现刚才新添加的硬盘了
我这里是因为添加的时候添加了两个,所以除了sdb还有sdc
添加完硬盘之后我们就可以开始对硬盘进行分区啦。
选择想要进行分区的硬盘 比如我选择sdc,键入命令:fdisk /dev/sdc
回车后我们便进入了交互模式
根据上述命令选项,我们首先键入'n' 新建一片分区,然后按'p'选择主分区,注意,这里的p是选择主分区,不是显示当前磁盘的分区表。然后给主分区编号'1',接下来都敲击回车,代表选择默认值。之后再键入't',输入'8e',这里8e代表着将分区的类型更改为LVM,接下来会讲,暂时先这么设置。
这时候我们再输入'p',显示当前磁盘的分区表,可以看到,sdc1显示出来了,至此磁盘的分区便完成了,最后,输入'w'保存退出,不然功亏一篑。
这里磁盘分区完成后,我们一般会对磁盘的分区进行格式化,使用命令
mkfs.xfs /dev/sdc1 或者 mkfs -t xfs /dev/sdc1
2. LVM
2.1 概述
LVM全称Logical Volume Manager,是一种用于在 Linux 环境中管理磁盘驱动器和存储卷的系统。它提供了一个更高层次的抽象,使得磁盘和分区的管理更为灵活和方便。LVM由物理卷(PV)、卷组(VG)、逻辑卷(LV)组成,用户可以动态调整卷的大小,添加或移除物理卷,以及在逻辑卷上创建快照。
2.1.1 物理卷(PV)
物理卷是LVM机制的基本存储设备,通常对应为一个普通分区或整个硬盘。创建物理卷时,会在分区或硬盘的头部创建一个保留区块,用于记录LVM的属性,并把存储空间分割成默认大小为4MB的基本单元(Physical Extent,PE),从而构成物理卷(例:/dev/sdb1 /dev/sdc1)。PE的值可以是4、8、16、32、64。PE越小硬盘利于率高,但是每个VG块的最大数65534,所以PE大小决定了VG卷组大小
2.1.2 卷组(VG)
由一个或多个物理卷组成一个整体,即称为卷组,在卷组中可以动态地添加或移除物理卷
2.1.3 逻辑卷(LV)
逻辑卷建立在卷组之上,与物理卷没有直接关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中“切出”一小块空间,作为用户创建文件系统的基础,这一小块空间就成为逻辑卷。
2.2 LVM管理命令
scan扫描 如: pvsacn 、vgscan 、 lvscan
create创建 create也和上面一样
display显示
remove移除
extend扩展 特别的,物理卷无法扩展
reduce减少 同样的物理卷也无法减少
2.3 LVM操作步骤
2.3.1 创建
前置步骤和硬盘分区一样,前面我们讲到了,硬盘分区成功后键入'w'保存并退出。
接下来我们先创建物理卷 pvcreate /dev/sdc1 ,显示创建成功
然后创建卷组,卷组名为vgnamec
vgcreate vgnamec /dev/sdc1,显示创建成功
然后再创建逻辑卷,逻辑卷名为lvnamec,容量为1GB(这里容量要注意,当时我们创建硬盘分区的时候,假如回车那一波,没有选择默认,自己输入了大小,那么这里就得根据当时输入的那个大小做相应调整,比那个小就行),生产的文件路劲为/dev/vgnamec/lvnamec
lvcreate -L 1G -n lvnamec vgnamec
显示已创建,我这里就用的1G,因为我之前创建硬盘分区的时候只分了5GB,上面的每一步操作完成后都可以进行比如pvdisplay,vgdisplay等命令展示出来看一下。
最后对逻辑卷进行格式化,创建XFS文件系统,并且挂载到/opt目录下
mkfs -t xfs /dev/vgnamec/lvnamec 格式化
mount /dev/vgnamec/lvnamec /opt 挂载到目录下
这里直接跟着敲就行了,挂在完成后这个目录的其他文件暂时都被隐藏了,卸载挂载就可以了。
但是这里的mount挂载命令是临时挂载,想要永久挂载需要vim /etc/fstab文件,进入文件编辑模式后,在后面添加需要挂载的设备和挂载点,如 /dev/sdc1 /opt/guazai ext4 defaults 0 2
2.3.2 扩容
vgextend vgnamec /dev/sdc2
lvextend -L +10G /dev/vgnamec/lvnamec
xfs_growfs /dev/vgnamec/lvnamec 刷新xfs文件系统容量
resize2fs /dev/vgnamec/lvnamec 刷新ext4类型文件系统容量
2.3.3 总结
创建 LVM 流程:
pvcreate 创建 pv -> vgcreate 创建卷组 -> lvcreate 创建逻辑卷 -> mkfs.xfs lv 格式化-> mount 挂载
删除 LVM 流程:
umount 卸载 -> lvremove lv 移出卷组中所有逻辑卷-> vgremove vg 移出卷组-> pvremove 移出 pv
3. 磁盘配额
当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,同时也可能会出现服务程序崩溃、系统无法启动等故障。
为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可在Centos系统中,不同的文件系统使用不同磁盘配额配置管理工具。
3.1 步骤
首先检查是否已安装xfs_quota软件包
rpm -q xfsprogs quota
如果没有安装的话
yum install xfsprogs quota -y
然后以支持配额功能的方式挂载文件系统
umount /dev/vgnamec/lvnamec 先卸载挂载
重新挂载,添加挂载参数"usrquota, grpquota"用于增加对用户、组配额功能的支持
mount -o usrquota, grpquota /dev/vgnamec/lvnamec /opt
或者用如下命令
vim /etc/fstab
/dev/vgname1/lvname1/opt xfs defaults, usrquota, grpquota 00
umount /dev/vgname1/lvname1
mount -a #-a选项,将/etc/ fstab的所有内容重新加载
添加一个新用户
useradd zhangsan
passwd zhangsan 设置密码
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M isoft=10 ihard=20 zhangsan' /opt
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用。
-c: 表示直接调用管理命令。
-u: 指定用户账号对象
-g: 指定组账号对象
bsoft: 设置磁盘容量的软限制数值(默认单位为KB)。
bhard:设置磁盘容量的硬限制数值(默认单位为KB)。
isoft:设置磁盘文件数的软限制数值。
ihard:设置磁盘文件数的硬限制数值。
软限制是指用户或组的磁盘使用量可以达到的最大值。当达到软限制时,系统通常会发出警告,但用户仍然可以继续使用磁盘空间,直到达到硬限制为止。
硬限制是指用户或组的磁盘使用量的绝对最大限制。一旦达到硬限制,用户或组将无法再分配更多的磁盘空间,除非管理员干预或者释放了足够的空间。
#查看zhangsan磁盘容量限制
xfs_quota -c 'quota -uv zhangsan' /opt/
#查看zhangsan文件数限制
xfs_quota -c 'quota -i -uv zhangsan' /opt/
接下来我们来验证磁盘配额功能
chmod 777 /opt 给opt文件赋予所用用户最高权限
su zhangsan 切换到zhangsan用户
cd /opt
#验证磁盘容量超限
dd if=/dev/zero of=/opt/test.txt bs=10M count=12
#验证磁盘文件数超限
touch {aa,bb, cc,dd,ee, ff} .txt
dd命令是一一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
"of="指定输出设备(或文件)
"bs=" 指定读取数据块的大小
"count=”指定读取数据块的数量 /dev/zero “零"设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件。