如何在 Ubuntu 中管理和使用逻辑卷管理 LVM


在咱们以前的文章中,咱们介绍了什么是 LVM 以及能用 LVM 作什么,今天咱们会给你介绍一些 LVM 的主要管理工具,使得你在设置和扩展安装时更游刃有余。linux

正如以前所述,LVM 是介于你的操做系统和物理硬盘驱动器之间的抽象层。这意味着你的物理硬盘驱动器和分区再也不依赖于他们所在的硬盘驱动和分区。而是你的操做系统所见的硬盘驱动和分区能够是由任意数目的独立硬盘聚集而成的或是一个软件磁盘阵列。ubuntu

要管理 LVM,这里有不少可用的 GUI 工具,但要真正理解 LVM 配置发生的事情,最好要知道一些命令行工具。这当你在一个服务器或不提供 GUI 工具的发行版上管理 LVM 时尤其有用。安全

LVM 的大部分命令和彼此都很是类似。每一个可用的命令都由如下其中之一开头:bash

  • Physical Volume (物理卷) = pv
  • Volume Group (卷组)= vg
  • Logical Volume (逻辑卷)= lv

物理卷命令用于在卷组中添加或删除硬盘驱动。卷组命令用于为你的逻辑卷操做更改显示的物理分区抽象集。逻辑卷命令会以分区形式显示卷组,使得你的操做系统能使用指定的空间。服务器

 

可下载的 LVM 备忘单

为了帮助你理解每一个前缀可用的命令,咱们制做了一个备忘单。咱们会在该文章中介绍一些命令,但仍有不少你可用但没有介绍到的命令。工具

该列表中的全部命令都要以 root 身份运行,由于你更改的是会影响整个机器系统级设置。spa

 

如何查看当前 LVM 信息

你首先须要作的事情是检查你的 LVM 设置。s 和 display 命令能够和物理卷(pv)、卷组(vg)以及逻辑卷(lv)一块儿使用,是一个找出当前设置的好起点。操作系统

display 命令会格式化输出信息,所以比 s 命令更易于理解。对每一个命令你会看到名称和 pv/vg 的路径,它还会给出空闲和已使用空间的信息。命令行

最重要的信息是 PV 名称和 VG 名称。用这两部分信息咱们能够继续进行 LVM 设置。code

 

建立一个逻辑卷

逻辑卷是你的操做系统在 LVM 中使用的分区。建立一个逻辑卷,首先须要拥有一个物理卷和卷组。下面是建立一个新的逻辑卷所须要的所有命令。

 

建立物理卷

咱们会从一个全新的没有任何分区和信息的硬盘开始。首先找出你将要使用的磁盘。(/dev/sda, sdb, 等)

注意:记住全部的命令都要以 root 身份运行或者在命令前面添加 'sudo' 。

  1. fdisk -l

若是以前你的硬盘从未格式化或分区过,在 fdisk 的输出中你极可能看到相似下面的信息。这彻底正常,由于咱们会在下面的步骤中建立须要的分区。

咱们的新磁盘位置是 /dev/sdb,让咱们用 fdisk 命令在磁盘上建立一个新的分区。

这里有大量能建立新分区的 GUI 工具,包括 Gparted,但因为咱们已经打开了终端,咱们将使用 fdisk 命令建立须要的分区。

在终端中输入如下命令:

  1. fdisk /dev/sdb

这会使你进入到一个特殊的 fdisk 提示符中。

以指定的顺序输入命令建立一个使用新硬盘 100% 空间的主分区并为 LVM 作好了准备。若是你须要更改分区的大小或想要多个分区,我建议使用 GParted 或本身了解一下关于 fdisk 命令的使用。

警告:下面的步骤会格式化你的硬盘驱动。确保在进行下面步骤以前你的硬盘驱动中没有任何有用的信息。

  • n = 建立新分区
  • p = 建立主分区
  • 1 = 成为磁盘上的首个分区

输入 enter 键两次以接受默认的第一个和最后一个柱面。

用下面的命令准备 LVM 所使用的分区。

  • t = 更改分区类型
  • 8e = 更改成 LVM 分区类型

核实并将信息写入硬盘。

  • p = 查看分区设置使得在写入更改到磁盘以前能够回看
  • w = 写入更改到磁盘

运行这些命令以后,会退出 fdisk 提示符并返回到终端的 bash 提示符中。

输入 pvcreate /dev/sdb1 在刚建立的分区上新建一个 LVM 物理卷。

你也许会问为何咱们不用一个文件系统格式化分区,不用担忧,该步骤在后面。

 

建立卷组

如今咱们有了一个指定的分区和建立好的物理卷,咱们须要建立一个卷组。很幸运这只须要一个命令。

  1. vgcreate vgpool /dev/sdb1

vgpool 是新建立的卷组的名称。你可使用任何你喜欢的名称,但建议标签以 vg 开头,以便后面你使用它时能意识到这是一个卷组。

 

建立逻辑卷

建立 LVM 将使用的逻辑卷:

  1. lvcreate -L 3G-n lvstuff vgpool

-L 命令指定逻辑卷的大小,在该状况中是 3 GB,-n 命令指定卷的名称。 指定 vgpool 以便 lvcreate 命令知道从什么卷获取空间。

 

格式化并挂载逻辑卷

最后一步是用一个文件系统格式化新的逻辑卷。若是你须要选择一个 Linux 文件系统的帮助,请阅读 若是根据须要选取最合适的文件系统

  1. mkfs -t ext3 /dev/vgpool/lvstuff

建立挂载点并将卷挂载到你可使用的地方。

  1. mkdir /mnt/stuff
  2. mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff

 

从新设置逻辑卷大小

