欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

centos下LVM配置与管理

程序员文章站 2022-03-04 16:07:27
centos下LVM配置与管理 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。 LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来, ......

centos下LVM配置与管理

LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上层服务的是以逻辑卷的方式。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果我们新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性。

LVM的主要功能:容量组合,动态调整容量大小。

LVM是将多块硬盘从逻辑上组合成一个大容量的存储空间(即VG),最终要划分成小的LV逻辑卷来使用这些空间。

LVM的管理流程:先给硬盘分区(也可以不分区),再创建PV,再创建VG,再创建LV,再格式化LV,再手动或自动挂载LV,再写入数据。

 

基本的逻辑卷管理概念:

PV(Physical Volume)- 物理卷 

物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。

VG(Volumne Group)- 卷组 

卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。

LV(Logical Volume)- 逻辑卷 

逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。

 

关系图如下:

centos下LVM配置与管理

PE(Physical Extent)- 物理块    

LVM 默认使用4MB的PE区块,而LVM的LV最多仅能含有65534个PE (lvm1 的格式),因此默认的LVM的LV最大容量为4M*65534/(1024M/G)=256G。PE是整个LVM 最小的储存区块,也就是说,其实我们的资料都是由写入PE 来处理的。简单的说,这个PE 就有点像文件系统里面的block 大小。所以调整PE 会影响到LVM 的最大容量!不过,在 CentOS 6.x 以后,由于直接使用 lvm2 的各项格式功能,因此这个限制已经不存在了。

功能/命令

物理卷管理(PV)

卷组管理(VG)

逻辑卷管理(LV)

扫描查询系统中的LVM设备

pvscan 

vgscan 

lvscan 

建立

pvcreate 

vgcreate 

lvcreate

显示

pvdisplay 

vgdisplay 

lvdisplay 

状态

pvs 

vgs 

lvs 

删除

pvremove 

vgremove 

lvremove 

扩展(增加容量)

 

vgextend 

lvextend/lvresize 

缩容(缩小容量)

 

vgreduce 

lvreduce/lvresize 

调整系统中看到的容量

resize2fs/xfs_growfs 

 

LVM逻辑卷管理的思路:先给硬盘分区(也可以不分区),再创建pv,再创建vg,再创建lv,再格式化,再手动或自动挂载,再测试数据的写入。

创建PV物理卷:

centos下LVM配置与管理
 1 [root@serve1 ~]# lsblk
 2 NAME        MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 3 sda           8:0    0   20G  0 disk
 4 ├─sda1        8:1    0    1G  0 part /boot
 5 └─sda2        8:2    0   19G  0 part
 6  ├─cl-root 253:0    0   17G  0 lvm  /
 7  └─cl-swap 253:1    0    2G  0 lvm  [SWAP]
 8 sdb           8:16   0   20G  0 disk
 9 sdc           8:32   0   20G  0 disk
10 sr0          11:0    1  7.7G  0 rom
View Code

创建PV

centos下LVM配置与管理
1 [root@serve1 ~]# pvcreate /dev/sd[b-c]
2  Physical volume "/dev/sdb" successfully created.
3  Physical volume "/dev/sdc" successfully created.
View Code

查看PV的状态  

centos下LVM配置与管理
1 [root@serve1 ~]# pvs
2  PV         VG Fmt  Attr PSize   PFree
3  /dev/sda2  cl lvm2 a--  <19.00g     0
4  /dev/sdb      lvm2 ---   20.00g 20.00g
5  /dev/sdc      lvm2 ---   20.00g 20.00g
View Code

查看PV的详细信息

centos下LVM配置与管理
 1 [root@serve1 ~]# pvdisplay
 2  --- Physical volume ---
 3  PV Name               /dev/sda2
 4  VG Name               cl
 5  PV Size               <19.00 GiB / not usable 3.00 MiB
 6  Allocatable           yes (but full)
 7  PE Size               4.00 MiB
 8  Total PE              4863
 9  Free PE               0
