OpenMediaVault7 (OMV7) で作る PC1台 54TB RAID5 システム【Part 1】

これまで、OpenMediaVault 5 (以後 OMV5) 、OpenMediaVault 6 (以後 OMV6) を使って RAID Z 、RAID Z2 を実現し、使ってまいりましたが、ディスクの使用容量が増えるにしたがって、動作に問題が生じて来ました。読み出し時に一瞬止まるのです。主に動画で再生時に詰まった様な動作になるのです。一時間の再生動画で 1-2 回以上は一瞬止まります。RAID Z, RAID Z2 はメモリー食いなのでメモリー不足なのかも知れません。それに、大容量のディスク装置も結局は殆ど NAS として使っているだけなので、今一 RAID Z, RAID Z2 の機能が生かしきれていません。・・で、ディスクの容量増大に伴って、軽いシステムである RAID5, RAID6OpenMedia 7 (以後 OMV7) で実現、全面的に移行します。後々出てきますが、OMVのダッシュボードで比べて見ると RAID5, RAID6 は RAID Z, RAID Z2 に比べて CPU、メモリーの負担が 数分の一 (1/2 〜 1/4) です。

システム作成の方針

蓄積容量が大きくなってもスムーズに読み出せる為には、同じ CPU・メモリーならば出来るだけ軽いシステムである必要があります。RAID Z, RAID Z2 → RAID 5, RAID 6 でシステムとして軽くなります、使用しない機能は、操作方法すら忘れてしまい、後々トラブルの原因になったりします。動作を軽くする為にも、出来るだけシンプルなシステムが望ましいのですが、必要な機能は入れたいので、ゆる~く、方針を決めて置きます。

使用ハードウェアは HP ProLiant MicroServer Gen8

まず、使用ハードウェアは当然ながら HP ProLiant MicroServer Gen8(以降 HP Gen8)を使用します。CUP は Intel Xeon E3-1220Lv2 2.3GHz(2コア / 4スレッド)Memory は 8GB を使用しましたが、後々の評価から Celeron G1610T 2.3GHz(1コア / 2スレッド)Memory 2GB 程度でも実用になりそうです。

基本は Openmediavault 7 + プラグインで…

色々な機能はWeb画面から管理したいので、可能な限り OMV7 + プラグイン(但し必要な機能のみとする)を使います。プラグインでは実現できない或いは使いにくい所 ( あくまで私見ですが…) や、システム全体連携が必要な所は Linux スクリプトを追加する事で実現します。

最終的にはシンプルシステムを目指しますが、実験時には プラグインカーネル入れ替え機能を、多用して RAIDに最適なカーネルを考えます。( カーネル入れ替え機能自体が update や upgrade 時にトラブルになったりするので、最終的にはアンインストールして置くのがお勧めです、必要ならば再インストールも可能です )

mdadm で 色々実験 ・・最終的には 54TB (RAID 5) を作成

mdadm ( Linux の RAID 5, 6 は大抵このソフトを使っており、もちろん OMV7も使っています。) を使った、RAID 操作に慣れる為に小さめのディスクで ( 大きいディスクだと単に時間が掛かりすぎるので…) 、ソフト的に色々組み換えて評価します。ディスクデータをキープしたまま、RAID 5  → RAID 6 或いは RAID 6 → RAID 5 とか ディスク 3台で RAID 5 → ディスク4台 で RAID 5 とか 幾つか操作してみて、必要な時間を評価します。最終的には、この記事内で RAID 5 (ディスク4台 18TB x 3 台 = 54TB + エラー訂正ディスク 1台) を作成します。また、次の記事では 2台連動で RAID 6 (ディスク8台 18TB x 6 台 = 108TB + エラー訂正ディスク 2台) を作成します。

運用時に役に立つツールを作成

私は NAS として使う場合に “日本語タイトル” や “日本語フォルダ” を多用しますので ファイルやフォルダはスペースを含む日本語が自由に使える事は重要な事です。日本語を使う事自体はさほど問題ないですが、ファイルの copy や move を rsyncで効率良く確実に行いたいのですが、 日本語フォルダやファイルも含めて、コマンドを打っていては面倒な事この上ないです。なので、( スペースも含んだ ) 日本語フォルダ多用システムの運用時に役に立つ、rsync ツールなども作ります。

