Kenichi Maehashi's Blog

脳内コアダンプ

RSS
Category: Linux
手違いで大事なシェルスクリプトを消してしまった。extundelete をすぐに掛けたが、検出されない。困った。…というようなシチュエーションに遭遇。

最終的に、「頑張って発掘メソッド」により回復できたのでメモしておきます。当たり前と言えば当たり前のこと、なのですが。

まず、失われたシェルスクリプト中の覚えている箇所 (もちろん、できるだけユニークな部分) を頼りにデバイス全体で grep します。その際、--text を指定してテキストファイルとして検索するモードにします。また --byte-offset を指定することでオフセットを出力するようにします。
# grep --text --byte-offset "MY_FLAG" /dev/sda1
4250072111: MY_FLAG="yes"
それっぽい断片が見つかったら、後はデバイスから dd コマンドでオフセットの周辺を取り出すだけ。念のため、of= は違うデバイス上にしておきましょう。(if と of を取り違えると本当に取り返しがつかないので注意。)
# dd if=/dev/sda1 of=/dev/shm/recovery.bin bs=1 skip=4250060000 count=50000
取り出されたファイルからゴミを削ればできあがり。化石発掘のようですね。

当然ながら、extundelete のように inode を判別してデータを読んでいるわけではなく、ただ単に連続した領域を切り出しているだけなので、この方法で救出されたファイルは内容が正しいことも欠損していないことも保証されていません。あくまで「無いよりマシ」レベルだし、失われたファイルが大量にあるときは無理ですが、まぁ今回は命拾いしましたよということで。
Category: Linux
環境は、Scientific Linux 6.2 (x86_64)。EL 6 系はどれも同じだと思います。

Apache を利用する場合、TypesConfig ディレクティブで OS の定義する MIME タイプ (/etc/mime.types) を読み込むように設定している場合が多いと思います (デフォルトなので、特に変えていなければそうなっているはずです)。
今回のサーバ移行で CentOS 5 -> Scientific Linux 6 に OS を変更したのですが、拡張子が *.pl のスクリプトに対する MIME タイプが変わっていたためハマりました。
CentOS 5 では *.pl ファイルに対する MIME タイプが未定義だったのに対して、SL 6 では application/x-perl という MIME タイプが割り振られています。

このため、*.pl の拡張子を持つ Perl CGI 内で明に MIME タイプ (Content-Type ヘッダ) を出力していない場合 (特に Location: のリダイレクトヘッダ出力時などは忘れがち)、text/plain ではなく application/x-perl が使われてしまいます。この現象による問題が顕在化するのが SoftBank のフィーチャーフォンで、こちらの blog で述べられているような問題 (アクセス不能) が発生してしまうようです。

対応策としては、やはり上記 blog で述べられているように、Content-Type を確実に出力するように改修する、がベストな所だと思います。

# ということで、メールにてご報告いただいた方、ありがとうございました。
Category: Web
今回のサーバ移行にあたって、権威 DNS サーバをさくらインターネットのドメインサービスに切り替えました。
さくらの VPS を契約すると、標準で使えるようになっているサービスです (管理できるゾーン数は契約により異なる)。

変遷としては、
  1. Value-Domain の標準 DNS を使っていた時代
  2. 自前サーバで運用していた時代
  3. さくらのドメインサービス ← いまここ
という感じ。

元々 Value-Domain は DNS サーバを提供してくれるのが気に入っていたのですが、何度か挙動不審 (応答しない) になってメールが bounce する事象が発生。急遽、VPS に DNS サーバを構築して運用していました。
が、現状 VPS が 1 契約しかなく、冗長性を確保できないこと。また、元々少ない CPU リソースと帯域を DNS に食われるのが勿体ない (VPS では結構な負荷になる) という判断もあり、今回の決断に至りました。

さくらのドメインサービスは今回初めて使ったのですが、NS, A, AAAA, MX, CNAME, TXT と必要な RR は全て網羅しているし、TTL も変更可能。Web UI はちょっと癖がありますが慣れれば使いやすい。といった感じで、割と満足しています。大量のサブドメインとか、$GENERATE とか、特殊な要件が無い限りは便利に使えるのではと思いました。

Value-Domain で取得したドメインの権威 DNS をさくらのドメインサービスで提供するには、ネームサーバの設定を ns[12].dns.ne.jp に向けるだけで OK です。
Category: Web
Value-Domain で、「ネームサーバを ns0x.value-domain.com 以外に設定し、かつ、その状態で、ns0x.value-domain.com 上の RR を変更したい」場合は、このページで変更可能。なぜかメニューからはリンクが貼られていないみたいなので、メモ代わりに書いておきます。

うっかりネームサーバの移行を先にやってしまって、古いレコードが ns0x.value-donain.com に残ってしまった場合などに使える。
Category: Info
VPS の契約切替えのため、サーバを移行しました。ダウンタイムは発生していないはずです。

あまり時間がなく、細かい所までチェックできていません。
何か不都合など発見されましたらお知らせください。

なお、近いうちに再度、サーバ移行を予定しています。