replacing中にサーバが落ちたときは該当ディスクをはずしてしまえ

前回からかなりたっているのですが、
見かけ上復旧から、節電対策のために停止したあとに起動させたら
zpool import はできるけど、完全に不整合な状態でデータが読めません。


暑い日が続いていたのでほったらかしにしていましたが、
涼しくなってきたので、復旧にとりかかかりました。


けっきょく何してもダメで、vdevの情報とかが完全に不整合を起こしているっぽくて
あきらめかけたときに、試しに、もとの状態(degrade)されてる1個ディスクを抜いた状態にもどすと
読み書きできるようになりました。
レイヤの低いところから攻めろの鉄則を忘れつつある最近です。


今回の作業で、opensolarisをやめてFreeBSDに移行しました。
Foxconのマザーボードを使っているのですが、
OpenIndiana,OpenSolarisはusbブートができず、FreeBSDはusbブートができたからです。
DVDRomドライブが壊れたので仕方ありません。
OpenSolaris->FreeBSDで、思ったこと。
FreeBSD使いやすい

zfsディスク復旧(raid再構築中にサーバが落ちた編)

暑さが原因で replacing 中にサーバが落ちました。
復旧させようとしても、
zpool status dpool の結果が
cannot import 'dpool': invalid vdev configuration
なエラーが出て、復旧できません。


ググって調べてみたら、なんとなくreplacing中のラベルがreplacing状態だと拒否られるみたいです。
よーし、先頭部分 dd コマンドで消しちゃえとも思ったのですが
2Tのディスクがあまりにも安いので、2つ買っておいたので新品を付けてみます。
そしたら、復帰!(復旧中)


夜だし少しは涼しいし、扇風機をケース開けて直接あててるので
今回こそは大丈夫だと信じたいです。

zfsのディスク復旧(raidz編)

ひさしぶりに、opensolaris のハードディスクが壊れました。
そして、raidzの復旧方法を忘れないように書いときます。


前提として、ディスクが壊れてるのはわかっているのですが、
どのディスクが壊れているか、わかりません。
自宅のサーバなので、ディスクそれぞれにランプとかありません。
かといって、raidz1 で一つ壊れている状態なので間違ったのを付け替えるといろいろアウトになります。
というのを避ける手順です。


zpool status で確認。
zpool destroy dpool で(dpoolはプール名)zpoolの状態を破棄。(zpool import -D dpoolで復旧できます)
3つの内、ひとつのディスクを付け替え。
zpool import -D dpool で復旧

あたりだった場合

zpool status で確認して、
6138943079200700489 UNAVAIL 0 0 0 was /dev/dsk/c11d0s0
こんなかんじで表示されるので
zpool replace dpool c11d0 とすると復旧。


はずれだった場合

zpool status で確認すると、
エラーが出てるディスクが残っていて、正常なのを交換してしまっている。
まずは、おちつく。
zpool destroy dpool で zpool の状態を破棄。
ハードディスクを元の状態に戻す。
zpool import -D dpool で復旧。
zpool desroy dpool でzpool の状態を破棄。
次のディスクへ・・・


まったくもって、保障はできませんし、
最新の nexenta なんかだと、もっといい方法あるかも。
でも、ハード故障以外に opensolaris が調子が悪いことがまったくないので
なかなかバージョンアップとかに踏み込めません。

ubuntu上でmingwとかdosとか

必要なもの

$ sudo apt-get -y install cabextract wine mingw32 dosbox
$ sudo wget http://www.kegel.com/wine/winetricks -O /usr/local/bin/winetricks
$ sudo chmod +x /usr/local/bin/winetricks
$ winetricks vcrun6

mingwの使い方

    • gccの前に i586-mingw32msvc- をつける

$ i586-mingw32msvc-gcc hello.c

vimの使い方

$ vim -b a.exe

vim内で
:%!xxd

編集後
:%!xxd -r

必要ないかも

http://wiki.winehq.org/PreloaderPageZeroProblem
なんか、メモリ周りでいろいろubuntuがやらかしてるかもしれないので

$ sudo sysctl vm.mmap_min_addr=0

でもいらないかも・・

dosboxの使い方

dosbox上で

mount c /home/hoge/.wine

とかして、どっかマウント
あとはfreedosの置いて実行してみたり

android2.2(is06)にtelnetログイン

au の is06 を買って、
とりあえずログインしようとして、思いのほか悩みました。
結論としては、そんなにむずかしくはないです。

busyboxをインストールして
ターミナルソフト(ConnectBotがオススメ)を入れて、androidからコマンドを叩く

# telnetd -l sh

これだけだと、なぜか ping も受け付けないし、telnet の拒否されるので
telnetをするクライアント端末に向かって

# ping パソコンのIP

をしていると、ping している間だけ接続できます。

ちなみに、ConnectBotというアプリだと
画面をタップして、Ctrl というボタンをタップしてキーボードの c をタップすると
Ctrl + c 扱いになって、ping を止められます。

pythonでメールサーバ

ちょっといろいろ事情があって
python のメールサーバを使っていたんですが
ものすごく、ハマりました。
python の smtpd の DebuggingServer ですが、
EHLO に対応していません。
それがわからずに、メールが受信できるときとできないときがあって、ずっぽりハマってました。

続きを読む

いきなり、直しました

いきなりツイッターでご指摘をいただいたので
がっつり直しました。

まず、2周目問題ですが、
内部的には、X座標が増え続けていて

  • 1周目
    • 240 - 240 = 0 (X 座標 0 からボールが)
  • 2周目
    • 480 - 240 = 240 (X 座標 240 からボールが)

orz...


他にも Invalidate() を2発もどうかというので
ひとつにまとめました。
たぶん、大丈夫。たぶん。
ダメなのも一つ前のエントリに残しておきます

続きを読む