必要なUSBメモリーは

ここで、実験も含めて必要な USBメリーについて書いておきます。

インストーラー用 4GB 以上必要 最初のインストール時に使う
・鈴木のOMV7ベースセット用 32GB 以上が必要 backup 含めて複数作成しておくと良い
・実験用 OMV7 ←→ WindowsPC 間でデータの移動に使う。数百Kbyte以上 32GB以下
実験用は OMV7,WinPC どちらでも読み書きできる、FAT 又は FAT32 でフォーマットしておきます。

鈴木のOMV7 ベースセット

相変わらず変な章名ですが “鈴木のOMV7 ベースセット” をOMV7 で展開する NAS のベースとします。これから少し変形したり、付け足したりしてシステムを展開致します。BBルータの都合で、IPアドレスは 192.168.11.xx を ベースに展開致します。既にOMV6 で運用中なので、iLOアドレス 192.168.11.20~30 と 192.168.11.120~130 は使用中です。そこで、この記事の iLOの IPアドレスは 192.168.11.40 にします。まずは、 “鈴木のOMV7 ベースセット” を作って行きましょう。

OMV7 インストール

HP Gen8自体の説明 や OMV のインストールの仕方を詳しく説明しても従来記事の繰り返しになるので詳しくは OpenMediaVault6 (OMV6) で作る PC1台 24TB RAID Z システム【Part 1】から【Part 3】を参考にして頂くとして、ここでは、必要な情報を列挙する感じで説明して行きます。

OpenMediaVault ホームページから OMV7のインストーラーをダウンしましょう。 Home/iso から 7.x-xx.iso (2024_05_15 時点では 7.0-32 が最新) を選びます。ダウンロードしたら、Rufus を使って ISOイメージモードでインストラーUSBを作成します。インストーラーUSB は4GB以上あれば良いでしょう。

OMV7をインストールするUSBメモリー ( = 鈴木のOMV7 ベースセット ) は 32GB 以上を使います。16GBで行けるだろうと思ったのですが、なぜかインストラーに拒否されました。64GB,32GB で問題なかったので、私は32GB を使っています。この32GBのUSBメモリーはあらかじめ WinPCで FAT32でフォーマットして置きます。
HP Gen8 のネットワーク、AC 等をセットしたら、ハードディスクはセットしないで インストーラーUSB のみセットしてセットアップ画面を立ち上げます。Remote Console にセットアップ画面が立ち上がったらすぐ32GBのUSBメモリーを追加で挿入します。( セットアップ画面が立ち上がった時点で インストーラー = sdaとなっているので、OMV7ベースセット = sdb になる様セットアップ画面確認後に挿入している)  まあ、慣れている人はUSB挿入順も自分流のやり方で良いと思います。
画面は、OMV5、OMV6 の時とよく似ていますね。インストール方法も殆ど同じなので、要点だけ 、まず、install を選んで ENTER。次の頁で言語を日本語を選びます。以降殆ど Enter のみで行けます。root のパスワードを決めるインストールするUSBメモリーを選ぶ書き込み選択する。位を実際に選びます、まあ画面を見ていれば大体わかります。ダウンロードサイト等はデフォルトで問題ありません。まあ、OMV5、OMV6 と同じなので 迷わないでしょう。
画面がどんどん進んで最終画面でインストールUSBを抜いて、続けます。
少し待つと自動的にリセットされて、OMV 7 が実行されます。
画面がここまで来たら実はOMV 7 が立ち上がっています。インストール自体は終了です。

HP Gen 8 の バグ修正

ここで、HP Gen 8 特有の修正をします。他のPCでは必要ないかもしれません。このバグ自体が、色々 Keyを打つと、Remote Console 画面が使えなくなる白物なので、とっとと修正します。バグのせいで、カーソル応答が悪く、頼りないかもしれませんが、root で loginして

# nano /etc/default/grub

で、grub の内容を編集します。

GRUB_CMDLINE_LINUX_DEFAULT="quiet"
を探して編集
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=off intremap=off"
として、セーブ。
# update-grub
を実行。次に、再起動を 2回行います。これで、バグ修正完了。再起動 2回後にカーソル応答の頼りなさは解消されているはずです。

OMV7 最初の設定

