NASにHDDを追加した

btrfsでNASを組む – お茶漬けぶろぐと言って、btrfsで組んだアレイを使ってNASにした。本当は先に監視関係をいじるべきだったんだけど、大きな空き容量を先に見てみたくなってしまったので、HDDを追加することにした。 元々NASとして使っていたアレイは、データは全て取り出したので、もう不要ということでバラした。そこから取り出したHDDを組み込む。HDDケースは5ベイあるけど、(故障時を思うと)1つ余裕をもたせたいので、2台のみ組み込むことにした。6TBx2+2TBx2で、全体としては16TBのアレイ(DataがRAID1になっているので、使えるのは8TBになる)になるはず。 やることはそんなに難しくない。HDDを接続してアレイにaddするだけ。 前回同様にgdiskでパーティションを切って、あとは以下の感じで組み込むのみ。

$ sudo btrfs device add -f /dev/sde1 /dev/sdf1 /tank
$ sudo btrfs filesystem show
Label: 'house'  uuid: 略
        Total devices 4 FS bytes used 3.72TiB
        devid    1 size 5.46TiB used 3.74TiB path /dev/sdc1
        devid    2 size 5.46TiB used 3.74TiB path /dev/sdd1
        devid    3 size 1.82TiB used 0.00B path /dev/sde1
        devid    4 size 1.82TiB used 0.00B path /dev/sdf1

最後にbalanceして、完了を待つのみ。

$ sudo btrfs balance /tank

ちなみに、12時間経過したがまだ完了していない。 28日23時ころ追記:結局、丸2日くらい経ってから、ようやっと完了した。よかった。

0.00s user 13821.47s system 8% cpu 45:41:48.60 total

9月8日追記:そういえばどのくらいにbalanceされたんだ?というのをここに書いてなかったなと思ったので、追記する。

$ sudo btrfs filesystem show
Label: 'house'  uuid: 略
        Total devices 4 FS bytes used 3.74TiB
        devid    1 size 5.46TiB used 3.69TiB path /dev/sdc1
        devid    2 size 5.46TiB used 3.69TiB path /dev/sdd1
        devid    3 size 1.82TiB used 56.00GiB path /dev/sde1
        devid    4 size 1.82TiB used 56.00GiB path /dev/sdf1

全然新HDDに移動されてないけど、稼働時間とかの状態が違いすぎて、信頼できないとかなのかな…

btrfsでNASを組む

前記事のつづき。といっても内容は素直な話だが… Arch Linuxなマシンにつないだところ、/dev/sdc, /dev/sddとして認識された。まずはGPTで初期化して、パーティションを1つずつ作る。

$ sudo gdisk /dev/sdc
o // create a new empty GUID partition table (GPT)
n // create a new parition
w // write table to disk and exit
$ sudo gdisk /dev/sdd
// オペレーションはsdc同様


$ lsblk //sdc, sdbのみ抜粋
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdc 8:32 0 5.5T 0 disk
└─sdc1 8:33 0 5.5T 0 part
sdd 8:48 0 5.5T 0 disk
└─sdd1 8:49 0 5.5T 0 part

必要パッケージのインストール

$ sudo pacman -S btrfs-progs

さあmkfs

$ sudo mkfs.btrfs -L house -d raid1 /dev/sdc1 /dev/sdd1
btrfs-progs v5.7
See http://btrfs.wiki.kernel.org for more information.

/dev/sdc1 appears to contain an existing filesystem (ext4).
ERROR: use the -f option to force overwrite of /dev/sdc1

怒られた、sdc1にはもうファイルシステムいるみたいなので、-fオプションつけてリベンジ(今回はディスク丸々ではなく、パーティションを切った上にbtrfsを作りたかったのだけど、上記gdiskのオペレーションじゃあ何か過剰だったのか…?よくわからん…)

$ sudo mkfs.btrfs -L house -d raid1 /dev/sdc1 /dev/sdd1 -f
btrfs-progs v5.7
See http://btrfs.wiki.kernel.org for more information.

Label: house
UUID: 略
Node size: 16384
Sector size: 4096
Filesystem size: 10.92TiB
Block group profiles:
Data: RAID1 1.00GiB
Metadata: RAID1 1.00GiB
System: RAID1 8.00MiB
SSD detected: no
Incompat features: extref, skinny-metadata
Runtime features:
Checksum: crc32c
Number of devices: 2
Devices:
ID SIZE PATH
1 5.46TiB /dev/sdc1
2 5.46TiB /dev/sdd1

うまくいってそうなのでマウントして、サブボリュームを切る。

$ sudo mkdir /tank
$ sudo mount /dev/sdc1 /tank
$ mount | grep btrfs
/dev/sdc1 on /tank type btrfs (rw,relatime,space_cache,subvolid=5,subvol=/)
$ sudo btrfs subvolume create /tank/nas
$ sudo chmod 777 /tank/nas

sambaの設定をして、データを書き込んで見る。

$ sudo vim /etc/samba/smb.conf
$ sudo systemctl restart smb nmb

