EBSボリュームの拡張-CentOS5

手順の作業環境

OS:CentOS 5.11

作業手順

大まかな作業手順

  1. awsコンソールからディスク容量を変更
  2. 再起動
  3. 現状のパーティションを削除
  4. 領域を大きくしてパーティションを確保しなおす
  5. 再起動
  6. パーティションのリサイズとスワップ領域を確保する
  7. 再起動

今回の環境は物理パーティションしかないが、論理パーティション(LVM)がある場合は手順が変わってくるので注意する

1. AWSコンソールからEBSボリュームを拡張する

事前確認

事前の状態を確認しておく。

ディスク容量が80%を超えている

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda1              37G   29G  6.8G  81% /
tmpfs                 861M     0  861M   0% /dev/shm

今回の場合、/dev/hda42.9Gになっている

# fdisk -l

Disk /dev/hda: 42.9 GB, 42949672960 bytes
255 heads, 63 sectors/track, 5221 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        4960    39841168+  83  Linux
/dev/hda2            4961        5221     2096482+  82  Linux swap / Solaris

Disk /dev/xvdc: 939 MB, 939524096 bytes
255 heads, 63 sectors/track, 114 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/xvdc は正常な領域テーブルを含んでいません

EBSボリュームの拡張

※画像は後から取ったので、容量がちぐはぐなのは目をつぶってください

AWS EC2を開き左側ペインから[Elastic Block Store] > [ボリューム] を選択
該当のサーバ名で検索し、 [アクション] > [ボリューム変更] を選択

拡張したいサイズを入力して [変更] を押下 ( 今回は40G ⇒ 70G )

[ボリュームの状態] に変更のステータスが表示されるので、100%かつ緑色で [✔使用中] になるまで待つ
(およそ30分程度かかる)

2. サーバ再起動

サーバの再起動を行う

# reboot

事後確認

/dev/hda40G70Gになっていることを確認

# fdisk -l

Disk /dev/hda: 75.1 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        4960    39841168+  83  Linux
/dev/hda2            4961        5221     2096482+  82  Linux swap / Solaris

Disk /dev/xvdc: 939 MB, 939524096 bytes
255 heads, 63 sectors/track, 114 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

ディスク /dev/xvdc は正常な領域テーブルを含んでいません

3. 現状のパーティションを削除

# fdisk /dev/hda
コマンド (m でヘルプ): m  ← コマンド一覧の表示
コマンド (m でヘルプ): p  ← 現状の確認
Disk /dev/hda: 75.1 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        4960    39841168+  83  Linux
/dev/hda2            4961        5221     2096482+  82  Linux swap / Solaris

コマンド (m でヘルプ): d  ← 領域の削除
領域番号 (1-4): 2  ← /dev/hda2を削除
コマンド (m でヘルプ): d
Selected partition 1  ← /dev/hda1を削除(自動で選択される)

コマンド (m でヘルプ): p  ← 現状の確認

4. 領域を大きくしてパーティションを確保しなおす

上記のfdiskコマンド結果より、9137 cylindersがあるので、これを大体下記の割合で割り当てる
/dev/hda1 : 90% (1-8220)
/dev/hda2 : 10% (8221-9137)

255 heads, 63 sectors/track, 9137 cylinders

/dev/hda1

コマンド (m でヘルプ): n  ← 新規作成
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p  ←基本領域
領域番号 (1-4): 1  ← /dev/hda1
最初 シリンダ (1-9137, default 1):  ← Enterで 1 が入力される
Using default value 1
終点 シリンダ または +サイズ または +サイズM または +サイズK (1-9137, default 9137): 8220

/dev/hda2

コマンド (m でヘルプ): n
コマンドアクション
   e   拡張
   p   基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (8221-9137, default 8221): 
Using default value 8221
終点 シリンダ または +サイズ または +サイズM または +サイズK (8221-9137, default 9137): 
Using default value 9137

確認

コマンド (m でヘルプ): p

Disk /dev/hda: 75.1 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1               1        8220    66027118+  83  Linux
/dev/hda2            8221        9137     7365802+  83  Linux

事前の状態になるように設定を変更する
以下のようになればよい

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *        xxx         xxx        xxxx   83  Linux
/dev/hda2           xxxx        xxxx        xxxx   82  Linux swap / Solaris

boot可能フラグの付加

コマンド (m でヘルプ): a
領域番号 (1-4): 1

領域システムタイプの変更

コマンド (m でヘルプ): t
領域番号 (1-4): 2
16進数コード (L コマンドでコードリスト表示): 82
領域のシステムタイプを 2 から 82 (Linux swap / Solaris) に変更しました

コマンド (m でヘルプ): p
Disk /dev/hda: 75.1 GB, 75161927680 bytes
255 heads, 63 sectors/track, 9137 cylinders
Units = シリンダ数 of 16065 * 512 = 8225280 bytes

デバイス Boot      Start         End      Blocks   Id  System
/dev/hda1   *           1        8220    66027118+  83  Linux
/dev/hda2            8221        9137     7365802+  82  Linux swap / Solaris

設定の保存

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。

警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。
カーネルはまだ古いテーブルを使っています。
新しいテーブルは次回リブート時に使えるようになるでしょう。
ディスクを同期させます。

5. 再起動

# reboot

6. パーティションのリサイズとスワップ領域を確保する

リサイズ

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda1              37G   29G  6.8G  81% /
tmpfs                 861M     0  861M   0% /dev/shm

# resize2fs /dev/hda1

# df -h
Filesystem          サイズ  使用  残り 使用% マウント位置
/dev/hda1              61G   29G   30G  49% /
tmpfs                 861M     0  861M   0% /dev/shm

swap領域の確保

# free
              total       used       free     shared    buffers     cached
 Mem:       1762132    1721680      40452          0       1656      19212
 -/+ buffers/cache:    1700812      61320
 Swap:            0          0          0

# mkswap -c /dev/hda2
 Setting up swapspace version 1, size = 7542575 kB
# swapon /dev/hda2

# free
              total       used       free     shared    buffers     cached
 Mem:       1762132    1721876      40256          0       1212      16084
 -/+ buffers/cache:    1704580      57552
 Swap:      7365792          0    7365792

fstabに下記を追加

vi /etc/fstab

===下記を追記
/dev/hda2       swap    swap    defaults        0       0

7. 再起動

再起動を行い正常にswap領域が動作していればOK

# reboot

# free
# top