TranslateProject/published/LFCS/Part 11 - How to Manage and Create LVM Using vgcreate, lvcreate and lvextend Commands.md

214 lines
8.2 KiB
Markdown
Raw Normal View History

2016-07-12 22:41:03 +08:00
LFCS 系列第十一讲:如何使用命令 vgcreate、lvcreate 和 lvextend 管理和创建 LVM
========================================================================================
2016-07-12 22:41:03 +08:00
由于 LFCS 考试中的一些改变已在 2016 年 2 月 2 日生效,我们添加了一些必要的专题到 [LFCS 系列][1]。我们也非常推荐备考的同学,同时阅读 [LFCE 系列][2]。
![](http://www.tecmint.com/wp-content/uploads/2016/03/Manage-LVM-and-Create-LVM-Partition-in-Linux.png)
*LFCS管理 LVM 和创建 LVM 分区*
2016-07-12 22:41:03 +08:00
在安装 Linux 系统的时候要做的最重要的决定之一便是给系统文件、home 目录等分配空间。在这个地方犯了错,再要扩大空间不足的分区,那样既麻烦又有风险。
**逻辑卷管理** **LVM**)相较于传统的分区管理有许多优点,已经成为大多数(如果不能说全部的话) Linux 发行版安装时的默认选择。LVM 最大的优点应该是能方便的按照你的意愿调整(减小或增大)逻辑分区的大小。
2016-07-12 22:41:03 +08:00
LVM 的组成结构:
* 把一块或多块硬盘或者一个或多个分区配置成物理卷PV
* 一个用一个或多个物理卷创建出的卷组(**VG**)。可以把一个卷组想象成一个单独的存储单元。
* 在一个卷组上可以创建多个逻辑卷。每个逻辑卷相当于一个传统意义上的分区 —— 优点是它的大小可以根据需求重新调整大小,正如之前提到的那样。
本文,我们将使用三块 **8 GB** 的磁盘(**/dev/sdb**、**/dev/sdc** 和 **/dev/sdd**)分别创建三个物理卷。你既可以直接在整个设备上创建 PV也可以先分区在创建。
2016-07-12 22:41:03 +08:00
在这里我们选择第一种方式,如果你决定使用第二种(可以参考本系列[第四讲:创建分区和文件系统][3])确保每个分区的类型都是 `8e`
### 创建物理卷,卷组和逻辑卷
要在 **/dev/sdb**、**/dev/sdc** 和 **/dev/sdd**上创建物理卷,运行:
```
# pvcreate /dev/sdb /dev/sdc /dev/sdd
```
你可以列出新创建的 PV ,通过:
```
# pvs
```
并得到每个 PV 的详细信息,通过:
```
# pvdisplay /dev/sdX
```
**X** 即 b、c 或 d
如果没有输入 `/dev/sdX` ,那么你将得到所有 PV 的信息。
使用 /dev/sdb` 和 `/dev/sdc` 创建卷组 ,命名为 `vg00` (在需要时是可以通过添加其他设备来扩展空间的,我们等到说明这点的时候再用,所以暂时先保留 `/dev/sdd`
```
# vgcreate vg00 /dev/sdb /dev/sdc
```
就像物理卷那样,你也可以查看卷组的信息,通过:
```
# vgdisplay vg00
```
由于 `vg00` 是由两个 **8 GB** 的磁盘组成的,所以它将会显示成一个 **16 GB** 的硬盘:
![](http://www.tecmint.com/wp-content/uploads/2016/03/List-LVM-Volume-Groups.png)
*LVM 卷组列表*
2016-07-12 22:41:03 +08:00
当谈到创建逻辑卷,空间的分配必须考虑到当下和以后的需求。根据每个逻辑卷的用途来命名是一个好的做法。
举个例子,让我们创建两个 LV命名为 `vol_projects` **10 GB**`vol_backups` (剩下的空间), 在日后分别用于部署项目文件和系统备份。
参数 `-n` 用于为 LV 指定名称,而 `-L` 用于设定固定的大小,还有 `-l` (小写的 L在 VG 的预留空间中用于指定百分比大小的空间。
```
# lvcreate -n vol_projects -L 10G vg00
# lvcreate -n vol_backups -l 100%FREE vg00
```
和之前一样,你可以查看 LV 的列表和基础信息,通过:
```
# lvs
```
或是查看详细信息,通过:
2016-07-12 22:41:03 +08:00
```
# lvdisplay
```
若要查看单个 **LV** 的信息,使用 **lvdisplay** 加上 **VG****LV** 作为参数,如下:
```
# lvdisplay vg00/vol_projects
```
![](http://www.tecmint.com/wp-content/uploads/2016/03/List-Logical-Volume.png)
*逻辑卷列表*
如上图,我们看到 LV 已经被创建成存储设备了(参考 LV Path 那一行)。在使用每个逻辑卷之前,需要先在上面创建文件系统。
2016-07-12 22:41:03 +08:00
这里我们拿 ext4 来做举例,因为对于每个 LV 的大小, ext4 既可以增大又可以减小(相对的 xfs 就只允许增大):
```
# mkfs.ext4 /dev/vg00/vol_projects
# mkfs.ext4 /dev/vg00/vol_backups
```
我们将在下一节向大家说明,如何调整逻辑卷的大小并在需要的时候添加额外的外部存储空间。
### 调整逻辑卷大小和扩充卷组
现在设想以下场景。`vol_backups` 中的空间即将用完,而 `vol_projects` 中还有富余的空间。由于 LVM 的特性,我们可以轻易的减小后者的大小(比方说 **2.5 GB**),并将其分配给前者,与此同时调整每个文件系统的大小。
幸运的是这很简单,只需:
```
# lvreduce -L -2.5G -r /dev/vg00/vol_projects
# lvextend -l +100%FREE -r /dev/vg00/vol_backups
```
![](http://www.tecmint.com/wp-content/uploads/2016/03/Resize-Reduce-Logical-Volume-and-Volume-Group.png)
*减小逻辑卷和卷组*
2016-07-12 22:41:03 +08:00
在调整逻辑卷的时候,其中包含的减号 `(-)` 或加号 `(+)` 是十分重要的。否则 LV 将会被设置成指定的大小,而非调整指定大小。
有些时候,你可能会遭遇那种无法仅靠调整逻辑卷的大小就可以解决的问题,那时你就需要购置额外的存储设备了,你可能需要再加一块硬盘。这里我们将通过添加之前配置时预留的 PV `/dev/sdd`),用以模拟这种情况。
想把 `/dev/sdd` 加到 `vg00`,执行:
```
# vgextend vg00 /dev/sdd
```
如果你在运行上条命令的前后执行 vgdisplay `vg00` ,你就会看出 VG 的大小增加了。
```
# vgdisplay vg00
```
![](http://www.tecmint.com/wp-content/uploads/2016/03/List-Volume-Group-Size.png)
*查看卷组磁盘大小*
2016-07-12 22:41:03 +08:00
现在,你可以使用新加的空间,按照你的需求调整现有 LV 的大小,或者创建一个新的 LV。
### 在启动和需求时挂载逻辑卷
当然,如果我们不打算实际的使用逻辑卷,那么创建它们就变得毫无意义了。为了更好的识别逻辑卷,我们需要找出它的 `UUID` (用于识别一个格式化存储设备的唯一且不变的属性)。
要做到这点,可使用 blkid 加每个设备的路径来实现:
```
# blkid /dev/vg00/vol_projects
# blkid /dev/vg00/vol_backups
```
![](http://www.tecmint.com/wp-content/uploads/2016/03/Find-Logical-Volume-UUID.png)
*寻找逻辑卷的 UUID*
2016-07-12 22:41:03 +08:00
为每个 LV 创建挂载点:
```
# mkdir /home/projects
# mkdir /home/backups
```
并在 `/etc/fstab` 插入相应的条目确保使用之前获得的UUID
```
UUID=b85df913-580f-461c-844f-546d8cde4646 /home/projects ext4 defaults 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults 0 0
```
保存并挂载 LV
```
# mount -a
# mount | grep home
```
![](http://www.tecmint.com/wp-content/uploads/2016/03/Mount-Logical-Volumes-on-Linux-1.png)
*挂载逻辑卷*
2016-07-12 22:41:03 +08:00
在涉及到 LV 的实际使用时,你还需要按照曾在本系列[第八讲:管理用户和用户组][4]中讲解的那样,为其设置合适的 `ugo+rwx`
### 总结
本文介绍了 [逻辑卷管理][5],一个用于管理可扩展存储设备的多功能工具。与 RAID曾在本系列讲解过的 [第六讲组装分区为RAID设备——创建和管理系统备份][6]结合使用你将同时体验到LVM 带来的可扩展性和RAID 提供的)冗余。
在这类的部署中,你通常会在 `RAID` 上发现 `LVM`,这就是说,要先配置好 RAID 然后它在上面配置 LVM。
如果你对本问有任何的疑问和建议,可以直接在下方的评论区告诉我们。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/manage-and-create-lvm-parition-using-vgcreate-lvcreate-and-lvextend/
作者:[Gabriel Cánepa][a]
译者:[martin2011qi](https://github.com/martin2011qi)
校对:[wxy](https://github.com/wxy)
2016-07-12 22:41:03 +08:00
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://www.tecmint.com/author/gacanepa/
[1]: https://linux.cn/article-7161-1.html
[2]: http://www.tecmint.com/installing-network-services-and-configuring-services-at-system-boot/
[3]: https://linux.cn/article-7187-1.html
[4]: https://linux.cn/article-7418-1.html
[5]: https://linux.cn/article-3965-1.html
2016-07-12 22:41:03 +08:00
[6]: https://linux.cn/article-7229-1.html