(191120)(191211)

1.概要

 RAID1を用いることにより、HDDのクラッシュが1台のみである内にリカバーすることができる。
 但し、クラッシュしたドライブの換装とRAID1のリビルド作業に関する解説記事は一般に乏しい。

2.エンクロージャを用いたRAID1の運用

 エンクロージャとして、GS3.5AX2-SU3/Rev2.0 を使用
 HDDとして、WD Blue (5400RPM, 4TB)を2台使用
 箱に日本語の解説があり、英文マニュアルが同梱されている
 2連のDIPスイッチを設定し、プッシュボタンを5秒間押すことによりモードを設定(p.7)
 本件では、DIPスイッチをOn|On と設定することにより、RAID1を指定
 動作状態は、縦に並んだ一つの電源LED(青)と、二つの動作LED(緑)で表現される
 上の緑がHDD1(左側)、下の緑がHDD2(右側)に対応する
(実際の動作)
 モード指定後、電源を投入すると三つのLEDが点灯し、緑色二つがすぐに消える
 ここでUSB経由でマシンに接続すると、緑色二つが点灯する
 マシンのOS機能を用いて、RAID1をNTFS形式でフォーマットする
 Windows7/8では、パーティションとしてMBRかGPTかを選択できる。
 MBRならばXPにも対応できるが、2TBまで。GPTは4TB可能
 LINUXでもGPTに対応。そこでGPTとする
(LEDの表示)  3個のLEDは、点灯・消灯の他に、点滅(緩・急)がある
 急点滅は0.3秒おき、緩点滅は2秒おきというが、それほど差が感じられない
 切断された状態で消灯、接続された状態で点灯
 アクセス状態で急、クラッシュ状態で緩
(これら場合、電源は点灯)
 RAID1検証中、再構築中、電源が点滅
 この時、ソース急点滅、ターゲット緩点滅
 再構築完了後、すべて緩点滅

実際のデータを用いた試行結果)

 RAID1の状態で、ノートPCのバックアップを作成
 @basicのコピーを作成(約2GB)
 この状態で、オフラインとし、エンクロージャからHDD1を抜き去る
 HDD1を玄続を用いてPCにUSB接続
 バックアップと@basicがあることを確認
 HDD1のみ、@basicを削除し、@Androidとその配下をコピー
 HDD1をRAID1エンクロージャに戻す