どうでも良いが、ユニット名がsmbd.service, nmbd.serviceからsmb.service, nmb.serviceに変わっていてびびった。 取り敢えず手持ちの500GBくらいのデータを投げ込んでみたら、当初は快調に100MB/s前後で書き込めていたものの、すぐに200KB/sくらいに落ちたりした。平均するとだいたい40MB/sくらいをうろうろしていたかな?
後で旧来のNASから3.5TB程データを書き込んでみたところ、丸2日程度かかったから、平均すれば毎秒20MB/sくらいか。
SMRにbtrfsでRAIDしたのがまずかったか? ダメになり次第ストレージは気軽に交換していく運用にしようと思っているので、まぁあんまり気にせず使っていこう(暫くは様子見だが)
それと、近日中に定期scrub設定とか、S.M.A.R.T.監視とかそういうのはやっておきたい。まぁまた別記事で。 しかし、Wordpressのエディタ、なんだかんだ使いにくいなー、マウス操作沢山しないといけないのがめんどい。
エディタだけ変更するのもなんだかだし、どうせ大したコメントも来ないしという事で、Wordpressやめてjekyllとかで作り直しても良いかもね。コンテンツの移行がくっっっそめんどくさそうと思ったけど、ちょろっとぐぐっただけでそれっぽいのが出てくるし、やってみても良いかもね!

ConoHaのメールサーバで証明書エラーが出るのをどうにかする

参考サイトそのままなのだが、こういうのは残ってくれているのか不安だったりするので、ここでもメモ。
ちなみに、iPhoneメーラでSMTPするのは結果的にはできませんでした。かなしい。 参考サイト:
ConoHa のメールサーバーを使おうとしたら SSL 証明書で難儀した話 (序説) – Compnet
ConoHa のメールサーバーを使おうとしたら SSL 証明書で難儀した話 (実装編) – Compnet ConoHaのメールサーバには証明書に問題があって、証明書では「*.tyo1.conoha.io」とあるのに、実際に利用するのは{smtp, imap}.hogehoge.conoha.ioを指示されるのだ。
Thunderbirdの場合は例外承認すれば済むけど、今回はiPhoneのメールアプリで、そもそも通信してくれなさそうだった。SSLをオフにすれば良いのだが、それでは時代に逆行し過ぎでしょう。
という訳で、ConoHaのメールサーバとのやり取りが問題なので、ConoHaの証明書を受け入れるプロキシを設置し、クライアントからはこのプロキシに通信を申し入れれば良い。 では設定。
今回の環境は、Ubuntu 20.04 LTS(SMTPはdovecotの2.3.0以上が必要なので、それが用意できる必要がある)
また、SSL証明書が必要なので、適宜用意しておく。今回もLet’s encryptにお世話になりました。 必要パッケージのインストール。

$ sudo apt-get update
$ sudo apt-get install dovecot-imapd dovecot-submissiond

コンフィグの書き換え。 /etc/dovecot/conf.d/10-auth.conf
・auth_mechanismsにplain login cram-md5
・「!include auth-system.conf.ext」行をコメントアウト
・「!include auth-static.conf.ext」行をアンコメント /etc/dovecot/conf.d/auth-static.conf.ext
・末尾に以下を追記

passdb {
  driver = static
  args = proxy=y nopassword=y
  default_fields = destuser=%u nologin=y starttls=any-cert
}
userdb {
  driver = static
  args = uid=mail gid=mail /home=/dev/null
}

/etc/dovecot/conf.d/10-ssl.conf
・ssl = noをyesに変更
・ssl_cert, ssl_keyをLet’s encryptで取得したfullchain.pemとprivkey.pemに設定する /etc/dovecot/conf.d/20-imap.con
・protocol imap {}の中に以下を追記

login_greeting = IMAP ready.
passdb {
  driver = static
  args = proxy=y host=imap.hogehoge.conoha.io nopassword=y
}

/etc/dovecot/conf.d/20-submission.conf
・submission_client_workaroundsにwhitespace-before-path mailbox-for-pathを記述
・protocol submission {}の中に以下を追記

passdb {
  driver = static
  args = proxy=y host=smtp.hogehoge.conoha.io nopassword=y
}

以上でコンフィグは完了。あとは必要なポートを開けて、dovecotを起動するだけ。 Thunderbirdから送受信した感じ、何もエラーは生じなかったのだが、iPhoneのメーラで送信しようとすると思いっきり弾かれるのでこまった。Thunderbirdのログを眺めると問題なくSTARTTLSしてそうなのだけど、iPhoneのメーラってSTARTTLSサポートしてないとかそういうことないよね?

$ NSPR_LOG_MODULES=timestamp,append,SMTP:4 NSPR_LOG_FILE=./log thunderbird
$ cat ./log
2020-08-04 15:28:49.506598 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Connecting to: hogehoge.com:587
2020-08-04 15:28:49.612342 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP entering state: 0       
2020-08-04 15:28:49.612352 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Response: 220 133-130-115-187 Dovecot (Ubuntu) ready.
(中略)
2020-08-04 15:28:49.642992 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Send: STARTTLS    
2020-08-04 15:28:49.672845 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP entering state: 0                         
2020-08-04 15:28:49.672855 UTC - [(null) 2885857: Main Thread]: I/SMTP SMTP Response: 220 2.0.0 Begin TLS negotiation now.
(略)

