2016年10月25日火曜日

さくらのクラウドで古いサーバーのHDD容量アップ手順

最近のイメージファイルなら起動時に自動的に容量を認識して再設定してくれますが、何年も前の古いイメージファイルから作ったサーバーは、手動で容量を設定しなくてはなりません。

設定はOS(パーテーション方式)によっても異なります。
あとはイメージの作られた時期によっても、パーテーションの分け方が違っていますね。

今回作業したのは、CentOSで、1つのHDDが3つのパーテーションに分かれてたサーバーでした。

まず、サーバーをシャットダウン。
そして、移行先のブランクディスクを追加。
この状態で、サーバーを起動。

コピー中に重要なファイルに書き込みが発生して破損しないように気を付けないといけません。
MySQLなどDBサービスは停止しておきましょう。

シェルに入り、HDDを丸ごとコピー。
コピー元がvda、コピー先がvdbとすると
# dd if=/dev/vda of=/dev/vdb bs=512M
この丸ごとコピーではパーテーション情報もコピーされるため、容量確保がコピー元と同じになります。
なので修正してあげる必要があります。

こっから先は、パーテーション方式で違います。
2Tに対応していない古い方式のMBR、2T以上扱える新しい方式のGPT。
64bitOSなら後者になっていると思います。


GPTなら parted コマンドで設定。 MBRなら fdisk です。


partedでの流れ

# parted /dev/vdb
unit s
print

printで出てきたパーテーション一番下の領域を容量最大まで増やします。
Start 部分の番号が開始シリンダであり重要なので、見える状態にしておきましょう。

容量を増やすには、いったんパーテーションを削除して、再度確保するだけです。
フォーマットはしないので、データはそのまま復活します。 
rm 3
mkpart primary xxxxxs -1s
xの部分は、必ず元の Start の番号を入れます。でないとエラーになります。
同じ開始位置から、最後まで(-1s)を指定です。

もう一度 print を実行して状態を確認すると、容量が増えているはずです。
quit で終了します。
※fdiskでの流れも基本的には一緒です。

ファイルシステムが破損していないかチェック
# e2fsck -f /dev/vdb3
もう一つ容量変更を再設定してあげないといけないのがあります。
# resize2fs /dev/vdb3
※容量を小さくする場合は手順が逆で、 resize2fsで小さくしてpartedで再設定です。

以上で設定が完了します。
サーバーをシャットダウンし、古いHDDを外して再起動してください。