OpenMediaVault6 (OMV6) で作る PC1台 24TB RAID Z システム【Part 3】

Linux Debian Base の OpenMediaVault 6 (以後 OMV6) で RAID Z 、RAID Z2の NASを実現します。今まで OpenMediaVault 5 (以後 OMV5) を使っていました。以前にOMV6 を実験的に使った時は “使いにくいなっ!” と思ったのですが、今回 使ってみて、その改善ぶりに驚きました。折角ですので、OMV6 を使って簡単に RAID Z (PC 1台 Disk4個) を実現できる、細か目の説明を致します。なお、PC は ヤフーオークション等で 1~1.5万円程度で落札できる HP Micro Server Gen8 (以後 HP Gen8)を使います。また、説明にはOMV5 の時に使った資料を再利用しますので、OMV5の記事も読んで重複してる部分は、まあ笑って許して下さい。この記事では PC1台でRAID Zを 次の記事では PC2台連携で RAID Z2 を実現します。(既にRAID Z2 PC + iSCSI PCで実現済み、Disk8個 = Disk4個 + Disk4個 使用、実動中)

Part3 では追加の設定やメンテナンス等について備忘録を兼ねて記述します。

RAID Z, RAID Z2 を使って記録容量が増えていくと、PowerON 時に立ち上がりに時間が掛かりだします。といっても大した時間ではないのですが、バラバラにデータが記録されているディスクをPowerON 時に自動でRAID Zに再構成しています。 ZFS – ArchWiki 3.1 自動起動 によると自動起動デーモンがこれを行っているみたいです。で、時々 起動に失敗する事があり、その時は再起動するかもしくはマニュアルで # zpool import で 再構成可能か調べて可能ならば # zpool import [pool名] で再構成できます。通常の使用では自動起動デーモンに任せて置けばよいのですが、私はあえて自動起動デーモンを止めて、自作 スクリプトを使っています。自作 スクリプトを使う事で立ち上がり時の不具合を log に記録できますし、通常、PowerON時に最初に行われる RAID の再構成の順序を変えたりできます。この記事ではPowerON時に最初にRAID の再構成を行っていますが、次の記事のPC2台連携で RAID Z2 を実現するにはPowerON時にPC2台のディスクを連携してからRAID の再構成になるので、順序を変える必要があります。スクリプトとしてまとめるのは後にして、まずはマニュアルでやって見ましょう。 ZFS – ArchWiki 3.1 自動起動 を参考にSSH端末で自動起動ルーチンを止めて
# systemctl disable zfs.target
再起動してOMV6 管理画面に入ります。SSH端末で確認してみると /zfs/RAIDZ-0 がありません。以降のマニュアルでの操作をコメント付きで貼って置きます。
これで、RAIDZ-0 が再構成されました。

Timeout Mismach 対策

PowerON時にもう一つ仕事をします。Timeout Mismach 対策です。

Timeout Mismach は全面的にこのページを参考にしています。 Timeout Mismach とは Sector ERR が起きた時のTimeout が Kernel (=Linuxのシステム) のTimeout (=default 30秒) よりも大きい事により、本来 1Sector 分の故障なのをディスクが応答しないと勘違いしてしまう現象、みたいです。通常、スタンドアローンのディスクでエラーが起きた場合は代替手段はないので、ディスクを出来るだけ頑張って読もうとします、実際、何度かトライすればなんとか読める事も多いです。ので、タイムアウトはかなり長く設定されています。他方、RAID5やRAID6 のシステムでは一か所故障でも、他から補完できますし、一か所で長くリトライしているとシステム全体のパフォーマンスが落ちる事につながります。従って、Sector ERR でも そこそこのTimeout で復帰します。この時間が適切に設定されているか( =7.0秒 ) 確認します。これもまず、マニュアルで調べて見ましょう。例えば /dev/sda を調べるには

# smartctl -l scterc /dev/sda    ← ディスクは 他の方法でも指定可能

また適切な値 70 (=7.0秒) を設定するには

# smartctl -l scterc,70,70 /dev/sda    ← ディスクは 他の方法でも指定可能

で、設定できます。これも、マニュアルで確認、設定した例を添付します。例はディスク1個分ですが、実際は4個のディスク全てに適応します。例で使用したディスクは電源を切ると今の設定を忘れてしまいます。なので、PowerON時に毎回設定する必要があります。(ディスクの種類により、設定済みのタイプもある)

StartUptime.sh に追加する

StartUptime.sh は PowerON時に 実行するスクリプトです。前述の2項目を追加して自動実行するスクリプトとします。”鈴木のOMV6 ベースセット” から追加の部分を赤で表示します。

#!/bin/bash

PATH1=$PATH
PATH=/usr/sbin:/usr/bin:/sbin:/bin

LOG_SAVE=/var/log/installer/StartUptime_log

date > $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# zpool import" >> $LOG_SAVE
zpool import >> $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# zpool import tank" >> $LOG_SAVE
zpool import tank >> $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# smartctl -l scterc,70,70 /dev/disk/by-id/[disk1のID]" >> $LOG_SAVE
smartctl -l scterc,70,70 /dev/disk/by-id/[disk1のID]" >> $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# smartctl -l scterc,70,70 /dev/disk/by-id/[disk2のID]" >> $LOG_SAVE
smartctl -l scterc,70,70 /dev/disk/by-id/[disk2のID]" >> $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# smartctl -l scterc,70,70 /dev/disk/by-id/[disk3のID]" >> $LOG_SAVE
smartctl -l scterc,70,70 /dev/disk/by-id/[disk3のID]" >> $LOG_SAVE

echo "" >> $LOG_SAVE
echo "# smartctl -l scterc,70,70 /dev/disk/by-id/[disk4のID]" >> $LOG_SAVE
smartctl -l scterc,70,70 /dev/disk/by-id/[disk4のID]" >> $LOG_SAVE

PATH=$PATH1

実行した結果を貼っておきます。自動起動デーモンは disable にします。

 

 

タイトルとURLをコピーしました