linux系统磁盘扩容那些事
背景
以下场景我们经常会遇到:
- 我们在安装系统的时候可能没有合理的分配空间,导致某些分区空间吃紧,而另外一些空间基本使用不到;
- 由于业务量激增->数据量激增,磁盘空间被用光;
这种情况下重新调整磁盘分区就很有必要。但是系统的数据都是很宝贵的,调整空间的前提是保证当前数据不被破坏。
要求
扩容操作不影响系统已经存在的数据,最好不用重启系统。
相关概念
分区:磁盘上的区域划分,例如windows中常见的C,D,E盘
扩容:增加分区的大小
扇区(sector):读写磁盘上的数据的最小单位,一般是512bytes
xfs,ext2,ext3,ext4:linux系统中常见的文件系统格式,xfs可以通过xfs_growfs命令调整文件系统,但是只能增大,不能缩小;ext2,ext3,ext4格式的文件系统可以通过resize2fs命令调整大小,增大和缩小都支持
LVM:Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
PV:物理卷(Physical Volume)
VG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
PE:物理块(Physical Extent)
LE:逻辑块(Logical Extent)
LVM的LV代替了传统磁盘管理方式中的PV,使磁盘空间的扩展和压缩变得容易。最明显的优势是LV中的空间可以来自于多个不同的PV。
传统磁盘扩容(非LVM)
扩容前提:可用空间紧挨着被扩充分区结束扇区的位置
fdisk -l
找到要扩容的磁盘和分区情况,我要对/dev/sda1扩容
fdisk /dev/sda
修改磁盘分区,输入m
显示帮助信息
- 输入
d
删除要扩容的分区,只有一个分区时会直接删除,多个分区时按提示输入分区号
- 输入
n
新建分区 - 输入
p
选择主分区或者输入e
选择扩展分区,一般选择p
,注意linux系统中主分区最多只能有4个,建立4个主分区后将无法再新增分区 - 按
回车
输入默认的第一个和最后一个扇区号 - 其他提示输入
y
- 输入
w
保存修改 - 使用
partprobe
重新侦测分区,可能报错,这个时候需要重启系统 - 调整文件系统,ext2,ext3,ext4系统使用
resize2fs
命令,xfs系统使用xfs_growfs
,通过mount
命令可以查看文件系统的类型
- 通过
df-h
命令检查分区是否已经扩容
LVM扩容(新增分区)
- 假设要操作的磁盘为/dev/sda,使用
fdisk /dev/sda
的n
命令创建新分区,步骤和传统磁盘扩容中描述的一致 - 使用
partprobe
重新侦测分区,假设新增的分区为/dev/sda3 - 使用
pvcreate /dev/sda3
创建PV - 使用
pvdisplay
查看新创建的PV - 使用
vgdisplay
查看当前的VG信息 - 假设新增的PV要增加到名为centos的VG,执行
vg_extend centos /dev/sda3
- 使用
df -h
找到要增加的LV的名称,假设是/dev/mapper/centos-root - 使用
lvextend -l +100%FREE /dev/mapper/centos-root
将VG中的剩余空间全部添加到指定的LV,也可以使用lvextend -L +30G /dev/mapper/centos-root
增加指定的大小 - 调整文件系统,ext2,ext3,ext4系统使用
resize2fs
命令,xfs系统使用xfs_growfs
,通过mount
命令可以查看文件系统的类型,例如resize2fs /dev/mapper/centos-root
或者xfs_growfs /dev/mapper/centos-root
- 通过
df-h
命令检查分区是否已经扩容
LVM扩容(PV扩容)
新增分区的方式不是任何情况都适用的。例如某个磁盘当前已经有了4个主分区,此时如果再扩容则无法使用LVM(新增分区)的方式。此时可以将空间增加到特定的PV
扩容前提:可用空间紧挨着被扩充分区结束扇区的位置
- 假设要扩容的PV所在的分区为/dev/sda4
- 输入
d
,再根据提示输入4
删除要扩容的分区 - 输入
n
新建分区 - 输入
p
选择主分区或者输入e
选择扩展分区,主要需要与删除前的分区属性一致 - 按
回车
输入默认的第一个和最后一个扇区号 - 其他提示输入
y
- 输入
t
修改分区类型 - 输入
4
选择要修改的分区 - 输入
8e
将分区类型改为linux LVM - 输入
w
保存修改 - 使用
partprobe
重新侦测分区,可能报错,这个时候需要重启系统 - 输入
pvresize /dev/sda4
调整PV的大小 - 使用
lvextend -l +100%FREE /dev/mapper/centos-root
将VG中的剩余空间全部添加到指定的LV,也可以使用lvextend -L +30G /dev/mapper/centos-root
增加指定的大小 - 假设LV的名称为/dev/mapper/centos-root。调整文件系统,ext2,ext3,ext4系统使用
resize2fs
命令,xfs系统使用xfs_growfs
,通过mount
命令可以查看文件系统的类型,例如resize2fs /dev/mapper/centos-root
或者xfs_growfs /dev/mapper/centos-root
- 通过
df-h
命令检查分区是否已经扩容