ZFS on Linux のバージョンアップ手順

ZFS on Linuxのバージョンアップが失敗したので試行錯誤した手順メモ。
ZoL公式のupgrade手順やってもうまくいかなかった。
ちなみに環境はCentOS7.3

RHEL/CentOS 7.3 kmod package upgrade
Systemd Update

以上の手順を踏んだ後に

# dkms status
Error! Could not locate dkms.conf file.
File: does not exist.

とか

# dkms status
spl, 0.7.1, 3.10.0-514.26.2.el7.x86_64, x86_64: installed
zfs, 0.7.1, 3.10.0-514.26.2.el7.x86_64, x86_64: installed (WARNING! Diff between built and installed module!) (WARNING! Diff between built and installed module!) (WARNING! Diff between built and installed module!) (WARNING! Diff between built and installed module!)

みたいな結果になって、うまくZFSのモジュールが読み込めない。zpoolがマウントできない。
どうもupgradeの手順だけだと、dkms関連のファイルが残るっぽい。
以下の手順でいけた。古いカーネルの削除はお好みで。

# yum remove zfs zfs-kmod spl spl-kmod libzfs2 libnvpair1 libuutil1 libzpool2 zfs-release kernel-devel
# rpm -qa | grep kernel
# yum remove {アクティブでないカーネル}
# rm -rf /usr/module/{アクティブでないカーネル}
# rm -rf /var/lib/dkms

これで根こそぎ削除されるはず。
次にインストール

# yum install https://download.zfsonlinux.org/epel/zfs-release.el7_3.noarch.rpm
# yum install kernel-devel zfs
# modprobe zfs
# zpool import -a
# zpool status

modprobe zfsで以下のようにうまくいかない場合は、こうする。

# zpool import -a
The ZFS modules are not loaded.
Try running '/sbin/modprobe zfs' as root to load them.

# modprobe zfs
modprobe: ERROR: could not insert 'zfs': Unknown symbol in module, or unknown parameter (see dmesg)

# dkms remove -m zfs -v 0.7.1 --all
# dkms remove -m spl -v 0.7.1 --all
# dkms --force install -m spl -v 0.7.1
# dkms --force install -m zfs -v 0.7.1
# dkms status
spl, 0.7.1, 3.10.0-514.26.2.el7.x86_64, x86_64: installed
zfs, 0.7.1, 3.10.0-514.26.2.el7.x86_64, x86_64: installed

あとはプールのupgradeをしておしまい。

# zpool upgrade neo
# zpool upgrade morpheus
# zpool upgrade trinity
# zpool upgrade architect

smartmontools self-testのスケジュール設定 (smartd.conf)

smartmontoolsのsmartd.confのself-testスケジュール設定、
デフォのコンフィグには曜日と時間の設定例しかなかったのでメモ。

man – SMARTD.CONF

-s REGEXP
Run Self-Tests or Offline Immediate Tests, at scheduled times. A Self- or Offline Immediate Test will be run at the end of periodic device polling, if all 12 characters of the string T/MM/DD/d/HH match the extended regular expression REGEXP.

T/MM/DD/d/HH

T: テスト種別
  S:Short self-test: 低精度短時間(定期検査に向く)
  L:Long self-test: 高精度長時間
  C:Conveyance self-test: 運搬過程で障害が発生しやすいセクタの検査
  O:Offline immediate-test:オフライン緊急テスト???

MM: 月(01-12)

DD: 日(01-31)

d: 曜日(0-7) 月(1)~日(0,7)

HH: 時間(00-23)

例: Shorttestを毎日00時、Longtestを毎月1,15日00時に実施

DEVICESCAN -a -o on -S on -s (S/../.././00|L/../(01|15)/./00)

テスト種別がS,Lの他にもあるの初めて知った。
HDD買ったら、まずは種別C→Lの順で検査してから運用に回した方がいいかもね。

Seagate Archive HDD ST8000AS0002 の状況

去年の2月頃からちょいちょい買いだしたSeagateのSMR方式 Archive HDD「ST8000AS0002」。
他のPMR方式のHDDと混在させてプールを作ると、こいつが足手まといになって、
パフォーマンスが落ちるので、現在では8台をZFS Mirror(2×4)で構成してる。

使い方は24/365で稼働で、録画したTV番組データをPMRのプールに一旦保存して、
ドラマならタイトルが全部揃って、残しておくものだけ、SMRのプールに移動させてる。
加えて毎日のS.M.A.R.T Self-test(short)、
週1回のSelf-test(long)と、
月1回のzpool scrubを掛けているけど、今まで1台も故障していない。

