ボリュームがルート(ブート可能)デバイスとして使用されている場合、他のソリューションは機能しません。
新しく作成されたディスクにはブートパーティションがないため、インスタンスがルートボリュームとして使用する前にGRUBをインストールし、いくつかのフラグを正しく設定する必要があります。
ルートボリュームを縮小するための(今日の時点で)私のソリューションは次のとおりです。
背景:ルートボリュームを縮小するインスタンスAがあります。このボリュームをVAと呼びましょう。VAを30GBから10GBとするために縮小したい
- インスタンスAと同じOSで新しいec2インスタンスBを作成します。ストレージとして、VAと同じタイプのボリュームを選択しますが、サイズは10GBです。(またはターゲットサイズは何でも)。これで、この新しいボリューム(VBと呼びます)をルートボリュームとして使用するインスタンスBができました。
- 新しいインスタンス(B)が実行されたら。停止して、ルートボリューム(VB)をデタッチします。
注:次の手順は、主に@billのソリューションから取られています。
サイズを変更するインスタンスを停止します(A)。
ボリュームVAのスナップショットを作成し、そのスナップショットから「汎用SSD」ボリュームを作成します。このボリュームをVASNAPと呼びます。
Amazon Linuxで新しいインスタンスをスピンし、このインスタンスをCと呼びます。このインスタンスを使用して、VASNAPのコンテンツをVBにコピーします。インスタンスAを使用してこれらの手順を実行することもできますが、独立したマシンで実行することを好みます。
次のボリュームをインスタンスCに接続します。VBの場合は/ dev / xvdf。VASNAPの場合は/ dev / xvdg。
インスタンスCを再起動します。
SSH経由でインスタンスCにログオンします。
次の新しいディレクトリを作成します。
mkdir /source /target
- VBのメインパーティションをext4ファイルシステムでフォーマットします。
mkfs.ext4 /dev/xvdf1
エラーが発生しない場合は、手順11に進みます。エラーがない場合は/dev/xvdf1
、次のi-viiを実行してパーティションを作成する必要があります。
i)/dev/xvdf1
何らかの理由で存在しない場合は、作成する必要があります。最初に入力してください:
sudo fdisk /dev/xvdf
。
ii)次を入力してディスクをワイプします。
wipefs
iii)次を入力して、新しいパーティションを作成します。
n
iv)入力p
してプライマリパーティションを作成します
v)Enterを押し続けて、デフォルト設定を続行します。
vi)コマンドを再入力w
するように求められたら、Enter を押して変更を書き込み、終了します。
vii)以下を実行して、/dev/xvdf1
パーティションがあることを確認します。
lsblk
次のように表示されるはずです。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 250G 0 disk
└─xvda1 202:1 0 250G 0 part
xvdf 202:80 0 80G 0 disk
└─xvdf1 202:81 0 80G 0 part
xvdg 202:96 0 250G 0 disk
└─xvdg1 202:97 0 250G 0 part
次にステップ11に進みます。
- このディレクトリにマウントします。
mount -t ext4 /dev/xvdf1 /target
- これは非常に重要です。ファイルシステムは、Linuxがそれを認識して起動するためにe2labelを必要とします。アクティブインスタンスで "e2label / dev / xvda1"を使用して、それがどうあるべきかを確認します。
e2label /dev/xvdf1 /
- / sourceにVASNAPをマウントします。
mount -t ext4 /dev/xvdg1 /source
- 内容をコピーします。
rsync -vaxSHAX /source/ /target
注:「/ target」の後に「/」はありません。また、シンボリックリンクと属性に関するいくつかのエラーがあるかもしれませんが、サイズ変更はまだ成功しました
- Umount VB:
umount /target
AWSコンソールに戻ります。インスタンスCからVettaをデタッチし、AからVAをデタッチします。
新しいサイズのボリューム(VB)をインスタンスに「/ dev / xvda」としてアタッチします
インスタンスAを起動します。ルートデバイスは10GBです:)
インスタンスBとCの両方を削除し、VBを除くすべてのボリュームも削除します。VBはインスタンスAのルートボリュームです。