这是100个命令的第58个命令,包含了LVM 中pvcreate、vgcreate、lvcreate 等命令的使用方法以及 LVM 的原理的简要介绍。
LVM(Logical Volume Manager)可以让 lvm 格式的分区容量变得弹性,可以随时扩大或缩减分区的大小。
LVM 之所以能够伸缩容量,实现的方法就是讲 LV 里空闲的 PE 移出,或向 LV 中添加空闲的 PE。
LV 是从 VG 中划分出来的,LV 中的 PE 很可能来自多个 PV。在向 LV 存储数据时,有多种存储机制:
尽管striped读写性能较好也不建议使用该模式,因为lvm的着重点在于弹性容量扩展而非性能,要实现性能应该使用RAID来实现,而且使用striped模式时要进行容量的扩展和收缩将比较麻烦。默认的是使用线性模式。
当前系统/dev/sdb{1,2,3,4,5}有5个分区,其中1、2、3、5为 LVM 格式的标识,分区4在后面扩容时使用。
功能 | 命令 |
---|---|
创建 PV | pvcreate |
扫描并列出所有 PV | pvscan |
列出 PV 属性 | pvdisplay {name|size} |
移除 PV | pvremove |
移动 PV 中的数据 | pvmove |
将上述 /dev/sdb{1,2,3,5}创建 PV:
使用 `pvscan`查看 pv 及其属性:
最后一行信息表示:PV 的总容量/已使用的 PV容量/空闲的 PV 容量
使用`pvdisplay`查看其中一个 PV 的属性信息:
选项
-m:查看指定设备中 PE 的使用分布图
(图和解析)
知道了 PE 的分布,就可以轻松的使用 pvmove 命令在设备之间进行 PE 数据移动。
使用`pvremove`移除 PV:
功能 | 命令 |
---|---|
创建 VG | vgcreate |
扫描并列出所有 VG | vgscan |
列出 VG 属性信息 | vgdisplay |
移除(删除)VG | vgremove |
从 VG 中移除 PV | vgreduce |
将 PV 添加到 VG 中 | vgextend |
修改 VG 属性 | vgchange |
创建 VG 需要对要创建的 VG 命名,VG 是属于磁盘层次的,而磁盘是需要有名称的,创建 VG 时 ,可以使用-
s 指定 PE 的大小,默认为4M:
创建 VG 实际上是在 /dev 目录下管理了一个 VG 目录/dev/firstvg,不过要在创建了 LV 后该目录才会创建,在该 VG 中创建 LV,将会在该目录下生成链接文件指向/dev/dm 设备。
查看 VG 有多少个 PE:
从 VG 移除一个 PV,查看 VG 空间的变化,然后再添加一个 PV:
`vhchange`用于设置卷组的活动状态,卷组的激活状态主要影响 LV,使用-a 选项设置活动状态
将 firstvg 设置为活动状态:
vgchange -a y firstvg
将 firstvg 设置为非激活状态
vgchange -a n firstvg
功能 | 命令 |
---|---|
创建 LV | lvcreate |
扫描并列出所有 LV | lvscan |
列出 LV 属性信息 | lvdisplay |
移除 LV | lvremove |
缩小 LV 容量 | lvreduce/lvresize |
增大 LV 容量 | lvextend/lvresize |
调整 LV 容量 | lvresize |
`lvcreate`命令
一般用法:lvcreate [-L size(M/G) | -l PEnum] -n lv_name vg_name
选项:
-L:根据大小创建 LV,即分配多少空间给此 LV
-l:根据 PE 的数量来创建 LV,即分配多少个 PE 给此 LV
-n:指定 LV 名称
创建 LV 后,将在 /dev/firstvg 目录中创建对应 LV 名称的软链接文件,同时也在/dev/mapper 目录中创建软链接文件,它们都指向/dev/dm 设备
使用`lvscan`和`lvdisplay`查看 LV信息,如果要 lvdisplay 指定的 LV 需要指定其绝对路径,而不能仅指定 lv 名
挂载逻辑卷,并查看逻辑卷的文件系统类型:
另外也可以使用 file -s 查看逻辑卷的文件系统类型,但是由于/dev/firstvg和/dev/mapper下的lv都是链接到/dev/下块设备的链接文件,所以只能对块设备进行查看,否则查看的结果也仅仅只是个链接文件类型:
当前/dev/sdb 的信息:
LVM最大的优势就是其可伸缩性,伸缩性有更加偏重与扩容。扩容的实质是将 VG 中的空闲 PE 添加到 LV 中,所以只要 VG 中有空闲的 PE,就可以进行扩容。即使没有空闲 PE,也可以添加PV,将PV加入到VG中增加空闲PE。
扩容的两个关键步骤:
(1)使用 lvextend 或 lvresize 添加更多的 PE 或容量到 LV
(2)使用 resize2fs命令(xfs 使用 xfs_growfs)将 LV 增加后的容量添加到对应的文件系统中(此过程是修改文件系统而非LVM内容)
示例:将/dev/sdb4作为 first_lv 的扩容来源。
将/dev/sdb4创建成 PV,然后加入 firstvg 中:
查看 firstvg 中空闲的 PE 数量:
将全部可用容量添加到 first_lv中:
umount /dev/first/first_lv
lvextend -L +5G /dev/firstvg/first_lv
vgdisplay firstvg | grep -i pe
lvextend -l +330 /dev/firstvg/first_lv
lvscan
也可以使用 lvresize 来增加 lv 容量:
lvresize -L +5G /dev/firstvg/first_lv
lvresize -l +330 /dev/firstvg/first_lv
如果现在将 lv 挂载,会发现容量并没有增加(df -hT /mnt),因为当前只是 lv 容量增加了,而文件系统的容量还没有增加,使用resize2fs工具来改变ext文件系统的大小,如果是xfs文件系统,则使用xfs_growfs。
`resize2fs`可用于增大和缩减已卸载的设备对应的文件系统大小,对于linux 2.6内核之后的版本,还支持在线resize而无需卸载,但在实验过程中好像不支持在线缩减,只能先卸载。
一般无需使用选项,直接使用resize2fs device的方式即可,如果失败则尝试使用-f选项强制改变大小。
resize2fs /dev/firstvg/first_lv
df -hT | grep -i /mnt
一般情况下也不会收缩 LVM,收缩 LVM 可以加深对 LVM 的理解。(待更新)
参考文档
http://www.cnblogs.com/f-ck-need-u/p/7049233.html
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。