壊れやすいっていう評価もあるみたいだけど、使い方が良くないんじゃないかと思ってる。
ハード的には、センサーの構成はエンタープライズ級だけど、
それ以外の磁気ヘッドとかその他はデスクトップ級の構成だから、
頻繁に読み書きさせるとST3000DM000みたいにすぐ壊れるかも。
(Seagateのラインナップのスペックはこちら)

Archiveってシリーズ名通りの使い方限定で、使える人は使ってって感じかね。

Load_Cycle_Countは購入してからじわじわ上昇中。

st8000as0002_160425

うちの環境だと、1日あたり100くらいカウントしてるみたい。
100程度なら、5年運用しても182,500くらいにしかならないから、
仕様の上限300,000には余裕で届かない。

今の使い方には合ってるみたいだから、このまま使い続けるつもり。

[Docker] agettyのCPU使用率が高い

このブログをDockerのコンテナ(Centos7)に移設して2日くらい経って、
Dockerのホストサーバ(CentOS7)のCPU使用率が高くなっている事に気付いた。

tanker_util_160523

top - 18:28:32 up 2 days, 47 min, 5 users, load average: 0.99, 1.02, 1.08
%Cpu(s): 12.0 us, 38.5 sy, 0.0 ni, 49.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32818248 total, 11518944 free, 17437140 used, 3862164 buff/cache
KiB Swap: 511676 total, 511676 free, 0 used. 13301472 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5822 root 20 0 8028 836 716 R 100.0 0.0 2925:31 agetty

ホストサーバからtopコマンドで確認したら、agettyのCPU使用率が異様に高くなっていた。
調べるとdockerのバグ?の模様。

Bug 1046469 – docker privileged mode with cmd /sbin/init – agetty & high cpu

docker runで–privileged, /sbin/initしてると発生するみたい。
解決方法としては、対象のコンテナにログインして、
agetty.targetとsystemd-udevd.serviceを停止,自動起動無効にする。
これで暴走しなくなった。

コンテナにログイン
# docker exec -it [container name] /bin/bash

agettyの状態確認、停止、自動起動無効化
# systemctl status agetty.target
# systemctl stop agetty.target
# systemctl disable agetty.target
# systemctl status agetty.target

systemd-udevdの状態確認、停止、自動起動無効化
# systemctl status systemd-udevd.service
# systemctl stop systemd-udevd.service
# systemctl disable systemd-udevd.service
# systemctl status systemd-udevd.service

で最後にコンテナの停止/開始

# docker stop [container name]
# docker start [container name]

Seagate 8TB HDD ラインナップ

Seagate 8TB HDDの3ラインナップが発表されたようで。
エンプラ系ですね。

Seagate Announces a Trio of 8TB Drives for Enterprise Applications

今回注目なのが、ENASは1.33TBプラッターx6PMRなHDDであるって所。
さすがSeagate、作れるんですね。これDesktopにも落ちてくるのかな。
お値段までは発表しなかったみたいだけど、まあエンプラだから高いでしょう。
HGSTの8TBヘリウムよりは安くなるかな。
ぜひWDにもPMRな8TBを出してもらって、競争して欲しいもんですね。

各シリーズの仕様表みてると、ArchiveってDesktopと仕様が似てるけど、
センサーはENASみたく振動と湿度の載せてるのね。個数はわからないが。
モーターとディスクはハイエンドだと上下で固定(WDでいう黒蓋?)しているけど、
Archiveは下のみ固定でディスクは6つのボルト固定。ヘッドもディスクもデスクトップ並。
こういう所でコスト落としてるんだろうかね。

Archive 8TB(ST8000AS0002)は4台保有しているけど、
普段はPMRのHDDたちとまったく変わらなく使えてますね。
使い方が録画ファイル倉庫用のファイルサーバ(ZFS Mirror)なんだけど、
Scrubも読み取りだけだからか、全然遅くない。
Sambaで録画ファイルとか書き込ませてても、全然遅く感じない。
(録画PC~ファイルサーバ間のリンクが1Gbpsだからってのもある)

ただ故障なんかでHDDをリプレースする場合は、時間がかかりそう。
この前3.2TB詰まったZFS MirrorのWD Red 4TBをArchive 8TBにリプレースしたんだけど、
Resilver完了するまで31時間掛かった。
3.2TBでこれだけってことは、もっと詰まってると3,4日掛かってしまうかもね。
Resilver中に片肺側も壊れたら…考えるとヒヤヒヤもんですな。

