http://note.youdao.com/noteshare?id=0252cd5dcf7f2e5f11de5b3672779201&sub=ED011464ADA3467D94242717C8996048

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之上实现的。创建快照后,将创建一个监控对原卷中的元数据进行瞬间扫描(为了避免元数据备份的时间不一致),当文件任何内容改变时,元数据均会改变。在元数据变化之前,将变化的数据备份在于快照空间中。访问快照时,变化的部分在快照中,没有变化的部分在于原卷中。

    、快照是另一个路径指向与原卷相同的Inode

    、创建快照备份,只是对创建快照那一刻原卷内的所有数据进行备份,之后新加入的内容不会进行备份,需要用到(增量备份或差异备份)

    、快照的大小取决于:原卷存活的时间内数据变化量。最大大小为原卷大小

    、快照卷的路径:跟原卷在同一个卷组中。

二、创建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: [55.00 GiB] / in use: [ ] / in no VG: [55.00 GiB] # pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- .00g .00g
/dev/sdc1 lvm2 --- .00g .00g
/dev/sdc2 lvm2 --- .00g .00g
/dev/sdd1 lvm2 --- .00g .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
Total PE
Free PE
Allocated PE
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
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size <54.98 GiB
PE Size 6.00 MiB
Total PE
Alloc PE / Size /
Free PE / Size / <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
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 39.98 GiB
PE Size 6.00 MiB
Total PE
Alloc PE / Size /
Free PE / Size / 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, -- :: +
LV Status available
# open
LV Size 20.00 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device :

注意:创建lv后,将在/dev/vggroup目录中创建对应lv名称的软链接文件,同时也在/dev/mapper目录下创建链接文件,它们都指向/dev/dm设备。

[root@CentOS7 ~]#ll /dev/vggroup/lv1  /dev/mapper/vggroup-lv1
lrwxrwxrwx. root root Dec : /dev/mapper/vggroup-lv1 -> ../dm-
lrwxrwxrwx. root root Dec : /dev/vggroup/lv1 -> ../dm- [root@CentOS7 ~]#ll -d /dev/dm-
brw-rw----. root disk , Dec : /dev/dm-

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
Alloc PE / Size / 25.00 GiB
Free PE / Size / 35.02 GiB # 还有8964个pe,.02G的空间未使用 lvextend -L +10g /dev/vg1/lv1 # 按大小扩容10G
lvextend -l + /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 .9G 41G % /
/dev/sda1 976M 40M 886M % /boot
/dev/sda3 29G 113M 28G % /data
/dev/mapper/vg1-lv1 34G 48M 32G % /data/lvmnt # 总容量已变化

实验:不卸载直接扩容全部剩余空间

lvresize  -l  +%FREE  /dev/vg1/lv1  # 将vg1剩余的全部pe扩容至lv1

vgdisplay  | grep -i pe
Open LV
PE Size 4.00 MiB
Total PE
Alloc PE / Size / 60.02 GiB
Free PE / Size / # 已全部扩容,无空闲空间 resize2fs /dev/vg1/lv1 df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 48G .9G 41G % /
/dev/sda1 976M 40M 886M % /boot
/dev/sda3 29G 113M 28G % /data
/dev/mapper/vg1-lv1 59G 52M 56G % /data/lvmnt # 在未卸载逻辑卷的情况下,resize2fs这个命令也成功了

四、缩减lvm

与扩容的步骤相反,我们倒着来一步一步操作,先卸载挂载点,具体全部操作如下:

umount  /data/lvmnt   # 卸载挂载点

[root@CentOS6 ~]#resize2fs   /dev/vg1/lv1  45G  # 现将文件系统直接缩减至45G,但提示要先e2fsck 检查
resize2fs 1.41. (-May-)
Please run 'e2fsck -f /dev/vg1/lv1' first. # 提示 先运行 'e2fsck -f /dev/vg1/lv1' 保障数据安全完整 [root@CentOS6 ~]#e2fsck -f /dev/vg1/lv1
e2fsck 1.41. (-May-)
Pass : Checking inodes, blocks, and sizes
Pass : Checking directory structure
Pass : Checking directory connectivity
Pass : Checking reference counts
Pass : Checking group summary information
/dev/vg1/lv1: / files (0.0% non-contiguous), / blocks resize2fs /dev/vg1/lv1 45G
resize2fs 1.41. (-May-)
Resizing the filesystem on /dev/vg1/lv1 to (4k) blocks.
The filesystem on /dev/vg1/lv1 is now 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 ( extents) to 45.00 GiB ( 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
Free PE
Allocated PE
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
Free PE
Allocated PE
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
Free PE
Allocated PE
PV UUID mdC964-Odex-JZKg-AiV0-4l2u-I3e4-ixWvtR pvmove /dev/sdb1:- /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

1、物理卷管理
  1)创建物理卷
[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 .65g .57g
/dev/sda5 lvm2 ---- .00g .00g
/dev/sda6 lvm2 ---- .01g .01g
/dev/sda7 lvm2 ---- .01g .01g
[root@localhost ~]#
显示所有PV的详细属性信息
[root@localhost ~]# pvdisplay
显示指定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 ##
Total PE
Free PE
Allocated PE
PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP [root@localhost ~]#

3)移除物理卷

