Amazon EC2で実行中のインスタンスのディスクのサイズを増やす方法


13

UbuntoでEC 2サーバーのセットアップの実行中のインスタンスを取得しました。ダウンタイムを発生させず、リスクを最小限に抑えてディスクサイズを増やす最善の方法は何ですか?

ガイドを読んで、1つの方法は、新しいディスクを作成し、データを移行し、インスタンスのスワップディスクをオフにしてから再びオンにすることです。このアプローチは少しリスクが高いようですが、ダウンタイムが必要です。より良いアプローチがあるかしら?

回答:


14

Amazon AWSは、2017年2月13日にEBSボリュームのサイズを変更できる新機能をリリースしました。

ソース:https : //aws.amazon.com/blogs/aws/amazon-ebs-update-new-elastic-volumes-change-everything/

これにより、実行中に既存のインスタンスのEBSボリュームのサイズを増やすことができます。

ボリュームサイズを変更しても、ボリューム上のファイルシステムのサイズは変更されないことに注意してください(ほとんどのファイルシステムの場合)。オペレーティングシステム自体で、(ファイルシステムによっては)追加の手順が必要になる場合があります。たとえば、今日ほとんどのLinux OSで使用されているresizefson ext4ファイルシステム。

プロセスを説明するAWSの完全なドキュメントは、http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.htmlにあります。

場合によっては、ブロックデバイスにパーティションがマップされており、1つ(または複数)のパーティションにのみファイルシステムが含まれます。この場合、パーティションのサイズを変更してから、ファイルシステムのサイズを変更する必要があります。このプロセスは、ドキュメントにも記載されています。

ブログで説明されている新しい「オンライン」サイズ変更機能は、現在の世代のインスタンスにのみ適用されます。ボリュームのサイズ変更を試みる前に確認する必要があるその他の考慮事項と制限があります。


ファイルシステムのサイズを変更する前に、基礎となるパーティションのサイズも変更する必要があります。これは、ホットリサイズの物理パーティションを実際にブロックしています。
Tensibai 2017年

@Tensibai申し訳ありません。「ホットリサイズのために物理パーティションをブロックする」とはどういう意味か理解できません。AWS APIを使用してボリュームサイズを変更すると、ボリュームへの書き込み/読み取りがブロックされるということですか?
エフゲニー2017年

いいえ、つまり、ディスクは大きくなりますが、ディスク上のパーティションは同じままです。fdiskルートパーティションに関しては、ディスクのサイズを変更するために使用する必要があります。通常、ディスクパーティションテーブルは、マウントされている間は書き込むことができません。アンマウントすることはできません。一度に再起動する必要があります:)
Tensibai

右、ファイルシステムレイヤーを追加する前に複数のパーティションを使用する場合-最初にパーティションのサイズを変更する必要があります。おかげで、私はそれをどのようにして行ったかについてのいくつかのガイドを引用して回答に追加します。
エフゲニー2017年

ダウンタイムなしで言及された質問。ただし、ルートボリュームのサイズを変更するには、この手順を実行するためにインスタンスを停止する必要があるようです。
Chris Stryczynski 2017

2

私がすること(そしてそれはあなたの質問に正確に答えているわけではありません)は次のとおりです:

  1. EBSボリュームを作成し、インスタンスドキュメントにアタッチします。
  2. SCSIバスを再スキャンしますecho '- - -' > /sys/bus/scsi/devices/host1/scsi_host/host1/scan(ホスト番号の調整が必要になる場合があります)。
  3. pvcreate見つかった新しいディスクで物理ボリュームを作成します(fdisk -lすべてのディスクを一覧表示します)
  4. ボリュームグループを作成し、その上に論理ボリュームを作成します(vgcreateおよびlvcreate
  5. 論理ボリュームを目的のファイルシステムでフォーマットします
  6. tar 復元するターゲットマウントポイント。
  7. 新しいボリュームが必要な場所にこのボリュームをマウントします。
  8. この新しくマウントされたスペースにtarを復元します。

何かをインストールする前に新しいスペースを使用する場合、ステップ6と8はオプションです。既存のディレクトリを置き換える場合は、アーカイブの最後と復元の間に書き込みを行わないようにする必要があります。

マウントポイントごとに手順4〜8を繰り返すことができます。これにより、必要なスペースを拡張し、中断することなくオンラインでそれらのボリュームのサイズを変更できます。


0

AWS(または他の場所)でのZFSゼロダウンタイムファイルシステムストレージのスケーリング

アップサイズ

  1. EC2にZFSをインストールします。

    http://serverascode.com/2016/09/05/aws-zfs-user-data.html

  2. EBSボリュームを使用して、バルクデータ用のzpoolを作成します。
  3. さらにEBSを追加して、ブロックストレージを増やします。(またはプールをautoexpand = trueに設定して、EBSを拡張するだけです)
  4. 新しいEBSをzpoolに追加して、スペースを利用できるようにします。(autoexpandを使用してEBSサイズを増やした場合を除く)

ダウンサイズ

  1. 新しいEBS上の新しいzpoolを、縮小されたデータを保持するのに十分な大きさにします。(まだ、または同じEC2にマウントする必要はありません)
  2. 古い大きすぎるzpoolのスナップショット
  3. スナップショットを新しいzpoolにzfs-send
  4. 受信したスナップショットを新しいプールに昇格してマウントします
  5. 古いプールを破壊する
  6. 古いプールのEBSを破壊する

0

EBSボリュームのサイズを変更した後、ZFSプールを拡張する必要があるときに実行したのは次のとおりです。

parted -l # Get the list of partitions 
parted /dev/xvdf rm 9 # Remove the buffer partition
parted /dev/xvdf resizepart 1 100% # Resize the partition
zpool online -e <zfs partition name> /dev/xvdf # Expand the zpool and the filesystem it holds
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.