→@basicはなく、@Androidがある
(ここで、HDD2を外して、玄続で内容を見る
→@basicは無くなり、@Androidも無い
(HDD2をエンクロージャに戻す)
 表示されている@Androidの配下のファイルを開く
→検証動作を示すLEDの点滅
(再びHDD2を外し単独で調べる)
→アクセスした@Androidのファイルが存在する

小結

 タイムスタンプが異なるだけでは再検証は始まらない
 アクセスしたファイルが異なる時、新しい方に同期する
 換装するドライブがフィーマットされていない場合どうなるか、等について今後の検証課題とする
 クラッシュした場合、正常な方を取り外して、バックアップを作成する。
 クラッシュした方のHDDを換装する。
 正常な方をエンクロージャに戻す。
 再構築の動作を開始する(トリガー方法未詳)。
(191121追記)

更なる追試1

 RAID1上でバックアップと@Androidが見えている状態から出発
 HDD2を外して、玄続でPCにUSB接続
 @Androidを削除し、@basicをコピー
 HDD2をRaid1に戻す
→バックアップと@Androidが見え、@basicは見えない
(つまり、本処理系においてはHDD1とHDD2は非対称である)

更なる追試2

 バックアップと@basicがあるHDD2をスロット1に設置し、HDD1をスロット2に設置する
→認識しない。  この状態で再度USB接続する
→認識し、「問題が見つかりました。修復を...」とのプロンプト
 修復(エクスプローラのツール)約1分で完了。
 この状態で、RAID1には、バックアップ、@Androi、@basicがある。
 @basicにはreadme.txt等は存在するが、サイズが0バイトとなる。
 二つのHDDについて、玄続で見る
 HDD1: chkdsk
  3815317MB 全ディスク領域
  85394888KB 6075 個のファイル
 HDD2:chkdsk→エラーを検出しました→ツールの修復を実施
  3815317MB:全ディスク領域
  88679152KB 6075個のファイル

更なる追試3

 HDD2のパーティションを削除しエンクロージャに戻す
 電源ONで3灯→1灯電源のみ、は同じ
 USB接続で3灯となるのも同じ
 ドライブがUからDとなった
(特段、再構築動作等は起動しない)
 この状態で、HDD2を玄続で見る→パーティションの無い状態のまま
 そこで、再びパーティションを切り、フォーマットをかける
 RAID1に戻し、コピー操作等を行う。
→長いミラーリングの表示があるが、単独で見るとエラー、修復をかけると消滅する。

更なる追試4

 HDD2のパーティションを削除し、RAID1に戻して書き込んでみる。エラーは出るか?
→結果:出ない
 考察:恐らく、書き込みは同一セクターに同一内容が書き込まれれば成功扱い
  読み出しは、同一セクターが同一内容であれば成功扱い
  (違っていれば、HDD1の内容がHDD2の内容にコピーされる)   とすれば、全てのセクターを読み出す処理、または全てのファイルを読み出す処理によりクローニング可能

更なる追試5

 >chkdsk/scan d: /r
 を実行して、全てのセクターを読み出したときにクローニングが行われるのか?
→結果:約6時間で完了、エラーなし
 3815317MB:全ディスク領域
 163427652KB:11666個のファイル
 2868KB:353個のインデックス
 0KB:不良セクター
 202335KB:システムで使用中
 65536KB:ログファイルが使用
 3655520MB:使用可能領域

 4096バイト:アロケーションユニットサイズ
 976721407個:全アロケーションユニット
 935813194個:利用可能アロケーションユニット

ドライブd:には、
@Android
@basic
@e
WindowsImageBackup
の4ディレクトリが存在
3,833,036,636,032バイトの空き領域

ここで、HDD1とHDD2を玄続する。
HDD1:
・・・の4ディレクトリが存在
3,833,036,636,032バイトの空き領域
は、同様。
chkdskの結果
3815317MB:全ディスク領域
163427660KB:11667個のファイル(1個多い)
2872KB:353個のインデックス
0KB:不良セクター
202335KB:システムで使用中
65536KB:ログファイルが使用

 4096バイト:アロケーションユニットサイズ
 976721407個:全アロケーションユニット
 935813191個:利用可能アロケーションユニット(3少ない) HDD2:
ドライブDととしては認識されない
ディスクの管理をすると、3725.90GBの未割り当て領域となっている

更なる追試6

HDDをフォーマットし、Dドライブとする
その上で、更の状態で、全てのファイルをスキャンする(コピー等)

更なる追試7

 RAID1ではホットスワップができるとマニュアル記されている。
 電源ONでUSB接続された状態でHDD2を抜くと、緑1だけが点灯した状態になる
 ここでHDD2を差すと、リビルドが開始される(青、緑1緩点滅、緑2急点滅)。
 また、電源ONでUSB接続された状態でHDD1を抜くと、緑2だけが点灯した状態になる
 ここでHDD1を差すと、リビルドが開始される(青、緑1緩点滅、緑2急点滅)。
 リビルドが終了すると、3灯共、緩点滅となる。

論理エラー状態のHDDペアを使用
USBに接続された状態で電源ON
→一瞬緑が点灯し消える
 しばらくして緑2灯が交互に点灯
 その後2灯が点灯した状態で安定
(論理エラーだが、HDD1の内容で利用できる)
HDD2を抜く
→緑1、2が消える
 緑1のみが再度点灯し、アクセス可能
 しばらくして緑1も消える
ここでHDD2(元の)を刺す
→電源と緑2が3秒サイクルで点灯、緑1が0.3秒サイクルで灯火
(これは、マニュアルに解説されたIDENTITY, HDD2のREBUILD時の表示)
→約12時間程度で完了を示す表示に変化(3灯とも緩点滅)

更なる追試8

追試7でリビルド完了後のHDDペアを使用
USBに接続された状態で電源ON
→一瞬緑が点灯し消える
 しばらくして緑2灯が交互に点灯
 その後2灯が点灯した状態で安定
HDD1を抜く
→緑1、2が消える
 緑2のみが再度点灯し、アクセス可能
 しばらくして緑2も消える
ここでHDD1(元の)を刺す(内容は正しい)
→電源と緑1が3秒サイクルで点灯、緑2が0.3秒サイクルで灯火
(これは、マニュアルに解説されたIDENTITY, HDD2のREBUILD時の表示)
→PCがスリープ状態になると、リビルド中の表示が継続しつつ、HDDが回転停止となる。
 PCをウェイクしてUSBを再接続すると、しばらく検討後、青が点滅開始し、リビルドを継続する。

 リビルド中を示すLED表示は、HDDの回転が停止した休眠中も行われる。
 実際のリビルドは休眠中は停止しているらしい。
 リビルド中に休眠した状態で、USBを抜くと、電源青だけ点灯となる。
 USBを再接続すると、通常の初期プロセス(2緑点灯→点滅)の後にリビルド中の表示に戻る。
 しばらくすると、冷却ファンが停止し、またしばらくするとモーターが停止する。
 この時、PCからファイルにアクセスしても帰ってこない。
 また、時々思いだしたようにモーターが再開する。ファンは再開しない。
 モーターが回転している間は、ファイルにアクセスできる。
3815317MB:全ディスク領域
113728KB:6個のファイル
8KB:12個のインデックス
0KB不良セクター
185439KB:システムで使用中
65536KB:ログファイルが使用
3815025MB:使用可能領域

更なる追試9

リビルドの途中で、LED表示のみリビルド中を維持しながらモータが停止する場合がある
そこで、PCからあるファイルにアクセスすると、キャッシュにあるファイル以外すぐに帰って来ない
しかし、しばらくすると帰って来る。その時点ではモータが回っている
そこで、バッチファイルを走らせて、モータが停止せずファイルアクセスをすぐ行う状態を維持
このために、試しに5分おきにchkdskを実行するバッチファイルを走らせる
-------------------
:start
chkdsk d:
timeout /t 300
goto start
-------------------
なお、chkdsk は、大量にファイルがある場合、ディスク破損の懼れがある場合には不適
バッチファイルの制御コマンドは以下のようなものがある
if [not] 文字列1==文字列2 コマンド
goto ラベル
:ラベル
exit
goto :eof と同じ意味
call 別ファイル
call 1ファイル内

→HDD1のリビルドが数時間で終了し、3灯とも緩点滅の状態となる
ここで、USBを脱着すると、通常の接続状態(3灯点灯)の状態となる

小結2

 この装置の読み出し動作は、HDD1から行われる。その時、HDD2の同一セクターの内容が異なれば修正される。
 この装置の書き込み動作は、HDD1のフォーマットに従って両方ドライブの同一セクターに対して行われる。  従って、HDD2が異なった内容を持っていれば、ファイルシステムの一貫性が失われる。
 ミラーリングの内容は、物理的なセクター・トラックの書き込みのみと推測
 HDD2の全体フレームが壊れているか未構築の場合には、単独ドライブとして認識ができない
 エラー修復を行うと、ミラーされていた情報はすべて削除される

更なる追試10

 HDD2をホットスワップしてリビルドを開始する方法で、HDD2のフォーマット状態を変えて見る
 HDD2に何もパーティションが無い状態
→HDD1と同じパーティション、フォーマット、ファイル構成に
 HDD1とHDD2が異なるパーティション構成
 ・HDD1:40GBのexFAT, 400GBのNTFS
 ・HDD2:300GBのNTFS,300GBのNTFS
→HDD1と同じパーティション、フォーマット、ファイル構成に
Q.もし、「事ある毎に」ミラーリングするとなれば、すべてのセクタートラックにアクセスする ディスクチェック等でどうなるか、試してみる価値があるのでは?

3.RAIDストレージ格納内容

データ

全史料目録と所在地:シンプルなテキストファイル
1.写真
 んて、BUはRAID1(300G中6.1G空き)
2.図面スキャン
 RAID1
3.衛星画像
 RAID1
4.案件別
 すら:OurDocuments(300G中45G空き)
5.メール
 すら
6.USBメモリ
 SATA1
7.DVD
 SATA2

開発環境とソース

(1)WEBアプリ:W2012マシン
(2)SIM:VS2005/W8マシン
(3)ECLIPSE:W8マシン
(4)WiX:W7マシン(W10マシン中のオフグリッドHDDで休眠中)
ダウンロードの中に手記多数:同上
(5)WARASI:アルマジロ+ATDE6/W8マシン(黒童USBメモリ中にイメージ、空きが少ない)
(6)温湿度計測データはW8マシンTIFFプロジェクトの中に解析プログラム
(7)ラズパイ:スタンドアロン

4.バックアップ等の処理とコマンドについて

HDDのフォーマット

 LinuxのHDDのフォーマットは、ext4, xfsである。
(1) ext4 : 最大1EB/ドアリブ、16TB/ファイル
(2)xfs : CentOS7のデフォルト形式。最大8EB/ドライブ、8EB/ファイル
 Windows系のフォーマットも読み書きできる
(3)FAT : 古典的。2GB/ドライブ、2GB/ファイル
(4)FAT32 : 2TB/ドライブ、2GB/ファイル
(5)NTFS : 256TB/ドライブ、16TB/ファイル

命名方法

 ドライブ: sda, sdb, sdc ...
 パーティション:sda1, sda2, sda3....

コマンド

フォーマット
#mkfs -t ext4 /dev/sdb1
#mkfs -t xfs /dev/sdb2
マウント
#mount /dev/sdb1 /mnt/memory1
#mount /dev/sdb2 /mnt/memory2
一覧
#df -ht ext4
 191128現在、ext4形式は、rootとSSDのみ
#df -h ファイルシステム総覧
アーカイブ
$tar -cvzf [アーカイブファイル名] ディレクトリ名
-c:新規
-v:結果表示
-z:gzip圧縮
-f:ファイル名指定
[例:保存先]$tar -cvzf log.tar.gz /var/www/log
現状(191128):media/pi/ELECOM USBHDD/tar配下に、
log.tar.gz 19,888,978
html.tar.gz 516,472
ssd.tar.gz 9,179,472,021
また壊れた禅データも、ELECOM USBHDD/zen配下に