【業務連絡】再起動のfsckで引っかかる

サーバーがおかしくなったので、シリアルで繋いでみたら

[6879670.724188] ata2.00: failed to read SCR 1 (Emask=0x40)
[6879670.729572] ata2.00: failed to read SCR 0 (Emask=0x40)
[6879670.734932] ata2.01: failed to read SCR 1 (Emask=0x40)
[6879670.740297] ata2.15: exception Emask 0x4 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.747575] ata2.00: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.755037] ata2.00: failed command: READ DMA EXT
[6879670.759975] ata2.00: cmd 25/00:08:20:bc:c9/00:00:e8:00:00/e0 tag 2 dma 4096 in
[6879670.759975] res 40/00:00:00:4f:c2/00:00:00:00:00/00 Emask 0x4 (timeout)
[6879670.775019] ata2.00: status: { DRDY }
[6879670.778896] ata2.01: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[6879670.786353] ata2.15: hard resetting link
[6879671.272764] ata2.15: SATA link up 1.5 Gbps (SStatus 113 SControl F310)
[6879671.280206] ata2.00: hard resetting link
[6879672.380925] ata2.01: hard resetting link
[6879673.424658] ata2.01: failed to resume link (SControl 0)
[6879673.435971] ata2.00: configured for UDMA/33
[6879673.441275] ata2: EH complete

なんてのが延々出ていた。
そして強引に電源ブチで再起動してみると、fsckが走り出し、異常終了。

/dev/sda2: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
(i.e., without -a or -p options)
fsck exited with status code 4
done.
Failure: File system check of the root filesystem failed
The root filesystem on /dev/disk/by-uuid/a655bf7a-3a32-4f2a-b0f1-fa0086bc9c39 requires a manual fsck

マニュアルで fsck をやれというのでやっているがとてつもなく時間が掛かりそう。

One Mix 3修理

画面半分ブラックアウト

タブレットにして使っていたせいか、折り曲げたら画面半分が消えるようになった。

恐らくヒンジ部分の配線が切れ掛かってるのかもしれない。
まだ買ってから1年経ってないので、GeekBuyingに問い合わせたら、「修理イケるで。無料になるかは製造元次第やけど」という返事を貰ったので、修理に出す予定。

やっぱり、支那製は長持ちせんなあ。

ajax通信中に他のajaxが保留になる

最近、jQuery で複数同時通信する処理を書いたが困った事になっている。

【条件】
1. $.ajax() で1分間位返ってこない処理。
2. 1秒毎にインターバルで呼び出す$.ajax() で、処理はされるがHTTP通信が全部保留(pending)。

という状態なのだが、firefox 75.0でもchrome 73.0.3683.75でも1つしか通信中状態を認めない。

1 の処理が終了すると、保留されていたHTTP通信が一挙に実行されて結果が返ってくるが、もはや1の処理が終了しているので、「完了」という結果が山程返ってくるだけ。

これって非同期でも全く意味無いじゃん。何でこんなバカな仕様になってるんだろう?

確かにJavascript で組んでて、非同期で結果が返らない内に他の処理が走ってしまうというマヌケな相談が山程あるけど、それらはプログラムの組み方で解決できる話であって、それを救済する為に非同期処理のメリットを完全に潰す事は馬鹿げている。

それか、HTTP/2.0 だと、一つの接続で複数のページをまとめて送信する仕様だが、そっちへ移行させる為の嫌がらせ?

1つの処理をやってて、それがサーバーに動作状況をファイルに書き出し、もう一つが、書き出したファイルを読み出して状態を返すって処理組めねーじゃん。

ウェブブラウザ開発してる連中ってバカ揃いかよ!?

しょうがないので、1 のPHP処理で exec()使ってすぐに戻ってこさせて、バックグラウンドで実行させるしか手が無いな。クソが。

監視カメラダウン?

zoneminder で監視カメラの運用をしているが、ふと見てみると、2月19日以降映像が撮れていない。

ディスク容量80%で古いやつを自動削除する設定にしているが、filter の設定見てみると100件該当があり、それが何らかの理由で削除できずにデッドロックしてるのかな? と思い、削除するも変わらず。

