前言:
LVM(Logical Volume Manager)是基于内核的一种逻辑卷管理器,LVM适合于管理大存储设备,并允许用户动态调整文件系统大小。此外,LVM的快照功能可以帮助我们快速备份数据。LVM为我们提供了逻辑概念上的磁盘,使得文件系统不再关心底层物理磁盘的概念。
看图识LVM
使用LVM创建逻辑卷需要我们提前了解以下几个概念:
PE:Physical Ex
LVM默认使用4MB的PE块,他是整个LVM最小的存储单元,也就是说,我们的文件数据都是由写入PE来处理的。简单的说,这个PE就是有点像文件系统里面的block大小。
PV:Physical Volume 物理卷
物理卷是LVM的最底层概念,是LVM的逻辑存储块,物理卷与磁盘分区是逻辑的对应关系。LVM提供了命令工具可以将分区转换为物理卷,通过组合物理卷可以生成卷组。
VG:Volume Group 卷组
卷组是LVM逻辑概念上的磁盘设备,通过将单个或多个物理卷组合成后生成卷组。卷组的大小取决于物理卷的容量以及个数。
LV:Logical Volume 逻辑卷
逻辑卷就是LVM逻辑意义上的分区,我们可以指定从卷组中提取多少容量来创建逻辑卷,最后对逻辑卷格式化并挂载使用。
PV常用命令:
pvcreate #创建一个PV物理卷 pvchange #修改PV的属性 pvresize #调整一个PV的大小 pvremove #删除一个PV pvmove #移动PE到指定物理卷 pvscan #搜索所有磁盘上的物理卷 pvs #显示PV的简要信息 pvdisplay #显示PV的属性信息
VG常用命令:
vgcreate #创建卷组 -l:设置此卷组可容纳的LV最大数,默认为255 -p:设置此卷组包含PV的最大数,默认为255 -s:设置此卷组PE大小,默认为4M vgextend #扩展VG大小 vgchange #修改VG属性信息 vgreduce #缩减VG大小 vgremove #删除VG vgscan #搜索所有磁盘上的卷组 vgs #显示VG简要信息 vgdisplay #显示VG属性信息 vgck #检查VG元数据
lvcreate #创建LV分区 -l:设置LV大小,以PE为单位 -L:设置LV大小,以字节为单位 -n:设置LV名称 -p:设置LV权限读写权限,默认为可读可写 -s:设置一个快照卷,对一个已存在的LV做快照 lvextend #扩展LV大小 lvreduce #缩减LV大小 lvchange #修改LV属性信息 -ay:标记LV为可用状态 -an:标记LV为不可用状态 lvremove #删除LV lvscan #搜索所有磁盘上的逻辑卷 lvs #显示LV简要信息 lvdisplay #显示LV属性信息
实战演习:
[root@server ~]# fdisk -l | grep ^/de /dev/sda1 * 1 64 512000 83 Linux /dev/sda2 64 2611 20458496 8e Linux LVM /dev/sdb1 1 14 112423+ 83 Linux /dev/sdb2 15 80 530145 83 Linux /dev/sdc1 1 654 5253223+ 8e Linux LVM /dev/sdd1 1 654 5253223+ 8e Linux LVM /dev/sde1 1 654 5253223+ 8e Linux LVM
创建PV:
[root@server ~]# pvcreate /dev/sd{c,d,e}1 Physical volume "/dev/sdc1" successfully created Physical volume "/dev/sdd1" successfully created Physical volume "/dev/sde1" successfully created [root@server ~]#
查看创建的PV
[root@server ~]# pvs #查看PV的简要信息 PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup lvm2 a-- 19.51g 0 /dev/sdc1 lvm2 --- 5.01g 5.01g /dev/sdd1 lvm2 --- 5.01g 5.01g /dev/sde1 lvm2 --- 5.01g 5.01g [root@server ~]#
[root@server ~]# pvdisplay #查看PV详细信息 --- Physical volume --- "/dev/sde1" is a new physical volume of "5.01 GiB" --- NEW Physical volume --- #新PV PV Name /dev/sde1 #物理卷名称 VG Name PV Size 5.01 GiB #物理卷大小 Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID VREiVr-2Jr5-jNM8-EoKo-Agxw-oypN-kyUrXI [root@server ~]#
创建VG:
[root@server ~]# vgcreate -s 2M myvg /dev/sdc1 /dev/sdd1 Volume group "myvg" successfully created [root@server ~]#
查看VG:
[root@server ~]# vgs VG #PV #LV #SN Attr VSize VFree VolGroup 1 2 0 wz--n- 19.51g 0 myvg 2 0 0 wz--n- 10.02g 10.02g #新建的VG,名称:myvg,大小10G [root@server ~]#
[root@server ~]# vgdisplay --- Volume group --- VG Name myvg #卷组名 System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 2 Act PV 2 VG Size 10.02 GiB #卷组大小 PE Size 2.00 MiB #PE大小2M Total PE 5128 Alloc PE / Size 0 / 0 Free PE / Size 5128 / 10.02 GiB #剩余容量 VG UUID W0FnIa-Z5Th-XRaM-EfcZ-HWeF-Jdee-jVTVyT
扩展myvg大小:
[root@server ~]# vgextend myvg /dev/sde1 Volume group "myvg" successfully extended
缩减myvg大小:
[root@server ~]# vgreduce myvg /dev/sde1 Removed "/dev/sde1" from volume group "myvg"
创建LV:
[root@server ~]# lvcreate -L +6G -n mylv myvg 创建大小为6G,名称为mylv的逻辑卷!卷组为myvg Logical volume "mylv" created [root@server ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.57g lv_swap VolGroup -wi-ao---- 1.94g mylv myvg -wi-a----- 6.00g #大小6G [root@server ~]# lvdisplay --- Logical volume --- LV Path /dev/myvg/mylv #逻辑卷mylv的路径 LV Name mylv #逻辑卷名称mylv VG Name myvg #基于myvg卷组 LV UUID EXKn5D-lVzU-JdlO-GYoo-CYpz-y20L-xn5cI5 LV Write Access read/write LV Creation host, time server.lili.com, 2015-06-10 17:47:02 +0800 LV Status available # open 0 LV Size 6.00 GiB Current LE 3072 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 [root@server ~]# mkfs.ext4 /dev/myvg/mylv #格式化LV [root@server ~]# mkdir /data #创建挂载路径 [root@server ~]# mount /dev/myvg/mylv /data/ #挂载mylv [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 5.8G 12M 5.5G 1% /data #大小为6G的/data
这样我们就成功的创建了我们的逻辑卷!可是随着业务的增加!data目录不够用了,我们就可以扩展mylv的大小,可在线扩展。
扩展mylv:
[root@server ~]# lvextend -L +1G -n /dev/myvg/mylv #扩展物理边界增加1G Size of logical volume myvg/mylv changed from 6.00 GiB (3072 extents) to 7.00 GiB (3584 extents). Logical volume mylv successfully resized [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 5.8G 12M 5.5G 1% /data #仍然为6G #逻辑卷没增加 [root@server ~]# resize2fs /dev/myvg/mylv #扩展逻辑边界。 注:只对ext文件系统使用。这里也可以指定扩展逻辑边界大小,默认物理边界大小。 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/myvg/mylv is mounted on /data; on-line resizing required old desc_blocks = 1, new_desc_blocks = 1 Performing an on-line resize of /dev/myvg/mylv to 1835008 (4k) blocks. The filesystem on /dev/myvg/mylv is now 1835008 blocks long. [root@server ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_root VolGroup -wi-ao---- 17.57g lv_swap VolGroup -wi-ao---- 1.94g mylv myvg -wi-a----- 7.00g [root@server ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 6.8G 14M 6.5G 1% /data #大小为7G了
缩减:
缩减的顺序应该与创建时的顺序相反,也就是卸载文件系统、删除逻辑卷、删除卷组、删除物理卷。缩减很危险,不到万不得已千万别缩减。缩减需离线。
缩减步骤:
1、先确定缩减后的目标大小;并确保对应的每一步逻辑卷大小中有足够的空间可容纳原有所有数据;
2、先制裁文件系统,并要执行强制检测
3、缩减逻辑边界
4、缩减物理边界
[root@server ~]# umount /data/ [root@server ~]# e2fsck -f /dev/myvg/mylv # 强制检测 e2fsck 1.41.12 (17-May-2010) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/myvg/mylv: 11/458752 files (0.0% non-contiguous), 65023/1835008 blocks [root@server ~]# resize2fs /dev/myvg/mylv 2G # 缩减逻辑边界至2G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/myvg/mylv to 524288 (4k) blocks. The filesystem on /dev/myvg/mylv is now 524288 blocks long. [root@server ~]# lvreduce -L 2G /dev/myvg/mylv # 缩减物理边界至2G WARNING: Reducing active logical volume to 2.00 GiB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce mylv? [y/n]: y # 确认,后果自负 Size of logical volume myvg/mylv changed from 7.00 GiB (3584 extents) to 4.00 GiB (2048 extents). Logical volume mylv successfully resized [root@server ~]# mount /dev/myvg/mylv /data/ # 重新挂载 [root@server ~]# df -lh Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup-lv_root 18G 3.6G 13G 23% / tmpfs 491M 228K 491M 1% /dev/shm /dev/sda1 477M 28M 424M 7% /boot /dev/sr0 4.4G 4.4G 0 100% /media/CentOS_6.6_Final /dev/mapper/myvg-mylv 1.9G 9.0M 1.8G 1% /data # 2G大小
创建快照卷:
快照卷是对逻辑卷进行的,因此必须跟目标逻辑卷在同一个卷组中,无须指明卷组。需确保剩余卷组可容纳快照。
lvcreate -L :大小 -n: 名称 -s:快照 -p r:只读
[root@server ~]# fuser /data/ # 创建快照卷时尽量避免有访问时创建快照! /data/: 8640c # 有访问
[root@server ~]# mount -o remount,ro /dev/myvg/mylv /data/ && lvcreate -L 1G -n mylv-snap -p r -s /dev/myvg/mylv && mount -o remount,rw /dev/myvg/mylv /data/ # 先以只读方式挂载逻辑卷&&然后创建快照&&然后在以读写方式挂载逻辑卷 Logical volume "mylv-snap" created [root@server ~]# mkdir /snap # 创建挂载点 [root@server ~]# mount /dev/myvg/mylv-snap /snap/ # 挂载快照 mount: block device /dev/mapper/myvg-mylv--snap is write-protected, mounting read-only #只读
卸载快照卷:
[root@server ~]# umount /snap/ # 卸载 [root@server ~]# lvremove /dev/myvg/mylv-snap # 移除快照 Do you really want to remove active logical volume mylv-snap? [y/n]: y # 确认 Logical volume "mylv-snap" successfully removed
好了!以上皆为个人学习总结!如有错误和遗落,还望指点!!
原创文章,作者:水蒸气,如若转载,请注明出处:http://www.178linux.com/5210