いつもいつまでもお世話になっております。サーバーワークス 高橋です。
4月に新卒で入社し、もう半年が経ちました。だらだらしているとあっという間に時間が過ぎていきます。
さて今回はLinuxのパーティションを拡張する方法をご紹介します。
インスタンスの起動からディスクの確認まで
まずEBS-Backedインスタンスを立ちあげてみましょう。今回はRootボリュームが80GBの、EBS-Backedインスタンスを立ちあげます。
インスタンスの起動後に lsblk,df コマンドでディスクの状態を見てみましょう。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 80G 0 disk └─xvda1 202:1 0 6G 0 part / $ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 5.8G 5.0G 570M 90% / tmpfs 498M 0 498M 0% /dev/shm
使用するAMI、スナップショットから復元したEBSによってはファイルシステムの容量が少ないことがあります。
ディスクが80GBなのに対してファイルシステムが6GBでは少ないですね。それではファイルシステムを拡張してみましょう。
$ sudo resize2fs /dev/xvda1 resize2fs 1.41.12 (17-May-2010) The filesystem is already 1572864 blocks long. Nothing to do!
おやおや、Nothing to do! と言われてしまいました。
パーティションの容量が少ないためファイルシステムの拡張ができません。どうしましょう。
パーティション拡張する
resize2fs を使ってファイルシステムを拡張するのではなく、パーティションを拡張する必要があります。
パーティションを拡張するためには partedコマンドを使ってください。
手順
手順はAWSの公式ドキュメントに記載されているので、そちらを御覧ください。
今回はルートパーティションを拡張するので、一度EBSをデタッチする必要があります。 Linux パーティションを拡張する 大まかな手順は以下の通りです。
- インスタンスを停止し、EBSを別のインスタンスにアタッチする
- EBS内のパーティションを partedコマンドで拡張する
- インスタンスを停止し、EBSをデタッチ。元のインスタンスにアタッチする
※注意点
別のインスタンスは、EBSと同じアベイラビリティゾーン内に立ちあげてください。
EBSボリュームは同じゾーン内のEC2インスタンスにしかアタッチすることができません。
かかる時間
拡張するのに全く時間はかかりません。
拡張した結果
それでは拡張したEBSを元のインスタンスにアタッチし、結果を見てみましょう。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 80G 0 disk └─xvda1 202:1 0 80G 0 part / $ df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 79G 5.0G 70G 7% / tmpfs 498M 0 498M 0% /dev/shm
よし、できましたね。
ファイルシステムも拡張されたことが確認できました。
Tips
OS側の設定を間違えてカーネルパニックを発生させてしまった際にも、EBSを別のインスタンスに付け替えて設定し、また元のインスタンスにアタッチして直すことが可能です。
これからどんどん寒くなっていきますね。何かあっても冷静に対処することが肝心ですね。