読者です 読者をやめる 読者になる 読者になる

続 カッコの付け方

AWSを始めとしたクラウドコンピューティング全般と、唯一神emacsにおける()の付け方についてだらだら書きます

CentOS6.5 のrootパーティションEBS拡張する方法 (RightScale)

EC2の便利な点として、EBSのスナップショットが簡単に取れること、ディスク追加がオンラインで簡単にできることが有ります。しかも、殆どのLinuxにおいては、EBSの拡張に準じてファイルシステムも自動拡張(cloud-initが頑張っているらしい)しますが、ものによってはそうはいかないものも有ります。

今回は RightScaleのCentos6.5のイメージです。これは、最近までHVMのイメージがなかったため、早い段階でHVM版上がっていたRightScaleのAMIを使ったためです。他のCentOS6.5では発生しないかもしれません。

この辺りについては、先人が色々調べてくれていたりしますが。
http://dev.classmethod.jp/cloud/aws/ebs-expand/
やってみないと分からないという気持ちでいたほうが良いと思います。もしくは、素直にamazonLinuxを使うことが最善だと思います。

まず、作業のパターンですが、
1. そもそもEBSを太らせたら、勝手に太ってくれる(つまり何もしなくて完了)
2. resize2fs やればOK
3. fdiskでパーティション切ってやればOK
4. まっさらのEBSボリュームを作って、そこへ rsyncやddでコピー

大体は2. で片付きますが、ボリューム縮小は4.しか手が無いようです。今回は3.の後に2.が必要でした。

まず、ルートパーティションを容量増やす、もしくは減らすというのは、オンプレの感覚で言えばあり得ないことです(特に動いているもので)。ですので、なるべく /var だけとか、 /dbだけとか、ディスク追加&パーティションコピーで抜けるのが私の感覚としては正しいです。どうしてもルートパーティションを増やしたいのであれば、上記いづれの方法をとっても、絶対にスナップショットを取り、本番環境以外でテストをやるべきです。言わなくてもわかってると思いますが。

早速やりますが、RightScaleのイメージは、どういうわけかfdiskが上手く動きませんでした。ので、AmazonLinuxを立ち上げて、そこに外部ディスクとしてアタッチするという方法を取りました。もともとCentOSに付いているボリュームをデタッチし、AmazonLinuxにアタッチ、改造して再びCentOSのマシンに戻すというイメージです。

以下、やったコマンドです
# lsblk
# fdisk 
# c //Dos互換を切る
# p //ここで開始セクター位置を必ず覚える、2000となっていた!
# d //削除
# n //primary で 1 さらに開始位置を2000として、終端をデフォルトとする
# w

ルートパーティションでないので、wが正常に行きます。次はresize2fsです
# resize2fs 

文句言われるので、言う通りにします
# fsck.ex2 -f 
# resize2fs 

あとは、とりあえずマウントできるか試しておきましょう。resize2fsが正常にいっているので、まずマウントはできると思いますが。

後は、もともとのCentOSのEC2へアタッチしてやれば起動します。
ダウンタイムが許されない場合は、スナップショットからボリューム作製などの方法で工夫してください。

重要な点としては、 fdisk の p の時に、シリンダかセクターかを注意して下さい、切り替えるのはu です、セクターの表示に従わしないと起動しないディスクの出来上がりです。