AWSのCentOS6.7のインスタンスでボリュームが8GBしか認識しない

AWSでCentOS6.7のコミュニティAMIを利用してHVMインスタンスを作成して、ディスクがなぜか8GBしか認識されなかったので、解決した話。

インスタンス起動後、EBSは50GBで割り当てたはずなのに、dfでみてみると認識されていない??

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  3.2G  4.3G  43% /
tmpfs           3.9G     0  3.9G   0% /dev/shm

パーティションサイズが8GBでしか認識されていないので、resize2fsをつかっても8GBしか割り当てられない。

fdiskではディスクは50GB認識しているが、パーティションはブロックをみると8387584しか認識していない模様。

# fdisk -l

ディスク /dev/xvda: 53.7 GB, 53687091200 バイト
ヘッド 255, セクタ 63, シリンダ 6527
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O size (minimum/optimal): 512 bytes / 512 bytes
ディスク識別子: 0x00098461

デバイス ブート      始点        終点     ブロック   Id  システム
/dev/xvda1   *           1        1045     8387584   83  Linux

調べてみると、CentOS6のAMIはAmazon Linuxなどと異なりCloud-initなどがインストールされていないことが原因のよう。

そこで、実際にCloud-initをインストールする。Cloud-initはEPELのリポジトリからインストールできるので、EPELのリポジトリをインストールし、

/etc/yum.repos.d/epel.repoのenabled=0に変更しておく。

# rpm -Uvh http://ftp-srv2.kddilabs.jp/Linux/distributions/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm

つぎに、Cloud-initなどをインストールする。

# yum -y --enablerepo=epel install cloud-init.noarch cloud-utils-growpart

インストール後、拡張前にパーティションを確認しておく。

# parted -l
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvda: 53.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  8590MB  8589MB  primary  ext4              boot → 8GBしか認識していない。

Cloud-InitモジュールのgrowpartコマンドでEBSのサイズにあわせて、ボリュームを拡張できる。 早速実行。

# growpart /dev/xvda 1
/usr/bin/growpart: line 170: シリンダ数*255、63*: syntax error: operand expected (error token is "シリンダ数*255、63*")

うまくいかない、またまた調べてみるとロケールが悪さしているよう。

ロケールを変更して、

# export LANG="en_US.UTF-8"
# locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

再度実行。

# growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=16775168 end=16777216 new: size=104854207,end=104856255

忘れないうちにロケールを戻し、

export LANG="ja_JP.UTF-8"

パーティションが拡張されているか、確認してみる。

# parted -l
モデル: Xen Virtual Block Device (xvd)
ディスク /dev/xvda: 53.7GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  53.7GB  53.7GB  primary  ext4              boot → 50GB認識した。

パーティションは無事拡張されているので、ファイルシステムも確認。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  3.2G  4.3G  43% /
tmpfs           3.9G     0  3.9G   0% /dev/shm

ファイルシステムは拡張されていない。これで、再起動すれば認識するのだが、 その前にCloud-initの最低限の設定をしておかないと

  • rootログイン不可

など困った状況になってしまうので、最低限Cloud-Init設定を行っておく。

# cp -p /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.org
# diff /etc/cloud/cloud.cfg /etc/cloud/cloud.cfg.org
4c4
< disable_root: 0 → rootを許可する。
---
> disable_root: 1
13,14d12
< locale: ja_JP.UTF-8 ロケール
< timezone: Asia/Tokyo タイムゾーン

上の設定が終わったら気持よく

# reboot

ファイルシステムをdfで確認。

# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       50G  3.2G   44G   7% /
tmpfs           3.9G     0  3.9G   0% /dev/shm

無事にファイルシステムが50GBに拡張されている。

といわけで、色々罠にハマりましたが。 無事に割り当てたボリュームを認識させることができました。

それでは。 (・∀・)イイネ!!