前言
LVM(Logic Volume Manager,逻辑卷管理),是Linux管理磁盘的一种方式。在Windows及其他操作系统当中,也有类似的管理方式。
一、基本概念
1.何为逻辑卷管理LVM
逻辑,顾名思义,在逻辑上是讲得通的,在物理上却有可能是有出入的。
LVM,就是将物理上的一组或者多块磁盘组合,甚至是一块磁盘的一部分。将这些磁盘形成一块大的“磁盘池”。再将磁盘池逻辑上分成若干个区域,将其作为文件系统进行挂载。大家可以参照下图进行理解:
2.逻辑卷管理LVM的几个概念
物理卷PV(Physical Volume):就是一块物理磁盘,或者是未格式化的分区。
卷组VG(Volume Group):将物理卷组合成的“磁盘池”。
逻辑卷LG(Logical volume):将卷组拆分成的新的磁盘区域挂载后的名称。
所以说,在实际操作时,需要进行如下步骤:
①挂载物理磁盘
②物理磁盘disk---->物理卷PV:给物理磁盘或者分区打上PV的标记。
③物理卷PV---->卷组VG
④卷组VG---->逻辑卷LG
⑤将逻辑卷LG进行挂载和使用
3.逻辑卷管理LVM的优点
LVM的逻辑卷的大小可以进行动态调整。同时在上述过程中不会出现丢失数据的情况。
所以说,LVM是可扩展的磁盘管理工具。
二、逻辑卷管理的实际操作
1.根据linux文件系统与磁盘(二),进行添加磁盘的操作。
我这里加了一块5GB的磁盘。
[root@hikari ~]# fdisk -l
Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xea8c718f
2.使用fdisk,对磁盘进行分区
①增加一个新的1GB的主分区。
[root@hikari ~]# fdisk /dev/nvme0n2 ----->根据自己的磁盘进行选择
Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-10485759, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759): +1G
②这里提示分区1有标记了,问我们是否要删除,选择Y删除标记。
Created a new partition 1 of type ‘Linux’ and of size 1 GiB.
Partition #1 contains a ext2 signature.
Do you want to remove the signature? [Y]es/[N]o: Y
The signature will be removed by a write command.
③同样的,增加一个新的2GB分区。
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2): 2
First sector (2099200-10485759, default 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-10485759, default 10485759): +2G
Created a new partition 2 of type ‘Linux’ and of size 2 GiB.
④确认一下是否添加成功:
Command (m for help): p
Disk /dev/nvme0n2: 5 GiB, 5368709120 bytes, 10485760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xea8c718f
Device Boot Start End Sectors Size Id Type
/dev/nvme0n2p1 2048 2099199 2097152 1G 83 Linux
/dev/nvme0n2p2 2099200 6293503 4194304 2G 83 Linux
Filesystem/RAID signature on partition 1 will be wiped.
⑤最后wq保存退出。磁盘添加成功。
3.给分区打上标记
①使用pvdisplay命令确认是否存在PV。如果未显示信息就是未创建PV。
[root@hikari ~]# pvdisplay
[root@hikari ~]#
②使用pvcreate+磁盘目录创建PV
[root@hikari ~]# pvcreate /dev/nvme0n2p1
Physical volume “/dev/nvme0n2p1” successfully created.
此时,再使用pvdisplay就可以看到新增加的磁盘了。
[root@hikari ~]# pvdisplay
“/dev/nvme0n2p1” is a new physical volume of “1.00 GiB”
— NEW Physical volume —
PV Name /dev/nvme0n2p1
VG Name ----所属的VG。空,说明未分配VG。
PV Size 1.00 GiB
Allocatable NO ----是否可分配
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID (略)
同样的,增加第二块2GB分区。
[root@hikari ~]# pvcreate /dev/nvme0n2p2
Physical volume “/dev/nvme0n2p2” successfully created.
[root@hikari ~]# pvdisplay
“/dev/nvme0n2p1” is a new physical volume of “1.00 GiB”
— NEW Physical volume —
PV Name /dev/nvme0n2p1
VG Name
PV Size 1.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID (略)
“/dev/nvme0n2p2” is a new physical volume of “2.00 GiB”
— NEW Physical volume —
PV Name /dev/nvme0n2p2
VG Name
PV Size 2.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID (略)
②使用vgcreate+VG名称+所要分配的PV来创建VG
[root@hikari ~]# vgcreate VG1 /dev/nvme0n2p1 /dev/nvme0n2p2
Volume group “VG1” successfully created
同样,使用vgdisplay查看信息
[root@hikari ~]# vgdisplay
— Volume group —
VG Name VG1
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
Act PV 2
VG Size 2.99 GiB ----->1GB+2GB
PE Size 4.00 MiB
Total PE 766
Alloc PE / Size 0 / 0
Free PE / Size 766 / 2.99 GiB
VG UUID (略)
此时,再使用pvdisplay即可看到所属的VG的VG Name了
[root@hikari ~]# pvdisplay
— Physical volume —
PV Name /dev/nvme0n2p1
VG Name VG1
PV Size 1.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 255
Free PE 255
Allocated PE 0
PV UUID (略)
— Physical volume —
PV Name /dev/nvme0n2p2
VG Name VG1
PV Size 2.00 GiB / not usable 4.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 511
Free PE 511
Allocated PE 0
PV UUID (略)
在上述信息中,有一个PE的大小。这个是最小的使用单位。数据就是存放着这一个个PE所组成的文件系统中。
③使用lvcreate来创建LV。
lvcreate有很多功能,通过lvcreate --help可以更好地查看。
通常来说,使用以下格式来创建:
lvcreate -L 分配的大小 -n LV的名字 从哪个VG来
[root@hikari ~]# lvcreate -L 500M -n LV1 VG1
Logical volume “LV1” created.
同样的,使用lvdisplay来进行查看LV:
[root@hikari ~]# lvdisplay
— Logical volume —
LV Path /dev/VG1/LV1
LV Name LV1
VG Name VG1
LV UUID (略)
LV Write Access read/write
LV Creation host, time hikari, -01-26 15:47:25 +0800
LV Status available
#open 0
LV Size 500.00 MiB
Current LE 125
Segments 1
Allocation inherit
Read ahead sectors auto
-currently set to 8192
Block device 253:0
④对该LV进行格式化。
一般来说,最终的lv目录在:
/dev/VG名字/LV名字
[root@hikari ~]# mkfs.xfs /dev/VG1/LV1
meta-data=/dev/VG1/LV1 isize=512 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=1368, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
⑤使用mount进行挂载。
[root@hikari /]# mkdir /lvno1 -----创建目录
[root@hikari /]# mount /dev/VG1/LV1 /lvno1/ ------挂载
最后,用df -HT查看:
[root@hikari /]# df -HT
/dev/mapper/VG1-LV1 xfs 519M 31M 489M 6% /lvno1
这样,LVM的操作就完成了。
最后,在操作时使用lv/pv/vg+tab可以查看其他相关命令,例如lvresize(重新分配大小)等,可以结合实际情况使用。
下一讲将会讲解parted分区。