これまで、OpenMediaVault 5 (以後 OMV5) 、OpenMediaVault 6 (以後 OMV6) を使って RAID Z 、RAID Z2 を実現し、使ってまいりましたが、ディスクの使用容量が増えるにしたがって、動作に問題が生じて来ました。読み出し時に一瞬止まるのです。主に動画で再生時に詰まった様な動作になるのです。一時間の再生動画で 1-2 回以上は一瞬止まります。RAID Z, RAID Z2 はメモリー食いなのでメモリー不足なのかも知れません。それに、大容量のディスク装置も結局は殆ど NAS として使っているだけなので、今一 RAID Z, RAID Z2 の機能が生かしきれていません。・・で、ディスクの容量増大に伴って、軽いシステムである RAID5, RAID6 を OpenMedia 7 (以後 OMV7) で実現、全面的に移行します。
この記事では、PC2台を連携して 18TB x 6台 (=108TB) + 2台(エラー訂正ディスク) の RAID6 システムを実現します。なお、先に OpenMediaVault7 (OMV7) で作る PC1台 54TB RAID5 システム【Part 1】【Part 2】を読まれている事を前提にしていますので、既にそちらで説明しているものは、項目だけ 列挙する事があります。
全体構成・動作説明

全体構成を上図に示します。master 側から見ると Disk 8台の RAID6 システムとして動きます。Disk 8台中、4台は iSCSI ディスクとして slave 側に配置します。それぞれ全体の IP も決まっていますので、記入してあります。全体構成を考えながら、作成していくと何をやっているか理解し易いと思います。
なお、上記の図にはありませんが、リモートコントロールiLO のポートとして各PC1ポート消費しています。それぞれの IP 番号を書いておきます。
master PC iLO : 192.168.11.40 ← master PC モニター・コントロール 低速可 master PC eno1 : 192.168.11.41 ← メインのデータI/Oポート 最高速度(1Gbps)必要 slave PC iLO : 192.168.11.140 ← slave PC モニター・コントロール 低速可 slave PC eno1 : 192.168.11.141 ← slave PC の Webコントロール 低速可 高速が必要な1ポートを含む4ポートがLANとつながります。 PC間のみ通信(高速が必要) master PC eno2 : 192.168.12.41 ← 高速が必要(0.7Gbps以上)なので 1Gbpsポート使用 slave PC eno2 : 192.168.12.141 ← 高速が必要(0.7Gbps以上)なので 1Gbpsポート使用
iSCSI ディスク (slave)
それでは、先に Slave 側の iSCSI ディスクを作ります。slave 側の PC を設定していきます。
鈴木のOMV7 ベースセット から 変更・追加
鈴木のOMV7ベースセットを少し加工していきます。
Kernel 選定 ・操作プラグイン アンインストール
Kernel を Linux 6.8.4-3-pve だけにしようと思ったのですが、プラグイン導入時に amd64系でないと上手く導入できない場合があるみたいです。なので、 Linux 6.8.4-3-pev, Linux 6.1.0-21 amd64 を残して他のKernelを消去します。で、amd64 を選んでおきます。
iLO IPアドレス変更
ILO の IP アドレスを変更します。ブラウザに http://192.168.11.40 で直接入って IP 192.168.11.40 → 192.168.11.140 に変更します。変更したら、確認の為 新しい設定で OMV7 を立ち上げて下さい。
ホスト名変更
ネットワーク → 一般 → ホスト名をopenmedia-41 → openmedia-141 に変更
ネットワークインターフェースを変更
ネットワークインターフェースを変更します。ネットワークインターフェースが複数ある場合、インターネットに繋ぐ側のみ ゲートウェイ、DNSサーバーを設定します。もう一方は アドレスとネットマスクのみ設定します。これで、一方はインターネット通信を含むコントロール系、もう一方は機器同士の通信に特化して使う事ができます。
ネットワーク → インターフェース eno1を以下の様に編集して保存
IPV4
メソッド : スタティック
アドレス : 192.168.11.141
ネットマスク : 255.255.255.0
ゲートウェイ : 192.168.11.1
高度な設定
DNSサーバー : 192.168.11.1
ネットワーク → インターフェース eno2を以下の様に編集して保存
IPV4
メソッド : スタティック
アドレス : 192.168.12.141
ネットマスク : 255.255.255.0
ゲートウェイ :
高度な設定
DNSサーバー :
一旦 ログオフして 192.168.11.141 でログオンします。
ハードディスク装着 & iSCSI (target) 導入
ハードディスク装着
ここで、一度、Shutdown して、ハードディスクを装着します。再度起動して、Web管理画面を立ち上げます。同時にSSH端末を起動します。4つのストレージをワイプします。クイックで十分です。
ストレージ → ディスク → sda - sde のハードディスク(USBは選ばない事) をワイプ x 4回
iSCSI target プラグイン を導入します。
システム → プラグイン → openmediavault-tgt 7.x 選んでインストール
サービス → tgt → 設定 → Enable → 保存
サービス → tgt → Targets → ⊕(作成) 名前:disk4 ← [disk4 〜 disk7 対象ディスク判別の為、disk4~7と命名] Backing Store:/dev/disk/by-id/[各ディスクのIDを書く] ← DiskInfoS.shからコピペ Initiator Adress:192.168.12.41 ← OMV7(Master) のIPを書く 追加オプション: (なし)
上記の状態で Enable → 保存 すると iqn (=iqn.2024-06.local.openmedia-141:disk4) が作られる。disk4,disk5,disk6,disk7 の順で作ります。
StartUptime.sh に Timeout Mismatch 対策 を追加
StarUptime.sh に Timeout Mismatch 対策を追加します。Timeout Mismatch の説明は何度もしていますので、OpenMediaVault6 (OMV6) で作る PC2台連携 48TB RAID Z2 システム【Part 1】 を参考にして下さい。StarUptime.sh を
#!/bin/bash # StartUptime.sh ( StartUptime.sh StartUp timing program for slave ) PATH=/usr/sbin:/usr/bin:/sbin:/bin DISK4=$(_DiskIdS.sh 4) DISK5=$(_DiskIdS.sh 5) DISK6=$(_DiskIdS.sh 6) DISK7=$(_DiskIdS.sh 7) LOG=/var/log/installer/StartUptime_log date > $LOG # echo "" >> $LOG # echo "# cat /porc/mdstat" >> $LOG # cat /proc/mdstat >> $LOG # echo "" >> $LOG # echo "# systemctl restart tgt.service" >> $LOG # systemctl restart tgt.service >> $LOG echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK4" >> $LOG smartctl -l scterc,70,70 $DISK4 >> $LOG echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK5" >> $LOG smartctl -l scterc,70,70 $DISK5 >> $LOG echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK6" >> $LOG smartctl -l scterc,70,70 $DISK6 >> $LOG echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK7" >> $LOG smartctl -l scterc,70,70 $DISK7 >> $LOG
とします。再起動して動作を確かめる前に Kernel を Linux 6.8.4-3-pev に切り替えます。実行結果の StartUptime_log を貼っておきます。date > $LOG の後で # でコメントアウトされている 6 行はmdadmドライバの不活性化処理 の確認用 + tgt.service の restart です。

