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

时间:2020-01-09 10:45:03  来源:igfitidea点击:

LVM是操作系统和物理硬盘驱动器之间的抽象层。这意味着物理硬盘驱动器和分区不再与它们所在的硬盘驱动器和分区相关联。相反,操作系统所看到的硬盘驱动器和分区可以是任意数量的单独硬盘驱动器,它们可以汇集在一起或者位于软件RAID中。

要管理LVM,可以使用GUI工具,但是要真正了解LVM配置正在发生什么,最好了解命令行工具是什么。如果要在不提供GUI工具的服务器或者发行版上管理LVM,这将特别有用。

LVM中的大多数命令彼此非常相似。每个有效命令之前都带有以下命令之一:

  • 物理体积= pv

  • 卷组= vg

  • 逻辑体积= lv

物理卷命令用于在卷组中添加或者删除硬盘驱动器。卷组命令用于更改在逻辑卷中提供给操作的物理分区的抽象集合。逻辑卷命令会将卷组显示为分区,以便操作系统可以使用指定的空间。

可下载的LVM备忘单

为了了解可用于每个前缀的命令,我们制作了LVM备忘单。我们将在本文中介绍一些命令,但是我们仍然可以做很多事情,此处不做介绍。

此列表中的所有命令都需要以root用户身份运行,因为我们要更改会影响整台计算机的系统范围设置。

(单击缩略图可查看大图)

如何查看当前的LVM信息

我们可能需要做的第一件事是检查LVM的设置方式。 s和display命令可用于物理卷(pv),卷组(vg)和逻辑卷(lv),因此是尝试了解当前设置的理想起点。

display命令将格式化信息,所以比s命令更容易理解。对于每个命令,我们将看到pv / vg的名称和路径,并且还应该提供有关可用空间和已用空间的信息。

最重要的信息将是PV名称和VG名称。有了这两条信息,我们就可以继续进行LVM设置。

创建逻辑卷

逻辑卷是操作系统在LVM中使用的分区。要创建逻辑卷,我们首先需要有一个物理卷和卷组。这是创建新逻辑卷所必需的所有步骤。

创建物理体积

我们将从头开始,使用一个没有分区或者信息的全新硬盘。首先找到要使用的磁盘。 (/ dev / sda,sdb等)

注意:请记住,所有命令都将需要以root用户身份运行或者通过在命令开头添加sudo'来运行。

fdisk -l

如果我们从未对硬盘驱动器进行过格式化或者分区,则在fdisk输出中可能会看到类似的内容。这完全没问题,因为我们将在下一步中创建所需的分区。

我们的新磁盘位于/ dev / sdb,因此让我们使用fdisk在驱动器上创建一个新分区。

有很多工具可以使用GUI创建新分区,包括Gparted,但是由于我们已经打开了终端,因此我们将使用fdisk创建所需的分区。

在终端上,键入以下命令:

fdisk /dev/sdb

这将使我们进入特殊的fdisk提示符。

按照给定的顺序输入命令,以创建一个新的主分区,该分区使用100%的新硬盘驱动器并已准备好用于LVM。如果我们需要更改分区大小或者需要多个分区,建议我们使用GParted或者自行阅读有关fdisk的信息。

警告:以下步骤将格式化硬盘驱动器。执行以下步骤之前,请确保我们在此硬盘驱动器上没有任何信息。

  • n =创建新分区

  • p =创建主分区

  • 1 =使分区成为磁盘上的第一个分区

按两次Enter键以接受默认的第一个柱面和最后一个柱面。

要准备供LVM使用的分区,请使用以下两个命令。

  • t =更改分区类型

  • 8e =更改LVM分区类型

验证信息并将其写入硬盘驱动器。

  • p =查看分区设置,因此我们可以在将更改写入磁盘之前进行检查

  • w =将更改写入磁盘

执行这些命令后,fdisk提示符将退出,我们将返回到终端的bash提示符。

输入pvcreate / dev / sdb1在我们刚刚创建的分区上创建LVM物理卷。

我们可能会问,为什么我们不使用文件系统格式化分区,但是请不要担心,这一步稍后出现。

创建卷组

现在我们已经指定了一个分区并创建了物理卷,我们需要创建卷组。幸运的是,这只需要一个命令。

vgcreate vgpool /dev/sdb1

Vgpool是我们创建的新卷组的名称。我们可以随意命名,但建议将vg放在标签的前面,这样以后再参考时,它将知道它是一个卷组。

创建逻辑卷

要创建LVM将使用的逻辑卷:

lvcreate -L 3G -n lvstuff vgpool

-L命令指定逻辑卷的大小,在这种情况下为3 GB,-n命令命名该卷。引用了Vgpool,以便lvcreate命令知道从哪个卷获取空间。

格式化并挂载逻辑卷

最后一步是使用文件系统格式化新逻辑卷。如果我们在选择Linux文件系统方面需要帮助,请阅读我们的操作指南,以选择最合适的文件系统。

mkfs -t ext3 /dev/vgpool/lvstuff

创建安装点,然后将卷安装在可以使用它的地方。

mkdir /mnt/stuff

mount -t ext3 /dev/vgpool/lvstuff /mnt/stuff

调整逻辑卷的大小