10  Allocated PE          4863
11  PV UUID               fnufKb-qQ1k-jEH3-tS3R-7dvF-Ldrd-6PMuoG
12 
13  "/dev/sdb" is a new physical volume of "20.00 GiB"
14  --- NEW Physical volume ---
15  PV Name               /dev/sdb
16  VG Name
17  PV Size               20.00 GiB
18  Allocatable           NO
19  PE Size               0
20  Total PE              0
21  Free PE               0
22  Allocated PE          0
23  PV UUID               koMQS3-Omw9-bg8r-Lluq-vM7C-nm0B-KqKIaH
24 
25  "/dev/sdc" is a new physical volume of "20.00 GiB"
26  --- NEW Physical volume ---
27  PV Name               /dev/sdc
28  VG Name
29  PV Size               20.00 GiB
30  Allocatable           NO
31  PE Size               0
32  Total PE              0
33  Free PE               0
34  Allocated PE          0
35  PV UUID               mzTDJw-Ak2N-CzDD-eEcO-bczl-wA0r-44LHqd
View Code

创建VG卷组:

centos下LVM配置与管理
 1 [root@serve1 ~]# vgcreate vg1 /dev/sd[b-c]
 2  Volume group "vg1" successfully created
 3  
 4 [root@serve1 ~]# vgs
 5  VG  #PV #LV #SN Attr   VSize   VFree
 6  cl    1   2   0 wz--n- <19.00g     0
 7  vg1   2   0   0 wz--n-  39.99g 39.99g
 8 [root@serve1 ~]# vgdisplay
 9  --- Volume group ---
10  VG Name               vg1
11  System ID
12  Format                lvm2
13  Metadata Areas        2
14  Metadata Sequence No  1
15  VG Access             read/write
16  VG Status             resizable
17  MAX LV                0
18  Cur LV                0
19  Open LV               0
20  Max PV                0
21  Cur PV                2
22  Act PV                2
23  VG Size               39.99 GiB
24  PE Size               4.00 MiB
25  Total PE              10238
26  Alloc PE / Size       0 / 0
27  Free  PE / Size       10238 / 39.99 GiB
28  VG UUID               xfNGUD-pYdS-eUI9-5Y0u-Ulqx-rwWW-EI5gso
29 
30  --- Volume group ---
31  VG Name               cl
32  System ID
33  Format                lvm2
34  Metadata Areas        1
35  Metadata Sequence No  3
36  VG Access             read/write
37  VG Status             resizable
38  MAX LV                0
39  Cur LV                2
40  Open LV               2
41  Max PV                0
42  Cur PV                1
43  Act PV                1
44  VG Size               <19.00 GiB
45  PE Size               4.00 MiB
46  Total PE              4863
47  Alloc PE / Size       4863 / <19.00 GiB
48  Free  PE / Size       0 / 0
49  VG UUID               cxM7kS-b357-Y4MX-439j-EkVT-3X4l-5tTZp1
View Code

说明:vg1指的是卷组名称,/dev/[b-c]是卷组中的设备

创建LV逻辑卷(这里我创建了2个LV逻辑卷):

centos下LVM配置与管理
 1 [root@serve1 ~]# lvcreate -L 25G -n lv1 vg1    #创建LV逻辑卷 
 2   Logical volume "lv1" created.
 3   
 4 [root@serve1 ~]# lvs
 5   LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 6   root cl  -wi-ao---- <17.00g
 7   swap cl  -wi-ao----   2.00g
 8   lv1  vg1 -wi-a-----  25.00g
 9   
10 [root@serve1 ~]# lvdisplay
11   --- Logical volume ---
12   LV Path                /dev/vg1/lv1
13   LV Name                lv1
14   VG Name                vg1
15   LV UUID                PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
16   LV Write Access        read/write
17   LV Creation host, time serve1, 2017-11-18 23:32:49 +0800
18   LV Status              available
19   # open                 0
20   LV Size                25.00 GiB
21   Current LE             6400
22   Segments               2
23   Allocation             inherit
24   Read ahead sectors     auto
25   - currently set to     8192
26   Block device           253:2
27  
28   --- Logical volume ---
29   LV Path                /dev/cl/swap
30   LV Name                swap
31   VG Name                cl
32   LV UUID                fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
33   LV Write Access        read/write
34   LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
35   LV Status              available
36   # open                 2
37   LV Size                2.00 GiB
38   Current LE             512
39   Segments               1
40   Allocation             inherit
41   Read ahead sectors     auto
42   - currently set to     8192
43   Block device           253:1
44  
45   --- Logical volume ---
46   LV Path                /dev/cl/root
47   LV Name                root
48   VG Name                cl
49   LV UUID                OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
50   LV Write Access        read/write
51   LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
52   LV Status              available
53   # open                 1
54   LV Size                <17.00 GiB
55   Current LE             4351
56   Segments               1
57   Allocation             inherit
58   Read ahead sectors     auto
59   - currently set to     8192
60   Block device           253:0
View Code

 

 