従来はここで、IP アドレスを調べて  OMVの管理画面 に入りました。その方法でも問題ありませんが、IPアドレスを調べずとも Remote Console 画面でもIP アドレスを設定できます。
試しに IP = 192.168.11.41 に設定してみましょう。
root で login して omv-firstaid コマンドで簡易設定モードに入ります。コマンド自体は忘れても上の方に書いてあるので、安心ですね。
1 configure network interface を選ぶ
net に繋がっているポートを選ぶ (=eno1)
IPv4 方式で設定しますか? Yes
DHCP 方式? (Static なので No)
IPv4 のアドレスを入れる   192.168.11.41
netmask を入れる  255.255.255.0
default gateway を入れる  192.168.11.1
IPv6 をセットしますか No
DNS name serverを入れる  192.168.11.1
WOL を使いますか  No
で、暫く待った後に  ..successfuly changed の文字が帰ってくれば成功です。失敗しても何度でもできます。この方法を覚えておくと、Web管理画面のアドレスを忘れた場合や 設定に失敗した場合でも設定できます。
それでは、ブラウザから管理画面に入りましょう。
IP 192.168.11.41 から User : admin  Password : openmediavault で入ります
ここで幾つか最低限の設定を行います。
システム → ワークベンチ → 自動的にログアウトを無効
保存 → ✔(適用) → はい   (以下 保存 → ✔(適用) → はい は省略する)
ネットワーク → 一般 → ホスト名をopenmediavault → openmedia-41 に変更

ネットワークインターフェースを設定してない場合は、以下。

ネットワーク → インターフェース  eno1を以下の様に編集して保存

 IPV4
  メソッド     : スタティック
  アドレス     : 192.168.11.41
  ネットマスク : 255.255.255.0
  ゲートウェイ : 192.168.11.1

 高度な設定
  DNSサーバー  : 192.168.11.1

一旦 ログオフして 192.168.11.41 で ログインする。以降、192.168.11.41 でログインします。

SSH端末の日本語モード設定

SSH端末を開いて下さい。SSH で入るとまず、自分のディレクトリ (= /root/ 下) に入ります。OMV7のSSH端末は最初は英語モードになっているらしく、ディレクトリにある .profile を編集して日本語モードで入れるよう変えます。

root@openmedia-41:~# nano .profile
最期の 2 行 を変更します。
LANG=C      を LANG=ja_JP.UTF-8     に変更します。
LANGUAGE=C を LANGUAGE="ja_JP:ja"  に変更します。

これで次回から日本語モードで開けます。

ついでに、英語と日本語のコマンドマニュアルを導入します。

# apt-get install man
# apt-get install manpages-ja

OMV7 外部プラグイン追加 & RAMディスク導入

ここで少し休憩して、プラグインを眺めて見て下さい。RAID 5, RAID 6 用の md 7.x-x は見つかりますが、フラッシュメモリー(USBメモリー)に関連してRAMディスク、PC2台連携の時に必要な iSCCI ディスク、その他 カーネルの入れ替え機能 などが、みつかりません。実はこれらの機能は外部プラグインなのです。(外部 / 通常の違いが良く分かりませんが) 外部プラグインを追加 致します。

https://github.com/OpenMediaVault-Plugin-Developers/packages から導入しますので、SSH 端末を開いて、README.md の指示に従って

 # wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

再度 Web管理画面にログインして、プラグインを眺めると、欲しい物が増えていますね。早速、RAMディスクを導入します。SSH 端末で # df を見て置きます。導入後に再確認します。管理画面で

システム → プラグイン → openmediavault-flashmemory 7.x を選んでインストール

インストール済み になりましたね。# df を見ると、folder2ram の項目が見えます。ダッシュボードのサービス項目にも FlashMemory が追加されています。この表示が緑になっていると正常に FlashMemory使用時 ( =USBメモリーで動作する事) のデータ退避用RAMディスクが動作しています。再起動すれは 緑になりますが、導入直後は赤かもしれません。OMV5 時に比べて導入が簡単になりました。

