linux LVM 逻辑卷管理

LVM 逻辑卷管理

1、简介
LVM 是 Logical Volume Manager 的简称,中文就是逻辑卷管理。
在这里插入图片描述
1)物理卷(PV,Physical Volume):就是真正的物理硬盘或分区。
2)卷组(VG,Volume Group):将多个物理卷合起来就组成了卷组,组成同一个卷组的物理卷可以是同一个硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一个逻辑硬盘。
3)逻辑卷(LV,Logical Volume):卷组是一个逻辑硬盘,硬盘必须分区之后才能使用,这个分区我们称作逻辑卷。逻辑卷可以格式化和写入数据。我们可以把逻辑卷想象成为分区。
4)物理扩展(PE,Physical Extend):PE 是用来保存数据的最小单元,我们的数据实际上都是写入 PE 当中,PE 的大小是可以配置的,默认是 4MB。

2、建立 LVM 的步骤:
1)首先需要把物理硬盘分成分区,当然也可以是整块物理硬盘。
2)然后把物理分区建立成为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
3)接下来把物理卷整合成为卷组(VG)。卷组就已经可以动态的调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
4)最后就是把卷组再划分成为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象成为分区,所以也需要格式化和挂载。

3、物理卷管理
1)硬盘分区
创建方式就是使用 fdisk 交互命令,不过需要注意的是分区的系统 ID 不再是 Linux 默认的分区ID 号 83 了,而要改成 LVM 的 ID 号 8e。
2)建立物理卷

[root@localhost ~]# pvcreate [设备文件名]

建立物理卷时,我们说即可以把整块硬盘都建立成物理卷,也可以把某个分区建立成物理卷。如果要把整块硬盘都建立成物理卷,命令如下:

[root@localhost ~]# pvcreate /dev/sdb

在我们的使用中,是要把分区建立成为物理卷,所以执行以下命令:

[root@localhost ~]# pvcreate /dev/sdb5

3)查看物理卷

[root@localhost ~]# pvscan
PV /dev/sdb5 		lvm2 [1.01 GiB]
PV /dev/sdb6		lvm2 [1.01 GiB]
PV /dev/sdb7 		lvm2 [1.01 GiB]
Total: 3 [3.03 GiB] / in use: 0 [0 ] / in no VG: 3 [3.03 GiB]

我们可以看到在我的系统中,/dev/sdb5-7 这三个分区是物理卷。最后一行的意思是:总共 3 个物理卷[大小] / 使用了 0 个卷[大小] / 空闲 3 个卷[大小]。
第二个查询命令是 pvdisplay,它可以查看到更详细的物理卷状态,命令如下:

[root@localhost ~]# pvdisplay
"/dev/sdb5" is a new physical volume of "1.01 GiB"
--- NEW Physical volume ---
PV Name 		/dev/sdb5 	->PV 名
VG Name 					->属于的 VG 名,还没有分配,所以空白
PV Size 		1.01 GiB 	->PV 的大小
Allocatable 	NO 			->是否已经分配
PE Size 		0 			->PE 大小,因为还没有分配,所以 PE 大小也没有指定
Total PE	    0 			->PE 总数
Free PE 		0 			->空闲 PE 数
Allocated PE 	0 			->可分配的 PE 数
PV UUID		    CEsVz3-f0sD-e1w0-wkHZ-iaLq-O6aV-xtQNTB PV 的 UUID

4)删除物理卷

[root@localhost ~]# pvremove /dev/sdb7

4、卷组管理
1)建立卷组

[root@localhost ~]# vgcreate [选项] 卷组名 物理卷名
选项:
-s PE 大小:指定 PE 的大小,单位可以是 MB,GB,TB 等。如果不写默认 PE 大小事 4MB

我们又三个物理卷/dev/sdb5-7,我们先把/dev/sdb5 和/dev/sdb6 加入卷组,留着/dev/sdb7 一会实验调整卷组大小,命令如下:

[root@localhost ~]# vgcreate -s 8MB scvg /dev/sdb5 /dev/sdb6
Volume group "scvg" successfully created

