您的位置:首页 > 运维架构 > Linux

+++++++lvm2基本应用,扩展及缩减实现

2017-08-12 19:10 197 查看
LVM2
逻辑卷管理器第二版,Logical Volume Manager Version 2,将多个底层设备组织成一个单一的逻辑设备。
1、纯软件实现的虚拟层次上的软设备lvm2
2、磁盘损坏时,数据恢复困难。人为损坏数据,恢复困难。

一、LVM原理

PV(物理卷):在任何块设备(分区、RAID、磁盘)之上,附加一层元数据。

**在删除PV前,先将要移除PV上的数据移动至其他PV之上**

VG(卷组):在PV的存储空间中,更低层次上划分多个相同大小的PE,将所有PE组合成一个逻辑上的层次VG。
1、可动态扩展或缩减VG中PV的数量
2、类似于扩展分区,不能直接格式化使用。
3、PE只有在VG创建后才会出现在PV中,其大小由创建时指定。默认为4M

LV(逻辑卷):在逻辑层次的VG之上,划分VG为大小相同的PE,组合不同数量的PE为LV。

1、可动态扩展或缩减LV的大小,或 LV中PE的数量,即可跨越多个PV。
2、可以直接格式化并挂载使用。
3、LE只有在LV创建后才会出现在VG中,其大小由创建时指定。默认为1280




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



1、快照是另一个路径指向与原卷相同的Inode
2、创建快照备份,只是对创建快照那一刻原卷内的所有数据进行备份,之后新加入的内容不会进行备份,需要用到(增量备份或差异备份)
3、快照的大小取决于:原卷存活的时间内数据变化量。最大大小为原卷大小
4、快照卷的路径:跟原卷在同一个卷组中。

**备份:数据序列化的过程,将文件和数据抽象为丝状,才能被线缆所承载。
**序列化:将特定数据组织结构转换成流式化的数据,且能够还原成原来的样子。
***逻辑卷的扩展和收缩
逻辑卷分为内层和外层:内存为使用的文件系统大小,外层为逻辑空间大小。
1、如果要扩展时,先扩展外层,后扩展内层。
1、如果要缩减时,先缩减内层,后缩减外层。




二、LVM2的实现
LV是内核中dm(device mapper)模块实现的功能之一

1、实现RAID:可将多个底层设备组织成一个设备
2、实现逻辑卷
3、实现多路径

用户空间的程序:用户不能直接操作内核中的模块:
1、程序员通过API接口
2、通过程序员写的程序调用内核中的模块

创建后逻辑卷的路径(lvpath)
原始路径:/dev/dm-#
其链接文件有:
1)/dev/mapper/VGNAME-LVNAME
2)/dev/VGNAME/LVNAME

三、LVM2在CentOS 6上的实现

1、物理卷管理
创建:pvcreate [<partition/raid/disk>]...
显示:pvs ,pvdisplay
删除:pvremove [<partition/raid/disk>]

2、卷组管理
创建: vgcreate VGNAME [<partition/raid/disk>]...
显示: vgs,vgdisplay
扩展: vgextend VGNAME [<partition/raid/disk>]
缩减:vgreduce VGNAME [<partition/raid/disk>] **缩减前,pvmove <partition/disk/raid>
删除:vgremove VGNAME [<partition/raid/disk>]

3、逻辑卷管理
创建: lvcreate -L #[KMGTE] -n LVNAME VGNAME
-L #[KMGTE],-L指定创建逻辑卷的大小,单位有K/M/G/T/E

-n LVNAME ,-n指定逻辑卷的名字

显示: lvs ,lvdisplay
扩展:
mount lvpath MOUNT_POINT
lvextend -L [+]#[KMGTE] lvpath
让逻辑卷大小扩展: # 扩展后的具体大小. +# 原来的大小加上由#指定的值即为扩展后的值
resize2fs lvpath
让文件系统扩展至逻辑卷空间大小

缩减:
umount {lvpath|MOUNT_POINT}
e2fsck -f lvpath
resize2fs lvpath #[KMGTE]
让文件系统缩减至指定大小

