我一直在嘗試使用以下過程來減少 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設備而不是xvdf
sudo grub-install --root-directory=/mnt/new-volume/ --force /dev/nvme1n1
答案3
我同時透過執行以下操作找到了 Amazon Linux 1 的解決方法,但仍願意接受進一步檢查。
使用相同的 AMI 啟動新實例,但將根磁碟區大小變更為所需的量。
停止新實例,分離較小的 EBS 卷,並將其附加到附加較大根卷的當前實例(處於停止狀態)。
啟動目前執行個體(現在將較小的 EBS 磁碟區作為輔助磁碟機附加)。
使用以下命令複製根卷的內容(假設它已安裝到
/mnt/new-volume
:$ rsync -axv / /mnt/新卷
停止目前實例,分離兩個磁碟區。
將較小的新根卷附加到實例。
啟動實例
它不是一種優雅的解決方法,但已經足夠了,因為尚不清楚原始根卷是如何創建和引導的。