2)查看卷组
查看卷组的命令同样是两个,vgscan 主要是查看系统中是否有卷组,而 vgdisplay 则是查看卷组的详细状态的。命令如下:

[root@localhost ~]# vgscan 
Reading all physical volumes. This may take a while...
Found volume group "scvg" using metadata type lvm2
#scvg 的卷组确实存在
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name 				scvg 					->卷组名
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.02 GiB 				->卷组大小
PE Size 				8.00 MiB 				->PE 大小
Total PE 			    258 					->PE 总数
Alloc PE / Size 		0 / 0 					->已用 PE 数量/大小
Free PE / Size 			258 / 2.02 GiB  		->空闲 PE 数量/大小
VG UUID 				Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ

3)增加卷组容量

[root@localhost ~]# vgextend scvg /dev/sdb7
Volume group "scvg" successfully extended
#把/dev/sdb7 物理卷也加入 scvg 卷组
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name 					scvg
System ID
Format 						lvm2
Metadata Areas 				3
Metadata Sequence No 		2
VG Access 					read/write
VG Status 					resizable
MAX LV 						0
Cur LV 						0
Open LV 					0
Max PV 						0
Cur PV 						3
Act PV 						3
VG Size 					3.02 GiB 	->卷组容量增加
PE Size 					8.00 MiB
Total PE 					387 		->PE 总数增加
Alloc PE / Size 			0 / 0
Free PE / Size 				387 / 3.02 GiB
VG UUID 					Fs0dPf-LV7H-0Ir3-rthA-3UxC-LX5c-FLFriJ

4)减小卷组容量

[root@localhost ~]# vgreduce scvg /dev/sdb7
Removed "/dev/sdb7" from volume group "scvg"
#在卷组中删除/dev/sdb7 物理卷
[root@localhost ~]# vgreduce -a
#删除所有的未使用物理卷

5)删除卷组

[root@localhost ~]# vgremove scvg
Volume group "scvg" successfully removed

卷组删除之后,才能删除删除物理卷。还要注意的是 scvg 卷组还没有添加任何的逻辑卷,那如果拥有了逻辑卷,记得先删除逻辑卷再删除卷组。还记得我刚说的吗?删除就是安装的反过程,每一步都不能跳过。

5、逻辑卷管理
1)建立逻辑卷

[root@localhost ~]# lvcreate [选项] [-n 逻辑卷名] 卷组名
选项:
-L 容量:指定逻辑卷大小,单位 MB,GB,TB 等
-l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦
-n 逻辑卷名:指定逻辑卷名

那我们就建立一个 1.5GB 的 userlv 逻辑卷吧,建立命令如下:

[root@localhost ~]# lvcreate -L 1.5G -n userlv scvg
Logical volume "userlv" created
#在 scvg 卷组中建立 1.5GB 的 userlv 逻辑卷

建立完逻辑卷之后,还要格式化和挂载之后逻辑卷才能正常使用。格式化和挂载命令和操作普通分区时是一样的,不过需要注意的是逻辑卷的设备文件名是/dev/卷组名/逻辑卷名,如我们的 userlv的设备文件名就是“/dev/scvg/userlv”,具体命令如下:

[root@localhost ~]# mkfs -t ext4 /dev/scvg/userlv
#格式化

[root@localhost ~]# mkdir /disklvm

[root@localhost ~]# mount /dev/scvg/userlv /disklvm/
#建立挂载点,并挂载

[root@localhost ~]# mount
…省略部分输出…
/dev/mapper/scvg-userlv on /disklvm type ext4 (rw)
#已经挂载了

当然如果需要开机自动挂载,也要修改/etc/fstab 文件。
2)查看逻辑卷
同样的查看命令是两个,第一个命令 lvscan 只能看到系统中是否拥有逻辑卷,命令如下:

[root@localhost ~]# lvscan
ACTIVE '/dev/scvg/userlv' [1.50 GiB] inherit
#能够看到激活的逻辑卷,大小事 1.5GB

第二个命令是 lvdisplay 可以看到逻辑卷的详细信息,命令如下:

