HP MicroServer Gen8 2台で 48TB RAID Z2 を実現【Part 3】

HP ProLiant MicroServer Gen8(以降 HP Gen8)を2台連動、8TB のハードディスクを8個使用して、8TB x 6 = 48TB + 2個エラー訂正ディスク → 48TB RAID Z2 を実現しました。PC2台、 HP Gen8-Master と HP Gen8-Slave を Ethernet でつなぎ プロトコルは AOE [ATA – over – ethernet] (以降 AOE) を使います。既にPart2で実現していますので、Part3では追加、修正、メンテナンス情報、その他を順次、加筆して行きます。

追加、修正

【2023年3月20日】スピンダウン機能 hd-idle 導入

以前から感じていたが、標準で付いている電源管理のスピンダウン機能にバグがあるらしい。それも致命的に悪いらしい。筆者もスピンダウンから復帰時に何度も失敗するのを感じている。で海外で解決策を提示している人がいる。解決策 hd-idle を導入する。Master Slave 双方のUSBメモリーに導入する。ssh 端末から以下の3行を実行。

# sudo apt-get install apt-transport-https
# wget -O - http://adelolmo.github.io/andoni.delolmo@gmail.com.gpg.key | sudo apt-key add -
# echo "deb http://adelolmo.github.io/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/adelolmo.github.io.list

で、up-date, install する。

# apt-get update
# apt-get install hd-idle

auanasgheps の頁にはマニュアルインストールの方法も掲載されているが、メンテナンスを考えると上記の方法で導入しておくと、その後 update がネットで可能となる。さて、上手く導入できたら、設定ファイル /etc/default/hd-idle を開く。

(1) 上の方  START_HD_IDLE=false → START_HD_IDLE=true に変更する
(2) 下の行の  # HD_IDLE_OPTS="-i 180 -l /var/log/hd-idle.log" の #を取って
             →  HD_IDLE_OPTS="-i 180 -l /var/log/hd-idle.log" に 変更する

これで、意味は 全てのディスクがスピンダウンまで 180秒  /var/log/hd-idle.log にスピンダウン歴を記入する。である。スピンダウン 180秒は短いので、動作確認したら 1200秒 (20分) 位に変更する。

次に、hd-idle SERVICE SETUP を行う。

# systemctl enable hd-idle
# systemctl start hd-idle

hd-idle に関してはこれで、動作する。所で、ERROR が起こると service が mask される。解除は

# systemctl unmask hd-idle
# systemctl start hd-idle
# systemctl enable hd-idle

で、出来るはず。

所で、標準の電源管理のスピンダウン機能の設定も必要。OMV5の管理パネルにアクセスして「ストレージ」→「ディスク」→「編集」より、各ドライブに対して

①高度な電源管理(APM)は 128(スタンバイを使わない最小の諸費電力) ~ 255(無効)のどれかに設定
②スピンダウンタイムは 無効
にします。要するにOMV5側からスピンダウンさせないという事です。

【2023年3月20日】HP Gen8 (Xeon E3-1220L v2 Memory 8GB) の消費電力

hd-idle のスピンダウン時間を計測する為に、消費電力の変化を見た。HD4個のスピンドル回転時で 約50W、HD4個のスピンタウン時で約40W であった。

測定は SANWA ワットモニターを使った。商品の写真例を載せる。

 

 

 

【2023年4月06日】共有ホルダーマウント機能 cifs 導入

Linuxには Samba ネットワークストレージをマウントする機能があり、(以下 失敗例)

# mount -t smbfs //raidz-0/disk /mnt/nas     ←  失敗・うまく行かない

でマウントできるはずと 2004年頃の記事 に書かれていた。やってみるとうまく行かない。なにかソフトを導入する必要があるのかな。と色々調べた。

  1. 今は cifs を使う。
  2. 使い方は ほぼ smbfs と同じ。

らしい。なので、まずはソフト導入。

#apt-get install cifs-utils -y

で早速、username, password 等も入れて、過去に作った RAIDZ-1 をマウントしてみた。