この RAM ディスクは Shutdown手続き時にフラッシュメモリー( =USBメモリー ) に書き込まれ、起動時に フラッシュメモリーからRAM に読み込まれます。従って、Shutdown は Web管理画面から行い、書き込み動作をして下さい。いきなり電源を切ると起動時からその時点までの運転経歴等の管理情報データが失われます。(まあ、ディスクに書き込むデータ等は読み書き時点で記録されるので、普段は関係ありませんが、トラブル時、メンテナンス時に頼るべき管理情報がないとトラブルシューティングがやりにくいです。)

Kernel 操作 プラグイン 導入

Kernel を操作する(入れ替える) プラグインを導入します。

システム → プラグイン → openmediavault-kernel 7.x.x をインストール
再ログイン後に システム → カーネル項目が増えているので、選んでみると Debian GNU/Linux, with Linux 6.1.0-18-amd64 がdefault になっています。上の段のリストの絵の項目に proxmox の kernel 3 個 並んでいるので、3回 ダウンロードしましょう。
システム → カーネル → Proxmox(画像) → Install Proxmox kernel x.x
後は、時計マーク で 使いたい kernel を default に SetBoot して、再起動で使用できます。
Debian GNU/Linux, with Linux 6.8.4-3-pve    (以降 pve 6.8)
Debian GNU/Linux, with Linux 6.5.13-5-pve   (以降 Pve 6.5)
Debian GNU/Linux, with Linux 6.2.16-20-pve  (以降 pve 6.2)
Debian GNU/Linux, with Linux 6.1.0-21-amd64 (以降 amd64-21)
Debian GNU/Linux, with Linux 6.1.0-18-amd64 (以降 amd64-18)

この時点で5 つのkernel が選べます。

実験の為に default を Linux 6.8.4-3-pve ( pve 6.8) にして、再起動しておきます。

update & upgrade

再起動後に SSH 端末から、update, upgrade もしておきます。
# apt-get update
# apt-get upgrade
途中が何度か質問が来ますか、基本デフォルト又は、q (quit の略) で流します。
で、update, upgrade の後 ダッシュボードの システム情報から OMVが 7.1.1-1 (Sandworm) になっているのが分かります。    (ダッシュボードは見やすいように必要な情報を選んで表示しておくと良いです。)

StartUptime.service 導入

システムスタート時に実行する StartUptime.service を作成。以下の内容を /etc/systemed/system/の下に置きます。このサービスはスタートアップ時 ( = network.target が実行された直後) に StartUptime.sh を実行します。

[Unit]
Description=電源 on 時処理
After=network.target

[Service]
Type=oneshot
ExecStart=/sbin/StartUptime.sh

[install]
WantedBy=graphical.target

StartUptime.sh を以下の内容で作成。 /sbin/ の下に置きます。実行フラグを忘れずに付けます。今はスタート時間を StartUptime_log に記録するだけです。これにスタート時に実行したいコマンドを追加できます。

#!/bin/bash  

PATH=/usr/sbin:/usr/bin:/sbin:/bin

LOG_SAVE=/var/log/installer/StartUptime_log
date > $LOG_SAVE

StartUptime.service をテストしておきましょう。SSH 端末で StartUptime.service を enable にして置きます。

# systemctl enable StartUptime.service

/var/log/installer/StartUptime_log が有れば削除して再起動します。再起動後 StartUptime_log を確認して下さい。起動日・時間が書き込まれていれば OK です。

ついでに StartUptime.service、StartUptime.sh の実行タイミングも見ておきましょう。用意した実験用USB を挿入して ( /dev/sdb になるはず)、/mnt 下にマウントして

# systemd-analyze plot > /mnt/plot_01.svg

これを WinPC の Webブラウザで確認してみましょう。StartUptime.service を探してみて下さい。一通りみておくと今後に参考になるはずです。

これで、鈴木のOMV7 ベースセット” 作成完了。以降、これを色々展開します。

鈴木のOMV7 ベースセットをコピーする

鈴木のOMV7ベースセットができまたので、バックアップ、予備、など幾つかコピーしておきましょう。従来はdd コマンドを直接、書いてコピーしていましたが、今回は dd コマンドをベースに コピーコマンド UsbCopy.sh を作りました。/sbin/ 下に置きます。実行フラグを忘れずに付けて下さい。

#!/bin/bash

# UsbCopy.sh  ( Usb memory Copy program )

PATH=/usr/sbin:/usr/bin:/sbin:/bin

