ARCHIVESDRIVE HB

オイラはホームベーカリー!

EBS 拡張で growpart がコケてヒヤヒヤした

古いインスタンス (M3.medium) の EBS を拡張する作業があったのですが、 growpart がエラーを返してきて焦ったので。

LANG が悪い

echo $LANG などして、 LANG=ja_JP.UTF-8 つまりシェルが日本語環境だとエラーが帰ってくるようです。 こんなん。

[root@ebs-fuyashitai-instance ~]# growpart /dev/xvda 1
/bin/growpart: 行 170: シリンダ数*255、63*: 構文エラー: オペランドが予期されます (エラーのあるトークンは "シリンダ数*255、63*")

どうする?

export LANG="en_US.UTF-8" とかして、セッション維持しているシェルだけ英語環境にしてから作業しましょう。

[root@ebs-fuyashitai-instance ~]# locale
LANG=ja_JP.utf8
LC_CTYPE="ja_JP.utf8"
LC_NUMERIC="ja_JP.utf8"
LC_TIME="ja_JP.utf8"
LC_COLLATE="ja_JP.utf8"
LC_MONETARY="ja_JP.utf8"
LC_MESSAGES="ja_JP.utf8"
LC_PAPER="ja_JP.utf8"
LC_NAME="ja_JP.utf8"
LC_ADDRESS="ja_JP.utf8"
LC_TELEPHONE="ja_JP.utf8"
LC_MEASUREMENT="ja_JP.utf8"
LC_IDENTIFICATION="ja_JP.utf8"
LC_ALL=
[root@ebs-fuyashitai-instance ~]# export LANG="en_US.UTF-8"
[root@ebs-fuyashitai-instance ~]# 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=
[root@ebs-fuyashitai-instance ~]# growpart /dev/xvda 1
CHANGED: partition=1 start=2048 old: size=62908492 end=62910540 new: size=209710462,end=209712510

できましたね、このあとはファイルシステムの拡張を実施すればオッケーです。 しかしまー、使っているプロプライエタリミドルウェアが必須要件として LANG に JP な環境を要求するので、スルッと終わるはずの作業が終わらなく、めっちゃ焦りましたね。

参考: hacknote.jp