2013年8月14日水曜日

GRUB2 と戯れる

結果から:
(Ubuntu で)
・/etc/default/grub の GRUB_HIDDEN_TIMEOUT 行と GRUB_HIDDEN_TIMEOUT_QUIET 行をコメントアウトする
・/etc/grub.d/00_header の make_timeout 関数内の set timeout= を 0 にしないこと
・・・以上をしておいた上で  update-grub2 実行 => GRUB のメニューを常に拝める。

ある仮想アプライアンス(中身は Ubuntu 11.10+いろいろカスタマイズ)をなんとかしてよ、と、最後のタスクとして「ちゃんとバックアップをとっていない」状態を解消することに。
利用者は多いんだけども、一度稼働しはじめたあとはあんまり手を加えられてない状態。(アプライアンスだから手を加える余地はあまりないというのはある)


元の状態としては

active 機 - バックアップ

の2台。active は仮想アプライアンス、バックアップはバックアップ取得目的のみ、で仮想アプライアンスではない別のふつうの(?)EC2 上の Linux サーバ。

で、バックアップをするものとしては
・MySQL
・Redis
・Git リポジトリ

の 3つだけで、MySQL はいまのところ mysqldump & gzip するのが 200MB にも満たない、Redis の dump.rdb はほんの数MB。
しかし、Git リポジトリは100GBある。

仮想アプライアンスに用意されている専用のコマンドでは Git リポジトリのバックアップは tar でディレクトリをまるごと固めるようになっているので、あまり気楽にバックアップができない。(標準では root を利用できないため、この専用のコマンドを使う必要があるのだ)
MySQL の場合は --single-transaction がついていないので怒りの unicorn がでたりもする(らしい)

というわけで、Git リポジトリのバックアップは rsync でしよう、ということになり

active 機 - バックアップ - standby 機

の 3台、active 機から standby 機への直接のバックアップではなく、間にバックアップをかませる形にした。active 機と standby 機が仮想アプライアンス。
間になんで EC2 つかうねん、と思うけどこれまでの諸事情によりこのような構成となった。

また、前述のとおり root を利用できないため、 standby 機では root を利用できるように事前にごそごそ。。

と、ここでようやく GRUB2 の話になる。

仮想アプライアンスでは Ubuntu 11.10 が使われており、本来なら起動時に shift を押すことで GRUB メニューが出、recovery mode を選択できるはずだった。(かなりまえ、サポートに問い合わせしてもらったときも recovery mode はいれるよん!と回答がきていた覚えが・・)

でも、でない。どうしてもでない。

・素の Ubuntu 11.10 だとどうなるのか
・セットアップしていない状態の仮想アプライアンスだとどうなるのか
・セットアップ後の仮想アプライアンスはどうか

をくまなく調べた。
すると、どうもセットアップ後にはでてくれなくなる模様。

Google を頼りにしてみると、ふつうは
・GRUB_HIDDEN_TIMEOUT 行と GRUB_HIDDEN_TIMEOUT_QUIET 行をコメントアウトする
これで update-grub2 しておけば GRUBメニューがでるよ、とあちこちでみつかる。

その通りにしてみると、未セットアップ時には期待通りの動作、セットアップ後はメニューがでてこない。

他 GRUB 周りのファイルをセットアップ時に変更かけてるんだろな〜と思い、/boot/grub/grub.cfg, /etc/grub.d を別名で保存しておいてセットアップ後に diff。

すると、/etc/grub.d/00_header が書き換えられてることがわかった。

この仮想アプライアンスは設定を保存するたびに chef-solo が走るため、 /etc/grub.d/00_header を書き換えてる cookbook を発見後修正し、make_timeout 関数内の set timeout=0 が set timeout=5 になるようにした。

これで無事、起動時に GRUB メニューをタイムアウト5秒で拝めるようになり、必要な際は recovery mode に入ることもでき、root アカウントでごにょごにょ。。することができるようになり、rsync でバックアップ機にもってきた Git リポジトリも standby 機に展開できるようになった。

あれこれ調べてて思ったのが、この仮想アプライアンスはよくできてる。うん。ちょっとした問題がおきてるので、まだ枯れてない感じはするけども。

起動時に TUX を見なくなったのはいつからだったんだろう・・・。

この仮想アプライアンスをおさわりするにあたり参考にしたサイト(GRUB2 まわりではない):
DeNA https://speakerdeck.com/ta999ma/gree-techtalk-0123-takumayoshida/
ドリコム http://www.slideshare.net/takafumionaka/is-there-anynecessityofusinggithubenterprise
GREE https://speakerdeck.com/koichiro/github-enterprise-troubleshooting
ふっふはっほ https://speakerdeck.com/takai/github-enterprise-integration-with-aws
はてな https://speakerdeck.com/hakobe/namerakanigheniyi-xing-surufang-fa
上記一覧可能 https://event.atmarkit.co.jp/events/847c33a804682aea8b4596e790802343/materials

0 件のコメント:

コメントを投稿