# update-initramfs -u
ここで、一旦 slave 側 PC の設定、終わりです。
RAID6 ディスク 8台 (master)
鈴木のOMV7 ベースセット から 変更・追加
iSCSIディスクと同様、鈴木のOMV7ベースセットを少し加工していきます。
Kernel 選定 ・操作プラグイン アンインストール
プラグイン導入時に amd64系でないと上手く導入できない場合があるのは iSCSIディスク同様です。なので、 Linux 6.8.4-3-pev, Linux 6.1.0-21 amd64 を残して他のKernelを消去します。で、amd64 を選んでおきます。
ネットワークインターフェースを変更
ネットワークインターフェースを変更します。ネットワークインターフェースが複数ある場合、インターネットに繋ぐ側のみ ゲートウェイ、DNSサーバーを設定します。もう一方は アドレスとネットマスクのみ設定します。これで、一方はインターネット通信を含むコントロール系、もう一方は機器同士の通信に特化して使う事ができます。
ネットワーク → インターフェース eno1を以下の様になっているのを確認 (特にやる事なし) IPV4 メソッド : スタティック アドレス : 192.168.11.41 ネットマスク : 255.255.255.0 ゲートウェイ : 192.168.11.1 高度な設定 DNSサーバー : 192.168.11.1
ネットワーク → インターフェース eno2を以下の様に編集して保存
IPV4
メソッド : スタティック
アドレス : 192.168.12.41
ネットマスク : 255.255.255.0
ゲートウェイ :
高度な設定
DNSサーバー :
RAID 用 md プラグインを導入
ここで、md プラグインを導入しておきます。
システム → プラグイン → openmediavault-md 7.x をインストール
ハードディスク装着 & open-scsi 導入
ここで、一度、Shutdown して、ハードディスクを装着します。装着ディスクは正面から見て左からDISK0, DISK1, DISK2, DISK3 とします。リストで並べた時も整列するよう、シリアルの若いものから DISK0, DISK1 ・・と装着すると良いでしょう。再度起動して、Web管理画面、SSH端末を立ち上げます。
Open iSCSI 導入 & 設定
iSCSIと連携する為にOpen iSCSI インストール。SSH端末から
# apt-get install open-iscsi
次に、/etc/iscsi/initiatorname.iscsi ファイルを nano エディタで開き iqn 4個を設定します。設定した内容を cat で表示して置きます。これは iSCSI target プラグインに設定した内容です。