監視カメラの raspberry pi 3 をチェックすると、応答なし……。
ssh に応答しないとなると、ディスプレイとキーボード繋がないとどうなっているのか分からないが、面倒なので電源ブチ(^^;;

raspberry pi 3 は、SDカード延命の為、ログ類はシステムシャットダウンを実行すると、SDカードに書き戻すが、電源ブチではRAMDISK上で揮発してしまう。
なので、応答無しになっていた理由は分からず。

暫くシステムアップデートやってなかったし、長期間再起動してなかったから、メモリーリークのアプリケーションがメモリ食い潰したのかなあ。

という訳で、raspberry pi に自動アップデートをやってくれる cron-apt をどうにう。
ファイルサーバの openrd ultimate で導入しているが、セキュリティアップデートは自動で適用してくれ、カーネルは「更新あるで」とメールで通知してくれる。

いや、「更新あるで」と関西弁では言ってくれないが(^^;、次の様な感じ。

ただ、こいつはメールシステムが動いていないと通知してくれないので、raspberry pi 3に exim4 のスマートホストによるメール配送を設定。

raspberry pi 3 でメール読まないので、全部 noizumi@silverfox.p.noizumi.org へ配送。スマートホストは openrd ultimateのIPアドレスを設定。
※@は全角に変えてます。以後、コピペ注意

openrd ultimate の exim4 もスマートホストの設定だが、メールを受信する設定になっているので、raspberry pi 3 からメールを投げれば届くはず。

メールの運用にはDNSが必要で、DNSはローカルで立てているから、raspberrypi.p.noizumi.org の正引きと逆引きを設定。

raspberry pi 3 の端末から、noizumi@silverfox.p.noizumi.org へメール送ったら届いたので、apt cron がメール投げても多分、大丈夫。

cron-apt の設定で、 /etc/cron-apt/config を編集

確か前に openrd ultimate の設定弄っていい感じにニギッたはずなので、設定をパクる!次のファイルを追加

[/etc/cron-apt/actions.d/5-security]

[etc/cron-apt/config.d/5-security]

確かこの設定はセキュリティアップデートを問答無用で適用する為に設定したはずなので、これで危ない穴はパッチ提供時に即座に適用されるはず。

設定が終わったので、取り敢えず cron-apt の手動実行

更新したばっかりだったので、メールは飛ばず。/var/log/cron-apt/log を確認

autoclean やってくれるのね。問題は無い模様。

カーネルはさすがに自動でやっちゃうと、起動不能になる可能性もあるので、メールで通知が来たら手動で行おうと思う。

カーネル更新も自動で行ないたい場合は、/etc/cron-apt/action.d/3-download の -d オプションを削ればOK。

【jQuery】「このサイトを離れますか?」を無効にする

登録フォームを飛ばして確認フォームからスタートする処理を組んでいたが、ブラウザback、もしくは「戻る」ボタンで history.back() 実行をやると、ブラウザのフォーム入力中警告が出る問題が発生。

入力せずに予めこちらで設定したデータを既存のフォームの確認ページに表示させるというやり方をしているので、文言の変更はしないし、実際には入力中じゃない。

にも関わらず、「移動しますか?」と警告ダイアログを表示してくれやがりますので、ちょいとgoogle検索すると、beforeunload というイベントに介入すれば良いのが分かった。

理屈上は、e.preventDefault() のみや、$(window).off(…)のみで良さそうに思えるのだが、どちらも必須。

この辺の理不尽な仕様は、javascript に苦しめられてきた者なら分かるかもしれないけど、google検索しても出てこなかったので、経験を積んでないと難しいかもしれないなあ。

腹痛で会社休んで艦これイベントクリア

なんか腹を通しているのだが、原因が分からん。
変なものを食った覚えはないが…。

で、会社を休んだのをこれ幸いと、艦これの甲作戦やってたが、終了日までにクリアできそうにないと思ったので、乙に切り替え勝利S 6回でクリア。

ボス面は、甲作戦だと、随伴艦に戦艦ボス二隻のところ、乙作戦だと普通の戦艦になるので無茶苦茶楽。6回中4回は夜戦せずに昼戦で全滅できてた位。

最近までで、難易度が高すぎるイベントが無かったけど、今回は高難易度で酷かったのう。

入力文字数無制限

なんか客がこういうマヌケな仕様を言ってきて、ゲンナリした。

データベースの一番デカいやつでLONGTEXT型があるけど、42億バイトまで入れられる。

日本語の utf8_mb4 で入れたとして、日本語を10億文字入れても足りないから無制限にしてくれという話なら分かるが、恐らくそんな文字数打てる訳が無い。

それに10億文字をブラウザで入力しようとしたら、恐らくブラウザの方がもたない。

わしのPCは32GBのメモリを積んでいるが、Google Chrome で1プロセス3GB越えるとchrome が不安定になるし、多分、Windowsならシステムがクラッシュするだろう。

「〇〇がしたい」とユースケースを言ってきてくれれば、最適な方法の提示が行えるのだが、往々にしてしょうもない細々とした仕様を挙げて来て、ああせいこうせいと手段を限定しやがるので、底抜けにマヌケな事を言われると非常にやる気が無くなるんだな。

水冷ブロック失敗

サンコー USB水冷静音クーリングマットは6mm径位のホースで、この水冷ブロックのコネクターは8mm〜10mm径のホース用だった orz
急いで6mm用継手なるものをポチったけど、到着予定15日の日曜だって。セールやった後の発送が遅いので、水冷ブロックも待たされたが、こいつも待たされるのかよ。

まあaliexpressだと、クソ安い商品は60日掛かるから、それに比べればマシだけどな。

サンコー USB水冷静音クーリングマット

これを持っているが、季節外れに購入したので、転売業者から2千円程高く買った。

なぜ夏でもないのに頭を冷やす必要があるのかと言えば、アレルギー症状のせいで頭が温まると痒くなって、明け方に掻きむしって、後頭部やうなじに皮膚炎ができるから。

この製品をそのまま使うと、ボトルの水が温まって、明け方には温水が循環するようになっててよろしくない。

USB水冷静音クーリングマットのモータ部分を外して、昔、小田原に住んでいた時に買ったサーモスの今は無きモデルの1リットルの保冷水筒の中に入れ、氷水を入れて使うといい感じ。

氷水は保冷水筒の上部を密閉していなくても冷気が下に貯まるので、保冷効果は問題無く、6時間くらい氷が残った状態を維持してくれる。

あと、VOOPH ひんやり枕パッドを水冷枕の上に敷くと冷却範囲が大きくなって更に良い。

ただ、氷水を使うと、パッドに結露が発生し、朝起きると髪の毛が盛大に寝癖状態になってしまうし、過冷却状態なので、そんなに水は冷えて無くて良い。

そこで考えたのが、スマートフォン冷却用5Vのペルチェ素子を使った冷却器で水を冷やす方法。

こいつを熱伝導性の高い銅版に貼り付けて、サーモスの水筒の中に銅版で冷気を伝達すれば良いのではないかと思った。

まあ、結論から言えば、冷えるのは冷却器直下部分だけで、上手い事冷気は伝達しなかった。

だが、「こんな事もあろうかと」と、代替手段を用意する日本人気質を発揮して、3mm径長さ300mmのヒートパイプも楽天で調達しておいた。

水冷タンクにヒートパイプ

ヒートパイプを送水パイプの隙間に無理やりねじ込み、水漏れ防止に隙間を熱伝導シートのゴミで塞いだ。

冷却器に元々貼られていた熱伝導シートを剥がし、付属の予備の熱伝導シートでヒートパイプと冷却器を圧着。

熱伝導するヒートパイプだが、仕組み的に冷気は伝達しにくいかなと思ったが、ちゃんと冷気が先端まで伝わっていた。

使った感じでは、少なくとも朝まで枕が温まる事も無く、常温程度に保たれていた。

理論誘導的には、水タンクの容量をデカくするという方面に行きがちで、それをやると水は温まりにくくなるが、冷やしにくくなるので、「パソコン用12V120Wのペルチェ冷却システムだー」「結露対策だー」とか規模が際限無くデカくなる。

まあ、ソーラー発電のバッテリがあるし、12Vシステムは少し考えたが、120Wという事は12V10Aも電気を喰いやがるので、ウチのバッテリの40Ahの容量では、4時間しか持たぬし、30リットル水槽を冷やすような冷却能力は要らない。

どちらかと言えば、水の容量を少なくし、温まり易く、冷え易いというシステムにした方がいい。

枕の温度をもう少しだけ下げたいので、更に次のものを発注中。

送水パイプをぶった切って、水冷ブロックを接続し、それにスマートフォン用冷却器を熱伝導シートで貼り付ける。

水冷ブロックはマイクロチャネル方式で、スマートフォン用冷却器でも効率よく冷気を伝達できるはずなので、方式は、枕へ水を送る送水管に水冷ブロックをかます。

枕から戻ってきた水を冷やしてタンクに貯めると、タンクで冷気が逃げるので、枕へ送る水を冷やした方がより良い結果が出るだろうと思った訳だな。