逻辑卷管理
逻辑卷管理分布
Linux中的LVM
快照
条带化
镜像
使用Linux LVM
定义物理卷
创建卷组
创建逻辑卷
创建文件系统
修改LVM
1、逻辑卷管理布局:
逻辑卷管理器( logical volume manager, LVM)可以动态的添加存储空间。
逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。在逻辑管理的世界里,硬盘分区称为物理卷****( physical volume, PV)。每个物理卷都会映射到硬盘上特定的物理分区。
多个物理卷集中在一起可以形成一个卷组( volume group, GV)。逻辑卷管理系统将卷组视为一个物理硬盘,但事实上卷组可能是由分布在多个物理硬盘上的多个物理分区组成的。卷组提供了一个创建逻辑分区的平台,而这些逻辑分区则包含了文件系统。
整个结构中的最后一层是逻辑卷( logical volume,LV)。逻辑卷为Linux提供了创建文件系统的分区环境,作用类似于Linux中的物理硬盘分区。Linux系统将逻辑卷视为物理分区。
下图所示是典型的Linux逻辑卷管理环境的基本布局
图中卷组横跨了三个不同的物理卷。覆盖了5个独立的物理分区。在卷组内部有两个独立的逻辑卷。图中可以看到有一个未使用的分区,如果需要的话,你可以通过LVM把该分区加入到卷组中。
我的理解是:LVM可以将许多个硬盘当作一个硬盘来使用,并且在需要时添加内存或着减少内存都可以。
2、Linux中的LVM
1)快照:有了可读写的快照之后,就可以删除原来的逻辑卷,然后将快照作为代替挂载上。这个功能对能快速故障转移或涉及修改数据的程序实验(如果原先失败需要恢复修改过程的数据)非常有用。
2)条带化:有了条带化以后,可跨多个物理硬盘创建逻辑卷。当Linux LVM将文件写入逻辑卷时,文件中的数据块会被分散到多个硬盘上。每个后继数据块会被写到下一个硬盘上。
3)镜像:当你创建镜像逻辑卷时,LVM会将原始逻辑卷同步到镜像副本下。
3、使用Linux LVM
1)定义物理卷:
1:创建Linux LVVM分区。
[root@CHENDAJIE chendajie]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
All primary partitions are in use
添加逻辑分区 5
起始 扇区 (25579520-26601471,默认为 25579520):
将使用默认值 25579520
Last 扇区, +扇区 or +size{K,M,G} (25579520-26601471,默认为 26601471):+200M
分区 5 已设置为 Linux 类型,大小设为 200 MiB
命令(输入 m 获取帮助):t
分区号 (1-5,默认 5):5
Hex 代码(输入 L 列出所有代码):8e #不清楚的话可以按L显示出分区格式
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
输入partprobe命令通知系统修改分区表
[root@CHENDAJIE chendajie]# partprobe
方式打开。
下一步是用分区创建实际的物理卷,可以通过pvcreate命令来完成。
[root@CHENDAJIE chendajie]# pvcreate /dev/sda5
Physical volume "/dev/sda5" successfully created.
pvcreate定义了用于物理卷的物理分区,它只是简单的将分区标记为Linux LVM系统中的分区。
值得注意的是,只要系统显示出现了 Physical volume "/dev/sda5" successfully created.
就没问题。
此外,你还可以使用pvdisplay 命令查看
[root@CHENDAJIE chendajie]# pvdisplay /dev/sda5
"/dev/sda5" is a new physical volume of "200.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sda5
VG Name
PV Size 200.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID D8TAQl-MpEV-Hayd-Ta5E-xcQ5-Dv3X-T99ffQ
pvdisplay命令显示此时/dev/sad4已经被标注为物理卷了,注意,此时VG Name内容为空,因为物理卷还不属于某个卷组。
2:创建卷组
从命令行创建卷组时,使用的命令是:vgcreate命令。
[root@CHENDAJIE chendajie]# vgcreate Voll /dev/sda5
Volume group "Voll" successfully created
如果你想查看新创建的卷组的细节,可以使用vgdisplay命令
[root@CHENDAJIE chendajie]# vgdisplay Voll
--- Volume group ---
VG Name Voll
System ID
Format lvm2
Metadata Areas 1
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 1
Act PV 1
VG Size 196.00 MiB
PE Size 4.00 MiB
Total PE 49
Alloc PE / Size 0 / 0
Free PE / Size 49 / 196.00 MiB
VG UUID 2qUFSu-yQ6l-UCn1-kVhr-5OZS-QKqG-OLc2S1
此时我创建了一个名为Voll的卷组,创建一个或多个卷组后,就可以创建逻辑卷了。
3:创建逻辑卷
Linux系统使用逻辑卷来模拟物理分区,并在其中保存文件系统。Linux系统会像处理物理分区一样处理逻辑卷,允许定义逻辑卷中的文件系统,然后将文件系统挂载到虚拟目录上。
lvcreate命令参数如下:
lvcreate
-c #指定快照逻辑卷的单位大小
-C #设置或重置连续分配策略
-i #指定条带数
-T #指定每个条带的大小
-l #指定分配给新逻辑卷的逻辑区段数,或者要用的逻辑区段的百分比
-L #指定分配给新逻辑卷的硬盘大小
-m #创建逻辑卷镜像
-M #让设备号一直有效
-n #指定新逻辑卷的名称
-p #为逻辑卷设置读/写权限
-r #设置预读扇区数
-R #指定将镜像分成多大的区
-s #创建快照逻辑卷
-Z #将新逻辑卷的前1KB数据设置为零
创建逻辑卷:
[root@CHENDAJIE chendajie]# lvcreate -l 100%FREE -n lvtest Voll
Logical volume "lvtest" created
查看创建的逻辑卷的细节:lvdisplay
[root@CHENDAJIE chendajie]# lvcreate -l 100%FREE -n lvtest Voll
Logical volume "lvtest" created.
[root@CHENDAJIE chendajie]# lvdisplay Voll
--- Logical volume ---
LV Path /dev/Voll/lvtest
LV Name lvtest
VG Name Voll
LV UUID 0Cg19i-eSqv-b4nV-vp0w-leOz-jhKA-FZe00h
LV Write Access read/write
LV Creation host, time CHENDAJIE.cn, 2019-09-27 17:43:16 +0800
LV Status available
# open 0
LV Size 196.00 MiB
Current LE 49
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
-你可以使用-l选项来按可用空间的百分比来指定这个大小,或者使用-L选项以字节、千字节(KB)、兆字节(MB)或GB来指定实际的大小。-n选项允许你为逻辑卷指定一个名称(本例中称作vtest)
4:创建文件系统
因为我的文件系统时XFS格式,所以此处我使用的命令是mkfs.xfs。
[root@CHENDAJIE chendajie]# mkfs.xfs /dev/Voll/lvtest
meta-data=/dev/Voll/lvtest isize=512 agcount=4, agsize=12544 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=50176, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
创建文件系统之后,用mount命令将这个卷挂载到虚拟目录中,你需要用特殊的路径来标识逻辑卷。
[root@CHENDAJIE ~]# mount /dev/Voll/lvtest /media/my_partition/
[root@CHENDAJIE ~]# cd /media/my_partition/
[root@CHENDAJIE my_partition]# ls -al
总用量 0
drwxr-xr-x 2 root root 6 9月 27 17:52 .
drwxr-xr-x. 3 root root 26 9月 27 17:55 ..
路径中使用了卷组名和逻辑卷名,而不是物理分区路径。文件被挂载以后,就可以访问虚拟目录终的这块新区域了。
5:修改LVM
Linux LVM命令
vgchange #激活和禁用卷组
vgremove #删除卷组
vgextend #将物理卷加到卷组中
vgreduce #从卷组中删除物理卷
lvextend #增加逻辑卷的大小
lvreduce #减小逻辑卷的大小