HDDをたくさん積める自作NAS (ハード編)

MicroserverでNAS作ったり、QNAPとかSynologyのNAS買ったりしてもいいんだけど、
前者はHDDがあまり積めないのと、後者は高い割に最大でも1つの筐体で10台くらいしかHDD積めないので、
自作NASを作ってHDD積みまくることにした。

【自作NAS要件】
① 既成品よりHDDを多く積める (今回はSATA 22ポート)
② NASの基本サービス(Samba, DLNA, NFS, iSCSI)が利用できる
③ ファイルシステムにZFSが利用できる
④ ③を安定的(精神的な部分も含め)に運用できるようECCメモリを実装できる
⑤ NICを束ねる事(bonding)ができる (1Gbps x2)

以上の要件を踏まえて材料集め。

【材料】
CASE: Antec Nine Hundred AB (家にあったケース、確か3.5インチベイは6つ)
CPU: Intel Pentium G3258 (3.2GHz Dual-Core, ECC対応)
M/B: ASUS P9D WS (Unbuffered ECC対応, SATA3 x6ポート)
MEM: Kingston KVR1333D3E9SK2/16G x2 (Unbuffered ECC)
PWR: Corsair RM1000 (1kW)
HBA: LSI SAS 9211-8i x2 (PCIe[x8] SATA3 8ポートx2)
SSD: CSSD-S6T128NHG6Q x2
HDD (新規購入の他にQNAPで使っていたHDDも流用)
WDC: WD30EFRX x6, WD40EFRX x3, WD60EFRX x4, WD60EZRX x2
Seagate: ST8000AS0002 x4
HGST: 0S03361(ALE640) x1

今回検討するにあたりPentiumがECC対応していることに驚いた。
Xeon入れなきゃダメかなとおもっていたけど、安く上がった。
ただ一般のマザーボードはECC対応していないので、割高のワークステーション用マザーを購入。
これでもRegisteredなメモリはダメで、Unbufferedのみ対応。仕方ないね。
ワークステーション用だからか、オンボードNICが2つ付いてる。

メモリはUnbuffered ECCなものを32GB、ZFSはメモリをたくさん使うのでそこそこ積んだ。

電源は1000W、たくさんのHDDが一斉にスピンアップすると考えると、これくらいあると安心かな。

そして今回HDDを多く積むために購入したのが、SASホストバスアダプター。
SATA3対応のものはヤフオクで1枚1万~2万くらいで手に入る。
miniSAS端子2つから8つのSATA端子に枝分かれできるので、2枚積めばSATA 16ポート。
マザーの6ポートと合わせて22台確保できるので、これでガンガン積める。
マザーのPCIe x8以上のスロットはまだ2つ余っているので、もっと積もうと思ったら積める。
SASエキスパンダーカードを使うという手もある。

SSDはシステム用、2台でミラー構成にするため用意。
HDDは最初WDでまとめようと思ったけど、Seagateの8TBにそそられて導入。
合計で総容量は102TBだけど、SSDと同じくミラー構成にするので最大で50TBより少ないくらい。

この材料だとドライブ22台認識させる事はできるけど、
PCケースには6台、5台積めるHDDエンクロージャーをケースに3台積んでも15台までしか内蔵できない。
そうなるとHDDは外に出して、ケースなりに入れて設置することになるわけだ。
調べてもらうとわかるけど、外付けのエンクロージャーは高いし、SASのアダプタやケーブルも高い。
もう1個PCケースを買って、その中に積むのも検討したけど、結局こうなった。

DSC_1924_1

長めのminiSAS-SATAファンアウトケーブルと電源ケーブルでPCケース外に伸ばし、
スチールラックの上に裸族のビキニでHDD4台積み上げて、12cmファンの扇風機で冷却。
HBAの16ポート分はこれで設置して、残りの6台はPCケースに内蔵。
埃をHDDに吹き付ける状態になるので、ファン扇風機の吸気側にフィルタを付けた。
次に材料コスト。

