- A+
本文目录
简单介绍
LVM相关概念介绍请自行Google,这里仅给出简单的介绍:
基本的逻辑卷管理概念:
- PV(Physical Volume)- 物理卷
物理卷在逻辑卷管理中处于最底层,它可以是实际物理硬盘上的分区,也可以是整个物理硬盘,也可以是raid设备。
- VG(Volumne Group)- 卷组
卷组建立在物理卷之上,一个卷组中至少要包括一个物理卷,在卷组建立之后可动态添加物理卷到卷组中。一个逻辑卷管理系统工程中可以只有一个卷组,也可以拥有多个卷组。
- LV(Logical Volume)- 逻辑卷
逻辑卷建立在卷组之上,卷组中的未分配空间可以用于建立新的逻辑卷,逻辑卷建立后可以动态地扩展和缩小空间。系统中的多个逻辑卷可以属于同一个卷组,也可以属于不同的多个卷组。
关系图如下:

- 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 的各项格式功能,因此这个限制已经不存在了。
创建LVM系统分区方式的主要步骤如下:
1. 添加新的物理磁盘2. 创建新的分区,最多可分配【3个主分区,1个扩展分区】 或 【4个主分区】,扩展分区又可以有多个分区;window常见的分配方式:方式1:[1个主分区(C盘)+1个扩展分区(包括3个分区,D,E,F盘)]方式2:[4个主分区,分别作为:C、D、E、F盘]若是使用LVM方式分区,分区时最好选择LVM分区方式;3. 创建PV;4. 创建VG;5. 创建LV;6. 格式化LV,ext3,ext4等格式;7. 挂载LV到指定目录;8. 将挂载信息写入:/etc/fstab;9. LVM扩容操作9.1 LV的扩容;(1) 使用VG的Free空间,对LV扩容;(2) 完成后需要在对文件系统扩容;9.2 VG的扩容方式1: 通过增加PV来实现方式2: 通过扩展raid(磁盘阵列)设备的容量来间接对VG扩容10. LVM缩减操作10.1 LV的缩减10.2 VG的缩减11. 删除LVM
其他说明:
凡是以“#”开头的行,都表示linux指令,如:
表示的是:
[root@localhost ~]
如下是最初的系统基本信息:
操作系统:Centos7;
[root@localhost ~]
Filesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 50G 1.3G 46G 3% /devtmpfs 911M 0 911M 0% /devtmpfs 921M 0 921M 0% /dev/shmtmpfs 921M 8.5M 912M 1% /runtmpfs 921M 0 921M 0% /sys/fs/cgroup/dev/sda1 477M 142M 310M 32% /boot/dev/mapper/centos-home 47G 251M 44G 1% /hometmpfs 185M 0 185M 0% /run/user/0
[root@localhost ~]Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectorsDevice BootStartEndBlocksIdSystem/dev/sda1 *2048102604751200083Linux/dev/sda2 10260482095923191042831368eLinux LVM--------LVM分区测试时,主要使用了sd{b,c,d,e,f,g}等----Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectorsDisk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectorsDisk /dev/sdd: 16.1 GB, 16106127360 bytes, 31457280 sectorsDisk /dev/sde: 16.1 GB, 16106127360 bytes, 31457280 sectorsDisk /dev/sdf: 16.1 GB, 16106127360 bytes, 31457280 sectorsDisk /dev/sdg: 10.7 GB, 10737418240 bytes, 20971520 sectors-----下面是系统安装后存在的,为方便说明,后面将其显示省略-----Disk /dev/mapper/centos-root: 53.7 GB, 53687091200 bytes, 104857600 sectorsDisk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectorsDisk /dev/mapper/centos-home: 50.9 GB, 50944016384 bytes, 99500032 sectors
说明:
上面这些是安装完系统时就存在的,为方便后续的描述,在进行“df -h”时,省略掉了这些,其他指令也有部分省略。
一、创建系统分区
选择/dev/sdb创建分区;
将整个sdb磁盘划分为一个sdb1分区,格式为Linux LVM;
由于显示信息过长,这里省略了部分不重要的显示信息。
Command (m for help): n (创建新分区)Partition type:p primary (0 primary, 0 extended, 4 free)e extendedSelect (default p): p (选择创建主分区)Partition number (1-4, default 1): 1 (分区号选择1)First sector (2048-31457279, default 2048):Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-31457279, default 31457279):Using default value 31457279Partition 1 of type Linux and of size 15 GiB is setCommand (m for help): p (查看已经创建的分区)Disk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectorsDevice Boot Start End Blocks Id System/dev/sdb1 2048 31457279 15727616 83 Linux (系统默认为83,即:Linux)Command (m for help): t (修改分区格式)Selected partition 1Hex code (type L to list all codes): 8e (8e为Linux LVM格式)Changed type of partition 'Linux' to 'Linux LVM'Command (m for help): pDisk /dev/sdb: 16.1 GB, 16106127360 bytes, 31457280 sectorsDevice Boot Start End Blocks Id System/dev/sdb1 2048 31457279 15727616 8e Linux LVMCommand (m for help): w
二、创建PV
首先说明一些简单指令,常见的查看指令包括如下三种:
1. pv相关:pvdisplay、pvs、pvscan,pvcreate
2. vg相关:vgdisplay、vgs、vgscan,vgcreate
3. lv相关:lvdisplay、lvs、lvscan,lvcreate
"/dev/sdb1" is a new physical volume of "10.00 GiB"--- NEW Physical volume ---PV Name /dev/sdb1VG NamePV Size 10.00 GiBAllocatable NOPE Size 0Total PE 0Free PE 0Allocated PE 0PV UUID dZRM2W-X2Lz-I3Jz-i4S4-E8fN-BF4K-oZqhd3PV VG Fmt Attr PSize PFree/dev/sdb1 lvm2 --- 10.00g 10.00gPV /dev/sdb1 lvm2 [10.00 GiB]
三、创建VG
创建VG时,可以使用如下几种方式来创建
- raid:磁盘阵列;
- 分区,如:/dev/sdb1;
- 整个磁盘,如:/dev/sdc;
由于我们事先没有准备好磁盘阵列RAID,所以这里仅仅演示使用 分区和整个磁盘来创建VG。
下面将使用“分区/dev/sdb1” 和 “磁盘/dev/sdc” 创建VG,并设置PE大小为64M。
Physical volume "/dev/sdc" successfully createdVolume group "vg0" successfully created使用分区/dev/sdb1 和 磁盘/dev/sdc 来创建vg,并设置PE大小为64MVG #PV #LV #SN Attr VSize VFreevg0 2 0 0 wz--n- 19.99g 19.99g上面知道:/dev/sdb1和/dev/sdb都是10G,所以vg0的大小为19.99G;- # vgdisplay vg0
--- Volume group ---VG Name vg0System IDFormat lvm2Metadata Areas 2Metadata Sequence No 1VG Access read/writeVG Status resizableMAX LV 0Cur LV 0Open LV 0Max PV 0Cur PV 2Act PV 2VG Size 19.99 GiBPE Size 64.00 MiBTotal PE 320Alloc PE / Size 0 / 0Free PE / Size 5118 / 19.99 GiBVG UUID m58K2q-eIsC-1Z3T-DySZ-cgKb-Sd3L-UbrW2z
四、创建LV-->格式化LV-->挂载LV
关于LV的操作主要有3个步骤,分别为:
- 创建LV;
- 格式化LV,如:ext3,ext4等;
- 挂载LV到指定目录下;
使用vg0创建lv1,初始大小设置为8G
Logical volume "lv1" created.从vg0中分出8G的空间给lv1使用VG #PV #LV #SN Attr VSize VFreevg0 2 1 0 wz--n- 19.99g 11.99g由于分出了8G给lv1,所以VFree之剩下:11.99GLV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg0 -wi-a----- 8.00g--- Logical volume ---LV Path /dev/vg0/lv1LV Name lv1VG Name vg0LV UUID wevRbf-Iy3b-wPfa-mK4a-DFoq-A24w-8q5axTLV Write Access read/writeLV Creation host, time localhost.localdomain, 2016-09-08 09:58:34 +0800LV Status availableLV Size 8.00 GiBCurrent LE 2048Segments 1Allocation inheritRead ahead sectors auto- currently set to 8192Block device 253:3
使用ext3文件系统对LV进行格式化
mke2fs 1.42.9 (28-Dec-2013)Filesystem label=OS type: LinuxBlock size=4096 (log=2)Fragment size=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks524288 inodes, 2097152 blocks104857 blocks (5.00%) reserved for the super userFirst data block=0Maximum filesystem blocks=214748364864 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632Allocating group tables: doneWriting inode tables: doneCreating journal (32768 blocks): doneWriting superblocks and filesystem accounting information: done
将lv1挂载到/mnt/lv1目录下
Filesystem Type Size Used Avail Use% Mounted on/dev/mapper/vg0-lv1 ext3 7.8G 19M 7.4G 1% /mnt/lv1
五、LV扩容
LV的扩容主要分2个步骤:
- 使用VG的Free空间,对LV扩容;
- 完成后需要在对文件系统扩容;
查看vg的容量,考虑从vg中再分配一些空间给LV
VG #PV #LV #SN Attr VSize VFreevg0 2 1 0 wz--n- 19.99g 11.99g现在还有11.99G可用Size of logical volume vg0/lv1 changed from 8.00 GiB (2048 extents) to 11.00 GiB (2816 extents).Logical volume lv1 successfully resized.将lv1添加3G容量VG #PV #LV #SN Attr VSize VFreecentos 1 3 0 wz--n- 99.45g 4.00mvg0 2 1 0 wz--n- 19.99g 8.99g由原先的11.99G可用变为8.99G可用LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convertlv1 vg0 -wi-ao---- 11.00g由原先的8G增加到了11G
对文件系统进行扩容
Filesystem Type Size Used Avail Use% Mounted on/dev/mapper/vg0-lv1 ext3 7.8G 19M 7.4G 1% /mnt/lv1可是发现实际容量并没有变化,还是7.8G这时需要对文件系统进行扩容
下面是扩容指令:
# resize2fs /dev/vg0/lv1resize2fs 1.42.9 (28-Dec-2013)Filesystem at /dev/vg0/lv1 is mounted on /mnt/lv1; on-line resizing requiredold_desc_blocks = 1, new_desc_blocks = 1The filesystem on /dev/vg0/lv1 is now 2883584 blocks long.对文件系统扩容Filesystem Type Size Used Avail Use% Mounted on/dev/mapper/vg0-lv1 ext3 11G 21M 11G 1% /mnt/lv1发现此时lv1的容量变为了11G
六、VG扩容
主要有两种扩容方式:
- 方式1: 通过增加PV来实现
- 方式2: 通过扩展RAID(磁盘阵列)设备的容量来间接对VG扩容(这里不进行展示)
<方式1>: 通过增加PV来实现
使用/dev/sdd来创建一个PV
Physical volume "/dev/sdd" successfully created创建PVPV VG Fmt Attr PSize PFree/dev/sdb1 vg0 lvm2 a-- 10.00g 0/dev/sdc vg0 lvm2 a-- 10.00g 8.99g/dev/sdd lvm2 --- 15.00g 15.00g新增加的PV有15GVolume group "vg0" successfully extended使用PV对VG扩容VG #PV #LV #SN Attr VSize VFreevg0 3 1 0 wz--n- 34.99g 23.99g扩容后的vg0由19.99G变为了34.99G
<方式2>: 通过扩展raid(磁盘阵列)设备的容量来间接对VG扩容
这里不进行阐述