lvreduce -L [-]#[KMGTE] lvpath
让逻辑卷大小缩减: # 缩减后的具体大小. -# 原来的大小减去由#指定的值即为缩减后的值

mount lvpath MOUNT_POINT
df -lh
删除: lvremove lvpath
快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath
-s 指定原卷

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

***查看当前系统的版本** # cat /etc/centos-release
[root@localhost ~]# cat /etc/centos-release
CentOS release 6.9 (Final)


使用LVM2的准备:分区ID为82
[root@localhost ~]# fdisk /dev/sdc
/dev/sdc1               1        6527    52428096    5  Extended
/dev/sdc5               1        1306    10490382   8e  Linux LVM
/dev/sdc6            1307        3265    15735636   8e  Linux LVM
/dev/sdc7            3266        5877    20980858+  8e  Linux LVM
1、物理卷管理
1)创建物理卷
[root@localhost ~]# pvcreate /dev/sdc{5,6,7}
Physical volume "/dev/sdc5" successfully created
Physical volume "/dev/sdc6" successfully created
Physical volume "/dev/sdc7" 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/sdc5       lvm2 ---- 10.00g 10.00g
/dev/sdc6       lvm2 ---- 15.01g 15.01g
/dev/sdc7       lvm2 ---- 20.01g 20.01g
[root@localhost ~]#
2/显示所有PV的详细属性信息
[root@localhost ~]# pvdisplay
3/显示指定PV的详细属性信息
[root@localhost ~]# pvdisplay /dev/sdc5
"/dev/sdc5" is a new physical volume of "10.00 GiB"
--- NEW Physical volume ---
PV Name               /dev/sdc5   ##
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/sdc{5,6,7}
Labels on physical volume "/dev/sdc5" successfully wiped
Labels on physical volume "/dev/sdc6" successfully wiped
Labels on physical volume "/dev/sdc7" 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/sdc{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/sdc5
--- Physical volume ---
PV Name               /dev/sdc5
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/sdc8
Physical volume "/dev/sdc8" successfully created
3、扩展
[root@localhost ~]# vgextend vg0 /dev/sdc8
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/sdc8
No data to move for vg0
[root@localhost ~]#

3、缩减
[root@localhost ~]# vgreduce vg0 /dev/sdc8
Removed "/dev/sdc8" 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、逻辑卷管理 创建: 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

显示: 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 ~]#
扩展:
1、格式化,挂载
2、查看文件系统可用空间
3、复制文件至LV中,并查看文件
4、扩展
5、查看文件系统可用空间
6、查看文件,验证文件是否损坏
1、格式化,挂载
1)、格式化
[root@localhost ~]# mke2fs -t ext4 -b 1024 -L 'Spring' -m 3 /dev/vg0/mylv
2)、挂载
[root@localhost ~]# install -d /Spring_dir
[root@localhost ~]# mount -L Spring /Spring_dir
3)、验证挂载
[root@localhost ~]# ls -l /Spring_dir
总用量 12
drwx------ 2 root root 12288 8月  12 17:37 lost+found
[root@localhost ~]# mount | fgrep pring
/dev/mapper/vg0-mylv on /Spring_dir 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% /Spring_dir           ## 可用9.9

3、复制文件至LV中,并查看文件
[root@localhost ~]# cp /etc/{fstab,issue} /Spring_dir/
[root@localhost ~]# cat /Spring_dir/{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% /Spring_dir          ##可用15G

6、查看文件,验证文件是否损坏
[root@localhost ~]# cat /Spring_dir/{fstab,issue}

缩减:
1、卸载
2、检测
3、缩减文件系统空间
4、缩减LV空间
5、挂载
6、查看文件系统可用空间
7、查看文件是否损坏
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 /Spring_dir/
6、查看文件系统可用空间
[root@localhost ~]# df -lhP
Filesystem                Size  Used Avail Use% Mounted on
/dev/md127                9.3G   23M  9.0G   1% /backup
/dev/md126                9.8G   23M  9.3G   1% /mydata
/dev/mapper/vg0-mylv      976M  2.8M  943M   1% /Spring_dir

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
#
...

快照:lvcreate -L #[KMGTE] -s -n lv_snap_NAME -p r lvpath
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

删除: 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 系统管理