【材料コスト(HDD除く) 2015/08/28現在】
Antec Nine Hundred AB : \5,000 (中古でこれくらい?)
Intel Pentium G3258 : \8,278
ASUS P9D WS : \33,550
Kingston KVR1333D3E9SK2/16G x2 : \39,080
Corsair RM1000 : \20,968
LSI SAS 9211-8i x2 : \32,000
CSSD-S6T128NHG6Q x2 : \16,718
miniSAS → SATA ファンアウトケーブルラッチ付 x4 : \5,920
ミヨシ MCO 電源変換ケーブル 15PIN-大4P/4分岐 41cm JDH-SD4/41 : \2,156
変換名人 ペリフェラル(大4ピン) → SATA(15ピン)電源変換4分岐ケーブル IDEP-SPR/4 x4 : \537
センチュリー 裸族のビキニ HDD用スタンドキット CRBK2 x8 : \5,080
USBどこでもでか扇風機 ブラック UMF02BK : \6,400 (黒はもう売ってない?)

合計: \170,687

もう1枚HBAカードとケーブル類買っても20万超えない。
ECCメモリとかシステムドライブ冗長に拘らなければあと3,4万くらい安くなりそう。

【既成品NAS/サーバとコスト比較】
[4bay] HP Microserver N54L \12,980 (最安価格NTT-X売り切れ)
[8bay] ASUSTOR AS5008T \107,200
[8bay] QNAP TS-851 \139,798
[8bay] Synology DS1815+ \155,660
[10bay] ASUSTOR AS5010T \124,800
[12bay] QNAP TS-1253U-RP \329,486
[16bay] TS-1279U-RP Turbo NAS \411,354
[22bay] 自作NAS \170,687

積む台数が少ないならNASとかMicroserverでいいんじゃないかな。
安く多く積むなら自作ですな。

ソフト編は次回。

DDNSの死活監視など

mydns.jp使ってるんだけど、たまに落ちたりするので、ログ取りと同期処理に死活監視も加えることにした。
アクセスNGになったらメール送信、加えてアクセスOKだが同期でNGが連発したらメール送信。
1周間くらい回して問題なさそうなので、メモがてら載っける。
ログ見てると結構エラーで弾かれてるのね。

【動作環境】
 CentOS7
 ssmtp

Continue reading

Seagate Archive HDD ST8000AS0002のLoad Cycle Count

ST8000AS0002

Seagate Archive HDDシリーズの8TBHDD ST8000AS0002を2台購入。
HP ProLiant Microserver(CentOS)上の単一ディスクとして稼働してるんだけど、
Load Cycle Countがどんどん上昇しているのでちょっと気になってきた。

mi0_193_daymi1_193_day

このグラフでいうbay1~3がWD60EFRXとWD60EZRX混在、bay4がST8000AS0002。同じ構成で2台。
bay1~3はidle3-toolsでアイドルタイマーを無効にしているので、横線まっすぐ。
問題のbay4は徐々に上昇している。大体1時間に3~4カウント。
仕様では30万カウントまで対応しているようなので、このまま約8年くらいは耐えられる計算。
…しかしこんなにガンガン上昇するものなの?Seagateはこういう仕様のファームなのかな。
3万時間稼働してるHGSTのHDDなんて1000位しかカウントしてないのに…

このままカウントが上昇していくのは気分的によろしくないので、
カウントを抑制する対策をいろいろ調べて試してみた。

1. idle3ctl –force …NG
2. hdparm -S 0 -Z -B 255 …NG
3. 定期的にDisk I/Oを発生させる …LCC上昇抑制という意味ではOK

1.はWD製HDD以外のHDDでもアイドルタイマーを設定する強制オプション
これはエラーが出て設定NG

# idle3ctl --force -d /dev/sdd
sg16(VSC_ENABLE) failed: Input/output error

2.は-Sがスタンバイ設定、-BはAPM設定、-ZはSeagate用の省電力機能を無効
Sオプションは反映されたけど、カウント上昇は止まらず、ZとBはio errorで設定NG

# hdparm -S 0 -Z -B 255 /dev/sdd

/dev/sdd:
setting Advanced Power Management level to disabled
HDIO_DRIVE_CMD failed: Input/output error
setting standby to 0 (off)
disabling Seagate auto powersaving mode
HDIO_DRIVE_CMD(seagatepwrsave) failed: Input/output error
APM_level = not supported

最後に思いついた3は、ddとcronを使ってディスクIOを繰り返させる。
ディスクにアイドルタイマーがあるとしたら、こいつを発動させないように、
定期的にddとか使ってダミーファイルをディスクに書き込ませてやる。

# vi io.sh
#!/bin/bash
DISK=/mnt/bay4
dd if=/dev/zero of=$DISK/iotest bs=1k count=1
rm -f $DISK/iotest