iscsid.service open-iscsi.serviceを restart して置きます。
# systemctl restart iscsid.service open-iscsi.service
このあと “discovery” して “login” するとiSCSI ディスクがつながりますが 一気に4台、繋いでしまうとディスクが disk4~disk7 の順でマウントされない可能性が大きいです。結果 md0 デバイスを作る際にディスクの順が入れ替わります。順序混乱はメンテナンス時の失敗の元ですので、loginは 一個ずつ、順序良くディスクをつないで行きます。なお、これらの作業は実際は StartUptime.sh の中に記述してStarUptime時に自動で行います。
discovery 命令です。
# iscsiadm -m discovery -t sendtargets -p 192.168.12.141
login命令は disk4 〜 disk7 別々に実行します。(disk4 の例)
# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk4 -p 192.168.12.141 --login
これら一連の命令を実行し Part1 で作成した DiskInfoM.sh を使って確認をします。 iSCSI ディスクの内 disk4 と disk6 を繋いだようすです。(実際は disk4 , disk5, disk6, disk7 の順ですべて繋ぎます) 当然ですが、 iSCSI ディスクは先に起動しておきます。

#!/bin/bash # StartUptime.sh ( StartUptime.sh StartUptime execute program for master ) PATH=/usr/sbin:/usr/bin:/sbin:/bin DISK0=$(_DiskIdM.sh 0) DISK1=$(_DiskIdM.sh 1) DISK2=$(_DiskIdM.sh 2) DISK3=$(_DiskIdM.sh 3) DISK4=$(_DiskIdM.sh 4) DISK5=$(_DiskIdM.sh 5) DISK6=$(_DiskIdM.sh 6) DISK7=$(_DiskIdM.sh 7) LOG=/var/log/installer/StartUptime_log date > $LOG echo "" >> $LOG echo "# cat /proc/mdstat" >> $LOG cat /proc/mdstat >> $LOG 2>&1 echo "" >> $LOG echo "# systemctl restart iscsid.service open-iscsi.service" >> $LOG systemctl restart iscsid.service open-iscsi.service >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m discovery -t sendtargets -p 192.168.12.141" >> $LOG iscsiadm -m discovery -t sendtargets -p 192.168.12.141 >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk4 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk4 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk5 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk5 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk6 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk6 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk7 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk7 -p 192.168.12.141 --login >> $LOG 2>&1
DISK0 ~ DISK7 動作確認
さて、ここで、RAID ディスクを作成する前に、自動で DISK0 (= sda) 〜 DISK7 (=sdi) が、そろうか確認をしましょう。また、順次各プログラムの確認も致します。まず、各 PC の電源の入れ方ですが、電源ON 時は必ず slave PC を先にします。また、電源 OFF はmaster PC を先にします。要は master PC が動作している時 (= RAID 動作時 ) は必ず iSCSI側 (= slave PC ) が動いている必要があります。iSCSI側が動作していないと、 master側は DEVICE の一部を見失い、たちまちディスクがエラーになってしまいます。 なんなら、slave 側は電源OFFの必要が無ければ ずっと 電源 ON 状態でもかまいません。それでは、以下の手順で確認を行っていきます。下記で 正規手続きと言っているのは、OMVから電源シャットダウンするという意味です。
(1) master PC の ShutDown.sh の動作を確認。 (Beep 1回で 終わる事を確認する)
(2) master PC 電源 OFF (正規手続きで..)
(3) slave PC 電源 OFF (正規手続きで..)
(4) slave PC 電源 ON
(5) master PC 電源 ON
(6) slave PC が立ち上がったら SSH 端末から cat /var/log/installer/StartUptime_log
を打ち、slave のログ確認 (=立ち上がった時の動作の確認)をする。
(7) master PC が立ち上がったら SSH 端末から cat /var/log/installer/StartUptime_log
を打ち、master のログ確認 (=立ち上がった時の動作の確認)をする。
(8) 全て順調なのを確認したら、master PC の SSH で DiskInfoM.sh を打つ。
(9) sda 〜 sdi を確認したら OK
master PC で DiskInfoM.sh → sda 〜 sdi を確認できれば、順調にすべてのディスクが認識できています。もし slave PC (= iSCSI側 )のドライブが上手く認識できていない場合は sdf 〜 sdi が表示されないので、分かります。 ここで、一旦休憩します。
ストレージ
さて、休憩も終わり、ここから RAID6 を構築していきます。まず、各ハードディスクをスワイプします。
ストレージ → Multiple Device ( md0 作成 )
【プラグイン使用の場合】

