Cephの設定を改めてやり直していた時に容量がアンバランスだったので、中古のHDDを購入して余りのSSDを投入して再設定した。その際にディスクの置き換えのために大量にHDD内のデータをコピーしてはフォーマット、別のサーバに再投入、を繰り返していたところ、長期利用しているHDDは、SMARTでエラーが出ているのに気が付いた。置き換えで派手に動かしてたりすると症状も悪化するしね。まあ、一番古いものは、10年以上利用しているので十分でしょう。一番症状がひどそうなのは以下のような感じ。でもまあ、異音もなくちゃんと動いています。とはいえ、この状態で普通に使うのは怖いのでダメそうなディスクを束ねてZFSを利用しようと思い立った。

たまたま、録画サーバ接続のLHR-4BNHEU3をUSB-C(3.1 Gen2)接続のLHR-4BNHUCへリプレースしたので余ったケースをRaspberry pi 4Bに接続してファイルサーバとすることにした。
ZFSの準備
Raspberrypi 4Bで利用しているProxmox-Arm64は、通常のインストールだとzfsのモジュールはインストールしてくれないため、公式の手順に従って追加しておく。Repository内には入っているため、以下の手順だけでよい。モジュールのコンパイルが走るので時間はかなりかかる。
apt update apt install dpkg-dev linux-headers-generic linux-image-generic apt install zfs-dkms zfsutils-linux
ZFS Poolの作成
Proxmox GUIでZFSで、RAID10のPool作成をしようと思ったけど、あまりものディスクは、2TB*3+3TBなので、サイズが違うと怒られる。まあ、容量が余るけれどもどうせ、もうすぐ寿命のディスクをだましだまし使おうという話なので、コマンドラインから作成した。普通に作ると以下のようにコマンドが動くようなので、それをそのまま踏襲して実行した。
# zpool create -o ashift=12 tank mirror /dev/sdc /dev/sdd mirror /dev/sda /dev/sdb # zfs set compression=on tank # systemctl enable zfs-import@tank.service

これで、ボロボロのディスク4本が助けあうpoolが作成できた。
ZFS Poolの性能
このノード上でSambaのコンテナを動かしてWindowsクライアントから性能を見てみた。Raspberrypiなので、途中のUSBは5Gbps、NWは1Gbps。またディスクにはSATA300も含まれている。結果は以下。ReadはローカルHDDと同じくらいだがWrite性能が致命的に遅い。単体ディスクの1/4くらいになってしまっている。圧縮がONというのもあるけれども、最大の理由は、このZFS PoolがUSBの後ろにいるため、書き込み時には、Mirrorの場合、2回順番に書き込むためである。RAID 10のStripingも並行処理だから速くなるのであって、処理の応答を待ってから書き込むのでは、まったく意味がない。ということで、USB接続の先のzfsは全く意味がないことが分かったのだけど、まあ、もともと壊れかけディスクの再利用目的なので(速さが必要ならCephFSを利用すればよい)これはこれでひとまずよいことにする。

コメントを残す