1KByteのダミーファイルを作っては削除を繰り返させる。
簡単だけどこんなスクリプトを10分間隔で回してみると、LCCが上昇しなくなった。
やった~と思ったんだけど、今後は別の問題が発生。

mi0_193_weekmi1_193_week
mi0_192_weekmi1_192_week

LCCは上昇しなくなったけど、cronで回し始めて1日経ったくらいで、
今度はPower-Off Retract Countがカウントアップする事態に…。
その後はほぼ24時間に1回カウントアップしており、明らかにスクリプトで影響が出てる。
このディスクは積極的にヘッドを休める仕様なのかもしれないね。

現在はPower-Off Retract CountとLoad Cycle Countが上昇しない最適なディスクIOの間隔をテスト中。

RAID6(md)アレイを別のLinuxマシンにマウントする(4/4)

前回の記事の続き、追加検証

検証の流れ

  1. VM0で構成したRAID6アレイに1MBのダミーファイルを100個生成、MD5とファイルサイズを記録。
  2. VM0を停止しVirtualBoxのマネージャからRAID6のVMディスクx4をVM0から解放し、VM1に追加。
  3. VM1を起動し、RAID構成確認、簡易読み書きテスト、および工程1.とのファイル差分チェック。
  4. (追加検証1) 2.の工程で、VM1に対してVMディスクx4のうち2台のみ追加した時の動作確認と、縮退モードでのアレイ立ち上げ。

VMディスクにリードエラーとか障害を起こして検証したかったけど、やり方知らないので、VM0のRAID6アレイのVMディスクが2台死んで、加えてVM0のシステムディスクも故障したので、VM1にRAID6アレイの最低稼働台数である2台のVMディスクを追加して、起動してみようっていう検証。

早速VM1のディスク(disk2,3)を解放、
スペアディスクとして新規ディスク(disk2_spare,disk3_spare)を追加。

raidtest08_1

VM1を起動する。
しかし、シングルユーザーモードになってしまい、正常に起動しない。
/etc/fstabにmd127のマウント設定を書いていたせいかもしれない。

シングルユーザーモードから

# mdadm --detail /dev/md127
mdadm: md device /dev/md127 does not appear to be active.

アクティブではないと書いてあるが、存在はしているようなので、一旦md127を停止してみる

# mdadm --stop /dev/md127
mdadm: stopped /dev/md127

既に構成済みのRAIDアレイを再度認識させるには-A(Assemble)を使う。
-R(Run)はディスク数が必要数に満たなくてもアレイを立ち上げる事ができる。
OSが認識しているディスクを確認する方法は工程1を参照。

# mdadm -AR /dev/md127 /dev/sdb1 /dev/sde1
mdadm: /dev/md127 has been started with 2 drives (out of 4).

# mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Wed Feb 25 09:42:40 2015
Raid Level : raid6
Array Size : 16765952 (15.99 GiB 17.17 GB)
Used Dev Size : 8382976 (7.99 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 2
Persistence : Superblock is persistent

Update Time : Wed Feb 25 12:06:53 2015
State : clean, degraded
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : raid-test0:0
UUID : 5631fad3:0ec41ac1:b6234c79:ab094b44
Events : 70

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 0 0 1 removed
2 0 0 2 removed
4 8 65 3 active sync /dev/sde1

無事縮退モードで立ち上げる事が出来た。
この状態で/mnt/md127にマウント可能で、データの読み書きも出来た。
あとは、で新しいディスクをmd127に追加させれば、自動的にRAIDアレイに組み込まれる。
追加させる際は、パーティションの設定をお忘れなく。

# mdadm --add /dev/md127 /dev/sdc1 /dev/sdd1
mdadm: added /dev/sdc1
mdadm: added /dev/sdd1

# mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Wed Feb 25 09:42:40 2015
Raid Level : raid6
Array Size : 16765952 (15.99 GiB 17.17 GB)
Used Dev Size : 8382976 (7.99 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Feb 25 12:23:15 2015
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2

Layout : left-symmetric
Chunk Size : 512K

Rebuild Status : 19% complete

Name : raid-test0:0
UUID : 5631fad3:0ec41ac1:b6234c79:ab094b44
Events : 84

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
6 8 49 1 spare rebuilding /dev/sdd1
5 8 33 2 spare rebuilding /dev/sdc1
4 8 65 3 active sync /dev/sde1

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdd1[6] sdc1[5] sdb1[0] sde1[4]
16765952 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/2] [U__U]
[===================>.] recovery = 96.8% (8122812/8382976) finish=0.0min speed=88808K/sec

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdd1[6] sdc1[5] sdb1[0] sde1[4]
16765952 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]