[root@localhost ~]# pvremove /dev/sda{,,}
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>]...

、查看已有的VG的名字,避免新建立的VG名会和原有VG名冲突
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
、创建VG,名为VG0
[root@localhost ~]# vgcreate vg0 /dev/sda{5,6,7}
Volume group "vg0" successfully created
[root@localhost ~]# 、查看是否创建成功
[root@localhost ~]# vgs

 2)显示: vgs,vgdisplay

、简要信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .01g .01g ## 组合pv所有的空间
[root@localhost ~]#
、所有信息
[root@localhost ~]# vgdisplay
、指定vg信息显示
[root@localhost ~]# vgdisplay vg0
--- Volume group ---
VG Name vg0
System ID
Format lvm2
Metadata Areas
Metadata Sequence No
VG Access read/write
VG Status resizable
MAX LV
Cur LV
Open LV
Max PV
Cur PV
Act PV
VG Size 45.01 GiB
PE Size 4.00 MiB ## 默认PE大小
Total PE ## 总PE个数
Alloc PE / Size /
Free PE / Size / 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
Free PE
Allocated PE
PV UUID aIUY10-QgvL-D2lt-f3J9-3tPb-PXpr-P3bqvP [root@localhost ~]#

   3) 扩展: vgextend VGNAME [<partition/raid/disk>]

、查看vg0大小
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .01g .01g ## 45G 、准备空闲pv
[root@localhost ~]# pvcreate /dev/sda8
Physical volume "/dev/sda8" successfully created
3、扩展
[root@localhost ~]# vgextend vg0 /dev/sda8
Volume group "vg0" successfully extended 、查看vg0大小
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .99g .99g ## .99G

 

 4) 缩减:vgreduce VGNAME [<partition/raid/disk>]

、查看vg0大小
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .99g .99g ## .99G 、将要移除的pv中的数据移动至其他pv上,如果有数据需要等待
[root@localhost ~]# pvmove /dev/sda8
No data to move for vg0
[root@localhost ~]# 、缩减
[root@localhost ~]# vgreduce vg0 /dev/sda8
Removed "/dev/sda8" from volume group "vg0" 、查看大小
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .01g .01g ##45G
[root@localhost ~]#

    5)删除:vgremove VGNAME [<partition/raid/disk>]

、查看vg0的空间
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .01g .01g 、移除vg
[root@localhost ~]# vgremove vg0
Volume group "vg0" successfully removed 、查看vg的简要信息
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .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---- .88g
lv_root myvg -wi-ao---- .83g
lv_swap myvg -wi-ao---- .95g
lv_usr myvg -wi-ao---- .65g
lv_var myvg -wi-ao---- .77g
、查看vg的空闲空间的大小,确认可以分配给LV的空间
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
myvg wz--n- .65g .57g
vg0 wz--n- .01g .01g ## 空闲45G
)、创建lv
[root@localhost ~]# lvcreate -L 10G -n mylv vg0
Logical volume "mylv" created. )、查看创建的lv
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- .88g
lv_root myvg -wi-ao---- .83g
lv_swap myvg -wi-ao---- .95g
lv_usr myvg -wi-ao---- .65g
lv_var myvg -wi-ao---- .77g
mylv vg0 -wi-a----- .00g ## 空闲10G

3.2、显示: lvs ,lvdisplay

、显示lv简要信息
[root@localhost ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- .88g
lv_root myvg -wi-ao---- .83g
lv_swap myvg -wi-ao---- .95g
lv_usr myvg -wi-ao---- .65g
lv_var myvg -wi-ao---- .77g
mylv vg0 -wi-a----- .00g 、显示某个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, -- :: +
LV Status available
# open
LV Size 10.00 GiB
Current LE
Segments
Allocation inherit
Read ahead sectors auto
- currently set to
Block device : [root@localhost ~]#

3.3 格式化

、格式化,挂载
)、格式化
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L 'liu' -m 3 /dev/vg0/mylv
)、挂载
[root@localhost ~]# mkdir /back
[root@localhost ~]# mount /dev/vg0/mylv /back 验证挂载
[root@localhost ~]# ls -l /back
总用量
drwx------ root root 8月 : lost+found
[root@localhost ~]# mount | fgrep back
/dev/mapper/vg0-mylv on /backup type ext4 (rw)
、查看文件系统可用空间
[root@localhost ~]# df -lhP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvg-lv_root 48G 520M 45G % /
tmpfs 122M 122M % /dev/shm
/dev/sda1 477M 33M 419M % /boot
/dev/mapper/myvg-lv_home .7G 9.9M .5G % /home
/dev/mapper/myvg-lv_usr 15G 710M 13G % /usr
/dev/mapper/myvg-lv_var .5G 88M .0G % /var
/dev/md127 .3G 23M .0G % /backup ## 与上次md设备名变化了,故而需要以LABE或UUID方式进行挂载
/dev/md126 .8G 23M .3G % /mydata
/dev/mapper/vg0-mylv .9G 3.8M .6G % /back ## 可用9. 、复制文件至LV中,并查看文件
[root@localhost ~]# cp /etc/{fstab,issue} /back
[root@localhost ~]# cat /back/{fstab,issue} 、扩展
[root@localhost ~]# lvextend -L +5G /dev/mapper/vg0-mylv 扩展物理边界
[root@localhost ~]# resize2fs /dev/vg0/mylv 修改逻辑边界(让文件系统扩展至逻辑卷空间大小)
、查看文件系统可用空间
[root@localhost ~]# df -lhP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-mylv 15G 3.5M 15G % /back ##可用15G 、查看文件,验证文件是否损坏
[root@localhost ~]# cat /backup/{fstab,issue}