この後特にエラーも出ず最後までいっているので、普通にSTARTTLSできていると判断。 後日、STARTTLSじゃなくてSSL/TLSな感じに設定してみて、リベンジしてみよう。

YottamasterのPS500U3を買ってみる

以前はSilverStoneのHDDケースが欲しいとか言っていたのだが、Amazonで安いのを発見した結果、1.5万円をケチって、中華のケースを買ってみることにしたのであった。
自宅NASに使うのを想定しているけれど、最大4台のHDDでアレイを組もうと思っているので、5台入るやつである必要は無いのだが、入れ替え時に一時的に5台繋ぐとかになったら便利かな〜と思って、5台搭載できるやつにしてみた。

モノチェック

では、写真をどばどばっと。
外箱
アクセサリーの小箱
小箱に入っていたもの
電源、USB3.0 A-Bケーブル、ネジセット、ドライバ(付属品のくせにサイズ合ってない)
ACアダプタがデカい(隣に置いたのはiPad mini 5)
マニュアルはまず中国語で書かれている
真ん中から英語ページも出るので安心
シリーズで全モデル共通のマニュアルのようだ
背面の様子。左端の電源はタクトスイッチなので、今どうなのかはわからない。
正面、開けたところ。プラスチックのマウンタがやすっぽい。
中の基板。これの奥に、垂直にコントローラの基板が載っていそうだが見てない。
今回入れるHDD。生まれて初めて東芝HDDを単体購入したな。
マウンタには2.5インチドライブを設置するネジ穴もある。
読み書き中のランプ。ムーディー(?)
正面の蓋を閉じると、どれのランプがついているのかほぼわからん。
ネジが2種類入ってるので注意
ちなみに、立て付けが悪いのか、HDD音とは別のコリコリノイズがずっと鳴り続けている感じがする。人の近くに設置する場合は、気になる人もいるかもしれない(我が家ではあんまり問題にならないが)

情報、ベンチマーク

それぞれのHDDのCrystal Disk InfoとCrystal Disk Mark結果。なんか知らんがS.M.A.R.T.有効ぽい?
速度に関しては、HDD単体のときとの大きな乖離は無さそう。

Windowsに接続

Windowsに接続すると、デバイスマネージャには以下のように表示される。
HDDを複数台挿入していても、デバイスマネージャ上では1つとして表示される。

自動スリープ対策

デフォのままだと15分でHDDがスリープ(電源が落ちているみたい)してしまうのだが、レビューを眺めていると、これが原因でデータがぶっ壊れましたみたいなのをよく見る。本当かどうかは知らないが、どちらにしろ15分ごとに電源が切れてしまうのは良くなさそうなので、入れっぱなしになっていて欲しい。
という訳で設定変更する。 公式サイトからユーティリティをダウンロードする。Sleep Time Setting – FIRMWARE UPDATEがそれっぽい。自分がやったときはJMS567用と思しきアーカイブがあったのでこれを利用したが、今は無くなっているので、アウトな気もするが以下に転載します。
https://www.dropbox.com/sh/yu8l9m4oyt2zk6c/AAAzdRyuQb8ZfFDV38o48CYda?dl=0
MD5:A7B8A8083FA3A580326EF1107D2C211B 今入手できるものではなく、上掲のアーカイブで作業を実施。今のやつでできるのかは知らないです。だれかチャレンジしたら教えて。自社製品向けのユーティリティなんだから、どの製品で使えるかくらいマニュアルに書いといてよ…
1. 本体を「USB3.0」で接続(USB2.0で接続すると時間設定入力欄が表示されなかった)
2. JMMassProd2_v1_16_14_1.exeを起動
3. ウィンドウ左にあるRD Versionにチェックを入れる→jmicronと入力(異なるものを入力しても、チェックが入れられないので、入力ミスの心配なし)
4. すぐ右のFirmware Updateにチェックが入っていることを確認して、直下のLoad F/W FileからJMS567+PS+PM_v9.0.2.9.BINを選ぶ
5. 画面右上のEEPROM Settingの中にStandby Timerという入力欄があるので、ここを0に書き換え(分指定)
6. ウィンドウ下方にあるSTARTボタンを押す
諸々設定してSTARTを押すと…
みょろみょろ~っと青いゲージが増えて…
完了すればPASSと出る

接続順番、ホットスワップ

Linuxに接続したとき、ケース上から順番にsda, sdb, …という感じで認識されるみたい。空きありでも同様。(ホストごと再起動したときにどうなるかは未確認) ホットスワップ対応、とマニュアルには書かれているが、挿抜すると全部認識し直しになる。ので、アレイとして使うなら、電源入ったままデバイスを交換するのはやめておいた方が良さそう。

Linuxに接続

lsusbすると以下のように見えている。

$ lsusb //抜粋
Bus 002 Device 008: ID 152d:0567 JMicron Technology Corp. / JMicron USA Technology Corp. JMS567 SATA 6Gb/s bridge

実際の活用はbtrfsでまとめて、自宅NASとして構成するので、それは次記事にて。