Google Cloud Platformの起動ディスクは、サイズの拡張機能はサポートされているが、縮小機能はサポートされていない。色々調べてみたが縮小の手順を説明しているサイトも見つけられなかった。
そこで、新しく作成した小さめのブートディスクを作成し、既存のブートディスクから必要な内容を転送することで、縮小された起動ディスクを作成し、入れ替えてみた。

    • GCPのCompute Engineのページから縮小後のサイズに合わせた新規のインスタンスを作成。
      • 既存のインスタンスと、同じOS、同じバージョン、同じ設定とする。
      • 「管理、セキュリティ、ディスク、ネットワーキング、単一テナンシー」をクリックして「ディスク」を選択し、「インスタンスを削除する際にブートディスクを削除する」のチェックボックスを外しておく。
    • インスタンスが起動したらログインし、aptコマンドで最新にupdate,upgradeを行い、インスタンスを停止。
    • 作成したインスタンスを削除(作成したブートディスクはそのまま残る)
    • 既存のインスタンスを編集し、「追加デイスク」の「既存のディスクを接続」をクリックし、作成したディスクをアタッチする。
    • 既存のインスタンスにログインし、aptコマンドで最新にupdate,upgradeを行ってから、lsblkでディスクの名前を確認する。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0  7:0 0 55.5M 1 loop /snap/core18/2074
loop1  7:1 0 55.4M 1 loop /snap/core18/2128
loop2  7:2 0 61.7M 1 loop /snap/core20/1026
loop3  7:3 0 61.8M 1 loop /snap/core20/1081
loop4  7:4 0 234.4M 1 loop /snap/google-cloud-sdk/192
loop5  7:5 0 234.7M 1 loop /snap/google-cloud-sdk/193
loop6  7:6 0 68.2M 1 loop /snap/lxd/21039
loop7  7:7 0 68.3M 1 loop /snap/lxd/21260
loop8  7:8 0 32.3M 1 loop /snap/snapd/12398
loop9  7:9 0 32.3M 1 loop /snap/snapd/12704
sda  8:0 0 30G 0 disk 
├─sda1 8:1 0 29.9G 0 part /
├─sda14 8:14 0  4M 0 part 
└─sda15 8:15 0 106M 0 part /boot/efi
sdb  8:16 0 10G 0 disk 
├─sdb1 8:17 0 9.9G 0 part 
├─sdb14 8:30 0  4M 0 part 
└─sdb15 8:31 0 106M 0 part

上記の場合、既存のブートディスクが/dev/sdaにあり、転送先が/dev/sdbにある。/bootディレクトリはコピーせずそのまま使用するので、/dev/sdb1を/mnt/rootにマウントする。

# mkdir /mnt/root
# mount /dev/sdb1 /mnt/root
    • /dev, /proc, /sys, /tmp, /run, /boot, /snap, /mnt, /media, /lost+found以外のディレクトリを転送するので、それ以外のディレクトリを削除しておく。
    • rsyncを使って、必要なファイルを転送する。
rsync -aAXH --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/boot","/snap","/mnt/*","/media/*","/lost+found"} / /mnt/root
  • 転送が終わったら/snapディレクトリの内容を確認し、先のlsblkでloopxで表示されているマウントポイントとなるディレクトリを作成し、マウントされていないファイル(/snap/binとそれ以外のディレクトリにあるcurrentのシンボリックリンク)をコピーあるいは転送する。(snapディエクトリの取り扱いはよく分かっていないので、こうしておけば大丈夫だろうという処置)
  • インスタンスを停止。
  • インスタンスを編集し、「Boot Disk」と「追加ディスク」にアタッチされているディスクを外して保存。
  • 再度インスタンスを編集し、「Boot Disk」に作成・転送したブートディスクをアタッチし保存。
  • インスタンスを起動して正常に動作することを確認。

この方法が完全に正しいかどうかは自信がないが、このサイトのサーバはこの手順で入れ替えたブートディスクで特に問題なく動作している。

11/14 追記)順調に動作していたが、aptでupdate, upgradeを実行したら起動しなくなってしまった(以前は大丈夫だったような、、、)。原因は不明だが、この移動方法が原因かも?とりあえずDisk内容は残っていたので、そこからサルベージ。参考にされる方はご注意。