3.4、  缩减:

、卸载
[root@localhost ~]# umount /Spring_dir/
、强制检测和修复
[root@localhost ~]# e2fsck -f /dev/vg0/mylv
、缩减文件系统空间
[root@localhost ~]# resize2fs /dev/vg0/mylv 1G
、缩减LV空间
[root@localhost ~]# lvreduce -L 5G /dev/mapper/vg0-mylv
Do you really want to reduce vg0/mylv? [y/n]: y
、挂载
[root@localhost ~]# mount /dev/mapper/vg0-mylv /backup/
、查看文件系统可用空间
[root@localhost ~]# df -lhP
Filesystem Size Used Avail Use% Mounted on/dev/md126 .8G 23M .3G % /mydata
/dev/mapper/vg0-mylv 976M 2.8M 943M % /backup 、查看文件是否损坏
[root@localhost ~]# cat /Spring_dir/{fstab,issue} #
# /etc/fstab
# Created by anaconda on Thu Aug ::
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(), findfs(), mount() and/or blkid() for more info
#
...

3.4、快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath\ 

      -s 指定原卷

    -p r 指明快照卷的权限,r:只读.rw:可读可写.

.查看原卷大小
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_home myvg -wi-ao---- .88g
lv_root myvg -wi-ao---- .83g
lv_swap myvg -wi-ao---- .95g
lv_usr myvg -wi-ao---- .65g
lv_var myvg -wi-ao---- .77g
mylv vg0 -wi-ao---- .00g
、创建快照卷
[root@localhost ~]# lvcreate -L 200M -s -n lv_snap -p r /dev/vg0/mylv
Logical volume "mylv_snap" created.
[root@localhost ~]# 、挂载快照卷
[root@localhost ~]# mount /dev/vg0/lv_snap /mnt 、显示内容
[root@localhost ~]# ls /mnt
fstab issue lost+found 、显示快照卷的可用空间
[root@localhost ~]# df -lPh
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg0-mylv 976M 2.8M 943M % /Spring_dir
/dev/mapper/vg0-lv_snap 976M 2.8M 943M % /mnt ## 同原卷大小,与快照卷是指向原卷Inode的另一个路径不谋而合。 、查看原卷和快照卷的内容
[root@localhost ~]# cat /mnt/fstab /Spring_dir/fstab
相同 、在原卷中增加内容
[root@localhost ~]# cp -r /etc/pam.d /Spring_dir/ ## 源为单个目录,用-r选项。目标存在为目录。复制,原名。 、查看快照卷是否也有此目录?
[root@localhost ~]# ls -l /mnt
总用量
-rw-r--r-- root root 8月 : fstab
-rw-r--r-- root root 8月 : issue
drwx------ root root 8月 : lost+found 、在原卷中,删除所有文件
[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

、卸载
[root@localhost ~]# umount /mnt
、删除卷
[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

参考 :https://blog.51cto.com/sonlich/1955800

最新文章

  1. C++ 之引用
  2. if..elif语句
  3. 虚方法的调用是怎么实现的(单继承VS多继承)
  4. BZOJ K大数查询(分治)(Zjoi2013)
  5. Delphi调用C++写的dll示例
  6. 我的Python成长之路---第八天---Python基础(23)---2016年3月5日(晴)
  7. iOS_文章3党库SDWebImage
  8. .net面试题【持续更新.....】
  9. django 实现登录时候输入密码错误5次锁定用户十分钟
  10. Struts2获取Session的三种方式
  11. Select标签 根据value值默认选中 Jquery
  12. lua post参数获取,参数截断
  13. Docker生态会重蹈Hadoop的覆辙吗?
  14. install rust
  15. leetcode — add-binary
  16. koa2入门使用总结
  17. Jmeter-csv文件参数化
  18. laravel获取当前的url以及当前的基础域名方法汇总
  19. leetcode991
  20. arcsde10 postgresql8.3 服务停止问题

热门文章

  1. 一步一步写News App(一)
  2. Tomcat server.xml port server context 配置
  3. cmd查找端口占用情况
  4. sql 批量插入
  5. less学习大纲总结
  6. arduino安装出现驱动程序不适用于该平台
  7. markdown编辑器抉择经历(做笔记\多系统用户)
  8. 库克谈新iPhone不支持5G的理由,学习一下如何高手怎么应答
  9. Data truncation: Incorrect datetime value: &#39;May 15, 2019 4:15:37 PM
  10. Spring整合rabbitmq(转载)