一.LVM简介
LVM是逻辑盘卷管理(LogicalVolumeManager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和 分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。通过LVM系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 (volumegroup),形成一个存储池。管理员可以在卷组上随意创建逻辑卷组(logicalvolumes),并进一步在逻辑卷组上创建文件系 统。管理员通过LVM可以方便的调整存储卷组的大小,并且可以对磁盘存储按照组的方式进行命名、管理和分配,例如按照使用用途进行定义:“development”和“sales”,而不是使用物理磁盘名“sda”和“sdb”。而且当系统添加了新的磁盘,通过LVM管理员就不必将磁盘的 文件移动到新的磁盘上以充分利用新的存储空间,而是直接扩展文件系统跨越磁盘即可。
二.安装lvm相关命令
# yum install lvm2 -y
三.常用命令
PV:Physical(物理卷)
pvcreate、pvs 、pvdisplay 、pvremove、pvmove、pvscan
VG:Volume Group(卷组)
vgcreate、vgs、vgdisplay、vgremove、vgrename、vgreduce、vgextent
LV:logical Volume(逻辑卷)
lvs、lvdisplay、lvremove、lvextend、lvresize、lvscan、lvrename
四.创建逻辑卷:
1.创建几个分区
[root@node1 ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x39094458 Device Boot Start End Blocks Id System Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-1305, default 1): Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): +3G Command (m for help): n Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (394-1305, default 394): Using default value 394 Last cylinder, +cylinders or +size{K,M,G} (394-1305, default 1305): +5G Command (m for help): p Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x39094458 Device Boot Start End Blocks Id System /dev/sdb1 1 393 3156741 83 Linux /dev/sdb2 394 1047 5253255 83 Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
2.修改分区格式为Linux LVM(8e)
[root@node1 ~]# fdisk /dev/sdb WARNING: DOS-compatible mode is deprecated. It's strongly recommended to switch off the mode (command 'c') and change display units to sectors (command 'u'). Command (m for help): p Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x39094458 Device Boot Start End Blocks Id System /dev/sdb1 1 393 3156741 83 Linux /dev/sdb2 394 1047 5253255 83 Linux Command (m for help): t Partition number (1-4): 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 8e Changed system type of partition 2 to 8e (Linux LVM) Command (m for help): p Disk /dev/sdb: 10.7 GB, 10737418240 bytes 255 heads, 63 sectors/track, 1305 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x39094458 Device Boot Start End Blocks Id System /dev/sdb1 1 393 3156741 8e Linux LVM /dev/sdb2 394 1047 5253255 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
3.使用partprobe命令重新加载分区表
partprobe /dev/sda
注意:若此命令未安装,可以使用以下命令安装以下; # yum install parted
4.查看分区信息
# cat /proc/partitions
5.创建pv
# pvcreate /dev/sda{1,2}
# 查看pv列表: # pvs # 查看某个pv信息: # pvdisplay /dev/sdb1 #删除pv pvremove /dev/sdb1
6.创建vg
# vgcreate VG_NAME /dev/sda{1,2}
# 查看vg列表 # vgs # 查看单个vg信息 # vgdisplay VG_NAME # 删除一个vg # vgremove VG_NAME
7.创建lv
# lvcreate -n LV_NAME -L # VG_NAME
-L:指定lv的大小,单位[b|B|s|S|k|K|m|M|g|G|t|T|p|P|e|E]
-n:指定lv的名称
# 查看lv列表 # lvs # 查看单个lv信息 # lvdisplay /dev/VG_NAME/LV_NAME # 移除lv # lvremove /dev/VG_NAME/LV_NAME
8.格式化lv分区
# mke2fs -j /dev/VG_NAME/LV_NAME
9.挂在分区使用
# mount /dev/VG_NAME/LV_NAME /WOEK_DIR
五.缩减VG
1.将此分区的数据移到其他分区
# pvmove /dev/sda1
2.从vg中移除pv
# vgreduce VG_NAME /dev/sda1
3.若此pv不需要使用,则移除pv即可
# pvremove /dev/sda1
六.扩展VG
1.添加一个pv
# pvcreate /dev/sdb3
2.加入vg
# vgextend VG_NAME /dev/sda3 添加一个pv
七.扩展逻辑卷:
注意:
1.先扩展物理边界,再扩展逻辑边界(文件系统)
2.在线快展;
实例:
1.扩展物理边界:默认lv大小为2G
# lvextent -L 5G /dev/VG_NAME/LV_NAME
-L 5G:指扩展到5G
-L +5G:指增加5G
注意:此时物理边界已经扩展,但是文件系统还没有扩展,lv大小已经扩展为5G,但是文系统的大小还是为2G;
[root@node1 ~]# lvs /dev/myvg/mylv LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg -wi-ao---- 5.00g [root@node1 ~]# df -Th | grep mylv /dev/mapper/myvg-mylv ext3 2.0G 68M 1.9G 4% /test
2.扩展逻辑卷边界:
# resize2fs /dev/VG_NAME/LV_NAME 5G|-p
5G:扩展到5G
-p:使用lv全部空间
#此时再看下文件系统大小,文件系统已经扩展到5G:
[root@node1 ~]# df -Th | grep mylv /dev/mapper/myvg-mylv ext3 5.0G 69M 4.7G 2% /test
八.缩减逻辑卷:
注意:
1.先缩减文件系统,再缩减物理边界
2.不能在线缩减,得先卸载分区(umount)
3.确保缩减后的空间大小依然能存储原有的所有数据
4.在缩减前强行检查文件,以确保文件系统处于一致性状态
实例:
1.卸载分区
# umount /dev/VG_NAME/LV_NAME
2.强制进行检测
# e2fsck -f /dev/VG_NAME/LV_NAME
3.缩减逻辑卷
# resize2fs /dev/VG_NAME/LV_NAME 3G ###缩减为3G
注意:此时只是缩减了文件系统的大小,物理边界的大小没有变;
[root@node1 ~]# lvs /dev/myvg/mylv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 5.00g
4.缩减物理
# lvreduce -L -3 /dev/VG_NAME/LV_NAME
-L -3:缩减3G
-L 3:缩减到3G
#此时在看下lv大小,已经缩减到指定大小
[root@node1 ~]# lvs /dev/myvg/mylv
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mylv myvg -wi-a----- 3.00g
5.重新挂载使用
[root@node1 ~]# df -Th | grep mylv
/dev/mapper/myvg-mylv ext3 3.0G 68M 2.8G 3% /test
*已经缩减成功!
九.快照卷:
注意:
1.生命周期为整个数据使用时长,在这段时间内,数据的增长量不能超过快照卷大小;
2.快照卷大小最好与原逻辑卷的大小相同;
3.快照卷为只读;
4.快照卷跟原卷在一个卷组内;
5.在线创建,只能所完整备份
创建:
# lvcreate -L # -n S_LV_NAME -s -p r /dev/VG_NAME/LV_NAME
-L:指定快照卷大小
-n:指定快照卷名称
-s:创建快照卷
-p r|w :指定快照卷权限
移除:
# lvremove /dev/VG_NAME/S_LV_NAME
实例:
1.先创建快照卷
[root@node1 ~]# lvcreate -L 3G -n mylv_bak -s -p r /dev/myvg/mylv Logical volume "mylv_bak" created.
2.查看pv列表
[root@node1 ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert mylv myvg owi-aos--- 3.00g mylv_bak myvg sri-a-s--- 3.00g mylv 0.00
3.挂载查看数据
[root@node1 ~]# mount /dev/myvg/mylv_bak /mnt/ mount: block device /dev/mapper/myvg-mylv_bak is write-protected, mounting read-only
4.最后可以使用tar将快照卷数据归档备份;