一、创建新的卷
1、准备物理分区(Physical Partions)
使用分区工具(如:
fdisk
)创建LVM分区,方法同创建其它一般分区的方式一样。区别在于,LVM的分区类型为8e。
2、创建物理卷PV
假设上面创建了分区/dev/sdb1,这里我们用pvcreate创建物理卷PV。
# pvcreate /dev/sdb1? #使用pvcreate将sdb1转换为物理卷
# pvdisplay??????????? #查看已经存在的PV
3、创建卷组VG
# vgcreate -s 4M vgname /dev/sdb1 #将PV(/dev/sdb1)创建名为vgname的PE为4M的VG卷组
4、创建逻辑卷LV
# lvcreate -l 10 -n lvname vgname #在vgname卷组上创建名为lvname的占10个PE块大小的LV逻辑卷
-l 指定PE块数量
-L 直接指定大小,例如-L 40M,直接指定40M大小
-n 后跟所要创建的LV的名字
5、格式化逻辑卷
# mkfs -t ext4 /dev/vgname/lvname #格式化lvname这个逻辑卷为ext4的文件系统
-t 后跟所要格式过去的文件系统名
6、创建挂载点,挂载逻辑卷
# mkdir /file? #创建挂载目录/file
# mount /dev/vgname/lvname /file? #将逻辑卷lvname挂载到/file挂载点下
二、增加卷组
以下测试在pv和vg都无剩余空间的情况下进行操作实验。
1、准备物理分区(Physical Partions)
使用分区工具(如:
fdisk
)创建LVM分区,方法同创建其它一般分区的方式一样。区别在于,LVM的分区类型为8e。
2、创建物理卷PV
假设上面创建分区/dev/sdb2,,这里我们用pvcreate创建物理卷PV。
# pvcreate /dev/sdb2? #使用pvcreate将sdb1转换为物理卷
# pvdisplay??????????? #查看已经存在的PV
3、增加卷组VG
# vgextend vgname /dev/sdb2 #将sdb2这个物理卷加入vgname卷组中
# pvdisplay?????? #添加完成之后,再次查看PV信息
三、抽离PV并删除
方案一:
1、查看pv使用情况
# pvdisplay??????????? #查看已经存在的PV
--- Physical volume ---
PV Name
/dev/sda1
VG Name?????????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 254
Allocated PE????????? 0
PV UUID?????????????? TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
--- Physical volume ---
PV Name
/dev/sdb1
VG Name?????????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 80
Allocated PE????????? 174
PV UUID?????????????? 27pvVQ-lERX-91ew-0XL2-Oxbk-NFKh-7l6c4M
2、根据pv信息,抽离空的pv出来
# vgreduce vgname /dev/sda1
3、删除抽离出来的pv
# pvremove /dev/sda1
方案二:
在sda1被使用的状态下,抽离sda1这个PV
1、查看pv信息
# pvdisplay
--- Physical volume ---
PV Name
/dev/sda1
VG Name???????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 80
Allocated PE????????? 174
PV UUID????????????? TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
--- Physical volume ---
PV Name
/dev/sdb1
VG Name???????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 254
Allocated PE????????? 0
PV UUID????????????? Duz6zM-GJwo-8cc5-5Jp2-vGiH-0j0L-gSvUtl
2、移动sda1的中的所有PE到sdb1中
# pvmove /dev/sdb1 /dev/sdd1
/dev/sda1
: Moved: 0.0%
/dev/sdb1
: Moved: 100.0%
3、查看现在pv使用情况
# pvdisplay??????????? #查看已经存在的PV
--- Physical volume ---
PV Name
/dev/sda1
VG Name???????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 254
Allocated PE????????? 0
PV UUID????????????? TEiNQm-3H9i-OpmE-p5cX-KgRS-aGuf-HKaLON
--- Physical volume ---
PV Name
/dev/sdb1
VG Name???????????? vgname
PV Size?????????????? 1019.72 MiB / not usable 3.72 MiB
Allocatable
yes
PE Size?????????????? 4.00 MiB
Total PE????????????? 254
Free PE?????????????? 80
Allocated PE???????? 174
PV UUID???????????? Duz6zM-GJwo-8cc5-5Jp2-vGiH-0j0L-gSvUtl
4、根据pv信息,抽离空的pv出来
# vgreduce vgname /dev/sda1
5、删除抽离出来的pv
# pvremove /dev/sda1
四、在线拉伸文件系统
1、查看VG空余
# vgdisplay
2、查看LV大小
# lvdisplay
3、拉伸逻辑卷大小
# lvresize -l +888 /dev/vgname/lvname #根据vg内剩余的PE快来指定数量
-l 后面跟+号是增加,跟-号是缩小,不跟就是直接指定大小
4、拉伸文件系统大小
# resize2fs /dev/vgname/lvname [nM/G]??? 若不加大小,则调整到最大
5、查看拉伸后的LV大小
# lvdisplay
五、在线缩小文件系统
1、取消挂载
# umount /dev/sda1
2、用fsck检查
# e2fsck -f /dev/vgname/lvname
3、缩小文件系统大小
# resize2fs /dev/vgname/lvname 200M
4、缩小LV大小
# lvresize -L -40M? /dev/vgname/lvname
5、重新挂载
# mount -a
这里mount -a是按照之前这个分区挂载的条目在/etc/fstab里有的才生效。如果是之前就是临时挂载上的,后来给卸载然后进行缩小文件系统大小了,这时就不能用mount -a重新挂载了。
简单总结:在lvm逻辑卷上,缩小文件系统大小,需要先缩小文件系统大小,然后再缩小逻辑卷大小。就像瓶子里的水,只有先把水倒出去,然后再缩小瓶子大小。
六、删除LVM
1、取消挂载及删除/etc/fstab中条目
# umount /home?? #取消挂载
# vim /etc/fstab?? #删除该文件中/home挂载的对应条目
2、移除逻辑卷LV
# lvchange -an /dev/vgname/lvname?? #关闭逻辑卷
# lvremove /dev/vgname/lvname?????? #移除逻辑卷
3、移除卷组VG
# vgchange -an /dev/vgname?? #关闭卷组
# vgremove /dev/vgname?????? #移除卷组
4、移除物理卷PV
# pvremove /dev/sda1????? #移除物理卷
5、删除磁盘分区
通过
fdisk
删除磁盘分区,这个不做演示
# partx -d --nr 1 /dev/sda?? #删除之后,记得用该命令刷新内存条目
七、LVM的迁移
以下操作以迁移VG为主进行的操作,迁移LV同理
1、源主机上操作
①取消所要迁移的文件系统挂载
# umount /home
②关闭LV和VG
# lvchange -an /dev/vgname/lvname
# vgchange -an /dev/vgname
③导出VG
# vgexport vgname
2、目标主机上操作
①导入VG
#vgimport vgname
②激活VG,挂载文件系统
# vgchange -ay vgname
③挂载迁移过来的文件系统
# mkdir /home
# mount /dev/vgname/lvname /home
# df -h??? #查看挂载情况
八、LVM的快照功能
LVM快照有两大用途,一是用来克隆虚拟机,例如做xen虚拟机时,可以先新建一台完整虚拟机,假设大小为10G,然后我们可以在这台10G的虚拟机上 创建1个3G的快照,接着通过这个3G的快照启动虚拟机,做完实验后,可以直接删除快照而保持原来完整虚拟机的纯净。二是实时备份(moment-in- time),即为了保持系统的一致性,我们先做一个快照冻结当前系统状态,这样快照里面的内容可暂时保持不变,系统本身继续运行,通过备份快照来实现不中 断服务的备份。
另外,我们在创建快照时空间最好大于lvname的变换空间,不然一旦空间大小超过快照的大小,快照就会损坏。
现在假若,我们要对/dev/vgname/lvname做快照,lvname现在使用了100M了。
1、用lvcreate创建快照
# lvcreate -L 5M -s -n lvname_snap /dev/vgname/lvname
2、挂载快照
# mount /dev/vgname/lvname_snap /snap
命令汇总
1、PV
pvcreat ?将partition创建成PV
pvscan ? 搜索系统里面任何具有PV的磁盘
pvdisplay ?显示出系统上面PV的状态
pvremove 将partition的PV属性移除
2、VG
vgcreate ?创建VG
vgscan ? ?搜索系统上是否有VG的存在
vgdisplay ? 显示系统上VG的状态
vgextend ? 在VG内增加PV
vgreduce ? 在VG内移除PV
vgchange ?设定VG是否启动(active)
vgremove ?删除VG
3、LV
lvcreate ?创建LV
lvscan 搜索系统内的LV
lvdisplay ?显示系统内的LV状态
lvextend ?在LV内增加容量
lvreduce ?在LV内减少容量
lvremove 删除LV
lvresize ?调整LV的容量大小