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


107

EBSでサポートされているAmazon EC2インスタンスがあります。このインスタンスのルートデバイスを変更したいと思います。これについて最善の方法を教えていただけますか?

ブロックデバイスのいくつかの属性の変更に関するドキュメントしか見つかりませんが、ルートデバイスとして設定することは含まれていないようです。

回答:


191

うん、それはとても簡単です:

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

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


50
キーは「ルートとして」です- /dev/sda1確かに!
Aseem Kishore 2012

6
おかげで、これは素晴らしいです。これが発生するとDNS / IPが変更される可能性があるため、DNS / Elastic IPなどを必ず更新してください。私はなぜそれをもうsshできなかったのかを理解するためにしばらく費やしました、そしてこれが理由でした。
mrooney 2013年

13
どちら/dev/sda/dev/sda1私のために働いたが、し/dev/xvdaなかった。
bhspencer、2015

8
男、それは怖かった。/dev/sda-機能しませんでした。/dev/sda1dev/sdf-動作しましたが、インスタンスが起動しませんでした。/dev/xvda働いた。
Alex Fortuna

13
使用する名前は、このコマンドの結果です。aws ec2 describe-instances --instance-id i-XXXXXXX | grep -i rootDeviceName私の場合/dev/xvda
Neoecos

42

選択した回答にコメントを追加するのに十分な担当者がいませんが、私にとっては機能/dev/sda1しなかった(rootとして接続されなかった)が、/dev/xvda機能した(rootとして接続された)ことを指摘したいと思います。インスタンスは、HVMを使用する新しいt2.microのインスタンスの1つです。


VPCにあるマシン、/ dev / xv *形式のデバイス名自体が機能し、/ dev / sd *形式で名前を付ける必要がないと思います。これは観察結果です-私は自信を持ってこれを言う専門家ではありません。
Mayank Jaiswal 2015

この説明に一致するインスタンスがありますが、ルートデバイスをデタッチして再アタッチした後、起動できません(「ルートデバイスが見つかりません」)。この回答を試したいのですが、添付しないと/dev/sda1AWSがインスタンスの起動を拒否します。代替ルートデバイス名を使用するために構成する必要がある他の設定はありますか?
Jack O'Connor

/ dev / sda1 for Linux / dev / xvda for Windows
Luis

whoopse、パーティションを識別することを確認し、は/ dev / sdaに1/dev/sda無効であるが、/dev/sda1大丈夫です。
ThorSummoner 2016年

16

承認された回答のコメントスレッドで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にアクセスしてください。


1
これは非常に重要であり、なぜこの回答があまり一般的に見られないのか理解できません。
ays0110

3

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

新しいキーの追加が完了したら、それを切り離して、/ dev / sda1にある元のインスタンスに接続できます。

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

ソリューションを試す前に、重要ではないインスタンスまたはスポットインスタンスで試す


1

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

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

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

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


0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.