今回はAWSで試しましたが、AWS環境ではなく物理環境でも仮想環境でも同じ手順でディスクを拡張できます。
DBサーバーやアプリサーバーでよくあるパターンです。
# df -h |
やりたいこと
- 既存の/data パーティションが全く使われていない。
- しかも /(ルート) のディスク容量が足りない。
- そこで使っていない /data を LVM で作成した /(ルート) に統合したい。
- ただし既存の環境には影響を及ぼさないようにしたい。
- 面倒なのでレスキューモードを使いたくない。(→そもそも AWS でコンソールがないためレスキューモードを使えない)
# df -h |
手順
初めに全体の手順を確認します。
- 作業前にスナップショットを取得する
- 不要なパーティションを削除する
- 削除した領域で新規パーティションを作成してタイプを「LVM」にする
- LVM コマンドで新規パーティション(削除したパーティション)をルートパーティションに追加する
- ルートパーティションを拡張して領域を増やす
作業前にスナップショットを取得する
作業前に念のためにスナップショットを取得しておきます。
AWS EC2 インスタンスの場合はインスタンスのスナップショットではなく、ボリュームごとのスナップショットになります。
AWSの管理画面にログインし、インスタンスよりボリュームIDを特定して個別にスナップショットを取得します。
不要なパーティションを削除する
不要なパーティション「/data」を削除します。
fdisk コマンドで確認します。
# fdisk /dev/xvda WARNING: DOS-compatible mode is deprecated. It’s strongly recommended to Command (m for help): p ← パーティションを確認します。 Disk /dev/xvda: 53.7 GB, 53687091200 bytes Device Boot Start End Blocks Id System Command (m for help): |
/dev/xvda3 を削除します。
「Command (m for help):」に「d」を入力して、その後にどのパーティションを削除するのか指定します。
Command (m for help): d ← 削除する
Partition number (1 – 3): 3 ← 3番目のパーティション(xvda3)なので「3」を選択します。
Partition 3 has been deleted. |
削除されたことを確認します。
Command (m for help): p ← パーティションを確認します。 Disk /dev/xvda: 53.7 GB, 53687091200 bytes Device Boot Start End Blocks Id System Command (m for help): |
削除した領域で新規パーティションを作成してタイプを「LVM」にする
新規パーティションを作成します。
領域は余っている領域をすべて利用したいので、数値を入力せずに空エンターキーを押下します。
※「xx」は環境により異なります。
Command (m for help): n ← n を入力して新規パーティションを作成します。 Command action
First cylinder (xx-xx, default xx): [Enter] ← 何も入力せずに空エンターキー押下 |
タイプを「LVM」に設定します。
Command (m for help): t ← パーティションのタイプを設定します。 Partition number (1-3): 3 ← どのパーティションに対して設定したいのか指定します。(今回はxvda3なので3を入力します) Hex code (type L to list codes): 8e ← タイプを指定します。Linux LVM に
Command (m for help): p
Command (m for help): w |
LVM コマンドで新規パーティション(削除したパーティション)をルートパーティションに追加する
簡単ですが、LVMの仕組みを図解しました。
LVMの仕組みは下図のように「HDD」→「PV」→「VG」→「LV」→「パーティション」のように「大→小」の手順で作成します。
新規で作成した領域(/dev/xvda3)に物理ボリューム(PhysicalVolume)を作成します。
# pvcreate /dev/xvda3 |
確認します。
# pvdisplay “/dev/xvda3” is a new physical volume of “34.00 GiB” |
ボリュームグループを作成します。
# vgextend VolGroup /dev/xvda3 |
ボリュームグループの状態を確認します。
# vgdisplay |
ボリュームグループ内の未割り当て分を全て論理ボリューム /dev/mapper/VolGroup-lv_root に割り当てます。
# lvextend -l +100%FREE /dev/mapper/VolGroup-lv_root Size of logical volume VolGroup/lv_root changed from 13.91 GiB (3561 extents) to 47.91 GiB (12264 extents). |
OS上はまだ拡張されていません。
# df -h |
OSとしては拡張されていませんが、論理ボリュームとしては拡張されていることを確認します。
[root@ip-10-20-254-42 VolGroup]# vgdisplay [root@ip-10-20-254-42 ~]# lvdisplay |
ルートパーティションを拡張してファイルシステムの領域を増やす
最後にファイルシステムを拡張します。
ext4 ファイルシステムは resize2fs を使用するとマウントしたままの状態でサイズを大きくすることができます。
# resize2fs /dev/VolGroup/lv_root |
※resize2fs コマンドはファイルシステムをリサイズするコマンドです。
最後にサイズが増えたことを確認します。
# df -h |
参考にしたサイト
まったく同じような状況だったので大変参考になりました。
当初はルールを決めて、「データ系は /data のみに保存しましょう。だから /(スラルート)は10GBで構築してください。」と言われていたのに、なぜか /home/test や /var などにデータを保存されてしまい、「スラルートの容量が100%になりました。何とかしてください。」と言われてしまう・・・よくあります(笑)
コメント