目次: Linux
せっかくファイルサーバのRAIDを組み直すのだから、使用するファイルシステムも再考することにしました。
こんな話、前にも書きましたね(2009年2月1日の日記参照)。Linuxのファイルシステムは一長一短で選ぶのが難しいのです。
ここしばらくXFSを使ってきたけれど、ファイル削除が遅くてもう我慢ならない。じゃあ代替案は?と考えても、ご臨終寸前のReiserFSも、XFSと性能が似たり寄ったりのJFSも、どちらも微妙極まりないんだよなあ。
ダメ元でJFSにしてみるか、無難にext4にするしかなさそうですね…。
先週くらいからファイルサーバに書き込むとプチフリするようになりました。サーバを見に行くとRAID 5のrebuildで頑張っていました。あれ?ディスク入れ替えてないのになんでrebuildが走ってるの??
ひとまずdmesgを見るとHDDのリードエラーが記録されていました。ついでにSMARTもチェックすると、リードエラーだかシークエラーだかが記録されています。どうも故障寸前っぽいです。やばい。
ファイルサーバには、sdb, sdc, sdd, sde, sdfの5台HDDが繋がっていて、そのうちsdbが死にかけているようです。
本来であればやばくなったsdbを引っこ抜いて、新しいディスクに入れ替えればOKなのですが、間違ってsd"f" を引っこ抜いて再起動してしまいました。
5台縦に並んでいたのを見て、 sdbが一番「下」で、sdfが一番「上」だとは思わなかったのよね。マズったね、どうするね、これ…。
何を言ってるかわからねーt(略)なので、実際どうやばいのか図示します。
[本来の対処]
1. やばいディスクを取って、元気なディスク4台の縮退モードで動かす
sdb, sdc, sdd, sde, sdf→ [sdb], sdc, sdd, sde, sdf
↑やばいディスク
2. 元気なディスクを足す(ただし足しただけではスペア状態なので、
読み書きには使えない)
[sdb'], sdc, sdd, sde, sdf
↑元気なディスクと入れ替え(スペア状態)
3. rebuildしてRAID復活
sdb', sdc, sdd, sde, sdf
↑rebuildによりRAIDの仲間入り
以上が本来の対処なのですが、間違って下記のようにしてしまいました。
[俺の対処]
1. 元気なディスクを取って、やばい+元気なディスク4台の
縮退モードで動かしてしまった(!)
sdb, sdc, sdd, sde, sdf→sdb, sdc, sdd, sde, [sdf]
↑やばいディスク
(... 再起動 ...)
sdb, sdc, sdd, sde, [sdf]
~~~~~~~~~~~~~~~~~~~
↑再起動によりRAIDが書き換わり、sdfの内容と食い違うため、
sdfは元のRAIDには戻せない!
ここから5台構成に戻すには、何食わぬ顔でsdfを戻しrebuildする方法がありますが、壊れかけのsdbを酷使するため危険です…。もしrebuild中にsdbが壊れるとsdb, sdfの2台が故障したことになり、RAID 5のデータが消滅します。
2-1. 何食わぬ顔でsdfを戻す(sdfはスペアになる)
sdb, sdc, sdd, sde, [sdf]
↑スペア状態
3-1. rebuildしてRAID復活?
sdb, sdc, sdd, sde, sdf
↑rebuildにより負荷かかって故障→RAIDデータ消滅の可能性大
この方法はリスクがでかすぎるだろってことで、新たにHDDを買ってきてちまちまコピーしています。データが1.5TBもあって面倒くさい…。まあ、全部俺のせいだけどな!ちくしょー…orz
Android端末をroot化するのが流行っているようなのでやってみました。使用している端末はXperia acroです。先日配布されたAndroid 2.3.4アップデートを適用済みの状態です。
失敗すると端末が起動しなくなったり重要なデータが消失する可能性があります。Google先生によればroot化を試みて壊してしまっても、ドコモの初期不良対応やメーカー保証が望めないとのことなので、そこも含めて自己責任でお願いします。
Exploitツールはいろいろあるようですが、私はzergRushを使いました(ソースコードはrevolutionaryさんのGitHub にあります)。StarCraft好きとしては何ともたまらない名前ですね。
Xperiaのみならず、Froyo, GingerBreadのExploitを検索するとかなり上位に出ます。Andorid界隈ではかなり有名なツールのようです。ROMを古いバージョンで書き潰す必要もなく、とてもお手軽です。
まずadbの準備。Android SDKのインストール、Android SDK ManagerでAndroid SDK Platform-toolsをインストールします。どこに置いても動きます、好きなところにインストールしてください。
次にsuの準備。SuperUser同梱のバイナリ(制作者のアプリ開発サイトで配っています)を使います。
あとはXperia側でUSBデバッグを有効にして、PCにXperiaを繋ぎます。読むの面倒くさいだろうから、下のように良きに計らってください(説明放棄)。
ホスト側マシンはWindows 7 Ultimate 64bitで試しました。うちにこれしかないだけで、Android SDKが動けば何でも良いので、気にする必要ありません。たぶん…。
C:\work\a\platform-tools>adb push C:\zergRush /data/local/zergRush 2251 KB/s (23060 bytes in 0.010s) C:\work\a\platform-tools>adb push C:\su /data/local/su 2411 KB/s (22228 bytes in 0.009s) C:\work\a\platform-tools>adb shell $ cd /data/local cd /data/local $ ls ls su zergRush $ mkdir tmp mkdir tmp $ ./zergRush ./zergRush [**] Zerg rush - Android 2.2/2.3 local root [**] (C) 2011 Revolutionary. All rights reserved. [**] Parts of code from Gingerbreak, (C) 2010-2011 The Android Exploid Crew. [+] Found a GingerBread ! 0x00000118 [*] Scooting ... [*] Sending 149 zerglings ... [+] Zerglings found a way to enter ! 0x10 [+] Overseer found a path ! 0x000151e0 [*] Sending 149 zerglings ... [+] Zerglings caused crash (good news): 0x2abcccc4 0x0054 [*] Researching Metabolic Boost ... [+] Speedlings on the go ! 0x6fd193d3 0x6fd39667 [*] Popping 24 more zerglings [*] Sending 173 zerglings ... [+] Rush did it ! It's a GG, man ! [+] Killing ADB and restarting as root... enjoy! C:\work\a\platform-tools>adb shell # mount -o rw,remount /dev/block/mtdblock0 /system mount -o rw,remount /dev/block/mtdblock0 /system # cat /data/local/su > /system/bin/su cat /data/local/su > /system/bin/su # chmod 4755 /system/bin/su chmod 4755 /system/bin/su # mount -o ro,remount /dev/block/mtdblock0 /system mount -o ro,remount /dev/block/mtdblock0 /system (Xperia再起動) C:\work\a\platform-tools>adb shell $ su su #
あとはSuperUserアプリを入れるなりなんなりお好きなように…。これにておしまい。
< | 2011 | > | ||||
<< | < | 12 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | - | - | 1 | 2 | 3 |
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
合計:
本日: