我一直在尝试使用本文档中的过程来减小我的 Amazon Linux 1 AMI 根卷的大小(在失败后进行了一些修改),并且在该步骤中不断遇到错误:
$ sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/xvdf
这是旧版 GRUB(版本0.97-94.32.amzn1
)
起初我收到以下错误:
Unrecognized option `--force'
结果删除了--force
标志并使用了:
$ sudo grub-install --root-directory=/mnt/new-volume/ /dev/xvdf
此后导致:
/dev/xvdf does not have any corresponding BIOS drive
我尝试按照该线程中提到的说明使用 parted 或 fdisk 创建 BIOS 引导分区,但每种方法都导致了同样的失败。请注意,我使用的特定实例类型 (r5.large) 将驱动器重命名为相应的“nvme*”名称,如 lsblk 输出中所述:
nvme0n1 259:3 0 200G 0 disk
├─nvme0n1p1 259:4 0 200G 0 part /
└─nvme0n1p128 259:5 0 1M 0 part
nvme1n1 259:0 0 40G 0 disk
├─nvme1n1p2 259:2 0 40G 0 part /mnt/new-volume
└─nvme1n1p1 259:1 0 1M 0 part
在这篇Linux Questions 帖子中找到了一篇与错误消息相关的文章,但这并没有证明可以解决我的问题。我尝试通过 chroot-ing 进入分区并遇到同样的问题,并尝试使用中间 Amazon Linux 1 或 Amazon Linux 2 主机,但继续遇到问题。
我确实注意到在 Amazon Linux 1 中单独使用根卷时也会出现同样的问题:
grub-install /dev/sda OR grub-install /dev/sda1
但无论如何,除非它被列为辅助驱动器,否则新磁盘无法启动。grub
单独使用Legacy GRUB 手册中的命令进行安装也失败了。我是否正在寻找错误的程序来创建一个新的较小的根卷,或者我在上述步骤中遗漏了什么?可以根据需要提供进一步的细节。
遵循相同的手册,我认为使它起作用:
在 Ubuntu 20 中
/boot/grub/grub.cfg
有错误的 uuid,所以我需要在这里修复:/etc/default/grub.d/40-force-partuuid.cfg
然后重新生成新/boot/grub/grub.cfg
的grub-mkconfig -o ...
此外,我对新的 EBS、卷进行了分区,您似乎也做了什么:
不过,不确定是否有必要。
您必须指定正确的块设备,因为您使用的是nvme设备而不是xvdf
在此期间,我通过执行以下操作找到了适用于 Amazon Linux 1 的解决方法,但仍愿意接受进一步检查。
使用相同的 AMI 启动新实例,但将根卷大小更改为所需数量。
停止新实例,分离较小的 EBS 卷,并将其附加到附加较大根卷的当前实例(处于停止状态)。
启动当前实例(现在将较小的 EBS 卷附加为辅助驱动器)。
使用以下内容复制根卷的内容(假设它已安装到
/mnt/new-volume
:$ rsync -axv / /mnt/new-volume
停止当前实例,分离两个卷。
将较小的新根卷附加到实例。
启动实例
它不是一种优雅的解决方法,但足够了,因为不清楚原始根卷是如何创建和引导的。