明:-L:指定逻辑卷的大小,单位为"kKmMgGtT"字节; -n:指定逻辑卷的名称; vg1是卷组的名称,卷组的名称要和上面创建的卷组名称一致。

centos下LVM配置与管理
 1 [root@serve1 ~]# lvcreate -l +100%FREE -n lv2 vg1
 2   Logical volume "lv2" created.
 3   
 4 [root@serve1 ~]# lvs
 5   LV   VG  Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 6   root cl  -wi-ao---- <17.00g
 7   swap cl  -wi-ao----   2.00g
 8   lv1  vg1 -wi-a-----  25.00g
 9   lv2  vg1 -wi-a-----  14.99g
10   
11 [root@serve1 ~]# lvdisplay
12   --- Logical volume ---
13   LV Path                /dev/vg1/lv1
14   LV Name                lv1
15   VG Name                vg1
16   LV UUID                PDVaXp-eih9-ogif-PvBu-Mve2-nCUf-086A8o
17   LV Write Access        read/write
18   LV Creation host, time serve1, 2017-11-18 23:32:49 +0800
19   LV Status              available
20   # open                 0
21   LV Size                25.00 GiB
22   Current LE             6400
23   Segments               2
24   Allocation             inherit
25   Read ahead sectors     auto
26   - currently set to     8192
27   Block device           253:2
28 
29   --- Logical volume ---
30   LV Path                /dev/vg1/lv2
31   LV Name                lv2
32   VG Name                vg1
33   LV UUID                DSymjV-ExDB-wTSR-6lns-Swjz-ZzP5-Ywf0xA
34   LV Write Access        read/write
35   LV Creation host, time serve1, 2017-11-18 23:42:30 +0800
36   LV Status              available
37   # open                 0
38   LV Size                14.99 GiB
39   Current LE             3838
40   Segments               1
41   Allocation             inherit
42   Read ahead sectors     auto
43   - currently set to     8192
44   Block device           253:3
45 
46   --- Logical volume ---
47   LV Path                /dev/cl/swap
48   LV Name                swap
49   VG Name                cl
50   LV UUID                fjdF4f-JxFB-gtEh-7k4C-74BC-odR2-wIL6Sy
51   LV Write Access        read/write
52   LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
53   LV Status              available
54   # open                 2
55   LV Size                2.00 GiB
56   Current LE             512
57   Segments               1
58   Allocation             inherit
59   Read ahead sectors     auto
60   - currently set to     8192
61   Block device           253:1
62 
63   --- Logical volume ---
64   LV Path                /dev/cl/root
65   LV Name                root
66   VG Name                cl
67   LV UUID                OddHW1-lehU-NcYT-uO19-nD7y-kdSx-PO3ZW0
68   LV Write Access        read/write
69   LV Creation host, time serve1, 2017-09-27 23:42:53 +0800
70   LV Status              available
71   # open                 1
72   LV Size                <17.00 GiB
73   Current LE             4351
74   Segments               1
75   Allocation             inherit
76   Read ahead sectors     auto
77   - currently set to     8192
78   Block device           253:0
View Code

说明:-l:指定逻辑卷的大小(LE数)

创建挂载目录、格式化挂载并写入文件测试:

centos下LVM配置与管理
 1 #格式化LV逻辑卷
 2 [root@serve1 ~]# mkfs.xfs /dev/vg1/lv1
 3 meta-data=/dev/vg1/lv1           isize=512    agcount=4, agsize=1638400 blks
 4          =                       sectsz=512   attr=2, projid32bit=1
 5          =                       crc=1        finobt=0, sparse=0
 6 data     =                       bsize=4096   blocks=6553600, imaxpct=25
 7          =                       sunit=0      swidth=0 blks
 8 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 9 log      =internal log           bsize=4096   blocks=3200, version=2
