2018年3月11日日曜日

Seagateの12TB (≒10.91TiB) HDDを導入した

メインマシン兼NASとして使っているPCのデータストレージとして、これまではWestern DigitalのNAS向け製品であるWD RedシリーズのWD80EFZX (8TB ≒ 7.28TiB)を使っていた。これを新たにSeagateのNAS向け製品であるIronWolfシリーズのST12000VN0007 (12TB ≒ 10.91TiB)へ換装した。ここ数年はWestern DigitalのHDDばかり購入してきた (Redの6TB、8TB)ので、SeagateのHDDを購入するのは久し振りだ。

換装した一番の理由は、WD80EFZXの残り容量がほぼ無くなったこと。丁度決算期で普段より値引きが期待できる時期なのと、前回HDDを導入してから2年ほど経っているので頃合いなこともあった。

LUKS+Btrfsで運用している。RMAの兼ね合いもあるので、2年くらい持てばいいのだが。


S.M.A.R.T.の情報を見てみる


Linuxなので、smartctlを使ってみた:

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   079   068   044    Pre-fail  Always       -       74220560
  3 Spin_Up_Time            0x0003   097   097   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       2
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   068   060   045    Pre-fail  Always       -       5995223
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       15
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       2
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   100   000    Old_age   Always       -       0
190 Airflow_Temperature_Cel 0x0022   064   062   040    Old_age   Always       -       36 (Min/Max 25/38)
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       2
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       2
194 Temperature_Celsius     0x0022   036   040   000    Old_age   Always       -       36 (0 25 0 0 0)
195 Hardware_ECC_Recovered  0x001a   040   036   000    Old_age   Always       -       74220560
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0023   100   100   001    Pre-fail  Always       -       0
240 Head_Flying_Hours       0x0000   100   253   000    Old_age   Offline      -       15 (143 172 0)
241 Total_LBAs_Written      0x0000   100   253   000    Old_age   Offline      -       13528061790
242 Total_LBAs_Read         0x0000   100   253   000    Old_age   Offline      -       455020

WDのHDDと違い、SeagateのHDDでは1 Raw_Read_Error_Rateや7 Seek_Error_Rate、195 Hardware_ECC_Recoveredといった値が物凄い勢いで増加しているので、最初diskの故障を疑った。

しかし、これらのraw valueをそのまま解釈するのは無意味であり、本当に気にするべきなのは5 Reallocated_Sector_Ctや197 Current_Pending_Sector、198 Offline_Uncorrectableの値であるとの情報があった。

