AWSのEBSはサイズを増やす分には手軽ですが、減らすのにはなかなか手間がかかります。
とはいえ、 EBSのボリュームサイズを縮小する などの方法で縮小は可能なのですが、Ubuntu18.04 LTSの場合に嵌ったので対策を書いておきます。
問題点
/etc/fstab
はラベルを指定しているのでe2label
コマンドで対応できるが、GRUBがファイルシステムを探す際はUUIDを用いるので、新デバイスが見つけられずOS起動に失敗する。
/boot/grub/grub.cfg
~省略~
search --no-floppy --fs-uuid --set=root c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f
~省略~
対応方法
元記事の8番(rsync)と9番(umount)の間にGRUBの設定ファイル更新を行います。
8.1. blkidで旧、新のファイルシステムUUIDを確認する
$ blkid
/dev/xvdf1: LABEL="cloudimg-rootfs" UUID="e1a87e36-cc00-4287-8845-ab3cd7dbb4dc" TYPE="ext4" PARTUUID="d5b2b459-01"
/dev/xvdg1: LABEL="cloudimg-rootfs" UUID="c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f" TYPE="ext4" PARTUUID="b32e823c-01"
8.2. GRUBのUUIDを書き換える
# 修正箇所、件数を確認
grep c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f /mnt/small/boot/grub/grub.cfg
grep c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f /mnt/small/boot/grub/grub.cfg | wc -l
# 置換
sed -i -e 's/c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f/e1a87e36-cc00-4287-8845-ab3cd7dbb4dc/g' /mnt/small/boot/grub/grub.cfg
# 念のため件数を確認
grep c03b791b-60ef-4ae1-82b5-5c9ab6b4d08f /mnt/small/boot/grub/grub.cfg | wc -l
grep e1a87e36-cc00-4287-8845-ab3cd7dbb4dc /mnt/small/boot/grub/grub.cfg | wc -l