【コマンド使用の場合】

# mdadm --create --verbose --force --assume-clean \ --raid-devices=8 --level=raid6 /dev/md0 /dev/sd[abcdfghi]
実際の作成、確認の様子です。この時は sda 〜 sdi すべて記入したみたいですね (^0^)

mdadmドライバ不活性化
Master側
RAID6 ディスクにフォーマットしたので、mdadmドライバ不活性化をする必要があります。でないと再起動時に挙動がおかしくなります。まず、mdadm.conf を raid6.conf に複製します。
# cp /etc/mdadm/mdadm.conf /etc/mdadm/raid6.conf 複製しておく
/etc/mdadm/mdadm.conf に DEVICE /dev/sd[wxyz] を書き込みます。/etc/mdadm/raid6.conf では、すべてのDEVICEをスキャンしますので、raid6.conf には書き込みがない事を確認しておきます。mdadm.conf, raid6.conf 両者にARRAY 情報を付加します。(多分 mdadm.conf 側は必要ない … かもね)
# mdadm --detail --scan >> /etc/mdadm/mdadm.conf # mdadm --detail --scan >> /etc/mdadm/raid6.conf
以下のコマンドを実行します。
# update-initramfs -u
一連の作業結果を表示します。

Slave側
slave 側は /etc/mdadm/mdadm.conf は作成済み、特にやる事はありません。念の為 slave 側の SSH端末から
# update-initramfs -u
を実行しておきましょう。mdadmドライバ不活性化の確認は 再起動時のRAID環境の再構築でやります。
ストレージ → ファイルシステム
# mkfs -t ext4 /dev/md0
ストレージ → 共有フォルダ
サービス
SMB( サンバプロトコル ) でWindows からの共有設定をします。
サービス → SMB/CIFS → 設定
サービス → SMB/CIFS → 共有
ユーザー
他の Linux System との共有も便利に・・
# mkdir /array-0 # mount /dev/md0 /array-0
再起動時のRAID環境の再構築
RAID環境の確認
さて、ここまでで RAID 6 環境が出来上がりましたが、再起動時についても設定します。PC2台で連携するには、再起動時に手順どおり進める必要があるのでので、単純な /etc/fstab を用いた再構成をやめて、( =fstab の最終行をコメントアウトして下さい )、StartUptime.sh で再構成を行っています。 以下にソースを示します。”Open iSCSI 導入 & 設定” に作成した部分と”Timeout Mismatch 対策 “用は、グレーアウトしておきます。【追加 2025年4月12日】RAIDメンテナンスの為に iSCSI 設定終了 & RAID 設定開始 ポイントを設けました。メンテナンス時に exit 0 前の # を編集・削除して RAID 設定 直前状態でシステムを立ち上げる事ができます。下記のリストに 赤字 で追加しました。
# iSCSI setting end & Raid6 setting start # exit 0 # break point for check
#!/bin/bash # StartUptime.sh ( StartUptime.sh StartUptime execute program for master ) PATH=/usr/sbin:/usr/bin:/sbin:/bin DISK0=$(_DiskIdM.sh 0) DISK1=$(_DiskIdM.sh 1) DISK2=$(_DiskIdM.sh 2) DISK3=$(_DiskIdM.sh 3) DISK4=$(_DiskIdM.sh 4) DISK5=$(_DiskIdM.sh 5) DISK6=$(_DiskIdM.sh 6) DISK7=$(_DiskIdM.sh 7) LOG=/var/log/installer/StartUptime_log date > $LOG echo "" >> $LOG echo "# cat /proc/mdstat" >> $LOG cat /proc/mdstat >> $LOG 2>&1 echo "" >> $LOG echo "# systemctl restart iscsid.service open-iscsi.service" >> $LOG systemctl restart iscsid.service open-iscsi.service >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m discovery -t sendtargets -p 192.168.12.141" >> $LOG iscsiadm -m discovery -t sendtargets -p 192.168.12.141 >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk4 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk4 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk5 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk5 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk6 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk6 -p 192.168.12.141 --login >> $LOG 2>&1 echo "" >> $LOG echo "# iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk7 -p 192.168.12.141 --login" >> $LOG iscsiadm -m node -T iqn.2024-06.local.openmedia-141:disk7 -p 192.168.12.141 --login >> $LOG 2>&1 # iSCSI setting end & Raid6 setting start # exit 0 # break point for check # ここから /dev/md0 の再構成&チェック $MOUNT01, /array-0 のマウント echo "" >> $LOG echo "# mdadm -As --config=/etc/mdadm/raid6.conf" >> $LOG mdadm -As --config=/etc/mdadm/raid6.conf >> $LOG 2>&1 ; sleep 5 echo "" >> $LOG echo "# cat /proc/mdstat" >> $LOG cat /proc/mdstat >> $LOG 2>&1 MOUNT01=/srv/dev-disk-by-uuid-xxxx # 各UUID毎に異なる生成された値をいれる echo "" >> $LOG echo "# mount -v /dev/md0 $MOUNT01" >> $LOG mount -v /dev/md0 $MOUNT01 >> $LOG 2>&1 echo "" >> $LOG echo "# mount -v /dev/md0 /array-0" >> $LOG mount -v /dev/md0 /array-0 >> $LOG 2>&1 # 以下 ↓ は Timeout Mismatch 対策 echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK0" >> $LOG smartctl -l scterc,70,70 $DISK0 >> $LOG 2>&1 echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK1" >> $LOG smartctl -l scterc,70,70 $DISK1 >> $LOG 2>&1 echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK2" >> $LOG smartctl -l scterc,70,70 $DISK2 >> $LOG 2>&1 echo "" >> $LOG echo "# smartctl -l scterc,70,70 $DISK3" >> $LOG smartctl -l scterc,70,70 $DISK3 >> $LOG 2>&1

mdadmドライバ不活性化の確認
上記 master:StartUptime.sh のLOGを見ると、日時に続く行で /proc/mdstat の項目が Personalities と unused devices の2行のみになっています。つまり、mdadmドライバが不活性化状態になっています。これで、master側の 立ち上がり時のmdadmドライバ不活性は確認できました。
slave 側 ( =iSCSI側 ) にも触れておきましょう。現在運用中の slave の StatrUptime.sh の コメント付きLOG です。

その時の tgt-admin –dump です。ちゃんとディスクが 4台見えますね。

この結果から、slave 側の立ち上がり時 mdadmドライバ不活性化 も確認できました。
以上
Part3 は 色々、悩んだ自分用の備忘録としてデータとしては残しますが、内容は間違っている所が多々あります。なので…. 次は Part4 です。