* [Just got a Seagate Ironwolf... are these SMART readings normal? : DataHoarder](https://www.reddit.com/r/DataHoarder/comments/61pmsb/just_got_a_seagate_ironwolf_are_these_smart/)
* [Seagate製HDDが故障する直前のsmart値 – UbuntuによるEco Linuxサーバ構築記](http://eco.senritu.net/seagate%E8%A3%BDhdd%E3%81%8C%E6%95%85%E9%9A%9C%E3%81%99%E3%82%8B%E7%9B%B4%E5%89%8D%E3%81%AEsmart%E5%80%A4/)


RAIDでもNAS専用機でもなくsingle disk換装を選んだ理由


Single disk換装を行ったのは、費用や運用の面で最も適していると考えたからだ。

他にはNASを組む (或いはNASキットを買う)、RAIDを組むなどの方法もあるが:

* 初期コストが高い (diskが複数本必要、それを格納できるケースやマザーボード或いはNAS本体、etc)
* 運用の複雑さが増す
* 電気代が増す
* 総容量が大きくなるとバックアップを取るのが難しくなる

といった問題がある。Single disk運用は、そのdiskが故障すると終わりという問題があるものの、これまで使っていたdisks (8TBと6TB)に定期的にbackupを取ることで影響をある程度緩和する方針を取る。

raidzを使い、信頼性のあるきちんとしたfile serverを構築する場合には、以下のpageが参考になるだろう:

Windows 10 + AMD RX480な環境でFinal Fantasy XV Playable Demoが落ちることがある

Final Fantasy XVのPlayable Demoが配信されていたのでやってみた。取り敢えずFullHD程度ならRX480でもさほどストレスなく遊べる印象 (後でベンチマークソフトを走らせてみたら「やや快適」だった)。

男ばっかり4人のチームで、ホストが旅するゲームとか言われていたりしたけど、実際にやってみると結構面白いと感じている。

ただ、3度も同じような場所で止まったので、おそらくdriver側 (Adlenarinの最新版)に問題ありな雰囲気。

また、数日後には別の場所で画面がピンク色になって入力を受け付けなくなり、Windowsごと落ちてrebootした。

1年くらい前、『NieR:Automata』 (Steam版)でもdriverが安定するまでに時間がかかったのを思い出した。ただ、Automataとは違ってFFXVはオートセーブなのには結構救われた印象がある。

最新のEmacsにてset-default-font (obsoleted)が削除された

commit f1c48b0ec521744826ed43ae27eed0e152c472bfにて、22.1の頃にobsolete扱いになっていたfunctionsが削除された。

set-default-fontもその中の一つで、これで指定していたdefault fontが適用されなくなった。代わりにset-frame-fontを使えとあるので、そのまま書き換える。

eg. Default fontとしてRictyの12ptを使う

× (set-default-font "Ricty-12")

↓

○ (set-frame-font "Ricty-12")

2018年3月3日土曜日

Firefox (やその系列の) web browserでJavaScriptによるcontext menuの禁止を解除する

一部のwebsiteではJavaScriptの機能を応用 (悪用?)してcontext menuを出せないようにしている。今時のwebsiteをまともに閲覧するにはJavaScriptを丸ごとdisableするのも難しい (一応、No Scriptのようなextensionsを入れるという手はある)。

そこで、JavaScriptの機能のうち、context menuを変更するための機能のみをdisableしてみる。

* URL barに"about:config"と入力
* dom.event.contextmenu.enabledを"false"にする

これでJavaScriptによるcontext menuの変更 (禁止含む)を解除できる。

以前はPreferenceの画面にJavaScriptの機能を細かく制御できるoptionがあった気がするが、最近のversionだと無くなっている。


gitでuntrackedなfilesをまとめてrmする

gitで最新版を追い掛けるだけの使い方をしていると、何らかの理由で手元のworking directoryにuntrackedなfilesが残ってしまうことがある。

1つや2つならまだ良いが、それ以上となると1つ1つに対して個別のpathを指定してrmを発行するのは面倒過ぎるし、そもそもprogramを嗜む者の端くれとしてあるべき姿ではない。

 % git status -s | awk '{print $2}' | xargs rm -f

で片付けられる。一応rm -fを実行する前にどんなことになっているのかlsにpipeするなどして確認しておくと安全。


mesalibをbuildする際にdefault以外のversionのLLVMを使う

configure scriptに対応するoptionがあるので使う。

--with-llvm-prefixがこれで、例えば2018-02-20現在のrelease版のLLVMは5.0.1だが、Debian unstableに入っているLLVM 7を使いたい場合:

% ./configure --with-llvm-prefix=`llvm-config-7 --prefix`

のように指定する。


2018年2月20日火曜日

SwissMicros DM42のOFF Imageとして『NieR:Automata』の2Bさんを表示する

SwissMicros DM42 (HP-42SのemulatorであるFree42で動くRPN calculator)は、originalのHP-42Sよりも表示領域が拡張されていて、電源をoffにすると画像が表示されるようになっている。

好きな画像を適当に加工すれば表示できるので試してみた。


図1 2Bさん@DM42

図2 並べてみた

DM42へのOFF image (OFFの時に表示される画像)の書き込み方


cf. https://www.swissmicros.com/dm42/doc/dm42_user_manual/#off_images

DM42をUSB cableでPCに接続し、□SETUP → 1. File → 3. Activate  USB Diskを選択するとDM42の記憶領域をUSB mass storage (USBメモリ)として読み書きできる。領域のfilesystemはいわゆるVFAT (FAT32)なので、Linuxでmountする時には:

% sudo mount -t vfat -o rw,uid=1000,gid=1000 /dev/sdb /mnt/dm42

のようにする。ちなみに、-t vfatでfilesystemにVFATを指定、-o以降に渡してあるのは:

* rw → 読み書きモード
* uid=1000 → fileの所有者を1000 (たぶん一番最初に作った一般ユーザアカウントのid)にする
* gid=1000 → fileの所有groupを1000 (同上)にする

※VFATにはfileの所有者/所有groupの概念がなく、uidやgidを明示的に指定しないと所有者がrootになる。mvやcpを発行するのに一々sudoをつけるのが面倒なので指定

以上の設定で/dev/sdb (著者の環境ではこれがDM42の記憶領域)を/mnt/dm42にmountする。

この時、/mnt/dm42/以下に見えるOFFIMG directoryに適切なimage file (大きさ400×240, 色深度1bit, BMP)を放り込むと、電源off時ランダムで表示されるようになる。

書き込み終わったらPC側でumount後、/sys/block/sdb/device/deleteに1を与えて安全に取り外せる。

% sudo umount /mnt/dm42
% echo 1 | sudo tee -a /sys/block/sdb/device/delete


大きさ400×240で色深度1bitなBMP画像の作り方


cf. [白黒(1ビット)画像の作り方](http://yay.cla.kobe-u.ac.jp/~jm/edu/2015/media/errorta/)

GIMPを使った。InkscapeやPhotoshopでも勿論できるが、ここでは解説しない。

* 画像を取り込むか描く
* Image → Mode → Grayscaleを選択してGrayscaleにする
* Colors → Brightness-Contrast...を選択し明るさとコントラストを調整する
* Image → Scale Image...で大きさを調整する
* Image → Canvas Size...で横400×縦240に設定
* Move toolで表示する部分を調整する
* Image → Mode → Indexed... → Colormap → Use black and white (1-bit) paletteを選択
* Dithering → 適切なcolor ditheringを選び Convert


最後に


2018-02-12にDM42のfirmware v.3.3がreleaseされた。詳細については以下linkを参照されたい。

cf. [Index of /dm42/firmware](https://www.swissmicros.com/dm42/firmware/)


人類に栄光あれ。