我一直在尝试使用以下过程来减少我的 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 问题帖子但这并不能解决我的问题。我尝试通过 chroot 进入分区并遇到了同样的问题,并尝试使用中间 Amazon Linux 1 或 Amazon Linux 2 主机,但仍然遇到该问题。
我注意到,在 Amazon Linux 1 中单独使用根卷时也会出现同样的问题:
grub-install /dev/sda OR grub-install /dev/sda1
但无论如何,除非新磁盘被列为辅助驱动器,否则无法从其启动。grub
单独使用命令旧版 GRUB 手册安装也失败了。我是否在寻找错误的方法来创建新的较小根卷,或者我是否遗漏了上述步骤?如有必要,可以提供进一步的详细信息。
答案1
遵循相同的手册,我认为这使它起作用:
在 Ubuntu 20 上/boot/grub/grub.cfg
有错误的 uuid,所以我需要在这里修复:/etc/default/grub.d/40-force-partuuid.cfg
然后/boot/grub/grub.cfg
使用grub-mkconfig -o ...
此外,我还对新的 EBS、卷进行了分区,似乎您也做了同样的事情:
Device Start End Sectors Size Type
/dev/nvme0n1p1 2048 411647 409600 200M BIOS boot
/dev/nvme0n1p2 411648 104857566 104445919 49.8G Linux filesystem
但不确定是否有必要。
答案2
您必须指定正确的块设备,因为您正在使用nvme设备代替维普资讯
sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/nvme1n1
答案3
我通过同时执行以下操作找到了针对 Amazon Linux 1 的解决方案,但仍需进一步检查。
使用相同的 AMI 启动新实例,但将根卷大小更改为所需数量。
停止新实例,分离较小的 EBS 卷,并将其附加到附加了较大根卷的当前实例(处于停止状态)。
启动当前实例(现在将较小的 EBS 卷作为辅助驱动器连接)。
使用以下命令复制根卷的内容(假设它已安装到
/mnt/new-volume
:$ rsync -axv / /mnt/新卷
停止当前实例,分离两个卷。
将较小的新根卷附加到实例。
启动实例
这不是一种优雅的解决方法,但已经足够了,因为不清楚原始根卷是如何创建和启动的。