一、逻辑卷管理机制LVM
(一)基本概念
LVM 是 Logical Volume Manager 的简称,译为中文就是逻辑卷管理。它是 Linux 下对硬盘分区的一种管理机制。LVM 适合于管理大存储设备,并允许用户动态调整文件系统的大小
我们在实际使用 Linux 服务器的时候,总会有一个让人头疼的问题,随着业务的增加,文件系统负载会越来越大,当到了空间不足的情况时,如果我们还在使用传统的分区方式管理硬盘,就不得不将现有的所有分区全部删除,并重新规划新的存储方案。
不仅如此,分区到底应该分多大呢?分得太大,会浪费硬盘空间;分得太小,又会面临不够使用的情况。如果在安装系统时规划不合理,这种困扰就会经常出现。如果出现了分区不够用的情况,应该怎么办?
在以往(2.4 内核以前)要想调整分区大小,要么先新建立一个更大的分区,然后复制旧分区中的内容到新分区,最后使用软链接来替代旧分区;要么使用调整分区大小的工具(如 parted),parted 虽然可以调整分区大小,但是它需要卸载分区之后才可以进行,也就是说需要停止服务。
其实,从一开始,我们就需要有一种管理机制来帮助我们动态地管理存储,LVM 就提供了这种功能。LVM 最大的好处就是可以随时调整分区的大小,分区中的现有数据不会丟失,并且不需要卸载分区、停止服务
LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RHEL5默认安装的分区格式就是LVM逻辑卷的格式,需要注意的是/boot分区不能基于LVM创建,必须独立出来。
- ①PE (Physical Extend) 物理扩展 :每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。
- ②PV (Physical Volume) 物理卷:就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- ③VG (Volume Group) LVM卷组:类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
- ④LV(Logical Volume) 逻辑卷:类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
- ⑤LE(Logical Extent) :逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
我们知道在使用LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的。所以我们所有的操作目的,其实就是去创建一个LV(Logical Volume),逻辑卷就是用来取代我们之前的分区,我们通过对逻辑卷进行格式化,然后进行挂载操作就可以使用了。
可以理解为:
PV:是物理的磁盘分区;VG:LVM中的物理的磁盘分区,也就是PV,必须加入VG,可以将VG理解为一个仓库或者是几个大的硬盘;LV:也就是从VG中划分的逻辑分区
所以在建立 LVM 的时候,需要按照以下步骤来进行:
- 把物理硬盘分成分区,当然也可以是整块物理硬盘;
- 把物理分区建立为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
- 把物理卷整合为卷组(VG)。卷组就已经可以动态地调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
- 把卷组再划分为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象为分区,所以也需要格式化和挂载。
(二)物理卷PV
1.建立分区
[root@admin ~]# parted
GNU Parted 3.1
使用 /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
使用 /dev/sdb
(parted) mklabel gpt
(parted) mkpart 1 ext2 0% 25%
(parted) mkpart 2 ext2 25% 50%
(parted) mkpart 3 ext3 50% 75%
(parted) mkpart 4 xfs 75% 100%
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name 标志
1 1049kB 5369MB 5368MB 1
2 5369MB 10.7GB 5369MB 2
3 10.7GB 16.1GB 5369MB 3
4 16.1GB 21.5GB 5368MB 4
2.建立物理卷
#建立物理卷命令如下:
pvcreate [设备文件名]
在建立物理卷时,我们既可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,则命令如下:
[root@admin ~]# pvcreate /dev/sdb
在我们的使用中要把分区建立成物理卷,所以执行以下命令:
[root@admin ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@admin ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
[root@admin ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
#也可以一次性创建 pvcreate /dev/sdb1 /dev/sdb2 /dev/sdb3
3.查看物理卷
查看物理卷的命令有三个,用来查询系统中哪些硬盘或分区是物理卷。命令如下:
- pvs
[root@admin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.72g 8.00m
/dev/sdb1 lvm2 --- <5.00g <5.00g
/dev/sdb2 lvm2 --- 5.00g 5.00g
/dev/sdb3 lvm2 --- 5.00g 5.00g
- pvscan
[root@admin ~]# pvscan
PV /dev/sda2 VG centos lvm2 [<99.72 GiB / 8.00 MiB free]
PV /dev/sdb3 lvm2 [5.00 GiB]
PV /dev/sdb1 lvm2 [<5.00 GiB]
PV /dev/sdb2 lvm2 [5.00 GiB]
Total: 4 [<114.72 GiB] / in use: 1 [<99.72 GiB] / in no VG: 3 [<15.00 GiB]
可以看到,在我们的系统中,/dev/sda2和/dev/sdb1~3 这四个分区是物理卷。最后一行的意思是:共有 4 个物理卷[大小]/使用了 1 个卷[大小]/空闲 3 个卷[大小]
- pvdisplay
它可以查看到更详细的物理卷状态
[root@admin ~]# pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos
PV Size <99.72 GiB / not usable 0
Allocatable yes
PE Size 4.00 MiB
Total PE 25528
Free PE 2
Allocated PE 25526
PV UUID 0BZ0Fj-Chto-UjJM-1C8c-sllG-LZgX-RchmZs
"/dev/sdb3" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb3
VG Name #属于的VG名,还没有分配,所以空白
PV Size 5.00 GiB #PV 的大小
Allocatable NO #是否已经分配
PE Size 0 #PE大小,因为还没有分配,所以PE大小也没有指定
Total PE 0 #PE总数
Free PE 0 #空闲PE数
Allocated PE 0 #空闲 PE数
PV UUID DDW1V9-pkXb-xsJ5-D2HA-sODp-w0Gp-n0ODwJ #PV的UUID
"/dev/sdb1" is a new physical volume of "<5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size <5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID ugZFrX-JKHZ-XWUX-9kx0-cfjE-07q5-ljzYrR
"/dev/sdb2" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb2
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID 1fm6hC-75P2-sFSx-fRBZ-VvIq-fkrj-eSdijN
4.删除物理卷
格式: pvremove PV …
[root@admin ~]# pvcreate /dev/sdc1 /dev/sdc2
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.
[root@admin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.72g 8.00m
/dev/sdb1 lvm2 --- <5.00g <5.00g
/dev/sdb2 lvm2 --- 5.00g 5.00g
/dev/sdb3 lvm2 --- 5.00g 5.00g
/dev/sdc1 lvm2 --- 1.86g 1.86g
/dev/sdc2 lvm2 --- 951.81g 951.81g
[root@admin ~]# pvremove /dev/sdc1 /dev/sdc2
Labels on physical volume "/dev/sdc1" successfully wiped.
Labels on physical volume "/dev/sdc2" successfully wiped.
[root@admin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.72g 8.00m
/dev/sdb1 lvm2 --- <5.00g <5.00g
/dev/sdb2 lvm2 --- 5.00g 5.00g
/dev/sdb3 lvm2 --- 5.00g 5.00g
在删除物理卷时,物理卷必须不属于任何卷组,也就是需要先将物理卷从卷组中删除,再删除物理卷。其实所有的删除就是把创建过程反过来,建立时不能少某个步骤,删除时也同样不能跳过某一步直接删除。
(三)卷组VG
按照建立逻辑卷的步骤,上面已经建立好了物理卷(sdb1~sdb3),接下来就该建立卷组了
可以把卷组想象成基本分区中的硬盘,是由多个物理卷组成的。卷组就已经可以动态地调整空间大小了,当卷组空间不足时,可以向卷组中添加新的物理卷。
1.建立卷组
格式:vgcreate [-s PE大小] 卷组名 物理卷名(创建好的物理卷)
[-s PE大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。这里的卷组名指的就是要创建的卷组的名称(自己指定的),而物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘。
上面我们建立了三个物理卷(/dev/sdb1~/dev/sdb3),将sdb1和sdb2加入卷组
[root@admin ~]# vgcreate -s 5M myvg01 /dev/sdb1 /dev/sdb2
Volume group "myvg01" successfully created
2.查看卷组
查看卷组的命令同样有三个:vgs和vgscan 命令主要用于查看系统中是否有卷组;而 vgdisplay 命令则用于查看卷组的详细状态。
- vgs
[root@admin ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 3 0 wz--n- <99.72g 8.00m
myvg01 2 0 0 wz--n- 9.99g 9.99g
- vgscan
[root@admin ~]# vgscan
Reading volume groups from cache.
Found volume group "centos" using metadata type lvm2
Found volume group "myvg01" using metadata type lvm2
- vgdisplay
[root@admin ~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size <99.72 GiB
PE Size 4.00 MiB
Total PE 25528
Alloc PE / Size 25526 / 99.71 GiB
Free PE / Size 2 / 8.00 MiB
VG UUID J8a7eu-dBD0-1YEp-gHeF-aETn-RnSP-dTRKde
--- Volume group ---
VG Name myvg01 #卷组名
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 #当前物理卷数(即sdb1和sdb2)
Act PV 2
VG Size 9.99 GiB #卷组大小
PE Size 5.00 MiB #PE大小
Total PE 2046 #PE总数
Alloc PE / Size 0 / 0 #已用 PE 数量/大小
Free PE / Size 2046 / 9.99 GiB #空闲PE数量/大小
VG UUID 49BQre-YuON-67vA-QYWY-LN3d-dPqA-baUaqk #VG的UUID
3.卷组的扩容
格式: vgextend VG PV
VG:需要扩容的卷组的卷组名
PV:被添加的物理卷
将/dev/sdb3加入刚才创建的卷组myvg01
[root@admin ~]# vgextend myvg01 /dev/sdb3
[root@admin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.72g 8.00m
/dev/sdb1 myvg01 lvm2 a-- <5.00g <5.00g
/dev/sdb2 myvg01 lvm2 a-- <5.00g <5.00g
/dev/sdb3 myvg01 lvm2 a-- <5.00g <5.00g #添加成功
[root@admin ~]# vgdisplay
……省略……
Max PV 0
Cur PV 3 #物理卷数增加
Act PV 3
VG Size <14.99 GiB #卷组容量增加
PE Size 5.00 MiB
Total PE 3069
Alloc PE / Size 0 / 0
Free PE / Size 3069 / <14.99 GiB
VG UUID 49BQre-YuON-67vA-QYWY-LN3d-dPqA-baUaqk
4.卷组的缩容
既然可以增加卷组容量,当然也可以减少卷组容量
格式: vgreduce VG PV
VG:需要缩容的卷组的卷组名
PV:被移除的物理卷
将卷组myvg01中的物理卷/dev/sdb3删除
[root@admin ~]# vgreduce myvg01 /dev/sdb3
Removed "/dev/sdb3" from volume group "myvg01"
[root@admin ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <99.72g 8.00m
/dev/sdb1 myvg01 lvm2 a-- <5.00g <5.00g
/dev/sdb2 myvg01 lv