LVM2
逻辑卷管理器第二版,Logical Volume Manager Version 2,
dm:device mapper 将一个或多个底层块设备组织成一个逻辑设备的模块。
创建后逻辑卷的路径(lvpath)
原始路径:/dev/dm-#
其链接文件有:
1)/dev/mapper/VGNAME-LVNAME
2)/dev/VGNAME/LVNAME
1、纯软件实现的虚拟层次上的软设备lvm2
2、磁盘损坏时,数据恢复困难。人为损坏数据,恢复困难。
一、基础概念
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的 分区加入其中,这样可以实现一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性。LVM还能通过快照在备份的过程中保证日志文件和表空间文件在同一时间点的一致性。
-
PE(Physical Extend):卷的最小单位,可配置,默认4M大小,就像我们的数据是以页的形式存储一样,也可以类比为raid的chunk,文件系统的block,卷就是以PE的形式存储。
-
PV(Physical Volume):物理卷,如果要使用逻辑卷,首先第一步操作就是将磁盘格式化成PV,从上图可以看出PV是保护PE的,PV内PE的数量取决于这块磁盘的容量/4M.
-
VG(Volume Group):卷组,VG就是将很多PE组合在一起生成一个卷组,当然这里的PE是可以跨磁盘的,如果当前服务器磁盘空间不足就可以增加一个新磁盘对当前系统不会产生任何影响。
- 1、可动态扩展或缩减VG中PV的数量
- 2、类似于扩展分区,不能直接格式化使用
- 3、PE只有在VG创建后才会出现在PV中,其大小由创建时指定。默认为4M
-
LV(Logical Volume):逻辑卷,逻辑卷最终是给用户使用的,前面几个都是为创建逻辑卷做的准备,创建逻辑卷的大小只要不超过VG剩余空间就可以。
- 1、可动态扩展或缩减LV的大小,或 LV中PE的数量,即可跨越多个PV。
- 2、可以直接格式化并挂载使用。
- 3、LE只有在LV创建后才会出现在VG中,其大小由创建时指定。默认为1280
快照:在LV之上实现的。创建快照后,将创建一个监控对原卷中的元数据进行瞬间扫描(为了避免元数据备份的时间不一致),当文件任何内容改变时,元数据均会改变。在元数据变化之前,将变化的数据备份在于快照空间中。访问快照时,变化的部分在快照中,没有变化的部分在于原卷中。
1、快照是另一个路径指向与原卷相同的Inode 2、创建快照备份,只是对创建快照那一刻原卷内的所有数据进行备份,之后新加入的内容不会进行备份,需要用到(增量备份或差异备份) 3、快照的大小取决于:原卷存活的时间内数据变化量。最大大小为原卷大小 4、快照卷的路径:跟原卷在同一个卷组中。
二、创建LVM
2.1 pv管理(物理卷管理)
pvcreate # 创建pv pvscan # 扫描并列出所有的pv pvs # 显示与pvscan相似 pvdisplay # 列出pv属性信息 pvremove # 移除pv pvmove # 移除pv中的数据 pvcreate /dev/sdc1 /dev/sdd1 /dev/sdb1 /dev/sdc2 -y # 对已经划分好的几块分区创建pv;-y选项用于自动回答yes Wiping ext4 signature on /dev/sdc1. Physical volume "/dev/sdc1" successfully created. Physical volume "/dev/sdd1" successfully created. Physical volume "/dev/sdb1" successfully created. Physical volume "/dev/sdc2" successfully created. pvscan # 扫描并列出所有的pv PV /dev/sdc2 lvm2 [10.00 GiB] PV /dev/sdd1 lvm2 [15.00 GiB] PV /dev/sdb1 lvm2 [15.00 GiB] PV /dev/sdc1 lvm2 [15.00 GiB] Total: 4 [55.00 GiB] / in use: 0 [0 ] / in no VG: 4 [55.00 GiB] # pvs PV VG Fmt Attr PSize PFree /dev/sdb1 lvm2 --- 15.00g 15.00g /dev/sdc1 lvm2 --- 15.00g 15.00g /dev/sdc2 lvm2 --- 10.00g 10.00g /dev/sdd1 lvm2 --- 15.00g 15.00g pvdisplay /dev/sdb1 # pvdisplay 可以列出更详细的pv信息 "/dev/sdb1" is a new physical volume of "15.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 15.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID OBSoTj-YcyL-XPGh-wsTt-9zcj-qXSp-YC9YZY # 以上命令都可以看见pv的大小,数量,剩余空间等信息
2.2 管理vg
vgcreate # 创建VG
vgscan # 扫描并列出所有的vg
vgdisplay # 列出vg属性信息
vgremove # 移除vg,即删除vg
vgreduce # 从vg中移除pv,vg减小
vgextend # 将pv添加到vg中,vg扩容
vgchange # 修改vg属性,
vgcreate -s 6M vggroup /dev/sdb1 /dev/sdc1 /dev/sdc2 /dev/sdd1 # -s设定pe大小,默认为4M;vggroup为设置的vg名称;后边跟的4个文件为要创建vg的组员 Volume group "vggroup" successfully created [root@CentOS7 ~]#vgscan Reading volume groups from cache. Found volume group "vggroup" using metadata type lvm2 [root@CentOS7 ~]#vgdisplay --- Volume group --- VG Name vggroup System ID Format lvm2 # 格式分为lvm1 和lvm2 Metadata Areas 4 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 4 Act PV 4 VG Size <54.98 GiB PE Size 6.00 MiB Total PE 9383 Alloc PE / Size 0 / 0 Free PE / Size 9383 / <54.98 GiB VG UUID flmx2S-0LT9-hgCZ-HcfL-TT6n-jkna-jSIWbp [root@CentOS7 ~]#vgreduce vggroup /dev/sdd1 Removed "/dev/sdd1" from volume group "vggroup" [root@CentOS7 ~]#vgdisplay --- Volume group --- VG Name vggroup System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 39.98 GiB PE Size 6.00 MiB Total PE 6824 Alloc PE / Size 0 / 0 Free PE / Size 6824 / 39.98 GiB VG UUID flmx2S-0LT9-hgCZ-HcfL-TT6n-jkna-jSIWbp # 可见,减掉sdd1后vg里的数量变为3,容量也减少了; [root@CentOS7 ~]#vgextend vggroup /dev/sdd1 # 在vggroup中再添加一块pv; Volume group "vggroup" successfully extended
vgchange用于设置卷组的活动状态,卷组的激活状态主要影响的是lv。使用-a选项来设置。
vgchange -a y vggroup # 将vggroup设置为活动状态(active yes)
vgchange -a y vggroup # 将vggroup设置为非激活状态(active no)
2.3 管理lv
lvcreate # 创建lv lvscan # 扫描并列出所有的lv lvdisplay # 列出lv属性信息 lvremove # 移除lv,即删除lv lvreduce(lvresize) # 缩小lv容量 lvextend(lvresize) # 增大lv容量 lvresize # 改变lv容量
格式:lvcreate {-L size(M/G) | -l PEnum} -n lv_name vg_name 选项说明: -L:根据大小来创建lv,即分配多大空间给此lv -l:根据PE的数量来创建lv,即分配多少个pe给此lv -n:指定lv的名称
示例: [root@CentOS7 ~]#lvcreate -L 20G -n lv1 vggroup Rounding up size to full physical extent 20.00 GiB Logical volume "lv1" created. [root@CentOS7 ~]#lvscan ACTIVE ‘/dev/vggroup/lv1‘ [20.00 GiB] inherit [root@CentOS7 ~]#lvdisplay # 一般后边跟lv1的绝对流经,/dev/vggroup/lv1 --- Logical volume --- LV Path /dev/vggroup/lv1 LV Name lv1 VG Name vggroup LV UUID 4Wnt9z-T8OP-cJL3-ViL8-QIAE-2vMC-UzNaOf LV Write Access read/write LV Creation host, time CentOS7.songtai, 2018-12-19 18:41:23 +0800 LV Status available # open 0 LV Size 20.00 GiB Current LE 3414 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:0
注意:创建lv后,将在/dev/vggroup目录中创建对应lv名称的软链接文件,同时也在/dev/mapper目录下创建链接文件,它们都指向/dev/dm设备。
[root@CentOS7 ~]#ll /dev/vggroup/lv1 /dev/mapper/vggroup-lv1 lrwxrwxrwx. 1 root root 7 Dec 19 18:41 /dev/mapper/vggroup-lv1 -> ../dm-0 lrwxrwxrwx. 1 root root 7 Dec 19 18:41 /dev/vggroup/lv1 -> ../dm-0 [root@CentOS7 ~]#ll -d /dev/dm-0 brw-rw----. 1 root disk 253, 0 Dec 19 18:41 /dev/dm-0
2.4 格式化lv;挂载
mke2fs -t ext4 /dev/vggroup/lv1 mount /dev/vggroup/lv1 /data/lvmnt/ # 也可以 mount /dev/mapper/vggroup-lv1 /data/lvmnt
三、扩容lvm
在对LV(逻辑卷)进行容量扩充之前先查看VG(卷组)中剩余空间有多少,扩充的大小不能超过VG剩余的空间大小;即使vg中没有空余的空间,也可以往vg中添加pv来扩容。
扩容的两个关键步骤如下:
(1).使用lvextend或者lvresize添加更多的pe或容量到lv中
(2).使用resize2fs命令(xfs则使用xfs_growfs)将lv增加后的容量增加到对应的文件系统中(此过程是修改文件系统而非LVM内容)
注意:扩容前须将挂载的逻辑卷卸载再进行扩容!
扩容前先看看还有多少空心啊的pe可以扩充:
vgdisplay # 查看有多少空闲空间或空闲pe vgdisplay | grep -i pe # 精确查找 PE Size 4.00 MiB Total PE 15364 Alloc PE / Size 6400 / 25.00 GiB Free PE / Size 8964 / 35.02 GiB # 还有8964个pe,35.02G的空间未使用 lvextend -L +10g /dev/vg1/lv1 # 按大小扩容10G lvextend -l +2500 /dev/vg1/lv1 # 按pe数量扩容2500个pe lvresize -L +10G /dev/vg1/lv1 lvreduce -L -10G /dev/vg1/lv1 # 缩小容量 lvresize -L -10G /dev/vg1/lv1
将扩容好的lv重新挂载后,df -h
发现容量并未变化,还需要resize2fs
工具来改变ext文件系统的大小.(xfs_growfs
)
resize2fs /dev/vg1/lv1 df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 4.9G 41G 11% / /dev/sda1 976M 40M 886M 5% /boot /dev/sda3 29G 113M 28G 1% /data /dev/mapper/vg1-lv1 34G 48M 32G 1% /data/lvmnt # 总容量已变化
实验:不卸载直接扩容全部剩余空间
lvresize -l +100%FREE /dev/vg1/lv1 # 将vg1剩余的全部pe扩容至lv1 vgdisplay | grep -i pe Open LV 1 PE Size 4.00 MiB Total PE 15364 Alloc PE / Size 15364 / 60.02 GiB Free PE / Size 0 / 0 # 已全部扩容,无空闲空间 resize2fs /dev/vg1/lv1 df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 48G 4.9G 41G 11% / /dev/sda1 976M 40M 886M 5% /boot /dev/sda3 29G 113M 28G 1% /data /dev/mapper/vg1-lv1 59G 52M 56G 1% /data/lvmnt # 在未卸载逻辑卷的情况下,resize2fs这个命令也成功了
四、缩减lvm
与扩容的步骤相反,我们倒着来一步一步操作,先卸载挂载点,具体全部操作如下:
umount /data/lvmnt # 卸载挂载点 [root@CentOS6 ~]#resize2fs /dev/vg1/lv1 45G # 现将文件系统直接缩减至45G,但提示要先e2fsck 检查 resize2fs 1.41.12 (17-May-2010) Please run ‘e2fsck -f /dev/vg1/lv1‘ first. # 提示 先运行 ‘e2fsck -f /dev/vg1/lv1‘ 保障数据安全完整 [root@CentOS6 ~]#e2fsck -f /dev/vg1/lv1 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/vg1/lv1: 11/3940352 files (0.0% non-contiguous), 293333/15732736 blocks resize2fs /dev/vg1/lv1 45G resize2fs 1.41.12 (17-May-2010) Resizing the filesystem on /dev/vg1/lv1 to 11796480 (4k) blocks. The filesystem on /dev/vg1/lv1 is now 11796480 blocks long. # 成功将lvm的文件系统的容量缩减至45G lvresize -L 45G /dev/vg1/lv1 # 将lv的容量缩减至45G WARNING: Reducing active logical volume to 45.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg1/lv1? [y/n]: y Size of logical volume vg1/lv1 changed from 60.02 GiB (15364 extents) to 45.00 GiB (11520 extents). Logical volume lv1 successfully resized. # 会有提示减少lvm容量会摧毁数据,y 同意缩减。
此时已经成功将lvm由60G缩减至45G ,至于减少的这15G是属于哪块设备的,我们通过检查pv来判断,毕竟PE --> PV --> VG --> LV ,哪些PE空闲直接查看PV即可。
[root@CentOS6 ~]#pvdisplay --- Physical volume --- PV Name /dev/sdd1 VG Name vg1 PV Size 15.01 GiB / not usable 2.83 MiB Allocatable yes PE Size 4.00 MiB Total PE 3841 Free PE 3 Allocated PE 3838 PV UUID 7xbtSO-sJ5P-F8h3-xPcd-FT5d-D9Zt-bHGp34 --- Physical volume --- PV Name /dev/sde1 VG Name vg1 PV Size 15.01 GiB / not usable 2.83 MiB Allocatable yes PE Size 4.00 MiB Total PE 3841 Free PE 3841 Allocated PE 0 PV UUID bZsiMZ-ZhbM-szh1-EDBZ-YyOP-xfQX-S12UDH # 可见 dev/sde1这块设备是完全空闲的,sdd1上空闲3个PE
补充:如果lvm有dev/sd{a,b,c,d,e}5块磁盘组成,我们在缩减容量是要指定空出sdb磁盘,怎么操作?
上面的操作完成后,已经空出了一块sde,那么我们只需将sdb中的数据(即PE)全部挪进sde即可,操作如下
pvdisplay /dev/sdb # 可见全部的PE都占用了 PV Name /dev/sdb1 VG Name vg1 PV Size 15.01 GiB / not usable 2.83 MiB Allocatable yes (but full) PE Size 4.00 MiB Total PE 3841 Free PE 0 Allocated PE 3841 PV UUID mdC964-Odex-JZKg-AiV0-4l2u-I3e4-ixWvtR pvmove /dev/sdb1:0-3841 /dev/sde # 将/dev/sdb上0-3841编号的PE全部移动到/dev/sde
然后,再将这个空出的pv从vg中移出,最后再移出该pv即可,操作如下:
vgreduce vg1 /dev/sde1 # 从vg1 中移出/dev/sde1;注意不是vgremove,该命令是删除vg的。 pvremove /dev/sde1 # 移出该pv pvdisplay # 列表中已经没有了/dev/sde1
LVM在CentOS 6上的实现
[root@localhost ~]# cat /etc/centos-release CentOS release 6.9 (Final)
使用LVM2的准备:分区ID为8e
[root@localhost ~]# pvcreate /dev/sda{5,6,7} Physical volume "/dev/sda5" successfully created Physical volume "/dev/sda6" successfully created Physical volume "/dev/sda7" successfully created
2)显示Pv
1、显示所有PV的简要描述信息 [root@localhost ~]# pvs PV VG Fmt Attr PSize PFree /dev/sda2 myvg lvm2 a--u 97.65g 17.57g /dev/sda5 lvm2 ---- 10.00g 10.00g /dev/sda6 lvm2 ---- 15.01g 15.01g /dev/sda7 lvm2 ---- 20.01g 20.01g [root@localhost ~]# 2、显示所有PV的详细属性信息 [root@localhost ~]# pvdisplay 3、显示指定PV的详细属性信息 [root@localhost ~]# pvdisplay /dev/sda5 "/dev/sdc5" is a new physical volume of "10.00 GiB" --- NEW Physical volume --- PV Name /dev/sda5 ## VG Name ## PV Size 10.00 GiB ## Allocatable NO ## NO当前查看的PE没有加入至卷组中,不能分配其中的PE。YES 表示当前查看的PVNAME已经加入至VG中,且可分配其中的PE。 PE Size 0 ## Total PE 0 Free PE 0 Allocated PE 0 PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP [root@localhost ~]#
3)移除物理卷
[root@localhost ~]# pvremove /dev/sda{5,6,7} Labels on physical volume "/dev/sda5" successfully wiped Labels on physical volume "/dev/sda6" successfully wiped Labels on physical volume "/dev/sda7" successfully wiped [root@localhost ~]#
2、卷组管理
1)创建: vgcreate VGNAME [<partition/raid/disk>]...
1、查看已有的VG的名字,避免新建立的VG名会和原有VG名冲突 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g
2、创建VG,名为VG0 [root@localhost ~]# vgcreate vg0 /dev/sda{5,6,7} Volume group "vg0" successfully created [root@localhost ~]#
3、查看是否创建成功 [root@localhost ~]# vgs
2)显示: vgs,vgdisplay
1、简要信息 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 3 0 0 wz--n- 45.01g 45.01g ## 组合pv所有的空间 [root@localhost ~]# 2、所有信息 [root@localhost ~]# vgdisplay 3、指定vg信息显示 [root@localhost ~]# vgdisplay vg0 --- Volume group --- VG Name vg0 System ID Format lvm2 Metadata Areas 3 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 3 Act PV 3 VG Size 45.01 GiB PE Size 4.00 MiB ## 默认PE大小 Total PE 11523 ## 总PE个数 Alloc PE / Size 0 / 0 Free PE / Size 11523 / 45.01 GiB ## 空闲PE数 VG UUID HNyUPI-MsLO-od5j-JBFx-is6S-u9Dl-HiOWr1 [root@localhost ~]# ****注意创建PE后,显示PV的详细属性信息中才会有PE相关的信息**** [root@localhost ~]# pvdisplay /dev/sda5 --- Physical volume --- PV Name /dev/sda5 VG Name vg0 ## 加入至vg0组中 PV Size 10.00 GiB / not usable 4.51 MiB ## 10G大小 Allocatable yes ## 表示当前查看的/dev/sdc5已经加入至vg0中,且可分配其中的PE。 PE Size 4.00 MiB ## 默认PE大小 Total PE 2560 Free PE 2560 Allocated PE 0 PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP [root@localhost ~]#
3) 扩展: vgextend VGNAME [<partition/raid/disk>]
1、查看vg0大小 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 3 0 0 wz--n- 45.01g 45.01g ## 45G 2、准备空闲pv [root@localhost ~]# pvcreate /dev/sda8 Physical volume "/dev/sda8" successfully created 3、扩展 [root@localhost ~]# vgextend vg0 /dev/sda8 Volume group "vg0" successfully extended 4、查看vg0大小 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 4 0 0 wz--n- 49.99g 49.99g ## 49.99G
4) 缩减:vgreduce VGNAME [<partition/raid/disk>]
1、查看vg0大小 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 4 0 0 wz--n- 49.99g 49.99g ## 49.99G 2、将要移除的pv中的数据移动至其他pv上,如果有数据需要等待 [root@localhost ~]# pvmove /dev/sda8 No data to move for vg0 [root@localhost ~]# 3、缩减 [root@localhost ~]# vgreduce vg0 /dev/sda8 Removed "/dev/sda8" from volume group "vg0" 4、查看大小 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 3 0 0 wz--n- 45.01g 45.01g ##45G [root@localhost ~]#
5)删除:vgremove VGNAME [<partition/raid/disk>]
1、查看vg0的空间 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 3 0 0 wz--n- 45.01g 45.01g 2、移除vg [root@localhost ~]# vgremove vg0 Volume group "vg0" successfully removed 3、查看vg的简要信息 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g
3、逻辑卷管理
3.1 创建: lvcreate -L #[KMGTE] -n LVNAME VGNAME
1)、查看lv名字,避免创建的名字与之冲突 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_home myvg -wi-ao---- 4.88g lv_root myvg -wi-ao---- 48.83g lv_swap myvg -wi-ao---- 1.95g lv_usr myvg -wi-ao---- 14.65g lv_var myvg -wi-ao---- 9.77g 2)、查看vg的空闲空间的大小,确认可以分配给LV的空间 [root@localhost ~]# vgs VG #PV #LV #SN Attr VSize VFree myvg 1 5 0 wz--n- 97.65g 17.57g vg0 3 0 0 wz--n- 45.01g 45.01g ## 空闲45G 3)、创建lv [root@localhost ~]# lvcreate -L 10G -n mylv vg0 Logical volume "mylv" created. 4)、查看创建的lv [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_home myvg -wi-ao---- 4.88g lv_root myvg -wi-ao---- 48.83g lv_swap myvg -wi-ao---- 1.95g lv_usr myvg -wi-ao---- 14.65g lv_var myvg -wi-ao---- 9.77g mylv vg0 -wi-a----- 10.00g ## 空闲10G
3.2、显示: lvs ,lvdisplay
1、显示lv简要信息 [root@localhost ~]# lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_home myvg -wi-ao---- 4.88g lv_root myvg -wi-ao---- 48.83g lv_swap myvg -wi-ao---- 1.95g lv_usr myvg -wi-ao---- 14.65g lv_var myvg -wi-ao---- 9.77g mylv vg0 -wi-a----- 10.00g 2、显示某个lv的详细信息 [root@localhost ~]# lvdisplay /dev/mapper/vg0-mylv --- Logical volume --- LV Path /dev/vg0/mylv ##lvpath LV Name mylv VG Name vg0 LV UUID faTCWz-2P0e-qy9q-pk8T-mdAL-HycR-4T9lQF LV Write Access read/write LV Creation host, time localhost.localdomain, 2017-08-12 17:30:42 +0800 LV Status available # open 0 LV Size 10.00 GiB Current LE 2560 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:5 [root@localhost ~]#
3.3 格式化
1、格式化,挂载 1)、格式化 [root@localhost ~]# mke2fs -t ext4 -b 1024 -L ‘liu‘ -m 3 /dev/vg0/mylv 2)、挂载 [root@localhost ~]# mkdir /back [root@localhost ~]# mount /dev/vg0/mylv /back 验证挂载 [root@localhost ~]# ls -l /back 总用量 12 drwx------ 2 root root 12288 8月 12 17:37 lost+found [root@localhost ~]# mount | fgrep back /dev/mapper/vg0-mylv on /backup type ext4 (rw) 2、查看文件系统可用空间 [root@localhost ~]# df -lhP Filesystem Size Used Avail Use% Mounted on /dev/mapper/myvg-lv_root 48G 520M 45G 2% / tmpfs 122M 0 122M 0% /dev/shm /dev/sda1 477M 33M 419M 8% /boot /dev/mapper/myvg-lv_home 4.7G 9.9M 4.5G 1% /home /dev/mapper/myvg-lv_usr 15G 710M 13G 6% /usr /dev/mapper/myvg-lv_var 9.5G 88M 9.0G 1% /var /dev/md127 9.3G 23M 9.0G 1% /backup ## 与上次md设备名变化了,故而需要以LABE或UUID方式进行挂载 /dev/md126 9.8G 23M 9.3G 1% /mydata /dev/mapper/vg0-mylv 9.9G 3.8M 9.6G 1% /back ## 可用9.9 3、复制文件至LV中,并查看文件 [root@localhost ~]# cp /etc/{fstab,issue} /back [root@localhost ~]# cat /back/{fstab,issue} 4、扩展 [root@localhost ~]# lvextend -L +5G /dev/mapper/vg0-mylv 扩展物理边界 [root@localhost ~]# resize2fs /dev/vg0/mylv 修改逻辑边界(让文件系统扩展至逻辑卷空间大小) 5、查看文件系统可用空间 [root@localhost ~]# df -lhP Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-mylv 15G 3.5M 15G 1% /back ##可用15G 6、查看文件,验证文件是否损坏 [root@localhost ~]# cat /backup/{fstab,issue}
3.4、 缩减:
1、卸载 [root@localhost ~]# umount /Spring_dir/ 2、强制检测和修复 [root@localhost ~]# e2fsck -f /dev/vg0/mylv 3、缩减文件系统空间 [root@localhost ~]# resize2fs /dev/vg0/mylv 1G 4、缩减LV空间 [root@localhost ~]# lvreduce -L 5G /dev/mapper/vg0-mylv Do you really want to reduce vg0/mylv? [y/n]: y 5、挂载 [root@localhost ~]# mount /dev/mapper/vg0-mylv /backup/ 6、查看文件系统可用空间 [root@localhost ~]# df -lhP Filesystem Size Used Avail Use% Mounted on/dev/md126 9.8G 23M 9.3G 1% /mydata /dev/mapper/vg0-mylv 976M 2.8M 943M 1% /backup 7、查看文件是否损坏 [root@localhost ~]# cat /Spring_dir/{fstab,issue} # # /etc/fstab # Created by anaconda on Thu Aug 3 08:30:25 2017 # # Accessible filesystems, by reference, are maintained under ‘/dev/disk‘ # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # ...
3.4、快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath\
-s 指定原卷
-p r 指明快照卷的权限,r:只读.rw:可读可写.
1.查看原卷大小 LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert lv_home myvg -wi-ao---- 4.88g lv_root myvg -wi-ao---- 48.83g lv_swap myvg -wi-ao---- 1.95g lv_usr myvg -wi-ao---- 14.65g lv_var myvg -wi-ao---- 9.77g mylv vg0 -wi-ao---- 5.00g 2、创建快照卷 [root@localhost ~]# lvcreate -L 200M -s -n lv_snap -p r /dev/vg0/mylv Logical volume "mylv_snap" created. [root@localhost ~]# 4、挂载快照卷 [root@localhost ~]# mount /dev/vg0/lv_snap /mnt 5、显示内容 [root@localhost ~]# ls /mnt fstab issue lost+found 6、显示快照卷的可用空间 [root@localhost ~]# df -lPh Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg0-mylv 976M 2.8M 943M 1% /Spring_dir /dev/mapper/vg0-lv_snap 976M 2.8M 943M 1% /mnt ## 同原卷大小,与快照卷是指向原卷Inode的另一个路径不谋而合。 7、查看原卷和快照卷的内容 [root@localhost ~]# cat /mnt/fstab /Spring_dir/fstab 相同 8、在原卷中增加内容 [root@localhost ~]# cp -r /etc/pam.d /Spring_dir/ ## 源为单个目录,用-r选项。目标存在为目录。复制,原名。 9、查看快照卷是否也有此目录? [root@localhost ~]# ls -l /mnt 总用量 15 -rw-r--r-- 1 root root 1211 8月 12 18:09 fstab -rw-r--r-- 1 root root 47 8月 12 17:39 issue drwx------ 2 root root 12288 8月 12 17:37 lost+found 10、在原卷中,删除所有文件 [root@localhost ~]# rm -rf /Spring_dir/* 11、快照卷中的文件:仍然存在 [root@localhost ~]# ls -l /mnt 总用量 15 -rw-r--r-- 1 root root 1211 8月 12 18:09 fstab -rw-r--r-- 1 root root 47 8月 12 17:39 issue drwx------ 2 root root 12288 8月 12 17:37 lost+found 12、备份快照卷至/Spring_dir [root@localhost ~]# cp -a /mnt/* /Spring_dir/ [root@localhost ~]# ls /Spring_dir/ fstab issue lost+found
3.5、 删除: lvremove lvpath
13、卸载 [root@localhost ~]# umount /mnt 14、删除卷 [root@localhost ~]# lvremove /dev/vg0/lv_snap Do you really want to remove active logical volume lv_snap? [y/n]: y Logical volume "lv_snap" successfully removed