10          =                       sectsz=512   sunit=0 blks, lazy-count=1
11 realtime =none                   extsz=4096   blocks=0, rtextents=0
12 
13 [root@serve1 ~]# mkfs.xfs /dev/vg1/lv2
14 meta-data=/dev/vg1/lv2           isize=512    agcount=4, agsize=982528 blks
15          =                       sectsz=512   attr=2, projid32bit=1
16          =                       crc=1        finobt=0, sparse=0
17 data     =                       bsize=4096   blocks=3930112, imaxpct=25
18          =                       sunit=0      swidth=0 blks
19 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
20 log      =internal log           bsize=4096   blocks=2560, version=2
21          =                       sectsz=512   sunit=0 blks, lazy-count=1
22 realtime =none                   extsz=4096   blocks=0, rtextents=0
23 
24 #挂载逻辑卷
25 [root@serve1 ~]# mount /dev/vg1/lv1 /web
26 [root@serve1 ~]# mount /dev/vg1/lv2 /data
27 
28 [root@serve1 ~]# df -hT
29 文件系统            类型      容量  已用  可用 已用% 挂载点
30 /dev/mapper/cl-root xfs        17G  4.3G   13G   26% /
31 devtmpfs            devtmpfs  1.9G     0  1.9G    0% /dev
32 tmpfs               tmpfs     1.9G     0  1.9G    0% /dev/shm
33 tmpfs               tmpfs     1.9G  9.1M  1.9G    1% /run
34 tmpfs               tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
35 /dev/sda1           xfs      1014M  238M  777M   24% /boot
36 tmpfs               tmpfs     378M   12K  378M    1% /run/user/42
37 tmpfs               tmpfs     378M     0  378M    0% /run/user/0
38 /dev/mapper/vg1-lv1 xfs        25G   33M   25G    1% /web
39 /dev/mapper/vg1-lv2 xfs        15G   33M   15G    1% /data
40 
41 [root@serve1 ~]# echo /dev/mapper/vg1-lv1 /web  xfs  defaults 0  0 >>/etc/fstab
42 [root@serve1 ~]# echo /dev/mapper/vg1-lv2 /date  xfs  defaults 0  0 >>/etc/fstab
43 
44 [root@serve1 ~]# cat /etc/fstab
45 
46 #
47 # /etc/fstab
48 # Created by anaconda on Wed Sep 27 23:42:53 2017
49 #
50 # Accessible filesystems, by reference, are maintained under '/dev/disk'
51 # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
52 #
53 /dev/mapper/cl-root     /                       xfs     defaults        0 0
54 UUID=4318c13a-c39b-484d-aaa0-ce6331eddc30 /boot                   xfs     defaults        0 0
55 /dev/mapper/cl-swap     swap                    swap    defaults        0 0
56 /dev/mapper/vg1-lv1 /web xfs defaults 0 0
57 /dev/mapper/vg1-lv2 /date xfs defaults 0 0
View Code

说明:centos7支持xfs和etx4类型的文件系统,centos6不支持xfs类型的文件系统。

卸载删除LVM

思路:删除LVM的步骤和创建LVM的步骤是相反的。先删除LV逻辑卷,再删除VG卷组,最后删除PV物理卷

centos下LVM配置与管理
 1 [root@serve1 ~]# lvremove /dev/vg1/lv1
 2 Do you really want to remove active logical volume vg1/lv1? [y/n]: y
 3   Logical volume "lv1" successfully removed
 4 [root@serve1 ~]# lvs
 5   LV   VG Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
 6   root cl -wi-ao---- <17.00g
 7   swap cl -wi-ao----   2.00g
 8   
 9 #删除VG1卷组
10 [root@serve1 ~]# vgremove vg1
11   Volume group "vg1" successfully removed
12   
13 #查看VG卷组状态
14 [root@serve1 ~]# vgs
15   VG #PV #LV #SN Attr   VSize   VFree
16   cl   1   2   0 wz--n- <19.00g    0
17 
18 #删除sd[b-c]物理卷
19 [root@serve1 ~]# pvremove /dev/sd[b-c]
20   Labels on physical volume "/dev/sdb" successfully wiped.
21   Labels on physical volume "/dev/sdc" successfully wiped.
22 
23 #查看PV物理卷状态
24 [root@serve1 ~]# pvs
25   PV         VG Fmt  Attr PSize   PFree
26   /dev/sda2  cl lvm2 a--  <19.00g    0
27   
28 #最后注释或删掉/etc/fstab里面逻辑卷的挂载信息。
View Code