うん、こりゃいい。これで、Linuxの CUI コマンドや CUI のファイラーが使える。実際のファイルの移動・複写 は  ‘ ファイルの移動・複写 ‘ で詳しく説明します。

メンテナンス

【2023年3月22日】ディスク故障時のシュミレーション Master側

ディスク故障時の交換シュミレーションを行う。故障した時にあたふたしない為にも正確な手順を残して置く。Master側でのディスク故障の手順です。

ディスク故障時にはSSH端末からコマンドで操作する。入れ替え時に使うコマンドは 4 つのみ。

  1. zpool status  ← プールの状態を見る
  2. zpool offline <プール名> <当該 HD の ID>  ← HDを OFFLINE
  3. zpool online <プール名> <当該 HD の ID>  ← HDを ONLINE
  4. zpool replace <プール名> <被交換HD の ID> <交換HD の ID> ← HD置換

以下に具体例を示す

【2023年3月22日】ディスク故障時のシュミレーション Slave側

ディスク故障時の交換シュミレーションを行う。故障した時にあたふたしない為にも正確な手順を残して置く。Slave側でのディスク故障の手順です。

ディスク故障時にはSSH端末からコマンドで操作する。入れ替え時に使うコマンドは 2 つのみ。

  1. zpool status  ← プールの状態を見る
  2. zpool replace <プール名>  /dev/etherd/<交換HDのdevicename>    ← HD置換

寧ろ Slave側のみで行うディスク情報の編集がメインになる。以下に具体例を示す

【2023年4月06日】Timeout Mismatch の確認 & 対策

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

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

手持ちの NAS 用ディスクを調べた結果は、まず本システムに使っている2種類 (=それぞれ4台)は

Seagate IronWolf      Model: ST8000VNXXXX-XXXXXX
Seagate NAS HDD   Model: ST8000VNXXXX-XXXXXX

# smartctl -l scterc /dev/sda
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-5.10.0-0.deb10.16-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

SCT Error Recovery Control:
Read: 70 (7.0 seconds)
Write: 70 (7.0 seconds)

適切な値 70 (=7.0 秒) が設定されている。本システムでは適切であったが、私の手持ちのディスクでは不適切値があった。その場合

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

で適切値を設定できる。

TOSHIBA MN08ADA800  Serial Number: XXXXXXXXXXXX    ディスクの例

# smartctl -l scterc /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.4.157-1-pve] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smartmontools.org

SCT Error Recovery Control:
Read: Disabled
Write: Disabled

# smartctl -l scterc,70,70 /dev/sda
smartctl 7.2 2020-12-30 r5155 [x86_64-linux-5.4.157-1-pve] (local build)
Copyright (C) 2002-20, Bruce Allen, Christian Franke, www.smart

SCT Error Recovery Control set to:
Read: 70 (7.0 seconds)
Write: 70 (7.0 seconds)

このディスクはNAS用であるが、Power off で設定がクリアされる。従って、毎回 Power on 時にSetする事が必要である

プールの移動 (RAID Z2 を再構成する)

【2023年3月23日】zpool import / export の使い方

この項目は、ストレージプールの作成 を全面的に参考にしています。かならず、読んで下さい。

RAID を ZFS で構成するにあたり、以前より非常に気になっていた事があります。全体の構成構造やプール名が分かっていて、構成要素のディスクデータも有るが、なんらかの理由でzfs zpool プログラムを新しく再構成しなければならない場合どうすれば良いか、です。例えば、プログラムの一部を消してしまい、USBメモリーが立ち上がらない。RAID の構成CPU(=PC) を変えたい。など色々考えられます。

検討の結果、 zpool import / export を使いこなす事でなんとかなりそうです。実際の運用の場面では新品ディスクを導入時以外はデータクリアされる zpool create (=MakeTank.sh) より データが保持される zpool import / export を使う事になります

