目录
LVM(Logincal Volume manager 逻辑卷管理)
前言
我之前讲了磁盘管理与文件系统,其实那是最基础的,尽管我们能用磁盘管理命令直接的完成分配空间,就像我们会在大规模的ip地址分配中使用dhcp一样,Linux也为我们提供了自动化的磁盘分配空间的功能,合理的运用这些功能我们能在一些人力不及的地方去合理的分配大量的磁盘空间。可以像划奶油一样按需取用我们系统的存储空间。并对一些用户做出限制给予他的磁盘获取最大值
LVM(Logincal Volume manager 逻辑卷管理)
- 能够在保持现有数据不变的情况下动态的调整磁盘容量,从而提高磁盘管理的灵活性
- 需要注意的是/boot分区用于存放引导文件,不能基于LVM创建(不能是逻辑分区)。
- 我们在实际的使用中我们建立文件系统的时候一般会屏蔽下层的硬盘分区,好方便我们扩展磁盘空间,使用VLM让我们可以随意的增加磁盘空间。
LVM机制的基本概念
PV(物理卷)
物理卷是LVM机制的基本储存设备,通常对应一个普通分区,或整个硬盘创建。创建物理卷时会在分区或硬盘的头部创建一个保留区块用于记录LVM属性,并把存储空间分割成默认大小为4MB的基本单元(PE)从而构成物理卷
VG(卷组)
由一个或多个物理卷物理卷组成一个整体,即称为卷组,在卷组中可以动态的添加或移除物理卷
Lv(逻辑卷)
逻辑卷建立在卷组之上,与物理卷没有直接的关系。对于逻辑卷来说,每一个卷组就是一个整体,从这个整体中切割一部分作为创建文件系统的基础,这一部分就是逻辑卷,我们会使用mkfs等工具在逻辑卷上创建文件系统
注:当我们组成物理卷的时候,是依据现实的物理结构进行创建的,两块不同的硬盘无法创建进一个物理卷。但当他们组成卷组的时候,我们就可以忽视他们的物理结构去进行使用,卷组中的不同的物理卷被视为一个整体进行使用和分割。我们通过卷组去屏蔽底层硬盘分区。再通过逻辑卷在卷组之上进行划分。
主要命令
Scan扫描 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
Scan扫描 |
pvscan | vgscan | lvscan |
Create建立 | pvcreate | vgcreate | lvcreate |
Display显示 | pvdisplay | vgdisplay | lvdisplay |
Remove删除 | pvremove | vgremove | lvremove |
Extend扩展 | —— | vgextend | lvextend |
Reduce减少 | —— | vgreduce | lvreduce |
pvcreate [设备名1] [设备名2]
vgcreate [卷组名] [物理卷名1] [物理卷名2]
lvcreate -L 容量大小 -n 逻辑卷名 卷组名
lvexted -L +大小 /dev/卷组名/逻辑卷名
命令演示
添加物理磁盘的过程我就不做演示了。我们可以通过重启机器或者
echo "- - -" >/sys/class/scsi_host/host0/scan 去进行扫描。倒数第二个目录自己酌情修改
[root@192 ~]# fdisk /dev/sdb #使用fdisk做sdb和sdc的分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (41945088-125829119,默认为 41945088):
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-125829119,默认为 125829119):+200G
值超出范围。
Last 扇区, +扇区 or +size{K,M,G} (41945088-125829119,默认为 125829119):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p):
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):
将使用默认值 125829119
分区 1 已设置为 Linux 类型,大小设为 60 GiB
命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+20G
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (41945088-125829119,默认为 41945088):
将使用默认值 41945088
Last 扇区, +扇区 or +size{K,M,G} (41945088-125829119,默认为 125829119):+20G
分区 2 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# lsblk #查看磁盘分区情况
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 500M 0 part /boot
└─sda2 8:2 0 39.5G 0 part
├─centos-root 253:0 0 35.5G 0 lvm /
└─centos-swap 253:1 0 4G 0 lvm [SWAP]
sdb 8:16 0 60G 0 disk
├─sdb1 8:17 0 20G 0 part
└─sdb2 8:18 0 20G