逻辑卷的好处之一是,我们可以将共享物理上变大或者变小,而不必将所有内容都移到更大的硬盘上。相反,我们可以添加新的硬盘驱动器并即时扩展卷组。或者,如果我们有未使用的硬盘驱动器,则可以将其从卷组中删除以缩小逻辑卷。

有三种基本工具可用于增大或者减小物理卷,卷组和逻辑卷。

注意:这些命令中的每一个都必须在pv,vg或者lv之前,具体取决于我们要使用的内容。

  • "调整大小"可以缩小或者扩展物理卷和逻辑卷,但不能缩小或者扩展卷组

  • extend可以使卷组和逻辑卷更大但不能更小

  • 减少可以使卷组和逻辑卷变小但不能变大

让我们来看一个示例,该示例如何向我们刚刚创建的逻辑卷lvstuff添加新的硬盘驱动器。

安装并格式化新硬盘

要安装新硬盘,请按照上述步骤创建一个新分区,并将其分区类型更改添加到LVM(8e)。然后使用pvcreate创建LVM可以识别的物理卷。

将新硬盘添加到卷组

要将新的硬盘驱动器添加到卷组中,我们只需要知道新分区是什么,在本例中为/ dev / sdc1,以及我们要将其添加到的卷组的名称。

这会将新的物理卷添加到现有的卷组中。

vgextend vgpool /dev/sdc1

扩展逻辑卷

要调整逻辑卷的大小,我们需要说我们要按大小而不是按设备扩展多少。在我们的示例中,我们仅向3 GB vgpool添加了8 GB硬盘。为了使该空间可用,我们可以使用lvextend或者lvresize。

lvextend -L8G /dev/vgpool/lvstuff

尽管此命令将起作用,但我们会看到它实际上会将逻辑卷的大小调整为8 GB,而不是像我们想要的那样向现有卷添加8 GB。要添加最后3个可用千兆字节,我们需要使用以下命令。

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

现在,我们的逻辑卷大小为11 GB。

扩展档案系统

逻辑卷为11 GB,但该卷上的文件系统仍仅为3 GB。要使文件系统使用整个11 GB的可用空间,必须使用命令resize2fs。只需将resize2fs指向11 GB的逻辑卷,它将为我们带来魔力。

resize2fs /dev/vgpool/lvstuff

注意:如果我们使用的是除ext3 / 4之外的其他文件系统,请参阅文件系统调整大小工具。

缩小逻辑卷

如果要从卷组中删除硬盘驱动器,则需要以相反的顺序执行上述步骤,并改用lvreduce和vgreduce。

  • 调整文件系统的大小(在调整大小之前,请确保将文件移动到硬盘驱动器的安全区域)

  • 减小逻辑音量(代替+扩展,也可以使用按大小减小)

  • 使用vgreduce从卷组中删除硬盘驱动器

备份逻辑卷

快照是某些较新的高级文件系统附带的功能,但是ext3 / 4缺乏即时创建快照的功能。关于LVM快照的最酷的事情之一是文件系统永远不会脱机,并且我们可以拥有任意数量的资源而不会占用额外的硬盘空间。

当LVM拍摄快照时,将准确拍摄逻辑卷的外观,并可以使用该图片在其他硬盘上进行复制。进行复制时,需要像往常一样将需要添加到逻辑卷的任何新信息写入磁盘,但是会跟踪更改,以使原始图片永不被破坏。

要创建快照,我们需要创建一个具有足够可用空间的新逻辑卷,以保存在进行备份时将写入逻辑卷的任何新信息。如果未主动写入驱动器,则可以使用很少的存储空间。一旦完成备份,我们只需删除临时逻辑卷,原始逻辑卷将继续正常运行。

创建新快照

要创建lvstuff的快照,请像以前一样使用lvcreate命令,但使用-s标志。

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

在这里,我们创建了一个只有512 MB的逻辑卷,因为未积极使用该驱动器。进行备份时,这512 MB的空间将存储所有新写入。

挂载新快照

就像之前需要创建挂载点并挂载新快照一样,我们可以从中复制文件。

mkdir /mnt/lvstuffbackup

mount /dev/vgpool/lvstuffbackup /mnt/lvstuffbackup

复制快照并删除逻辑卷

我们所要做的就是将所有文件从/ mnt / lvstuffbackup /复制到外部硬盘驱动器或者tar压缩,使其全部集中在一个文件中。

注意:tar -c将创建一个档案,-f将显示档案的位置和文件名。要获得tar命令的帮助,请在终端中使用man tar

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

请记住,在进行备份时,将在我们之前创建的临时逻辑卷中跟踪将要写入lvstuff的所有文件。进行备份时,请确保有足够的可用空间。

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

umount /mnt/lvstuffbackup

lvremove /dev/vgpool/lvstuffbackup/

删除逻辑卷

要删除逻辑卷,我们需要首先确保已卸载该卷,然后可以使用lvremove删除它。一旦删除了逻辑卷,也可以删除卷组,而删除卷组之后,也可以删除物理卷。

这是使用我们创建的卷和组的所有命令。

umount /mnt/lvstuff

lvremove /dev/vgpool/lvstuff

vgremove vgpool

pvremove /dev/sdb1 /dev/sdc1