今、USB1メモリーで動いているSystem (System over USB1) を (System over USB2) に移動 (=再構成) する事を考えます。System over USB2は USBメモリーだけ入れ替えても良いですし、全く別のPCに構成要素のディスクを繋ぎ直してもかまいません。もちろん、USB2は USB1 同様 全てのディスクにアクセスできるのは前提です。プール名は tank でマウントポイントは /zfs です。最初はお行儀よく、USB1 System で export して、USB2 System で import する事を考えます。

この例では、USB1 で exprot してから USB2システムを立ち上げてますが、export した後なので、システムは立ち上げるだけでは、Raid Z2を構成しません。でもimport できるか調べると可能なので、import しています。exprot 自体が 他のシステムに移す事が目的のコマンドですので、importはスムーズに行きます。では、USB1 で export してから USB1システムを立ち上げたらどうでしょう。すぐ判りますが動作は同じです。USB1 と USB2 で export → import で変わる要素はありません。

では次に USB1 で export しないで、つまり動作中にいきなりシャットダウンして USB1 で立ち上げたらどうでしょうか。これは所謂、再起動です。答えは勿論 RAID Z2 が立ち上がります。が実は 再起動の条件の時に Slave Master の順で起動する必要がある話をしました。これは zpool が プール=tank を構成する時にすべてのドライブにアクセスできないといけない為です。もし、順が入れ替わると  プール=tank を構成するタイミングで e1.0からe4.0 にアクセスできず、プール=tankの構成に失敗します。結果、RAID Z2 は立ち上がりません。でも、e1.0 〜 e4.0 が立ち上がった頃 (具体的には Slave が立ち上がった後) zpool import で調べると import 可能なのが解ります。import を実行すれば、RAID Z2 を構成できます。Master Slave 順 (=逆順)で立ち上げた時の例を以下に示します。

では、最後にUSB1 で export しないで、シャットダウン。USB2 で 立ち上げたらどうでしょう。USB2はUSB1 の情報 (プール名、プール構成等) は知りませんので、当然立ち上がりません。zpool import をすると -f 付き(=強制) でimport すると RAID Z2 が構成できると親切に教えてくれます。例を示します。

所で、-f 付きでの強制import は多くの場合RAID を構成していなかった、新しい USBメモリーでRAIDを構成する事になると思います。新しいUSBメモリーですので、当然 RAIDZ2-0 を構成したあとに共有ホルダに設定して、USER登録、SMBセッティングが必要です。(既に設定してしてあるUSBメリーを使い回す場合は別です。)

結局 zfs zpool 再構成は起動後に zpool import で調査して、指示に従えは再構成できます。

使用ハブポートの削減 ( 4port → 2port )

【2023年3月27日】ポートのブリッジ接続

使用ハブポートの削減についてはブリッジ接続を汎用のソフトで実現する予定だったので別記事にするつもりでした。検討中にOMV5にブリッジ接続の機能があり、簡単にポート削減できる事が判明しました。なので、別記事ではなく、ここで、簡単に記述して置きます

左側が現在のポート使用の状況です。iLO-M, eno1-M, iLO-S, eno1-S と4ポート使用しているのが解ります。これを右側、iLO-M, eno1-M の2ポート使用に削減します。iLO-S 入力は 低コストのUSB-Etherアダプターで駆動されます。

低コストUSB-Ether アダプター

コストを重視したので、USB2.0対応、最大転送速度100Mbpsである。型番は分からない。(あやしい..笑)

(AliExpress 購入時 580円)

似た仕様のアダプタを導入する。iLO-S の駆動用。速度は必要ないので、10Mbps 以上あれば良い。 (今時 10BaseT は見つけるのは難しい..笑)

 

