web-dev-qa-db-ja.com

Amazon EC2インスタンスのルートEBSデバイスを変更できますか?

EBSでバックアップされたAmazon EC2インスタンスがあります。このインスタンスのルートデバイスを変更したいと思います。これについて最善の方法を教えてください。

ブロックデバイスのいくつかの属性の変更に関するドキュメントのみを見つけましたが、ルートデバイスとして設定することは含まれていないようです。前もって感謝します。

92
cone

うん、それは簡単です:

  1. インスタンスを停止します。
  2. ルートEBSボリュームを切り離します。
  3. 代替EBSボリュームをルートとして接続します。/dev/sda1
  4. インスタンスを開始します。

もちろん、代替EBSボリュームはブート可能であることを前提としています-ブート可能なOSイメージが含まれている必要があります。

167
Eight-Bit Guru

選択した回答にコメントを追加するのに十分な担当者がいませんが、私のために_/dev/sda1は機能しませんでした(ルートとしてアタッチしませんでした)が、/dev/xvda動作しました(ルートとして接続)。インスタンスは、HVMを使用する新しいt2.microインスタンスの1つです。

40
byl83

受け入れられた回答のコメントスレッドでDiomidis Spinellisのコメントを詳しく説明するには、新しいルートデバイスとして切り替えようとしているデバイスのファイルシステムラベルを確認することが重要です。自分のサーバー移行のトラブルシューティングを行っている間、インスタンスが起動する前に次のことを行う必要がありました。

使用 e2labelコマンドを使用して、新しいルートデバイス用に作成したext2/ext3/ext4ファイルシステムのラベルを変更します。

まず、現在のルートデバイスのファイルシステムラベルを確認します。

$ Sudo e2label /dev/xvda1
cloudimg-rootfs

同じファイルシステムラベルを持つように新しいデバイスを設定します。

$ Sudo e2label /dev/xvdg 'cloudimg-rootfs'

私の場合、ラベルはcloudimg-rootfs。場合によっては、単に/

E2labelの仕組みを理解することが重要です。チェックman e2labelマシンで、または http://linux.die.net/man/8/e2label にアクセスして詳細を確認してください。

15
Joey

これはawsの推奨ソリューションです。ルートボリュームを停止した後、元のインスタンスから切り離すことができます。ルートボリュームは/ dev/sda1に接続されます。これがデタッチされたら、新しいインスタンスにアタッチしてください。ボリュームを接続した後、OSからマウントする必要がある場合があります。マウントすると、その中にデータが表示されます。

新しいキーの追加が完了したら、それをデタッチして、/ dev/sda1の元のインスタンスにアタッチできます。

変更を行う前に、ルートボリュームのスナップショットを作成することをお勧めします。

解決策を試す前に、重要ではないインスタンスまたはスポットインスタンスで試してください

3
yunus

CloudFormationを介してこれを実行する場合は、以下を実行する必要があります。

  1. 既存のルートボリュームからスナップショットを作成(コンソールまたはCLI経由)
  2. このスナップショットから新しいAMIを作成します-ここでルートボリュームサイズを増やし、正しい仮想化時間(準仮想化またはHVM)を選択していることを確認します。
  3. AWS :: EC2 :: Instanceリソースで、ImageIdパラメーターを作成したばかりの新しいAMIに設定します

スタックをデプロイします。これによりインスタンスが再作成されるため、Elastic IPアドレスを使用しているか、DNSアクセス権があることを確認してください。

この回避策を実行する必要があるのは、CFでEC2 BlockDeviceMappingsのルートボリュームサイズを調整したり、ルートボリュームのSnapshotIdを調整したりできないためです。

0
Joe Alamo

ボリュームがマウントされると、番号付きのポストフィックスが取得されます。例:when /dev/sdaがマウントされ、/dev/sda1, /dev/sda2作成するパーティションに応じて。ルートデバイス自体をマウントしているため、デバイスがすでにマウントされていると想定しているため、/dev/sda1ボリュームをルートデバイスとしてマウントします。注:ルートボリュームは接続しないでください。

次の手順に従ってください:1)ボリュームに移動し、[アクション]から[ボリュームの接続]を選択します。 2)インスタンスを選択します3)ルートとしてマウントするには、デバイス名に/dev/sda1 4)インスタンスを起動します。

0
Prashanth