awsでインスタンスを構築するとディスクの容量が構築時に指定したサイズでなくデフォルトサイズの8GBになっていることがある。amazon linux以外で起こりやすい。今回のケースはCentOS6構築時に1TB(1,000GB)を指定したのだが8GBしかない。RedHatでも同様の現象を確認。以下、8GBの環境を壊さずに1TBに移行させる。
lsblkコマンドで確認するとディスクは確保されているがパーティションが8GBになっている。
df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.9G 991M 6.6G 13% / tmpfs 3.9G 0 3.9G 0% /dev/shm lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 1000G 0 disk └─xvda1 202:1 0 8G 0 part /
インスタンスを構築し直しても動作は同じなのでパーティションの拡張を行う。
fdisk -u /dev/xvda 警告: DOS互換モードは廃止予定です。このモード (コマンド 'c') を止めることを 強く推奨します。. コマンド (m でヘルプ): p ディスク /dev/xvda: 1073.7 GB, 1073741824000 バイト ヘッド 255, セクタ 63, シリンダ 130541, 合計 2097152000 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00098461 デバイス ブート 始点 終点 ブロック Id システム /dev/xvda1 * 2048 16777215 8387584 83 Linux ******************************************************************* ここで表示される「始点」の数値は切り直しに必要なのでメモしておくこと ******************************************************************* コマンド (m でヘルプ): d <--xvda1を一度削除 選択した領域 1 コマンド (m でヘルプ): p ディスク /dev/xvda: 1073.7 GB, 1073741824000 バイト ヘッド 255, セクタ 63, シリンダ 130541, 合計 2097152000 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00098461 デバイス ブート 始点 終点 ブロック Id システム コマンド (m でヘルプ): n <--パーティションを作成 コマンドアクション e 拡張 p 基本パーティション (1-4) p パーティション番号 (1-4): 1 最初 セクタ (63-2097151999, 初期値 63): 2048 <--メモした「始点」の数値 Last セクタ, +セクタ数 or +size{K,M,G} (2048-2097151999, 初期値 2097151999): 初期値 2097151999 を使います コマンド (m でヘルプ): p ディスク /dev/xvda: 1073.7 GB, 1073741824000 バイト ヘッド 255, セクタ 63, シリンダ 130541, 合計 2097152000 セクタ Units = セクタ数 of 1 * 512 = 512 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O size (minimum/optimal): 512 bytes / 512 bytes ディスク識別子: 0x00098461 デバイス ブート 始点 終点 ブロック Id システム /dev/xvda1 2048 2097151999 1048574976 83 Linux コマンド (m でヘルプ): w <--拡張されていることを確認して保存 パーティションテーブルは変更されました! ioctl() を呼び出してパーティションテーブルを再読込みします。 警告: パーティションテーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。 カーネルはまだ古いテーブルを使っています。新しいテーブルは 次回リブート時か、partprobe(8)またはkpartx(8)を実行した後に 使えるようになるでしょう ディスクを同期しています。 ***エラーメーッセージが出るが問題ない*** reboot ここで一度リブート
OS再起動後にパーティションの設定を確認
df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.9G 991M 6.6G 13% / tmpfs 3.9G 0 3.9G 0% /dev/shm xvda1のパーティションのサイズは8GBのまま lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 1000G 0 disk └─xvda1 202:1 0 1000G 0 part /
しかし、xvda1のパーティションとしては1TB確保されている。
resize2fsコマンドでパーティションの拡張を行う。EC2環境によって変化すると思うが8GB -> 1TB(EBS)の拡張で10分弱要した。拡張後はdfコマンドで確認
resize2fs /dev/xvda1 resize2fs 1.41.12 (17-May-2010) Filesystem at /dev/xvda1 is mounted on /; on-line resizing required old desc_blocks = 1, new_desc_blocks = 63 Performing an on-line resize of /dev/xvda1 to 262143744 (4k) blocks. The filesystem on /dev/xvda1 is now 262143744 blocks long. df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda1 985G 1006M 934G 1% / tmpfs 3.9G 0 3.9G 0% /dev/shm
xvda1パーティションの容量が1TBに拡張されていればOK