動作を説明します。Master 側で eno1-M, eno2-M, enx00e04c369a4e (以下 enx00)をブリッジ接続します。ブリッジ接続したポートには同じデータが流れます。この3つのポートでバーチャルにハブを構成していると考えると分かりやすいと思います。ハブを構成しているので、3つのポートを入れ替えて繋いでも全く同じに動作します。但し、幾つか制限があります。当たり前ですが、転送速度の最大値はポートのハードウェアに依存します。eno1-M, eno2-M は 1Gbps enx00 は 100Mbps です。ですので、enx00 は遅くとも良い iLO-S に結線します。eno1-M, eno2-M は入れ替え可能ですが、必要はないので、eno1-M をハブへ、eno2-M を eno2-S へ接続します。また、この機能はOMV5のブリッジソフトウェアが動いている時しか使えません。MasterのOMV5 停止中/起動中は 当然使えません。実はもう一つ USB-Etherアダプターを使ってiLO-M も削減する事が可能です。そうすると起動中にどんな状態なのかまったくモニターできなくなります。なので、iLO-M はモニター代わりにハブに直接つないでいます。iLO-S は MasterのOMV5停止中/起動中はモニターできませんが、まあ大体の様子やタイミングは Master側がモニターできる事で推定できます。

通常ブリッジ機能は専用のソフトを使うのですが、一般的に専用ソフトにIPアドレスを振ります。専用ソフトとOMV5は異なるソフトなので、PC内部でバーチャルにIP接続する必要があります。まあ、地味に面倒なのですが。 有難い事にOMV5に組み込まれたブリッジ機能を使う事で、ブリッジに振ったIPアドレス=OMV5のIPアドレスとなりますので、余計な手間が省けます。

結局 eno1-M → eno2-M → eno2-S 、eno1-M → enx00 → iLO-S とネットワークに繋がります。また、eno1-M からブリッジソフト = OMV5 に繋がっていますので、eno1-M は NASの入り口にもなります。Slave 側は ネットワークへの接続を eno1-Sからeno2-S に切り替えます。

OMV5動作を維持しつつ 繋ぎ替えるのでブリッジ設定手順には気配りが必要です。まず、USB-Etherアダプタのドライバーが必要です。私は後から、ドライバを導入する方法が良くわからないので、USBアダプタを繋いだ状態で、自動でドライバを導入するべく、USBメモリーを作りなおしました (= OpenMediaVault5で RAID Z, RAID Z2 を実現【Part 3】 を再度実行する)。 これで、OMV5制御パネルからは eno1 eno2 enx00 が見える事になります。

Master の OMV5にeno1(192.168.11.41)で入り ネットワーク → インターフェースを開くと eno2, eno1 が上記になつている。まず、eno2の設定 (DHCP設定) を削除してeno2を設定から解放します。

表示は eno1 のみとなります。+追加 → ブリッジ を選ぶとブリッジ接続を追加のパネルが開く。

デバイス enx00, と先ほど解放した eno2 を選び,アドレスは例えば 192.168.11.42 を設定する。アドレスは他のIPと被らない事。

 

 

 

 

 

 

 

 

ブリッジ接続を追加すると自動的にブリッジ名 br0 が割り振られ設定される。

これでブリッジ br0( IP=192.168.11.42 Port=eno2,enx00 ) ができた。ハブに繋がっているのは eno1なので削除して設定を開放できない。ログアウト → ハブへの接続を eno1 から enx00 に替える → ログイン ( 192.168.11.42 ) → eno1 の接続を削除してeno1 を設定から解放します。

br0 の編集を開いて、eno1 を追加、ついでに 192.168.11.42 を 最初のアドレス 192.168.11.41 にしておく。これで、br0 (IP=192.168.11.41 Port=eno1,eno2,enx00) ができた。ログアウト → ハブへの接続を enx00 から eno1 へ替える, enx00 は iLO-S に接続 → SlaveのiLOモニターソフトの動作確認 → ログイン (192.168.11.41) Master の OMV5 動作確認 → Slave 側ネットワークへの接続を eno1-S から eno2-S に切り替え動作確認。細かい事だがハブへの接続切り替えの注意としてはブリッジ接続したポートを2つ以上同時にハブ接続すると挙動不審になりますので、挙動不審時は2つ繋いでいないか調べましょう。

以上で終わりだが、あとは 再起動などして使い勝手を確かめよう。

 

 

 

 

 

 

 

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