[root@localhost ~]# lvdisplay
 --- Logical volume ---
 LV Path 				/dev/scvg/userlv 					->逻辑卷设备文件名
 LV Name 				userlv 								->逻辑卷名
 VG Name 				scvg 								->所属的卷组名
 LV UUID 				2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
 LV Write Access 		read/write
 LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
 LV Status 				available
 # open 				1
 LV Size 				1.50 GiB 							->逻辑卷大小
 Current LE 			192
 Segments 				2
 Allocation 			inherit
 Read ahead sectors 	auto
 - currently set to 	256
 Block device 			253:0

3)调整逻辑卷大小

[root@localhost ~]# lvresize [选项] 逻辑卷设备文件名
选项:
-L 容量:安装容量调整大小,单位 KB,GB,TB 等。使用+代表增加空间,-号代表减少
空间。如果直接写容量,代表设定逻辑卷大小为指定大小。
-l 个数:按照 PE 个数调整逻辑卷大小

我们先在/disklvm 中建立点文件,一会调整完大小,我们看看数据是否会丢失:

[root@localhost ~]# cd /disklvm/

[root@localhost disklvm]# touch testf

[root@localhost disklvm]# mkdir testd

[root@localhost disklvm]# ls
lost+found testd testf

我们刚刚的 userlv 的大小事 1.5GB,我们的 scvg 中还有 1.5GB 的空闲空间,那么增加我们的userlv 逻辑卷的大小到 2.5GB 吧:

[root@localhost disklvm]# lvresize -L 2.5G /dev/scvg/userlv
Extending logical volume userlv to 2.50 GiB
Logical volume userlv successfully resized
#增加 userlv 逻辑卷的大小到 2.5GB
#当然命令也可以这样写 [root@localhost disklvm]# lvresize -L +1G /dev/scvg/userlv
[root@localhost disklvm]# lvdisplay
 --- Logical volume ---
 LV Path 				/dev/scvg/userlv
 LV Name 				userlv
 VG Name 				scvg
 LV UUID 				2kyKmn-Nupd-CldB-8ngY-NsI3-b8hV-QeUuna
 LV Write Access 		read/write
 LV Creation host, time localhost, 2013-04-18 03:36:39 +0800
 LV Status 				available
 # open 				1
 LV Size 				2.50 GiB 				->大小改变了
 Current LE 			320
 Segments 				3
 Allocation 			inherit
 Read ahead sectors 	auto
 - currently set to 	256
 Block device 			253:0

逻辑卷的大小已经改变了,但是好像有些问题啊:

[root@localhost disklvm]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 1.5G 35M 1.4G 3% /disklvm

怎么/disklvm 分区的大小还是 1.5GB 啊?刚刚只是逻辑卷的大小改变了,如果需要让分区使用这个新逻辑卷,我们还要使用 resize2fs 命令来调整分区的大小。不过这里就体现了 LVM 的优势,我们不需要卸载分区,直接就能调整分区的大小。resize2fs 命令如下:

[root@localhost ~]# resize2fs [选项] [设备文件名] [调整的大小]
选项:
-f: 强制调整
设备文件名:指定调整哪个分区的大小
调整的大小:指定把分区调整到多大,要加 M,G 等单位。如果不加大小,会使用整个
分区

那么我们已经把逻辑卷调整到了 2.5GB,这时我们就需要把整个逻辑卷都加入/disklvm 分区,命令如下:

[root@localhost ~]# resize2fs /dev/scvg/userlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/scvg/userlv is mounted on /disklvm; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/scvg/userlv to 655360 (4k) blocks.
The filesystem on /dev/scvg/userlv is now 655360 blocks long.
#已经调整了分区大小

[root@localhost ~]# df -h /disklvm/
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/scvg-userlv 2.5G 35M 2.4G 2% /disklvm
#分区大小已经是 2.5GB 了
[root@localhost ~]# ls /disklvm/
lost+found testd testf
#而且数据并没有丢失

4)删除逻辑卷

[root@localhost ~]# lvremove 逻辑卷设备文件名

我们删除 userlv 这个逻辑卷,记得删除时要先卸载。命令如下:

[root@localhost ~]# umount /dev/scvg/userlv

[root@localhost ~]# lvremove /dev/scvg/userlv 
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值