一、lvm相关命令
lvm Logical Volume Manager,逻辑卷,可以让设备自由伸缩的一个设备管理软件
pv 物理卷,
vg 物理卷组
pe 物理拓展,lvm最小的存储单元
二、lvm设备的制作
首先划分lvm所用到的设备,这些设备功能id必须是linux LVM(8e)
1、lvm的建立
pvcreate /dev/vdb1 ##把物理分区做成物理卷
pvs | pvdisplay ##查看物理卷
vgcreate vg0 /dev/vdb1 ##用制作好的/dev/vdb1这个物理卷制作一个物理卷组vg0
vgs | vgdisplay ##查看逻辑卷组
lvcreate -L 200M -n lv0 vg0 ##在vg0这个组中建立lv0设备,-L 指定设备大小 -n 指定设备名称
lvs | lvdisplay ##对逻辑卷设备进行查看
2、针对xfs文件系统—–lvm设备的扩大(只可以扩大,不可以缩小)
1)lvm扩大
lvextend -L 500M /dev/vg0/lv0 ##扩大lvm设备到500M
xfs_growfs /dev/vg0/lv0 ##扩大xfs文件系统到设备大小
2)vg扩大
pvcreate /dev/vdb2 ##在pv中增加一块设备/dev/vdb2
vgextend vg0 /dev/vdb2 ##把新建的/dev/vdb2添加到vg0中
3、针对ext文件系统—–lvm设备的扩大(可拉伸也可缩减)
1)lvm扩大
lvextend -L 2G /dev/vg0/lv0 ##扩大lvm设备到2G
resize2fs /dev/vg0/lv0 ##设备文件系统大小和设备同步
2)vg扩大
pvcreate /dev/vdb3 ##在pv中增加一块设备/dev/vdb3
vgextend vg0 /dev/vdb3 ##把新建的/dev/vdb3添加到vg0中
3)lvm缩减
umount /dev/vg0/lv0 ##卸载正在使用的设备,因为文件系统的缩减不支持在线操作
e2fsck -f /dev/vg0/lv0 ##检测文件系统,确定文件系统中已有数据大小防止过度缩减
resize2fs /dev/vg0/lv0 1G ##把文件系统缩减到1G
lvreduce -L 1G /dev/vg0/lv0 ##设备缩减到1G
4)vg缩减
在vg缩减时只能缩减没有被占用的设备
pvmove 设备1 设备2 ##把设备1上的所有数据移动到设备2上
vgreduce vg0 /dev/vdb1 ##把vg0中的/dev/vdb1删除
pvremove /dev/vdb1 ##把/dev/vdb1上的lvm管理信息删除
4、易错问题的出现及方法
1)lvm丢失设备的删除
pvs
unknown device vg0 lvm2 a-m 1020.00m 1020.00m
当删除时未知设备时用下面的命令
vgreduce –removemissing vg0
2)ext格式缩减时先缩减设备使文件系统破坏
解决方法:先拉伸后缩减即可解决
5、lvm快照的原理及制作
lvcreate -L 20M -n lv0-backup -s /dev/vg0/lv0
给/dev/vg0/lv0建立快照,-L指定快照名字,-s指定快照模板设备
mount /dev/vg0/lv0-backup /usrdata
快照设备里的数据被更改,如果想还原,删除快照设备,重新建立快照即可
6、lvm的删除
umount -> lvremove -> vgremove -> pvremove ->fdisk /dev/vdb ->partprobe
二、有关LVM的具体操作
1、划分lvm所用到的设备
[root@server188 ~]# fdisk /dev/vdb
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
First sector (2048-20971519, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): t
Selected partition 1
Hex code (type L to list all codes): 8e
Changed type of partition ‘Linux’ to ‘Linux LVM’
以上操作为建立设备功能id是linux LVM(8e)的分区,dev/vdb{2,3,5}与/dev/vdb1类似
Command (m for help): n
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e): e
Selected partition 4
First sector (6293504-20971519, default 6293504):
Using default value 6293504
Last sector, +sectors or +size{K,M,G} (6293504-20971519, default 20971519):
Using default value 20971519
Partition 4 of type Extended and of size 7 GiB is set
理论上一个设备最多可以划分四个分区,当然如果需要多于4个分区的话,必须将第4个分区化为逻辑分区。
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/vdb1 2048 2099199 1048576 8e Linux LVM
/dev/vdb2 2099200 4196351 1048576 8e Linux LVM
/dev/vdb3 4196352 6293503 1048576 8e Linux LVM
/dev/vdb4 6293504 20971519 7339008 5 Extended
/dev/vdb5 6295552 8392703 1048576 8e Linux LVM
Command (m for help): wq
The partition table has been altered!
[root@server188 ~]# partprobe
2、lvm的建立
[root@server188 ~]# pvcreate /dev/vdb1
Physical volume “/dev/vdb1” successfully created
[root@server188 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 lvm2 a– 1.00g 1.00g
[root@server188 ~]# vgcreate vg0 /dev/vdb1
Volume group “vg0” successfully created
[root@server188 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 1 0 0 wz–n- 1020.00m 1020.00m
[root@server188 ~]# lvcreate -L 200M -n lv0 vg0
WARNING: xfs signature detected on /dev/vg0/lv0 at offset 0. Wipe it? [y/n] y
Wiping xfs signature on /dev/vg0/lv0.
Logical volume “lv0” created
[root@server188 ~]# lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
lv0 vg0 -wi-a—– 200.00m
3、使用lvm,先格式化再挂载
[root@server188 ~]# mkfs.xfs /dev/mapper/vg0-lv0 ##注意:/dev/mapper/vg0-lv0和/dev/vg0/lv0 是同一个文件的软链接,内容相同
[root@server188 ~]# mount /dev/mapper/vg0-lv0 /usrdata/ ##挂载到自己创建的目录/usrdata/上
4、lvm的拉伸与缩减
(1)针对xfs文件系统—–lvm设备的扩大(只可以扩大,不可以缩小)
[root@server188 ~]# lvextend -L 500M /dev/vg0/lv0 ##此操作只能扩大
Extending logical volume lv0 to 500.00 MiB
Logical volume lv0 successfully resized
[root@server188 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
….. ….. ….. …
/dev/mapper/vg0-lv0 197M 11M 187M 6% /usrdata
[root@server188 ~]# xfs_growfs /dev/vg0/lv0
[root@server188 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
……. …… … …
/dev/mapper/vg0-lv0 497M 11M 487M 3% /usrdata
(2)针对ext文件系统—–lvm设备的扩大(可拉伸也可缩减)
********lvm设备的拉伸
将/dev/mapper/vg0-lv0格式化为ext格式
[root@server188 ~]# umount /dev/mapper/vg0-lv0
[root@server188 ~]# mkfs.ext4 /dev/mapper/vg0-lv0
[root@server188 ~]# lvextend -L 2G /dev/vg0/lv0 ##此时要扩展到2G,但vg中容量<2G,因此vg中加入新的物理卷
Extending logical volume lv0 to 2.00 GiB
Insufficient free space: 387 extents needed, but only 130 available
添加新的pv,使vg容量增大
[root@server188 ~]# pvcreate /dev/vdb2
Physical volume “/dev/vdb2” successfully created
[root@server188 ~]# vgextend vg0 /dev/vdb2
Volume group “vg0” successfully extended
[root@server188 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz–n- 1.99g 1.50g
拉伸设备
[root@server188 ~]# lvextend -L 2G /dev/vg0/lv0
Extending logical volume lv0 to 2.00 GiB
Logical volume lv0 successfully resized
[root@server188 ~]# resize2fs /dev/vg0/lv0
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg0/lv0 to 2097152 (1k) blocks.
The filesystem on /dev/vg0/lv0 is now 2097152 blocks long.
[root@server188 ~]# mount /dev/vg0/lv0 /usrdata/
[root@server188 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
……. …… … …
/dev/mapper/vg0-lv0 2.0G 2.9M 1.9G 1% /usrdata
********lvm设备的缩减
[root@server188 ~]# umount /dev/vg0/lv0
[root@server188 ~]# e2fsck -f /dev/vg0/lv0
[root@server188 ~]# resize2fs /dev/vg0/lv0 200M
[root@server188 ~]# lvreduce -L 200M /dev/vg0/lv0
********vg的缩减
缩减没有被使用的/dev/vdb2
[root@server188 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a– 1020.00m 820.00m
/dev/vdb2 vg0 lvm2 a– 1020.00m 1020.00m
[root@server188 ~]# vgreduce vg0 /dev/vdb2
Removed “/dev/vdb2” from volume group “vg0”
[root@server188 ~]# pvremove /dev/vdb2
Labels on physical volume “/dev/vdb2” successfully wiped
[root@server177 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a– 1020.00m 820.00m
缩减正在被使用的/dev/vdb1,要先将/dev/vdb1中的数据移动到/dev/vdb2上,最后再移除
[root@server188 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a– 1020.00m 820.00m
/dev/vdb2 vg0 lvm2 a– 1020.00m 1020.00m
[root@server188 ~]# pvmove /dev/vdb1 /dev/vdb2
/dev/vdb1: Moved: 100.0%
[root@server188 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb1 vg0 lvm2 a– 1020.00m 1020.00m
/dev/vdb2 vg0 lvm2 a– 1020.00m 820.00m
[root@server188 ~]# vgreduce vg0 /dev/vdb1
Removed “/dev/vdb1” from volume group “vg0”
[root@server188 ~]# pvremove /dev/vdb1
Labels on physical volume “/dev/vdb1” successfully wiped
[root@server188 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vdb2 vg0 lvm2 a– 1020.00m 820.00m
5、lvm快照
[root@server188 ~]# mount /dev/mapper/vg0-lv0 /usrdata/
[root@server188 ~]# touch /usrdata/file{1..10}
[root@server188 ~]# umount /usrdata/
[root@server188 ~]# lvcreate -L 30M -n lv0-back -s /dev/vg0/lv0
Rounding up size to full physical extent 32.00 MiB
Logical volume “lv0-back” created
[root@server188 ~]# mount /dev/vg0/lv0-back /usrdata/
[root@server188 ~]# ls /usrdata/
file1 file2 file4 file6 file8 lost+found
file10 file3 file5 file7 file9
6、lvm的删除
[root@server188 ~]# umount /dev/mapper/vg0-lv0–back
[root@server188 ~]# lvremove /dev/vg0/lv0
[root@server188 ~]# vgremove vg0
Volume group “vg0” successfully removed
[root@server188 ~]# pvs
No device found for PV EPJAqQ-zBhQ-03nT-gL6w-ih2F-RsbA-5GpUNf.
PV VG Fmt Attr PSize PFree
/dev/vdb1 lvm2 a– 1.00g 1.00g
/dev/vdb2 lvm2 a– 1.00g 1.00g
[root@server188 ~]# pvremove /dev/vdb{1..2}
No device found for PV EPJAqQ-zBhQ-03nT-gL6w-ih2F-RsbA-5GpUNf.
Labels on physical volume “/dev/vdb1” successfully wiped
Labels on physical volume “/dev/vdb2” successfully wiped
[root@server188 ~]# fdisk /dev/vdb ##在此处d删除划分的设备分区
[root@server188 ~]# partprobe