逻辑卷的一个好处是你能使你的存储物理地变大或变小,而不须要移动全部东西到一个更大的硬盘。另外,你能够添加新的硬盘并同时扩展你的卷组。或者若是你有一个不使用的硬盘,你能够从卷组中移除它使得逻辑卷变小。

这里有三个用于使物理卷、卷组和逻辑卷变大或变小的基础工具。

注意:这些命令中的每一个都要以 pv、vg 或 lv 开头,取决于你的工做对象。

  • resize – 能压缩或扩展物理卷和逻辑卷,但卷组不能
  • extend – 能使卷组和逻辑卷变大但不能变小
  • reduce – 能使卷组和逻辑卷变小但不能变大

让咱们来看一个如何向刚建立的逻辑卷 "lvstuff" 添加新硬盘驱动的例子。

 

安装并格式化新硬盘驱动

按照上面建立新分区并更改分区类型为 LVM(8e) 的步骤安装一个新硬盘驱动。而后用 pvcreate 命令建立一个 LVM 能识别的物理卷。

 

添加新硬盘到卷组

要添加新的硬盘到一个卷组,你只须要知道你的新分区,在咱们的例子中是 /dev/sdc1,以及想要添加到的卷组的名称。

这会添加新物理卷到已存在的卷组中。

  1. vgextend vgpool /dev/sdc1

 

扩展逻辑卷

调整逻辑卷的大小,咱们须要指出的是经过大小而不是设备来扩展。在咱们的例子中,咱们会添加一个 8GB 的硬盘驱动到咱们的 3GB vgpool。咱们能够用 lvextend 或 lvresize 命令使该空间可用。

  1. lvextend -L8G /dev/vgpool/lvstuff

当这个命令工做的时候你会发现它实际上从新设置逻辑卷大小为 8GB 而不是咱们指望的将 8GB 添加到已存在的卷上。要添加剩余的可用 3GB 你须要用下面的命令。

  1. lvextend -L+3G/dev/vgpool/lvstuff

如今咱们的逻辑卷已是 11GB 大小了。

 

扩展文件系统

逻辑卷是 11GB 大小可是上面的文件系统仍然只有 3GB。要使文件系统使用整个的 11GB 可用空间你须要用 resize2fs 命令。你只须要指定 resize2fs 到 11GB 逻辑卷它就会帮你完成其他的工做。

  1. resize2fs /dev/vgpool/lvstuff

注意:若是你使用除 ext3/4 以外的文件系统,请查看调整你的文件系统大小的工具。

 

压缩逻辑卷

若是你想从卷组中移除一个硬盘驱动你能够按照上面的步骤反向操做,并用 lvreduce 或 vgreduce 命令代替。

  1. 调整文件系统大小 (调整以前确保已经移动文件到硬盘驱动安全的地方)
  2. 减少逻辑卷 (除了 + 能够扩展大小,你也能够用 - 压缩大小)
  3. 用 vgreduce 从卷组中移除硬盘

 

备份逻辑卷

快照是一些新的高级文件系统提供的功能,可是 ext3/4 文件系统并无快照的功能。LVM 快照最棒的是你的文件系统永不掉线,你能够拥有你想要的任何大小而不须要额外的硬盘空间。

LVM 获取快照的时候,会有一张和逻辑卷彻底相同的“照片”,该“照片”能够用于在不一样的硬盘上进行备份。生成一个备份的时候,任何须要添加到逻辑卷的新信息会如往常同样写入磁盘,但会跟踪更改使得原始快照永远不会损毁。

要建立一个快照,咱们须要建立拥有足够空闲空间的逻辑卷,用于保存咱们备份的时候会写入该逻辑卷的任何新信息。若是驱动并非常常写入,你可使用很小的一个存储空间。备份完成的时候咱们只须要移除临时逻辑卷,原始逻辑卷会和往常同样。

 

建立新快照

建立 lvstuff 的快照,用带 -s 标记的 lvcreate 命令。

  1. lvcreate -L512M -s -n lvstuffbackup /dev/vgpool/lvstuff

这里咱们建立了一个只有 512MB 的逻辑卷,由于该硬盘实际上并不会使用。512MB 的空间会保存备份时产生的任何新数据。

 

挂载新快照

和以前同样,咱们须要建立一个挂载点并挂载新快照,而后才能从中复制文件。

  1. mkdir /mnt/lvstuffbackup
  2. mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup

 

复制快照和删除逻辑卷

你剩下须要作的是从 /mnt/lvstuffbackup/ 中复制全部文件到一个外部的硬盘或者打包全部文件到一个文件。

注意:tar -c 会建立一个归档文件,-f 要指出归档文件的名称和路径。要获取 tar 命令的帮助信息,能够在终端中输入 man tar。

  1. tar -cf /home/rothgar/Backup/lvstuff-ss /mnt/lvstuffbackup/

记住备份时候写到 lvstuff 的全部文件都会在咱们以前建立的临时逻辑卷中被跟踪。确保备份的时候你有足够的空闲空间。

备份完成后,卸载卷并移除临时快照。

  1. umount /mnt/lvstuffbackup
  2. lvremove /dev/vgpool/lvstuffbackup/

 

删除逻辑卷

要删除一个逻辑卷,你首先须要确保卷已经卸载,而后你能够用 lvremove 命令删除它。逻辑卷删除后你能够移除卷组,卷组删除后你能够删除物理卷。

这是全部移除咱们建立的卷和组的命令。

  1. umount /mnt/lvstuff
  2. lvremove /dev/vgpool/lvstuff
  3. vgremove vgpool
  4. pvremove /dev/sdb1 /dev/sdc1

这些已经囊括了关于 LVM 你须要了解的大部分知识。若是你有任何关于这些讨论的经验,请在下面的评论框中和你们分享。