一、文档介绍
本文档描述 Linux 操作系统下多种场景下的磁盘操作情况。
二、名词解释
(一) 磁盘分区工具
fdisk和parted都是 Linux 系统中用于磁盘分区的工具。
两者的区别是:
- fdisk主要支持 MBR 分区表,MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。
- parted支持 MBR 分区表 和 GPT 分区表,GPT分区表可以支持更大的硬盘容量和更多的分区数量。
(二) 逻辑卷管理器
LVM(Logical Volume Manager)逻辑卷管理器,是一种高级磁盘管理工具,可以帮忙用户对存储卷进行灵活的管理。使用LVM可以方便的扩展、缩小、移动逻辑卷,从而更好地利用存储资源。LVM通过将物理卷(Physical Volume)、卷组(Volume Group)、逻辑卷(Logical Volume)进行组合,形成一个灵活的存储管理系统。
三、磁盘操作
(一) 查看磁盘信息
1. 查看系统中所有磁盘和分区信息
fdisk -l
2. 查看系统中所有块设备
lsblk
3. 查看系统中所有块设备的标识信息
blkid
(二) 标准磁盘管理
1. 新增一块磁盘
例如:新增磁盘为/dev/sdb
# 查看磁盘
fdisk -l
# 分区
fdisk /dev/sdb
## (1) n 创建新分区
## (2) p 选择主分区
## (3) 填写分区号,回车选择默认
## (4) 填写起始和结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)
## (5) p 查看现有分区
## (6) w 写入磁盘
# 格式化
/sbin/mkfs.xfs -f -i size=2048 "/dev/sdb1"
# 挂载
mkdir -p /data
echo '/dev/sdb1 /data xfs defaults 0 0' >> /etc/fstab
mount -a
注意:在未执行w写入磁盘之前,都可进行更改。
2. 在原有磁盘上扩容,创建新分区
此操作与新增磁盘的操作一样,区别在于是使用新分区进行
# 查看磁盘
fdisk -l
# 分区
fdisk /dev/sdb
## (1) n 创建新分区
## (2) p 选择主分区
## (3) 填写分区号,回车选择默认
## (4) 填写起始和结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)
## (5) p 查看现有分区
## (6) w 写入磁盘
# 格式化
/sbin/mkfs.xfs -f -i size=2048 "/dev/sdb2"
# 挂载
mkdir -p /data2
echo '/dev/sdb2 /data2 xfs defaults 0 0' >> /etc/fstab
mount -a
3. 在原有磁盘上扩容,扩容旧分区
上述示例中,/dev/sdb2(即/data2)只分配了 1G 空间,本例中需要对/dev/sdb2进行扩容。
注意:1. 本方法需要修改分区表,存在一定危险性,在操作前记得进行数据备份。
2. 本方法只适用于最后一个分区,特别是因为MBR分区表达到4个,无法继续创建分区的情况。
# 查看扩容目录数据
ls -alh /data2/
# 取消挂载目录
umount /data2
# 查看磁盘,记住需要删除分区的起始和结束扇区
fdisk -l
# 分区
fdisk /dev/sdb
## (1) p 查看现有分区
## (2) d 删除最后一个分区号
## (3) p 查看现有分区
## 此时只是逻辑删除,未执行w写入磁盘,数据仍然存在,误操作的话CTRL+C退出即可
## (4) n 创建新分区
## (5) p 选择主分区
## (6) 填写分区号,回车选择默认
## (7) 填写起始扇区
## 重要:确认默认扇区号是否与删除前的一致。
## 重要:一致的话,按回车
## 重要:不一致的话,需要填写为删除前记录的起始扇区号
## (8) 填写结束扇区(不选择,表示剩余所有扇区,即所有剩余容量)
## (9) p 查看现有分区
## (10) w 写入磁盘
# 不重启重载分区
partprobe
# 挂载磁盘
mount -a
此时发现磁盘仍然显示为原有大小,需要进行磁盘重载
- 如果原有磁盘格式化格式为:xfs,执行命令:xfs_growfs /dev/sdb2
- 如果原有磁盘格式化格式为:ext4,执行命令:resize2fs /dev/sdb2
(三) LVM
LVM通过分区进行卷管理,所以分区创建部分,可参考标准磁盘管理部分内容。
1. 新增一块磁盘,创建新逻辑卷
例如:新分区为/dev/sdc1
# 创建物理卷
pvcreate /dev/sdc1
# 查看物理卷
pvs
pvdisplay
# 创建卷组
vgcreate myvg /dev/sdc1
# 查看卷组
vgs
vgdisplay
# 创建逻辑卷
lvcreate -n data -l +100%FREE myvg
# 查看逻辑卷
lvs
lvdisplay
# 格式化
/sbin/mkfs.xfs -f -i size=2048 "/dev/myvg/data"
# 挂载
mkdir -p /data3
echo '/dev/mapper/myvg-data /data3 xfs defaults 0 0' >> /etc/fstab
mount -a
2. 新增一块磁盘,扩容旧逻辑卷
例如:新分区为/dev/sdd1
# 创建物理卷
pvcreate /dev/sdd1
# 创建卷组
vgextend myvg /dev/sdd1
# 扩容逻辑卷
lvextend -l +100%FREE /dev/myvg/data
此时发现磁盘仍然显示为原有大小,需要进行磁盘重载
- 如果原有磁盘格式化格式为:xfs,执行命令:xfs_growfs /dev/myvg/data
- 如果原有磁盘格式化格式为:ext4,执行命令:resize2fs /dev/myvg/data