对于IT运维人员来说,扩容服务器某个卷是比较常见的,在承载数据库、日志、文件等会日益增长的卷中尤为如此。在Windows Server中,一般采取动态磁盘的方式扩容,而在Linux中,使用LVM也能轻松实现卷的扩容。
LVM结构如下图所示,一个或多个物理卷(PV)组成卷组(VG),从卷组中分配逻辑卷(LV)作为Linux文件系统的挂载点。物理卷(PV)一般指的就是硬盘或硬盘分区。
先来看一下系统情况。
lsb_release -a
sudo fdisk -l | grep /dev/sd # 查看磁盘
Linux系统是 Ubuntu20.04,有两个硬盘:
/dev/sdb 10G
/dev/sdc 15G
我们要用这两个硬盘创建一个逻辑卷,后期可以随时扩容。
下面是步骤:
1. 将 /dev/sdb 硬盘分成一个区 /dev/sdb1,并设置分区为LVM
sudo fdisk /dev/sdb
n # 表示新建
p # 主分区
# 下一步默认选中全部空间,整个磁盘建一个分区
# 回到选择菜单
t # 表示更改分区类型
8E # 输入类型8E,表示为LVM,
p # 列出分区,确认无误
w # 保存分区表的更改
2. 按同样的方法将 硬盘 /dev/sdc 分一个区 /dev/sdc1 及设置 LVM格式
3. 用 pvcreate 命令分别为 /dev/sdb1 和 /dev/sdc1 创建物理卷(PV)
pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvs # 查看物理卷
4. 创建卷组
vgcreate myvg /dev/sdb1 /dev/sdc1
vgs # 查看卷组情况
5. 创建逻辑卷
lvcreate -L 20G -n mylv myvg # 定义逻辑卷大小、名称,以及来源卷组
lvdisplay myvg # 查看逻辑卷
6. 格式化逻辑卷并挂载到Linux文件系统 /mnt目录
mkfs.ext4 /dev/myvg/mylv # 设备路径是上一步查到的,格式化成ext4
mount /dev/myvg/mylv /mnt # 挂载到 /mnt 目录
df -h # 查看挂载信息
7. 扩展容量。
目前逻辑卷是20G,如果我想增加到30G怎么办?
我的卷组只有空闲空间 5 G,不够。
我们添加一块10G硬盘 /dev/sdd,并进行分区格式化成 /dev/sdd1
fdisk /dev/sdd #
n --> p --> 选择分区号1,分配硬盘所有空间
t --> 8E # 更改 lvm 类型
w # 保存更改
8. 扩展卷组
vgextend myvg /dev/sdd1
vgs # 检查卷组,发现卷组已增加到35G了
9. 扩展逻辑卷
lvextend -L +10G /dev/myvg/mylv # +10G 表示增加10G
resize2fs /dev/myvg/mylv # 更改大小到文件系统
10. 查看扩展结果
df -h # 发现文件系统里该卷已由20G扩展到30G了
建议:
Ubuntu在安装过程分区的时候,默认会将根目录 / 挂载到 LVM 卷下,一般建议保持默认选择,不要修改成普通分区。
后续可以参考上述步骤零影响地扩展Ubuntu文件系统的容量。