以上。

RAID6(md)アレイを別のLinuxマシンにマウントする(3/4)

前回の記事の続き、検証3
VM0からVM1にまるごと移行したRAIDアレイの状態確認。

検証の流れ

  1. VM0で構成したRAID6アレイに1MBのダミーファイルを100個生成、MD5とファイルサイズを記録。
  2. VM0を停止しVirtualBoxのマネージャからRAID6のVMディスクx4をVM0から解放し、VM1に追加。
  3. VM1を起動し、RAID構成確認、簡易読み書きテスト、および工程1.とのファイル差分チェック。
  4. (追加検証1) 2.の工程で、VM1に対してVMディスクx4のうち2台のみ追加した時の動作確認と、縮退モードでのアレイ立ち上げ。

VM1を起動、すんなり起動した。
VM0で構成したRAIDアレイは、VM1を起動した段階で既に認識。
ただし、VM0ではmd0として構成したアレイだったが、md127として認識されていて、
State:の項目がactiveからclean
Name:の項目がVM0と同名(これは当然か)、あと(local to host raid-test0)という表記が消えた。

# mdadm --detail /dev/md127
/dev/md127:
Version : 1.2
Creation Time : Wed Feb 25 09:42:40 2015
Raid Level : raid6
Array Size : 16765952 (15.99 GiB 17.17 GB)
Used Dev Size : 8382976 (7.99 GiB 8.58 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent

Update Time : Wed Feb 25 09:59:14 2015
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 512K

Name : raid-test0:0
UUID : 5631fad3:0ec41ac1:b6234c79:ab094b44
Events : 19

Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1

cleanの表示が気になったが、mdstatではactiveとなっているため、このままマウントを続行することにした。

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md127 : active raid6 sdb1[0] sde1[3] sdc1[1] sdd1[2]
16765952 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/4] [UUUU]

/mnt/md127にマウントしてみる。

# mount -t ext4 /dev/md127 /mnt/md127
#
# df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos_raid--test1-root 8.5G 1.2G 7.4G 14% /
devtmpfs 492M 0 492M 0% /dev
tmpfs 498M 0 498M 0% /dev/shm
tmpfs 498M 6.6M 491M 2% /run
tmpfs 498M 0 498M 0% /sys/fs/cgroup
/dev/sda1 497M 96M 402M 20% /boot
/dev/md127 16G 1.1G 14G 7% /mnt/md127

無事にマウント出来たので、工程1で取得したファイル差分をチェック。

# ll/ /mnt/md127/
合計 1024016
-rw-r--r--. 1 root root 10485760 2月 25 09:52 file1
-rw-r--r--. 1 root root 10485760 2月 25 09:52 file10
-rw-r--r--. 1 root root 10485760 2月 25 09:52 file100
.....
.....

タイムスタンプ変化無し、ファイル数も100あった。

# find /mnt/md127/ -type f | wc -l
100

MD5値、ファイルサイズも変化無し。

# md5sum /mnt/md127/file*
f1c9645dbc14efddc7d8a322685f26eb /mnt/md127/file1
f1c9645dbc14efddc7d8a322685f26eb /mnt/md127/file100

# du /mnt/md127 -b
16384 /mnt/md0/lost+found
1048596480 /mnt/md127

最後にファイルの読み書きテスト、まず適当にmessagesファイル書き込み

# cp -vp /var/log/messages /mnt/md127/
`/var/log/messages' -> `/mnt/md127/messages'

元ファイルとの差分チェック

# diff /var/log/messages /mnt/md127/messages
#

差分なし、catで表示させてみる。

# cat /mnt/md127/messages
cat /var/log/messages
Feb 25 10:13:16 raid-test1 rsyslogd: [origin software="rsyslogd" swVersion="7.4.7" x-pid="560" x-info="https://www.rsyslog.com"] start
Feb 25 10:13:06 raid-test1 journal: Runtime journal is using 6.2M (max 49.7M, leaving 74.5M of free 490.9M, current limit 49.7M).
.....
.....

以上で、RAIDアレイ移行の検証は終わり、無事別のLinuxマシンでマウント出来ました。
ただmd127のState:がcleanとなっていて気持ち悪いので、activeへの戻し方をご存知の方がいれば教えてください。
次回の記事は、RAID6アレイを低下モードの状態でマウントする事をやってみます。