if [ $# != 2 ]; then
    echo ""
    echo " (例) UsbCopy.sh <From device> <To device> "
    echo " (例) UsbCopy.sh sdb sdc "
    echo ""
fi

if [ $# = 2 ]; then
    dd if=/dev/$1 of=/dev/$2 bs=1024k status=progress
fi

dd コマンドに一寸、手を加えた程度で、個人的に使う為のみに作ったもので、エラー検出もいい加減です。一応パラメータは sdb sdc などのブロックデバイスを直接書く事を想定しています。使い方ですが、必ず コピー元、コピー先の順でUSB をシステムに挿入します。そうする事でデバイス名が順に振られます。例えば コピー元 = sdb, コピー先 = sdc てな具合です。それぞれのデバイス名を確認、バイト単位でコピー元、コピー先の容量確認するために最初にUSBメモリを調べます。

# lsblk -d -b 

結果、コピー元 = sdb, コピー先 = sdc の場合は

# UsbCopy.sh  sdb  sdc

で、コピーが始まります。1024kのバッファのおかげで、従来の2.5倍以上の速さでコピーできます。具体的には 32GBで、従来は 2.5時間 、この例では 1時間弱 となります。また status=progress で途中経過も表示されます。パラメータ数を間違ったり、なしにすると help 的な説明がでます。以下の例では 3231秒でコピーできています。

OMV7を使用して RAID 5 を構成する

“鈴木のOMV7ベースセット” を使って RAID 5を構成していきます。

事前準備

RAID 5 の構成を始める事前準備をします。”事前準備” にも拘わらず、ハードディスクを装着しての検討も有ります。・・なので、事前準備というよりはRAID 5 作成中・作成後に必要になる事、前提条件、必要なツール、の準備と言った方が適当かもしれません。

対象ディスクの指定方法検討

リナックスでは対象のディスクを指定するのに よくカーネルが指定するブロックデバイスを使います。良く知られた  /dev/sda, /dev/sdb ・・とかです。( ここでは確実に指定する為にフルパスで書いています。) このブロックデバイスは物理デバイスに対して、カーネルの認識順に a, b, .. と打たれて行くので、認識順が異なると実際の物理デバイスが異なったり、入れ替わったりします。RAID5,6 ディスクが構成時と再構成時で入れ替わったりするとRAID崩壊もあり得ます。RAID5,6 ディスクは常に物理的に同じ物を指定する必要があります。ディスク指定にUUIDを使ったりする方法もありますが、私はディスクのシリアル番号を使う /dev/disk/by-id/ata-MB2000xxxxx_xxxxxxxx と表す by-id を使っています。なんせディスクに打たれているシリアルをつかうのですからいつも、同じディスクは保証されています。但し、この方法は表示が長いので、扱いずらさを解消するスクリプトを作成します。

検討の為、HP Gen8 に 2TBのディスクを4台装着し、正面から見て左から 0, 1, 2, 3 と番号を振りそれぞれを DISK0, DISK1, DISK2, DISK3 とします。リストで並べた時にも順になるよう、ディスクはシリアル番号の若い順に左から装着します。リストの例では DISK0 〜 DISK3 つまりシリアル番号に対応する sda ~ sdd ブロックデバイスは( 偶然にも ) DISK0 → sda, DISK1→sdb, DISK2→sdc, DISK3→sdd に対応しています。

番号を与えると /dev/disk/by-id/ata-MB2000xxxxx_xxxxxxxx ( =by-id ) を返す 番号 – by-id 変換スクリプト _DiskId.sh を作成しました。これは各スクリプトから内部関数的に呼ばれるスクリプトでディスク番号 0 ~ 3 を与えて呼ばれると その番号に対応して by-id 文字列 を返します。なお、このスクリプトは他のスクリプトから正しいパラメータ ( =0~3 ) 付きで呼ばれる以外を想定していません。 ( つまり、内部関数的に使われる以外のエラー処理等は無い。 )

#!/bin/bash

# _DiskId.sh   ( Disk by-Id return program )

DISK0=/dev/disk/by-id/ata-MB2000GCWDA_S1X0LRA7
DISK1=/dev/disk/by-id/ata-MB2000GCWLT_P2GYRK0J
DISK2=/dev/disk/by-id/ata-MB2000GCWLT_P6J99KUX
DISK3=/dev/disk/by-id/ata-MB2000GFEMH_N4G26G7Y

PATH=/usr/sbin:/usr/bin:/sbin:/bin

if [ $1 = 0 ]; then
    echo $DISK0
fi
if [ $1 = 1 ]; then
    echo $DISK1
fi
if [ $1 = 2 ]; then
    echo $DISK2
fi
if [ $1 = 3 ]; then
    echo $DISK3
fi

例えば echo 関数に使うとディスク番号に対応した by-id を表示できます。( 使い方の例 参照 )

つぎは、DISK0~3 と by-id , sdx の関係の一覧を提示する DiskInfo.sh です。_DiskId.sh を参照しています。

#!/bin/bash

# DiskInfo.sh   ( Disk-Information program )

PATH=/usr/sbin:/usr/bin:/sbin:/bin

DISK0=$(_DiskId.sh 0)
DISK1=$(_DiskId.sh 1)
DISK2=$(_DiskId.sh 2)
DISK3=$(_DiskId.sh 3)

echo -n "DISK0 : "; echo -n $DISK0; echo -n " → "; readlink $DISK0
echo -n "DISK1 : "; echo -n $DISK1; echo -n " → "; readlink $DISK1
echo -n "DISK2 : "; echo -n $DISK2; echo -n " → "; readlink $DISK2
echo -n "DISK3 : "; echo -n $DISK3; echo -n " → "; readlink $DISK3

_DiskId.sh 以外では、スクリプト内でディスクの “なまシリアル番号” を直接記入しません。  必ず、_DiskId.sh を参照する形で by-id を取得するのでディスク交換時にも_DiskId.sh の なまシリアル番号の書き換え のみでシリアル番号を含めた by-id を 一元管理できます。使い方の例を示します

RAID を初めて作成する際には ディスク順は 0, 1, 2, 3 と構成します。構成時に DISK0 〜 DISK3 を使って構成するか、もしくはOMV7のプラグイン使用の時は sda 〜 sdd or sde がDISK0 〜 DISK3 の並び順である事を確認して構成します。再起動後のRAID 再構成時は DISK0 〜 DISK3 を使って再構成します。

この並び順の話は今後でも出てきますので、必要に応じてその都度説明 致します。

カーネルプラグイン削除

カーネルをどれを使うべきか、ハードディスク4台装着して色々検討しましたが、決定的な事はわかりませんでした。ただ、amd64系 (amd64-21, amd64-18) はリセット毎に カーネルが決めるディスクの順番 ( sda 〜 ade ) が頻繁に入れ替わり、安定性に欠ける感じでした。一方 pve 6.8 ~ pve6.2 は DISK0 ~ DISK3 が sda ~ add に割り当てられる事が多く、時々 一部入れ替わる事がありましたが、amd68系よりは安定している感じでした。 ディスク順は sda 〜 sde をメインで利用しないものの、あまり頻繁に入れ替わると混乱します。そこで、安定的でかつ最新のカーネルである pve 6.8 を使用する事にします。
カーネルを Debian GNU/Linux, with Linux 6.8.4-3-pve (pve 6.8) を残して、消去します。つぎにカーネルプラグイン自体もアンインストールします。今後 カーネル pve 6.8 を使用します。

MD (Multiple Device) プラグインインストール

RAID用に MDプラグインをインストールします。

システム → プラグイン → openmediavault-md 7.x-x をインストール

ストレージ 

準備も整いましたので、ここから RAID 5 を構築していきます。 ハードディスク( 2TB x 4 ) を装着して再起動します。再起動後にまず、各ハードディスクをスワイプします。

ストレージ → Multiple Device ( md0 作成 )

通常のディスクでは sda, sdb … に相当する “multiple devices” md0 を作成します。
ストレージ → Multiple Device → ⊕(作成) → Level RAID 5 を選んで → デバイス選択でディスクを選びます。(この時 sda、sdb、sdc、sdd の順に並んでいる事を確認する) これで md0 が作られます。
cat /proc/mdstat で md0 の構成を見る事ができます。 0番ディスクは sdaに 1番は sdb ・・にと設定通りになっています。

ストレージ → ファイルシステム

この (Multiple Devce) md0 をフォーマットして、システムにマウントするのが “ファイルシステム” の役目なのですが、RAID5 の場合ファイルシステムでうまくフォーマットできません。( バグ? ) なので、md0 のフォーマットはコマンドで行います。
# mkfs -t ext4 /dev/md0
これで、EXT4 で フォーマット済みの md0 ができましたので、これをマウントします。
ストレージ → ファイルシステム → ▶(既存のファイルシステムをマウントします。) でファイルシステム /dev/md0 が選べます。これで、md0 がマウントされます。
 # df でマウント先を見ると /srv/dev-disk-by-uuid-6ef464aa-d2e4-424a-9267-736ddd521b69  とUUIDから自動生成したらしく、やたら長い、ださい、扱いずらい。この後の共有フォルダ設定では、このフォルダ下、共有フォルダが自動で作られる。まあ、Windows から SMB 設定でアクセスするには共有フォルダまでしか見えないので、OMV7 の場合と割り切って、進める事にする。 (後で、扱いやすいフォルダにも再マウントします)

ストレージ → 共有フォルダ

共有フォルダを作っていきます。
 ⊕(作成) → 名前 RAID5-0 とし ファイルシステムは /dev/md0 [EXT4..] を選びます。相対パスは自動で RAID5-0/ となります。
で、/srv/dev-disk-by-uuid-6ef464aa-d2e4-424a-9267-736ddd521b69 下に RAID5-0 ができているのを確認します。

サービス

SMB( サンバプロトコル ) でWindows からの共有設定をします。

サービス → SMB/CIFS → 設定

サービス → SMB/CIFS → 設定 は 良く分からず WORKGROUP を有効にしました。

サービス → SMB/CIFS → 共有

サービス → SMB/CIFS → ⊕(作成) 共有フォルダを選択 → RAID5-0  ✔ ゴミ箱を有効化

ユーザー

各自 自由に設定して下さい。
ここまでで、Windows から共有できるはずなので、試してみて下さい。

他の Linux System との共有も便利に・・

他のリナックスとのデータ共有を考えた場合、共有フォルダ名が、長かったり、複雑だったりすると扱いずらいので、md0 を分かり易いフォルダ名 /array-0 に再マウントします。
# mkdir /array-0
# mount /dev/md0 /array-0
/array-0 下の共有ホルダ と 従来の /srv/dev-disk-by-uuid-6ef464aa-d2e4-424a-9267-736ddd521b69 下の共有ホルダが同じ事を確認します。
これで、コマンドベース、フルパスでフォルダを指定する場合、短い単純な名前で扱う事ができます。他にマウントポイントを array-1 , array-2 と作っておきます。他の Linux System とデータのやり取りはarray-1, array-2 に nfs で共有フォルダをマウントすると扱いやすいです。( Part 2 で 説明します。)

再起動時のRAID環境の再構築

さて、ここまでで RAID 5 環境が出来上がりましたが、再起動時はどうなるのでしょう。
実は UUID と /etc/fstab の最終行の設定を使って、OMV7を使用して構成したRAID 5 環境までは再起動時に再構築されます。ただし、追加の /array-0 への再マウント等は再構築されません。
追加分の再マウントだけを別途行うのはタイミングが難しいです。なので、/etc/fstab を用いた再構成をやめて、( =fstab の最終行をコメントアウトする )
/sbin/StartUptime.sh に md0 の再構成, md0 のマウントをさせます。StartUptime.sh に追加します。
#!/bin/bash

# StartUptime.sh ( StartUp timing program )

PATH=/usr/sbin:/usr/bin:/sbin:/bin

DISK0=$(_DiskId.sh 0)
DISK1=$(_DiskId.sh 1)
DISK2=$(_DiskId.sh 2)
DISK3=$(_DiskId.sh 3)

LOG_SAVE=/var/log/installer/StartUptime_log
LOG_DUST=/var/log/installer/StartUptime_dst

date > $LOG_SAVE

mdadm -As /dev/md0 $DISK0 $DISK1 $DISK2 $DISK3

mount /dev/md0 /srv/dev-disk-by-uuid-6ef464aa-d2e4-424a-9267-736ddd521b69
mount /dev/md0 /array-0
これで、再起動時も RAID 環境の再構築が行われます。
RAID5 ディスク4台のシステムが完成しました。
Part 2  へ続く
タイトルとURLをコピーしました