我继承了一台运行 Ubuntu 14.04.5 LTS 的服务器,它有一个 30 TB 的 RAID,分区为非常小型启动分区和包含其他所有内容的大型 LVM 分区。这是当前配置:
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 30T 0 disk
├─sda1 8:1 0 113M 0 part /boot
└─sda2 8:2 0 30T 0 part
├─vg01-root (dm-0) 252:0 0 55,9G 0 lvm /
├─vg01-pooling (dm-1) 252:1 0 1,8T 0 lvm /var/lib/bareos/pooling
├─vg01-postgres (dm-2) 252:2 0 465,7G 0 lvm /postgres
├─vg01-swap (dm-3) 252:3 0 3,7G 0 lvm [SWAP]
└─vg01-storage (dm-4) 252:4 0 27,7T 0 lvm /var/lib/bareos/storage
如你所见,启动分区实在是太小了。所以我需要在开始sda2 的空间,以便扩大 sda1 的空间。网上有很多关于如何缩小 LVM 物理卷的精心编写的教程,但释放的空间总是出现在结尾的 PV。
当然,我可以在缩小 PV 后移动它,但这意味着复制整个 30 TB,这将花费很长时间,增加出错的风险,而且在我看来相当浪费。有没有更好的方法?空间来自哪个 LV 并不重要,它们都有一两个 Gig 的剩余。
答案1
我不知道如何移动 LVM PV 的启动,但这并不意味着它是不可能的;我的知识可能还不够。
但是,如果您没有听说更好的解决方案,您可以考虑以下步骤:
- 从末尾缩小物理卷,在末尾留下新分区所需的未分区空间
/boot
。(此网站上有各种关于调整 LVM PV 大小的问题,例如这个和这个。) /boot
在现已缩小的 LVM PV 之后创建一个新的、更大的分区。- 调整您的引导加载程序和
/etc/fstab
配置以使用新/boot
分区的位置。 - 测试您是否可以从新分区启动。(您可以删除旧分区上的一个内核,留下至少一个已知可以工作的内核,然后尝试从新分区上与已删除内核相匹配的内核启动,以确保您从新分区启动。)
- 将旧
/boot
分区擦除干净。 - 如果有必要,请再次调整引导加载程序配置以删除对现已擦除的旧
/boot
分区的引用。 - 如果需要,可以将旧
/boot
分区添加到卷组,以便使用其空间。对于仅有 113MiB 的空间,这可能不值得,但如果您迫切需要保留该磁盘空间,这是一个选择。
另一种方法是,如果您不打算将旧/boot
分区添加到 VG,则可以省略步骤 #5 之后的所有步骤。这样可以为您提供一个备份位置,您可以在其中存储一些当前内核,以防新分区出现问题/boot
。