2015年8月31日月曜日

NASの自作 Part28

今日は注文していたパーツが届いたので、久しぶりに組立作業です。


IMG 0543

Node 804 は3.5インチシャドウベイ×10、2.5インチシャドウベイ×2を搭載しているので、余っている最後の2.5インチベイを埋めるべく256GBのSSDを購入しました。OMVでは使用用途が無いのでWindows10をインストールしようと思っています。というのも現在Windows7のライセンスを持っていてMacのVMWare Fusion 6上で動かしているのですが、OS X Yosemiteにアップデートしてから使い物にならないぐらい動作が遅くなってしまい、事実上、家にWindowsマシンが一台もない状態になっています。
ComicCafeのテスト環境としても1台はWindowsマシンが欲しいところなので、デュアルブートにすることにしました。今なら無料でWindows10にアップグレードできますしプラス1万ちょっとの投資でWindowsマシンが手に入るなら安いものです。
ちょっとググった感じでは、WindowsからもLVMのディスクを読めそうな感じなので、可能ならComicCafeをOMVとWindows10の両方にインストールして週替りで切り替えて運用できれば良いテストになるかと思ってます。ただマウントポイントがOMVとWindowsでは異なるので、ComicCafeのDBを異なるプラットフォーム間で共有するための機能を実装する必要はありそうです。
今回届いたパーツは以下の5つです。

ASP600S3-256GM-C 10,167円 128GBだとちょっと不安なので256GB
PSA-917L 783円 SATA3.0ケーブル
S2-1504SAB 765円 下L型のSATA二股電源
EX-004 440円 ネットで見たQ-Connectorに憧れて買ってみたけどMBに合わずゴミにorz
B05-2615 739円 SASカードに付けるファン用ネジ

結局MBに合わなかったコネクタ簡単脱着ケーブルや、4本だけ欲しいのに120本入りのネジなど、突っ込みどころ満載の買い物になってしまいましたが、きっと次回の自作で役に立つ日がくるでしょう。まずSASカードにファンCFZ-4010LA を付けます。ファン付属のネジではSASカードのネジ穴に合わないので、M2.6*15のネジを使います。実は先週末にホームセンターでM2.6*20というネジを買ったのですが長すぎて取り付けることができませんでした。このM2.6*15ならジャストフィットです。ちなみにファンを付けようと思ったのはこのブログを読んだからです。情報共有していただけるのは本当にありがたいです。


IMG 0545
IMG 0546
  
  
次にSSDを取り付けます。既に配線がゴチャゴチャなので不器用な私にはとても骨の折れる作業でした。なにより一度取り付けたパーツを取り外すのが壊してしまいそうで怖かったです。


IMG 0544

なんとか取り付けが完了したのでOMVを立ち上げます。

AccessMenuBarApps 1

無事に認識されたようです。この流れでWindows7をインストールしようとしたのですが、インストールのドライブを選択する画面で「新しいシステムパーティションを作成できなかったか、既存のシステムパーティションは見つかりませんでした。」というエラーが出て先に進めません。。。ググってみるとHDDを複数繋いでると発生するエラーのようで回避策はインストールするドライブ以外は全て外せとのことでした。。。うーん。もう取り取り付けたパーツを外したりしたく無いのですがorz とりあえずBIOSでインストールに不要なSATAを無効にしてみましたがエラーは解消しませんでした。今日はつかれたのでWindowsのインストールはまた次の機会にしようと思います。

NASの自作 Part27

そういえば現在、RAID10で運用しているHDDケース HFR2-SU3S2FW のパフォーマンスを調べてなかったのでベンチマークを測定してみました。

DiskSpeedTestRAID10

RAID10なのでもっと良い結果を予想していたのですが、全然大したことないようです。このレベルのスピードで今まで全く不満なく使っていたので、今回のNASもこの数値を目標にチューニングしていきたいと思います。
まずOMVにインストールされているSambaについて調べます。

# sambaのバージョンを確認
smbd -V
Version 3.6.6
# sambaの設定を確認
cat /etc/samba/smb.conf
#======================= Global Settings =======================
[global]
workgroup = WORKGROUP
server string = %h server
dns proxy = no
log level = 0
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
syslog only = yes
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
unix password sync = no
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
pam password change = yes
socket options = TCP_NODELAY IPTOS_LOWDELAY
guest account = nobody
load printers = no
disable spoolss = yes
printing = bsd
printcap name = /dev/null
unix extensions = yes
wide links = no
create mask = 0777
directory mask = 0777
map to guest = Bad User
use sendfile = yes
aio read size = 16384
aio write size = 16384
null passwords = yes
local master = yes
time server = no
wins support = no

#======================= Share Definitions =======================
[shared]
path = /media/74a33bfa-edae-4b56-92cc-33fa5c44ba82/shared/
guest ok = yes
read only = no
browseable = yes
inherit acls = yes
inherit permissions = no
ea support = no
store dos attributes = no
printable = no
create mask = 0755
force create mode = 0644
directory mask = 0755
force directory mode = 0755
hide dot files = yes
read list =
write list =

Extreme slow samba speedsSambaパラメーターとパフォーマンスSambaが遅いのでパフォーマンスチューニング このへんのサイトを参考に以下の2つのパラメータを追加してみることにします。

max protocol = SMB2
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=87600 SO_RCVBUF=87600

設定は /etc/samba/smb.conf を直接編集するのではなく、Webの管理画面から設定してみます。


AccessMenuBarApps

Saveボタンを押してApplyで設定を反映させましたが、全くパフォーマンスには変化がありませんでした。。。そんなはずはないので再起動して再度測定してみます。


DiskSpeedTestSamba

おぉぉ!!いきなり書込速度が目標を上回りました。読込速度もかなりイイ感じです。Sambaの設定は環境に大きく依存して、最適な設定値は試行錯誤するしかないので、これからいろいろ調整の余地はあるかもしれませんが、頑張ればギガビット・イーサネットの限界である125MB/sを達成することができそうです。

2015年8月29日土曜日

NASの自作 Part26

今日はより現実的なデータを使ってパフォーマンスを測定してみました。測定に使用したデータはZIP形式の大量の自炊ファイルが保存されているディレクトリで、Finderで確認するとディレクトリの情報は以下のように表示されます。

32,629,157,110 バイト(32.63 GB)、776 項目の合計

このデータを異なる方法でコピーしてtimeコマンドで処理時間を測定しました。テスト毎にPCを再起動してキャッシュが残らないようにしています。
結果は以下のようになりました。

No コピー元 コピー先 接続方法 処理時間 速度
1 Mac book air Shared Folder(RAID6) GbE(Samba) 11m09.960s 48MB/s
2 外付けHDD Shared Folder(RAID6) USB3.0 6m56.607s 78MB/s
3 Shared Folder(RAID6) SSD SATA3.0 3m31.650s 154MB/s
4 SSD Shared Folder(RAID6) SATA3.0 1m06.908s 487MB/s

各デバイス、インターフェースの速度の限界は以下の通りです。

デバイス/ケーブル 転送速度 読込速度 書込速度
CAT5e 125MB/s --- ---
USB3.0 640MB/s --- ---
SATA3.0 600MB/s --- ---
SP010TBPHDD03S3K --- 74MB/s 69MB/s
MZ-7TD120B/IT --- 530MB/s 130MB/s

今回のテストでデータがどのような流れでコピーされるかを表すと多分、以下のようになると思われます。

1. [Mac book air] -> [UE-1000T-U3] -> [CAT5e] -> [AirMac Extreme] -> [CAT5e] -> Samba -> NIC -> [MB] -> [ASA-6805H] -> [SATA3.0] -> [WD30EZRX-1TBP]
2. [SP010TBPHDD03S3K] -> [USB3.0] -> [MB] -> [ASA-6805H] - [SATA3.0] -> [WD30EZRX-1TBP]
3. [WD30EZRX-1TBP] -> [SATA3.0] -> [ASA-6805H] -> [MB] -> [SATA3.0] -> [MZ-7TD120B/IT]
4. [MZ-7TD120B/IT] -> [SATA3.0] -> [MB] -> [ASA-6805H] -> [SATA3.0] -> [WD30EZRX-1TBP]


以上の結果をふまえて考えてみると
まず4の結果から10台構成のRAID6アレイの書込速度はかなり高速であるということが分かります。また3の結果ではRAID6アレイからの読込速度が遅いように見えますが、実際はコピー先のSSDの書込速度の遅さがボトルネックになっていると思われます。よってSASカードのパフォーマンスは全く問題ないと推測されます。
次に2の結果ですが、USB3.0経由で遅いのは外付けHDDの読込速度の遅さが原因である可能性が高いです。問題は1の結果で、NASの基本であるLAN経由のコピーが遅いです。一番ボトルネックになると思われるギガビット・イーサネットの限界である125MB/sの半分のスピードも出ていません。ボトルネックはUE-1000T-U3AirMac Extreme, Sambaのいずれかであると思われます。とりあえずSambaが遅いというネットの書き込みもあるので、Sambaのパフォーマンスチューニングについて調べてみようと思います。ひとまず一番の不安材料だったSASカードのパフォーマンスが悪くないことが分かって本当に良かったです。

2015年8月26日水曜日

NASの自作 Part25

今日はググって得た知識でIOのパフォーマンスをチューニングをしてみます。
最初に設定するのは stripe_cache_size です。ググるとすぐに見つかる有名どころの設定のようでOMVのフォーラムでも話題に上がっていました。stripe_cache_size のサイズを増やすことで、メモリの消費量が増えるようですが、当初、FreeNAS+ZFSでNASを構築予定だったのでメモリを32GBも積んでおり、現状メモリが余ってしょうがない状態なので是非とも沢山使って欲しいところです。
まず、現在の設定値を確認してみます。

cat /sys/block/md0/md/stripe_cache_size
8192

OMVのデフォルトは8192のようです。最大で32768まで指定できるようなので最大値を設定してみます。 /sys/block/md0/md/stripe_cache_size ファイルの内容を更新することで設定できるようですが、設定は再起動で失われてしまうようなので、以下のコマンドを /etc/rc.local に追記することにしました。

echo 32768 > /sys/block/md0/md/stripe_cache_size

再起動してBlackmagic Disk Speed Testで確認してみます。


DiskSpeedTest stripe cache size 32768

Writeは全く変わっていませんが、Readは10%ぐらい向上しているようです。ググった時にはWriteが速くなるとの情報があったのでちょっと残念ですが、とりあえず速くなったのでよかったです。
続いて先読みのサイズを設定してみます。

# HDD単体の設定を確認
blockdev --getra /dev/sd?
256
256
256
256
256
256
256
256
256
256
256
# RAIDの設定を確認
blockdev --getra /dev/md0
16384

# RAIDを構成している10台のHDDの設定を変更
blockdev --setra 16384 /dev/sd[bcdefghijk]
# RAIDの設定を変更
blockdev --setra 65536 /dev/md0

OVMのデフォルトはHDD単体が256, RAIDは16384のようです。ネットのコマンドのサンプルを元に大きな値に変更してみます。ちなみにこの変更も再起動で失われるようなので、 /etc/rc.local に設定するコマンドを書きました。
もう一度、再起動して測定してみます。

DiskSpeedTest blockdev 16384 65536
うーん。改善しないどころかパフォーマンスが悪化してしまいましたorz ただここの説明を読む限りでは期待できそうなパラメータなので諦めずに、もう少し小さい値を設定してみます。
# RAIDを構成している10台のHDDの設定を変更
blockdev --setra 1024 /dev/sd[bcdefghijk]
# RAIDの設定を変更
blockdev --setra 32768 /dev/md0

結果は


DiskSpeedTest blockdev 1024 32768

最初の結果と全然と変わってないですね。まぁ悪影響も無いようなので、設定した状態でもう少し様子を見てみようと思います。

2015年8月25日火曜日

NASの自作 Part24

ついにRAIDが組めたので早速、共有の設定をしてパフォーマンスを計測してみたいと思います。
既にRAIDデバイス /dev/md0 にext4でファイルシステムを作成済みです。ファイルシステムでもパフォーマンスが変わると思うので時間がある時にXFSなどのパフォーマンスも計測したいと思っています。

AccessMenuBarApps 0

次に共有フォルダを作成してACLを設定します。今回はとりあえず誰でも読み書きできればいいので、ユーザーなどは作成しません。実際に運用する時に共有フォルダの構成やACLについて再考したいと思います。

AccessMenuBarApps 1

AccessMenuBarApps 2

AccessMenuBarApps 3

AccessMenuBarApps 4

最後に SMB/CIFS の設定をします。

AccessMenuBarApps 5

AccessMenuBarApps 6

AccessMenuBarApps 7

AccessMenuBarApps 8

設定が完了すると、MacのFinderにOMVが表示されました。選択するとマウントされます。


AccessMenuBarApps 9

さっそくMacの定番ツール Blackmagic Disk Speed Test で計測してみます。今回は AirMac Extreme にMac book airとNASをギガビットEthernetで有線接続して測定しました。Mac book airにはLANポートは無いのでUSB3.0接続の UE-1000T-U3 を使って接続しています。

NAS AirMac MBA
結果は以下のようになりました。正直、知識が無いのでこの結果が良いのか悪いか判断できませんが、ググった感じでは悪くはないようです。これからいろいろ調べてチューニングしていこうと思います。

DiskSpeedTest

2015年8月24日月曜日

NASの自作 Part23

Linuxのブートプロセスについて調べました。
どうやら、BIOS -> ブートローダ -> initramfs -> initramfs init -> init といった順で起動されるようです。今回のケースではinitの前にRAIDの構築処理が実行されているようなので容疑者である initramfs を調べます。

# 展開用に一時ディレクトリの作成
mkdir /tmp/initramfs
cd /tmp/initramfs
# initramfsのイメージを解凍
gunzip -c /boot/initrd.img-3.2.0-4-amd64 | cpio -ivd
# mdadmの設定を発見
cat etc/mdadm/mdadm.conf
DEVICE partitions
HOMEHOST 
ARRAY /dev/md0 metadata=1.2 name=OMV-NODE804:10DisksRAID6 UUID=22a559e2:1d468c1e:75c0ffeb:2b2e8494
# これもmdadmに関連する設定っぽいです
cat conf/mdadm
MD_HOMEHOST='OMV-NODE804'
MD_DEVS=all

やはり、initramfs にRAIDを構築する処理が含まれているようです。 initramfsのイメージのタイムスタンプを見てみると、ちょうど初めてRAIDを設定した日と一致します。おそらくRAIDの設定をすると、その設定に応じて initramfs のイメージが再作成されるのだと推測されます。

ls -lrt /boot/
total 35500
-rw-r--r-- 1 root root  2842400 Aug  5 08:21 vmlinuz-3.2.0-4-amd64
-rw-r--r-- 1 root root  2114623 Aug  5 08:27 System.map-3.2.0-4-amd64
-rw-r--r-- 1 root root   129281 Aug  5 08:27 config-3.2.0-4-amd64
drwxr-xr-x 3 root root    12288 Aug 18 22:50 grub
-rw-r--r-- 1 root root 15622006 Aug 18 23:57 initrd.img-3.2.0-4-amd64.old-dkms
-rw-r--r-- 1 root root 15622782 Aug 19 23:22 initrd.img-3.2.0-4-amd64

この initramfs のイメージをカスタマイズしてSASカードを認識させるような処理を追加すれば解決するような気もしますが、今の私の知識ではかなりの時間がかかりそうです。ここはNASの完成を優先したいので、ブートプロセスの後半でRAIDの再構築を実行してこの問題の解決をはかりたいと思います。
まず、 /etc/init.d の下にRAID再構築のためのシェルスクリプトを作成します。名前は reassemble-raid.sh としました。

#! /bin/sh
### BEGIN INIT INFO
# Provides:          reassemble-raid
# Required-Start:    bootlogd
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: re-assemble raid
# Description:       This file should be used to construct scripts to be
#                    placed in /etc/init.d.
### END INIT INFO

# Author: burton9999dev@gmail.com
echo "#### reassemble-raid.sh" > /dev/kmsg
#
# Function that starts the daemon/service
#

do_start()
{
    sleep 30
    mdadm --stop /dev/md0
    mdadm --assemble --scan
    mount -a
    return 0
}

#
# Function that stops the daemon/service
#
do_stop()
{
    # Do nothing
    return 0
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
    # Do nothing
    return 0
}

case "$1" in
  start)
    do_start
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  stop)
    do_stop
    case "$?" in
        0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
        2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
    esac
    ;;
  status)
    status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
    ;;
  #reload|force-reload)
    #
    # If do_reload() is not implemented then leave this commented out
    # and leave 'force-reload' as an alias for 'restart'.
    #
    #log_daemon_msg "Reloading $DESC" "$NAME"
    #do_reload
    #log_end_msg $?
    #;;
  restart|force-reload)
    #
    # If the "reload" option is implemented then remove the
    # 'force-reload' alias
    #
    do_stop
    case "$?" in
      0|1)
        do_start
        case "$?" in
            0) log_end_msg 0 ;;
            1) log_end_msg 1 ;; # Old process is still running
            *) log_end_msg 1 ;; # Failed to start
        esac
        ;;
      *)
        # Failed to stop
        log_end_msg 1
        ;;
    esac
    ;;
  *)
    exit 3
    ;;
esac

:

このスクリプトを起動時に実行するように設定します。

# スクリプトの実行権を付与
chmod +x reassemble-raid.sh
# 起動時に実行されるよう設定
insserv -d reassemble-raid.sh
# 設定を確認
ls -l /etc/rc*.d/*reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc0.d/K02reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc1.d/K02reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc2.d/S01reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc3.d/S01reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc4.d/S01reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc5.d/S01reassemble-raid.sh -> ../init.d/reassemble-raid.sh
lrwxrwxrwx 1 root root 28 Aug 24 22:30 /etc/rc6.d/K02reassemble-raid.sh -> ../init.d/reassemble-raid.sh

PCを再起動してWebの管理画面を見てみると見事に10台構成でRAIDが構築されていることを確認できました。
起動後のdmesgはこんな感じに出力されています。とりあえずこれで次のステップに進めそうです。いつかdebianマスターになったら initramfs のカスタマイズもチャレンジしてみたいですね。

root@OMV-NODE804:~# dmesg | egrep '(sd|md|####)'
[    0.000000] Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.68-1+deb7u3
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6445948c-2f87-4c3c-a949-38a617780bc8 ro quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6445948c-2f87-4c3c-a949-38a617780bc8 ro quiet
[    2.246686] usb usb1: Manufacturer: Linux 3.2.0-4-amd64 ehci_hcd
[    2.266621] usb usb2: Manufacturer: Linux 3.2.0-4-amd64 ehci_hcd
[    2.267026] usb usb3: Manufacturer: Linux 3.2.0-4-amd64 xhci_hcd
[    2.267282] usb usb4: Manufacturer: Linux 3.2.0-4-amd64 xhci_hcd
[    2.598635] Pid: 0, comm: swapper/2 Not tainted 3.2.0-4-amd64 #1 Debian 3.2.68-1+deb7u3
[    2.625566] sd 1:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB)
[    2.625573] sd 2:0:0:0: [sdb] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    2.625576] sd 2:0:0:0: [sdb] 4096-byte physical blocks
[    2.625612] sd 2:0:0:0: [sdb] Write Protect is off
[    2.625615] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    2.625616] sd 1:0:0:0: [sda] Write Protect is off
[    2.625618] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.625633] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.625635] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.625844] sd 3:0:0:0: [sdc] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    2.625846] sd 3:0:0:0: [sdc] 4096-byte physical blocks
[    2.625863] sd 3:0:0:0: [sdc] Write Protect is off
[    2.625864] sd 3:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    2.625872] sd 3:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.626292]  sda: sda1 sda2 < sda5 >
[    2.626481] sd 1:0:0:0: [sda] Attached SCSI disk
[    2.646726] sd 1:0:0:0: Attached scsi generic sg0 type 0
[    2.646753] sd 2:0:0:0: Attached scsi generic sg1 type 0
[    2.646774] sd 3:0:0:0: Attached scsi generic sg2 type 0
[    3.153794]  sdc: unknown partition table
[    3.153913] sd 3:0:0:0: [sdc] Attached SCSI disk
[    3.187286]  sdb: unknown partition table
[    3.187396] sd 2:0:0:0: [sdb] Attached SCSI disk
[    3.544516] md: md0 stopped.
[    3.544961] md: bind
[    3.545078] md: bind
[    4.038663] md: raid6 personality registered for level 6
[    4.038665] md: raid5 personality registered for level 5
[    4.038666] md: raid4 personality registered for level 4
[    4.038828] md/raid:md0: device sdb operational as raid disk 0
[    4.038829] md/raid:md0: device sdc operational as raid disk 1
[    4.039208] md/raid:md0: allocated 10592kB
[    4.039224] md/raid:md0: not enough operational devices (8/10 failed)
[    4.039330]  disk 0, o:1, dev:sdb
[    4.039331]  disk 1, o:1, dev:sdc
[    4.039707] md/raid:md0: failed to run raid set.
[    4.039800] md: pers->run() failed ...
[    4.149158] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    4.271475] #### rcS
[    4.271879] #### rc
[    4.285089] #### mountkernfs.sh
[    4.320851] #### udev
[    4.407393] #### hdparm
[    5.283746] #### hdparm
[    5.284324] #### hdparm
[    5.377741] #### mountdevsubfs.sh
[    5.464819] #### bootlogd
[    5.477998] #### hdparm
[    5.478869] #### hwclock.sh
[    5.479698] #### hostname.sh
[    5.503911] #### keyboard-setup
[    5.621623] #### checkroot.sh
[    5.631675] Adding 4789244k swap on /dev/sda5.  Priority:-1 extents:1 across:4789244k SS
[    5.634896] EXT4-fs (sda1): re-mounted. Opts: (null)
[    5.651213] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[    5.654642] #### checkroot-bootclean.sh
[    5.654939] #### kmod
[    5.655438] #### mtab.sh
[    5.655488] #### mdadm-raid
[    5.674219] #### lvm2
[    5.680366] #### mountkernfs.sh
[    5.718020] #### mountkernfs.sh
[    5.749598] #### mountdevsubfs.sh
[    5.774441] #### mountdevsubfs.sh
[    5.822404] #### checkfs.sh
[    5.840385] #### mountall.sh
[    6.005198] #### mountall-bootclean.sh
[    6.029545] #### openmediavault
[    6.030175] #### procps
[    6.030951] #### resolvconf
[    6.031413] #### udev-mtab
[    6.032366] #### urandom
[    6.065252] #### networking
[    6.177060] #### rpcbind
[    6.237930] #### nfs-common
[    6.284611] sd 6:0:0:0: [sdd] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.284622] sd 6:0:0:0: [sdd] 4096-byte physical blocks
[    6.284696] sd 6:0:0:0: Attached scsi generic sg3 type 0
[    6.284736] sd 6:0:0:0: [sdd] Write Protect is off
[    6.284745] sd 6:0:0:0: [sdd] Mode Sense: 00 3a 00 00
[    6.284797] sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.285151] sd 6:0:1:0: [sde] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.285163] sd 6:0:1:0: [sde] 4096-byte physical blocks
[    6.285577] sd 6:0:1:0: Attached scsi generic sg4 type 0
[    6.285628] sd 6:0:1:0: [sde] Write Protect is off
[    6.285639] sd 6:0:1:0: [sde] Mode Sense: 00 3a 00 00
[    6.285694] sd 6:0:1:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.286293] sd 6:0:2:0: [sdf] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.286302] sd 6:0:2:0: [sdf] 4096-byte physical blocks
[    6.286413] sd 6:0:2:0: [sdf] Write Protect is off
[    6.286421] sd 6:0:2:0: [sdf] Mode Sense: 00 3a 00 00
[    6.286470] sd 6:0:2:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.286802] sd 6:0:2:0: Attached scsi generic sg5 type 0
[    6.287348] sd 6:0:3:0: [sdg] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.287357] sd 6:0:3:0: [sdg] 4096-byte physical blocks
[    6.287844] sd 6:0:3:0: [sdg] Write Protect is off
[    6.287854] sd 6:0:3:0: [sdg] Mode Sense: 00 3a 00 00
[    6.287902] sd 6:0:3:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.288053] sd 6:0:3:0: Attached scsi generic sg6 type 0
[    6.288679] sd 6:0:4:0: [sdh] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.288687] sd 6:0:4:0: [sdh] 4096-byte physical blocks
[    6.288816] sd 6:0:4:0: [sdh] Write Protect is off
[    6.288826] sd 6:0:4:0: [sdh] Mode Sense: 00 3a 00 00
[    6.288839] sd 6:0:4:0: Attached scsi generic sg7 type 0
[    6.288877] sd 6:0:4:0: [sdh] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.289948] sd 6:0:5:0: Attached scsi generic sg8 type 0
[    6.291090] sd 6:0:6:0: Attached scsi generic sg9 type 0
[    6.291618] sd 6:0:7:0: Attached scsi generic sg10 type 0
[    6.293175] sd 6:0:5:0: [sdi] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.293186] sd 6:0:5:0: [sdi] 4096-byte physical blocks
[    6.293295] sd 6:0:5:0: [sdi] Write Protect is off
[    6.293304] sd 6:0:5:0: [sdi] Mode Sense: 00 3a 00 00
[    6.293350] sd 6:0:5:0: [sdi] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.296648] sd 6:0:6:0: [sdj] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.296660] sd 6:0:6:0: [sdj] 4096-byte physical blocks
[    6.296757] sd 6:0:6:0: [sdj] Write Protect is off
[    6.296766] sd 6:0:6:0: [sdj] Mode Sense: 00 3a 00 00
[    6.296808] sd 6:0:6:0: [sdj] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.297362] sd 6:0:7:0: [sdk] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.297371] sd 6:0:7:0: [sdk] 4096-byte physical blocks
[    6.297459] sd 6:0:7:0: [sdk] Write Protect is off
[    6.297467] sd 6:0:7:0: [sdk] Mode Sense: 00 3a 00 00
[    6.297507] sd 6:0:7:0: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.828162]  sde: unknown partition table
[    6.828360] sd 6:0:1:0: [sde] Attached SCSI disk
[    6.835051]  sdf: unknown partition table
[    6.835194] sd 6:0:2:0: [sdf] Attached SCSI disk
[    6.840488]  sdi: unknown partition table
[    6.840616] sd 6:0:5:0: [sdi] Attached SCSI disk
[    6.840699]  sdg: unknown partition table
[    6.840802] sd 6:0:3:0: [sdg] Attached SCSI disk
[    6.846153]  sdk: unknown partition table
[    6.846289] sd 6:0:7:0: [sdk] Attached SCSI disk
[    6.847987]  sdh: unknown partition table
[    6.848106] sd 6:0:4:0: [sdh] Attached SCSI disk
[    6.852860]  sdj: unknown partition table
[    6.853001] sd 6:0:6:0: [sdj] Attached SCSI disk
[    6.864162] #### hdparm
[    6.866795] #### hdparm
[    6.867091] #### hdparm
[    6.871241] #### hdparm
[    6.873645] #### hdparm
[    6.881278] #### hdparm
[    6.883350] #### hdparm
[    6.952695]  sdd: unknown partition table
[    6.952856] sd 6:0:0:0: [sdd] Attached SCSI disk
[    6.964155] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    6.974720] #### mountnfs.sh
[    6.978697] #### mountnfs-bootclean
[    6.985112] #### bootmisc.sh
[    6.987552] #### hdparm
[    6.989046] #### kbd
[    7.005246] #### console-setup
[    7.096385] #### quota
[    7.098893] #### stop-bootlogd-single
[    7.103230] #### rc
[    7.109190] #### reassemble-raid.sh
[    7.109397] #### rpcbind
[    7.109436] #### nfs-common
[    7.142792] #### acpid
[    7.147175] #### openmediavault-engined
[    7.152921] #### mdadm
[   37.037753] md: md0 stopped.
[   37.037768] md: unbind
[   37.099813] md: export_rdev(sdb)
[   37.099996] md: unbind
[   37.171527] md: export_rdev(sdc)
[   37.197198] md: md0 stopped.
[   37.200471] md: bind
[   37.200797] md: bind
[   37.201107] md: bind
[   37.201420] md: bind
[   37.201727] md: bind
[   37.202037] md: bind
[   37.202345] md: bind
[   37.202648] md: bind
[   37.202956] md: bind
[   37.203157] md: bind
[   37.215060] md/raid:md0: device sdb operational as raid disk 0
[   37.215067] md/raid:md0: device sdg operational as raid disk 9
[   37.215073] md/raid:md0: device sdf operational as raid disk 8
[   37.215079] md/raid:md0: device sdk operational as raid disk 7
[   37.215085] md/raid:md0: device sdd operational as raid disk 6
[   37.215092] md/raid:md0: device sdi operational as raid disk 5
[   37.215098] md/raid:md0: device sdj operational as raid disk 4
[   37.215104] md/raid:md0: device sde operational as raid disk 3
[   37.215110] md/raid:md0: device sdh operational as raid disk 2
[   37.215116] md/raid:md0: device sdc operational as raid disk 1
[   37.217450] md/raid:md0: allocated 10592kB
[   37.218123] md/raid:md0: raid level 6 active with 10 out of 10 devices, algorithm 2
[   37.218143]  disk 0, o:1, dev:sdb
[   37.218149]  disk 1, o:1, dev:sdc
[   37.218154]  disk 2, o:1, dev:sdh
[   37.218159]  disk 3, o:1, dev:sde
[   37.218164]  disk 4, o:1, dev:sdj
[   37.218170]  disk 5, o:1, dev:sdi
[   37.218175]  disk 6, o:1, dev:sdd
[   37.218180]  disk 7, o:1, dev:sdk
[   37.218185]  disk 8, o:1, dev:sdf
[   37.218190]  disk 9, o:1, dev:sdg
[   37.218307] md0: detected capacity change from 0 to 24003666247680
[   37.229423] #### rmnologin
[   37.229634] #### rc.local
[   37.237578] #### bootlogd
[   37.728902]  md0: unknown partition table

NASの自作 Part22

ひきつづき再起動時のRAID構築失敗について調査しています。まず調査にはログが必要不可欠ということで dmesg に出力する方法を調べました。どうやら /dev/kmsg に書き込むこと dmesg コマンドで表示されるようです。さっそく /etc/init.d/mdadm-raid の先頭に以下のコマンドを追加して再起動してみます。

echo "#### mdadm-raid" > /dev/kmsg

結果は予想に反して、"md/raid:md0: not enough operational devices (8/10 failed)" のRAID構築失敗のエラーの後にログが出力されていました。どうやら失敗しているRAIDを再構築するコマンドは mdadm-raid ではなく、もっと前の起動処理で行われているようです。
とりあえず、 /etc/init.d にあるスクリプト全てにログを出力するコードを追加して再起動してみることにします。全てのスクリプトの先頭に "#### {スクリプト名}" という形式でログを出力します。

root@OMV-NODE804:~# dmesg | egrep '(sd|md|####)'
[    0.000000] Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.6.3 (Debian 4.6.3-14) ) #1 SMP Debian 3.2.68-1+deb7u3
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6445948c-2f87-4c3c-a949-38a617780bc8 ro quiet
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=6445948c-2f87-4c3c-a949-38a617780bc8 ro quiet
[    2.254821] usb usb1: Manufacturer: Linux 3.2.0-4-amd64 ehci_hcd
[    2.255242] usb usb2: Manufacturer: Linux 3.2.0-4-amd64 xhci_hcd
[    2.255419] usb usb3: Manufacturer: Linux 3.2.0-4-amd64 xhci_hcd
[    2.298704] usb usb4: Manufacturer: Linux 3.2.0-4-amd64 ehci_hcd
[    2.558824] sd 1:0:0:0: [sda] 234441648 512-byte logical blocks: (120 GB/111 GiB)
[    2.558836] sd 2:0:0:0: [sdb] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    2.558839] sd 2:0:0:0: [sdb] 4096-byte physical blocks
[    2.558867] sd 3:0:0:0: [sdc] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    2.558872] sd 3:0:0:0: [sdc] 4096-byte physical blocks
[    2.558875] sd 2:0:0:0: [sdb] Write Protect is off
[    2.558878] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00
[    2.558886] sd 1:0:0:0: [sda] Write Protect is off
[    2.558889] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    2.558895] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.558906] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.558909] sd 3:0:0:0: [sdc] Write Protect is off
[    2.558912] sd 3:0:0:0: [sdc] Mode Sense: 00 3a 00 00
[    2.558926] sd 3:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    2.559371]  sda: sda1 sda2 < sda5 >
[    2.559612] sd 1:0:0:0: [sda] Attached SCSI disk
[    2.560601] sd 1:0:0:0: Attached scsi generic sg0 type 0
[    2.560636] sd 2:0:0:0: Attached scsi generic sg1 type 0
[    2.560664] sd 3:0:0:0: Attached scsi generic sg2 type 0
[    2.607793] Pid: 0, comm: swapper/2 Not tainted 3.2.0-4-amd64 #1 Debian 3.2.68-1+deb7u3
[    3.112442]  sdc: unknown partition table
[    3.112571] sd 3:0:0:0: [sdc] Attached SCSI disk
[    3.127760]  sdb: unknown partition table
[    3.127875] sd 2:0:0:0: [sdb] Attached SCSI disk
[    3.500932] md: md0 stopped.
[    3.501331] md: bind
[    3.501438] md: bind
[    3.994858] md: raid6 personality registered for level 6
[    3.994860] md: raid5 personality registered for level 5
[    3.994861] md: raid4 personality registered for level 4
[    3.995005] md/raid:md0: device sdb operational as raid disk 0
[    3.995007] md/raid:md0: device sdc operational as raid disk 1
[    3.995385] md/raid:md0: allocated 10592kB
[    3.995401] md/raid:md0: not enough operational devices (8/10 failed)
[    3.995507]  disk 0, o:1, dev:sdb
[    3.995508]  disk 1, o:1, dev:sdc
[    3.995763] md/raid:md0: failed to run raid set.
[    3.995856] md: pers->run() failed ...
[    4.069375] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    4.201633] #### mountkernfs.sh
[    4.237798] #### udev
[    5.189529] #### hdparm
[    5.190485] #### hdparm
[    5.197348] #### hdparm
[    5.266182] #### mountdevsubfs.sh
[    5.355199] #### bootlogd
[    5.368195] #### hdparm
[    5.368707] #### hostname.sh
[    5.370004] #### hwclock.sh
[    5.393968] #### keyboard-setup
[    5.515923] #### checkroot.sh
[    5.526566] Adding 4789244k swap on /dev/sda5.  Priority:-1 extents:1 across:4789244k SS
[    5.529744] EXT4-fs (sda1): re-mounted. Opts: (null)
[    5.555651] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[    5.564496] #### checkroot-bootclean.sh
[    5.566137] #### mtab.sh
[    5.566461] #### kmod
[    5.566600] #### mdadm-raid
[    5.595234] #### mountkernfs.sh
[    5.622390] #### lvm2
[    5.623261] #### mountkernfs.sh
[    5.662715] #### mountdevsubfs.sh
[    5.694587] #### mountdevsubfs.sh
[    5.741703] #### checkfs.sh
[    5.757084] #### mountall.sh
[    5.813939] #### mountall-bootclean.sh
[    5.820861] #### openmediavault
[    5.821033] #### procps
[    5.821153] #### resolvconf
[    5.821870] #### urandom
[    5.822226] #### udev-mtab
[    5.847143] #### networking
[    5.889887] #### rpcbind
[    5.912610] #### nfs-common
[    5.947556] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).
[    5.966808] #### mountnfs.sh
[    5.981312] #### mountnfs-bootclean
[    6.005421] #### bootmisc.sh
[    6.018247] #### kbd
[    6.057054] #### console-setup
[    6.173083] #### quota
[    6.175544] #### stop-bootlogd-single
[    6.185236] #### nfs-common
[    6.186178] #### rpcbind
[    6.188689] sd 6:0:0:0: [sdd] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.188692] sd 6:0:0:0: [sdd] 4096-byte physical blocks
[    6.188720] sd 6:0:0:0: [sdd] Write Protect is off
[    6.188722] sd 6:0:0:0: [sdd] Mode Sense: 00 3a 00 00
[    6.188734] sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.188836] sd 6:0:0:0: Attached scsi generic sg3 type 0
[    6.189081] sd 6:0:1:0: [sde] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.189083] sd 6:0:1:0: [sde] 4096-byte physical blocks
[    6.189087] sd 6:0:1:0: Attached scsi generic sg4 type 0
[    6.189113] sd 6:0:1:0: [sde] Write Protect is off
[    6.189115] sd 6:0:1:0: [sde] Mode Sense: 00 3a 00 00
[    6.189130] sd 6:0:1:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.189245] sd 6:0:2:0: [sdf] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.189248] sd 6:0:2:0: [sdf] 4096-byte physical blocks
[    6.189263] sd 6:0:2:0: Attached scsi generic sg5 type 0
[    6.189279] sd 6:0:2:0: [sdf] Write Protect is off
[    6.189281] sd 6:0:2:0: [sdf] Mode Sense: 00 3a 00 00
[    6.189295] sd 6:0:2:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.189414] sd 6:0:3:0: [sdg] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.189417] sd 6:0:3:0: [sdg] 4096-byte physical blocks
[    6.189446] sd 6:0:3:0: [sdg] Write Protect is off
[    6.189448] sd 6:0:3:0: [sdg] Mode Sense: 00 3a 00 00
[    6.189461] sd 6:0:3:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.189648] sd 6:0:3:0: Attached scsi generic sg6 type 0
[    6.189795] sd 6:0:4:0: [sdh] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.189798] sd 6:0:4:0: [sdh] 4096-byte physical blocks
[    6.189818] sd 6:0:4:0: Attached scsi generic sg7 type 0
[    6.189976] sd 6:0:5:0: [sdi] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.189978] sd 6:0:5:0: [sdi] 4096-byte physical blocks
[    6.189998] sd 6:0:4:0: [sdh] Write Protect is off
[    6.190001] sd 6:0:4:0: [sdh] Mode Sense: 00 3a 00 00
[    6.190009] sd 6:0:5:0: [sdi] Write Protect is off
[    6.190011] sd 6:0:5:0: [sdi] Mode Sense: 00 3a 00 00
[    6.190015] sd 6:0:4:0: [sdh] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.190030] sd 6:0:5:0: [sdi] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.190861] sd 6:0:5:0: Attached scsi generic sg8 type 0
[    6.191058] sd 6:0:6:0: Attached scsi generic sg9 type 0
[    6.191319] sd 6:0:7:0: Attached scsi generic sg10 type 0
[    6.194022] sd 6:0:6:0: [sdj] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.194025] sd 6:0:6:0: [sdj] 4096-byte physical blocks
[    6.194077] sd 6:0:6:0: [sdj] Write Protect is off
[    6.194080] sd 6:0:6:0: [sdj] Mode Sense: 00 3a 00 00
[    6.194095] sd 6:0:6:0: [sdj] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.197362] sd 6:0:7:0: [sdk] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.197365] sd 6:0:7:0: [sdk] 4096-byte physical blocks
[    6.197397] sd 6:0:7:0: [sdk] Write Protect is off
[    6.197400] sd 6:0:7:0: [sdk] Mode Sense: 00 3a 00 00
[    6.197413] sd 6:0:7:0: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.734423]  sdh: unknown partition table
[    6.734585] sd 6:0:4:0: [sdh] Attached SCSI disk
[    6.737781]  sde: unknown partition table
[    6.737889] sd 6:0:1:0: [sde] Attached SCSI disk
[    6.743101]  sdg: unknown partition table
[    6.743239] sd 6:0:3:0: [sdg] Attached SCSI disk
[    6.745442]  sdi: unknown partition table
[    6.745565] sd 6:0:5:0: [sdi] Attached SCSI disk
[    6.747598]  sdj: unknown partition table
[    6.747733] sd 6:0:6:0: [sdj] Attached SCSI disk
[    6.750024]  sdf: unknown partition table
[    6.750162] sd 6:0:2:0: [sdf] Attached SCSI disk
[    6.752701]  sdd: unknown partition table
[    6.752828] sd 6:0:0:0: [sdd] Attached SCSI disk
[    6.762891] #### hdparm
[    6.765335] #### hdparm
[    6.773771] #### hdparm
[    6.779256] #### hdparm
[    6.782838] #### hdparm
[    6.783995]  sdk: unknown partition table
[    6.784127] sd 6:0:7:0: [sdk] Attached SCSI disk
[    6.786419] #### hdparm
[    6.789049] #### hdparm
[    6.819010] #### hdparm
[    7.286032] #### bootlogd

結果を見ると、どうやら /etc/init.d 以下のスクリプトが実行される前に、何者かがRAIDを再構築しようとしているようです。。。さらなる調査が必要なようです。

2015年8月23日日曜日

NASの自作 Part21

あまり調査する時間が無くて、未だ再起動後にRAIDが認識できなくなる問題を解決できていませんが、途中経過をメモ書きします。
まず、OMV起動時のログを dmesg コマンドで確認してみます。

root@OMV-NODE804:~# dmesg | egrep '(sd|md)'
[    3.560597] md: md0 stopped.
[    3.561040] md: bind
[    3.561150] md: bind
[    4.054680] md: raid6 personality registered for level 6
[    4.054682] md: raid5 personality registered for level 5
[    4.054683] md: raid4 personality registered for level 4
[    4.054831] md/raid:md0: device sdb operational as raid disk 0
[    4.054833] md/raid:md0: device sdc operational as raid disk 1
[    4.055212] md/raid:md0: allocated 10592kB
[    4.055228] md/raid:md0: not enough operational devices (8/10 failed)
[    4.055333]  disk 0, o:1, dev:sdb
[    4.055335]  disk 1, o:1, dev:sdc
[    4.055588] md/raid:md0: failed to run raid set.
[    4.055680] md: pers->run() failed ...
[    4.169542] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[    5.635074] Adding 4789244k swap on /dev/sda5.  Priority:-1 extents:1 across:4789244k SS
[    5.638193] EXT4-fs (sda1): re-mounted. Opts: (null)
[    5.699219] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro
[    6.236823] sd 6:0:0:0: [sdd] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.236834] sd 6:0:0:0: [sdd] 4096-byte physical blocks
[    6.236873] sd 6:0:0:0: Attached scsi generic sg3 type 0
[    6.236955] sd 6:0:0:0: [sdd] Write Protect is off
[    6.236964] sd 6:0:0:0: [sdd] Mode Sense: 00 3a 00 00
[    6.237012] sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.237352] sd 6:0:1:0: [sde] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.237361] sd 6:0:1:0: [sde] 4096-byte physical blocks
[    6.237469] sd 6:0:1:0: [sde] Write Protect is off
[    6.237478] sd 6:0:1:0: [sde] Mode Sense: 00 3a 00 00
[    6.237527] sd 6:0:1:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.238031] sd 6:0:1:0: Attached scsi generic sg4 type 0
[    6.238896] sd 6:0:2:0: [sdf] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.238906] sd 6:0:2:0: [sdf] 4096-byte physical blocks
[    6.238980] sd 6:0:2:0: Attached scsi generic sg5 type 0
[    6.239017] sd 6:0:2:0: [sdf] Write Protect is off
[    6.239025] sd 6:0:2:0: [sdf] Mode Sense: 00 3a 00 00
[    6.239072] sd 6:0:2:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.239544] sd 6:0:3:0: Attached scsi generic sg6 type 0
[    6.240031] sd 6:0:4:0: [sdh] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.240041] sd 6:0:4:0: Attached scsi generic sg7 type 0
[    6.240052] sd 6:0:4:0: [sdh] 4096-byte physical blocks
[    6.240108] sd 6:0:3:0: [sdg] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.240116] sd 6:0:3:0: [sdg] 4096-byte physical blocks
[    6.240302] sd 6:0:4:0: [sdh] Write Protect is off
[    6.240312] sd 6:0:4:0: [sdh] Mode Sense: 00 3a 00 00
[    6.240341] sd 6:0:3:0: [sdg] Write Protect is off
[    6.240349] sd 6:0:3:0: [sdg] Mode Sense: 00 3a 00 00
[    6.240464] sd 6:0:4:0: [sdh] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.240576] sd 6:0:5:0: Attached scsi generic sg8 type 0
[    6.240587] sd 6:0:3:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.241531] sd 6:0:6:0: Attached scsi generic sg9 type 0
[    6.242054] sd 6:0:7:0: Attached scsi generic sg10 type 0
[    6.242269] sd 6:0:5:0: [sdi] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.242277] sd 6:0:5:0: [sdi] 4096-byte physical blocks
[    6.242377] sd 6:0:5:0: [sdi] Write Protect is off
[    6.242385] sd 6:0:5:0: [sdi] Mode Sense: 00 3a 00 00
[    6.242432] sd 6:0:5:0: [sdi] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.245720] sd 6:0:6:0: [sdj] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.245730] sd 6:0:6:0: [sdj] 4096-byte physical blocks
[    6.245822] sd 6:0:6:0: [sdj] Write Protect is off
[    6.245830] sd 6:0:6:0: [sdj] Mode Sense: 00 3a 00 00
[    6.245872] sd 6:0:6:0: [sdj] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.249612] sd 6:0:7:0: [sdk] 5860533168 512-byte logical blocks: (3.00 TB/2.72 TiB)
[    6.249622] sd 6:0:7:0: [sdk] 4096-byte physical blocks
[    6.249716] sd 6:0:7:0: [sdk] Write Protect is off
[    6.249724] sd 6:0:7:0: [sdk] Mode Sense: 00 3a 00 00
[    6.249766] sd 6:0:7:0: [sdk] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    6.774703]  sdd: unknown partition table
[    6.774877] sd 6:0:0:0: [sdd] Attached SCSI disk
[    6.785379]  sdf: unknown partition table
[    6.785520] sd 6:0:2:0: [sdf] Attached SCSI disk
[    6.785920]  sdi: unknown partition table
[    6.786026] sd 6:0:5:0: [sdi] Attached SCSI disk
[    6.790591]  sde: unknown partition table
[    6.790714] sd 6:0:1:0: [sde] Attached SCSI disk
[    6.791452]  sdh: unknown partition table
[    6.791556] sd 6:0:4:0: [sdh] Attached SCSI disk
[    6.792948]  sdg: unknown partition table
[    6.793075] sd 6:0:3:0: [sdg] Attached SCSI disk
[    6.832251]  sdj: unknown partition table
[    6.832397] sd 6:0:6:0: [sdj] Attached SCSI disk
[    6.835789]  sdk: unknown partition table
[    6.835910] sd 6:0:7:0: [sdk] Attached SCSI disk
[    6.847249] Installing knfsd (copyright (C) 1996 okir@monad.swb.de).

予想通り、RAIDの構築後にsdd〜sdkのHDDが認識されているようです。
次に起動時の処理を調べてみると、OMV(debian)は /etc/inittab -> /etc/init.d/rcS -> /etc/init.d/rc の順番で初期化処理を実行していくようです。
そして /etc/init.d にある各種初期化用のスクリプトを実行するわけですが、実行順序の依存関係は /etc/init.d/.depend.boot に書かれています。

root@OMV-NODE804:~# cat /etc/init.d/.depend.boot
TARGETS = mountkernfs.sh udev mountdevsubfs.sh bootlogd keyboard-setup hwclock.sh hostname.sh hdparm checkroot.sh mdadm-raid checkroot-bootclean.sh mtab.sh kmod lvm2 checkfs.sh mountall.sh mountall-bootclean.sh resolvconf urandom procps udev-mtab openmediavault networking rpcbind nfs-common mountnfs.sh console-setup mountnfs-bootclean.sh quota kbd bootmisc.sh stop-bootlogd-single
INTERACTIVE = udev keyboard-setup checkroot.sh checkfs.sh console-setup kbd
udev: mountkernfs.sh
mountdevsubfs.sh: mountkernfs.sh udev
bootlogd: mountdevsubfs.sh
keyboard-setup: bootlogd mountkernfs.sh udev
hwclock.sh: mountdevsubfs.sh bootlogd
hostname.sh: bootlogd
hdparm: bootlogd mountdevsubfs.sh udev
checkroot.sh: hwclock.sh mountdevsubfs.sh hostname.sh hdparm bootlogd keyboard-setup
mdadm-raid: mountkernfs.sh hostname.sh udev
checkroot-bootclean.sh: checkroot.sh
mtab.sh: checkroot.sh
kmod: checkroot.sh
lvm2: mountdevsubfs.sh udev mdadm-raid bootlogd
checkfs.sh: mdadm-raid lvm2 checkroot.sh mtab.sh
mountall.sh: mdadm-raid lvm2 checkfs.sh checkroot-bootclean.sh
mountall-bootclean.sh: mountall.sh
resolvconf: mountall.sh mountall-bootclean.sh
urandom: mountall.sh mountall-bootclean.sh hwclock.sh
procps: bootlogd mountkernfs.sh mountall.sh mountall-bootclean.sh udev
udev-mtab: udev mountall.sh mountall-bootclean.sh
openmediavault: mountall.sh mountall-bootclean.sh
networking: resolvconf mountkernfs.sh mountall.sh mountall-bootclean.sh urandom
rpcbind: networking mountall.sh mountall-bootclean.sh
nfs-common: rpcbind hwclock.sh
mountnfs.sh: mountall.sh mountall-bootclean.sh networking rpcbind nfs-common
console-setup: mountall.sh mountall-bootclean.sh mountnfs.sh mountnfs-bootclean.sh kbd
mountnfs-bootclean.sh: mountall.sh mountall-bootclean.sh mountnfs.sh
quota: mountall.sh mountall-bootclean.sh mountnfs.sh mountnfs-bootclean.sh
kbd: mountall.sh mountall-bootclean.sh mountnfs.sh mountnfs-bootclean.sh
bootmisc.sh: checkroot-bootclean.sh mountall.sh mountall-bootclean.sh mountnfs.sh mountnfs-bootclean.sh udev
stop-bootlogd-single: mountall.sh mountall-bootclean.sh udev keyboard-setup console-setup mountnfs.sh mountnfs-bootclean.sh networking rpcbind nfs-common quota resolvconf hwclock.sh mountdevsubfs.sh checkroot.sh mountkernfs.sh urandom mdadm-raid hostname.sh checkfs.sh kbd lvm2 checkroot-bootclean.sh bootmisc.sh mtab.sh kmod hdparm bootlogd procps udev-mtab openmediavault

この中でRAIDを構築しようとしているスクリプトは mdadm-raid です。
依存関係には
mdadm-raid: mountkernfs.sh hostname.sh udev
と書かれており、これは mdadm-raid を実行する前に、mountkernfs.sh と hostname.sh と udev の3つのスクリプトを実行しておかなければいけないという意味になります。
そして udev がドライバをロードするためのスクリプトのようです。なので依存関係的にはRAIDを構築する前にドライバをロードしていることになり、特に問題は無いように思えます。おそらくドライバがロードされるイコール、HDDが認識されるわけではないのが問題のような気がします。ここを参考に mdadm-raid スクリプトを編集してRAIDの構築コマンドを実行する前に sleep で3分ほど待つようにしてみましたが、改善されませんでした。
ADAPTEC ASA-6805Hのドライバは pm80xx という名前なのですが、この振る舞いを調べる必要があるのかもしれません。

root@OMV-NODE804:/etc/init.d# modinfo pm80xx
filename:       /lib/modules/3.2.0-4-amd64/extra/pm80xx/pm80xx.ko
license:        GPL
version:        0.1.37 / 1.2.0-10624
description:    PMC-Sierra PM8001/8081/8088/8089/8074/8076/8077 SAS/SATA controller driver
author:         Jack Wang jack_wang@usish.com
srcversion:     3D89A8932F77FEC4538B458
alias:          pci:v00009005d00008076sv00001458sd00001600bc*sc*i*
...
alias:          pci:v000011F8d00008001sv*sd*bc*sc*i*
depends:        libsas,scsi_mod,scsi_transport_sas
vermagic:       3.2.0-4-amd64 SMP mod_unload modversions

調べて解決できなかった場合は、OVM起動後に以下のスクリプトを実行してRAIDを再構築させればいいかなと思っています。ちょっとカッコ悪いですが。
mdadm --stop /dev/md0
mdadm --assemble --scan

2015年8月20日木曜日

NASの自作 Part20

前回、ビジー状態と判定されたドライブのS.M.A.R.T.情報などを確認してみましたが特に問題は無いように見えます。よくわからないので、PCを再起動して再度RAID構築を実行するとエラーなく実行することができ寝ることにしました。朝起きてみるとRAID構築は終わっておらず、結局10時間ぐらいかかるようです。RAID構築後、再度ext4でファイルシステムを作成しました。

AccessMenuBarApps 13

AccessMenuBarApps 32

AccessMenuBarApps 34

AccessMenuBarApps 36

AccessMenuBarApps 37

ファイルシステム構築後にPCを再起動してみると構築したはずのRAIDが、またもや認識されなくなりました。昨晩のRAIDが消えた問題は共有ディレクトリの削除失敗とは関係ないようです。ちなみにOpenMediaVaultのフォーラムに共有ディレクトリの削除に失敗する問題について書き込みがありバグも報告されていました。
まぁバグは修正されるのを待つとして、再起動するとRAIDが認識されなくなる問題については自力で解決策を探さないといけないようですorz
まず以下のコマンドでRAIDの状態を確認してみると、inactiveとでます。

root@OMV-NODE804:~# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : inactive sdb[0] sdc[1]
      5860271024 blocks super 1.2

ググってみると以下のコマンドでアクティブにできるようです。

root@OMV-NODE804:~# mdadm --assemble --scan
mdadm: /dev/md/10DisksRAID6 has been started with 8 drives (out of 10).

むむ?10台中8台でスタートした??たしかに管理画面で見ると8台構成のRAIDとして検出されていました。。。検出されていないHDDは2つとも左チャンバーにあるSASカードと繋がっていないHDDです。昨日、ビジーと判定されたHDDも左チャンバーのHDDです。
もう一度PCを再起動してもRAIDは認識されなくなります。今度は一度停止してからアクティブにしてみます。

root@OMV-NODE804:~# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
root@OMV-NODE804:~# mdadm --assemble --scan
mdadm: /dev/md/10DisksRAID6 has been started with 10 drives.

今度はちゃんと10台でRAIDが認識されました。これは私の推測ですが

  1. SASカードがHDDを認識するのタイミングが遅い
  2. RAIDを認識させようとするときにマザーボードに直接繋がっている2台しか認識できていない
  3. 2台ではRAID6を構成できないのでエラー(inactive)
  4. エラーにはなるものの、この2台は使用中(ビジー)の状態になる
  5. 結果的に起動時にRAIDが認識できないし、起動後に認識させようとすると後から認識された未使用の8台でRAIDが構成されてしまう。。。
のではないかと思います。この問題をどうやって解決すればいいのか、これから調べることにします。。。

2015年8月19日水曜日

NASの自作 Part19

HDDが認識できたのでさっそくRAIDを構築しようと思い、今日の朝一で10台をRAID6のアレイに設定して、会社に行きました。
設定後、残り時間480分と出たので、RAIDの初期化処理に約8時間かかるようですね。。。ワクワクして帰宅してWeb管理画面から確認してみるとRAIDの構築は無事に完了していました。
その後、ファイルシステムの作成(ext4)、共有ディレクトの作成、sambaの設定と続けて行ったのですが、macからアクセスすると書き込み権限が無いと怒られます。
いろいろ試行錯誤してダメだったので、一度共有ディレクトリを削除しようとしたら、エラーになりました。再起動してみるとRAIDが認識されなくなってますorz
画面には不完全な変な名前の共有ディレクトリが残っていて、完全にバグってるように見えます。何度も再起動、削除を試みて、全HDDをワイプすると、やっとまっさらな状態に戻ったようです。
気を取り直して再度RAIDの構築から始めようとすると、またしてもエラー。。。エラーメッセージによるとHDDの1台がビジー状態でRAIDに追加できないとのこと。シリアル番号を確認すると左チャンバーにある、マザーボードから直接繋がってるHDDの一台ということが分かりました。
これからHDDの故障なのか調べてみます。そもそも8時間かけて構築したRAIDが一瞬で消えたり、とても安定して運用してく自信が一気に無くなりましたorz
Error #4000:
exception 'OMVException' with message 'Failed to execute command 'omv-mkraid /dev/md0 -l raid6 -n 10 -N Disk10RAID6 /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh /dev/sdi /dev/sdj /dev/sdk 2>&1': mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: super1.x cannot open /dev/sdc: Device or resource busy
mdadm: /dev/sdc is not suitable for this array.
mdadm: create aborted' in /usr/share/openmediavault/engined/rpc/raidmgmt.inc:278
Stack trace:
#0 [internal function]: OMVRpcServiceRaidMgmt->create(Array, Array)
#1 /usr/share/php/openmediavault/rpcservice.inc(125): call_user_func_array(Array, Array)
#2 /usr/share/php/openmediavault/rpc.inc(79): OMVRpcServiceAbstract->callMethod('create', Array, Array)
#3 /usr/sbin/omv-engined(500): OMVRpc::exec('RaidMgmt', 'create', Array, Array, 1)
#4 {main}

NASの自作 Part18

OpenMediaVaultの最低限の設定が完了したようなので、ADAPTEC ASA-6805HのドライバをインストールしてHDDを10台認識させようと思います。
まず、AdaptecのホームページからDebian7用のドライバをダウンロードしてきます。
ダウンロードしたファイル adp80xx_linux_drivers_v1.2.0-10624.tgz を解凍して内容を確認すると、Debian用にはdebian_7とdebian_7.2と2つのバージョン用のドライバが入っていました。
ここでふと OpenMediaVault がベースとしているDebianのバージョンが気になります。SSHで接続して

cat /etc/debian_version
7.8

なんか全然新しいバージョンをベースにしてるようです。。。これは嫌な予感しかしないorz
とりあえずバージョンは違いますが提供されている最新の7.2用のドライバをインストールしようと思います。さっそくUSBにドライバをコピーしてOpenMediaVaultに挿します。するとOpenMediaVaultはexFATをマウントできないようです。。。
ファイルサーバーなのでexFATぐらいはマウントできないと困るので、ググってマウントできるようにします。こんな感じです。

# パッケージリストの更新
apt-get update
# exfat-fuseとexfat-utilsをインストール
apt-get install exfat-fuse exfat-utils
# 念のため再起動
reboot
# デバイスの一覧を表示してUSBメモリのデバイス名を確認する
fdisk -l
# USBメモリは/dev/sddだと判明
# マウントする
cd /mnt
mkdir usb-exfat
mount -t exfat /dev/sdd1 /mnt/usb-exfat
cd usb-exfat


マウントできたので、マニュアルに書いてあるインストール手順を実行してみます。

dpkg -i pm80xx-1.2.0-10624-debian64.deb
apt-get -f install
reboot

当然のように一発目のコマンドでエラーになりますorz なんでもdkmsってパッケージが必要とのこと。そこでdkmsをapt-getでインストールしようとするのですが、またしてもエラー。今度はlinux-headersがどうたらこうたら。。。試行錯誤して以下のような感じでドライバをインストールすることができました。

apt-get install linux-headers-$(uname -r) build-essential
apt-get install dkms
dpkg -i pm80xx-1.2.0-10624-debian64.deb
apt-get -f install
reboot

再起動後、管理画面からデバイス一覧を見てみると、無事に10台のHDDが認識されました!!

AccessMenuBarApps 11

いやー、やっとこれでRAIDが組める。安定稼働できるか未知数ですが、とりあえず良かったです。本当に良かった。

2015年8月18日火曜日

NASの自作 Part17

とりあえず、OpenMediaVaultをインストールしたのでさっそくSASのドライバをインストールしたいのですが、その前に基本的な設定をすることにします。

最初はWebの管理画面のadminのパスワードを変更します。

AccessMenuBarApps 5

次にセッションタムアウトを延長します。デフォルトだと5分なので、ちょっと調べ物している間にタイムアウトになってしまいます。本当なら1時間ぐらいで設定したいところですが、残念ながら最大で30分までしか延長できないようです。これは微妙に不便だな。。。

AccessMenuBarApps 6

続けてOpenMediaVaultや関連するパッケージをアップデートします。やはり予想通りOpenMediaVaultのアップロードも管理画面から行えるようです。

AccessMenuBarApps 7

とりあえず更新できるパッケージは全て更新することにします。

AccessMenuBarApps 8

最後にSSHを有効にします。これでmacからターミナルでOpenMediaVaultを操作できるようになるので、ドライバーのインストールなどコマンドラインから行う操作が捗るはずです。

AccessMenuBarApps 9

全ての設定で共通ですが、変更を反映するためにSaveボタンを押す必要があります。
これでmacのターミナルから以下のコマンドでOpenMediaVaultにSSHで接続することができました。(IPは環境によって変わります)

ssh root@10.0.1.5

NASの自作 Part16

ハードウェアが組み終わったので、さっそくOpenMediaVaultをインストールしたいと思います。

  1. ダウンロードページからopenmediavault_2.1_amd64.isoをダウンロードします。最新版は2.1.8のようですが2.1のISOしかダウンロードできないようです。おそらくインストール後に管理画面からアップデートする感じでしょうか。
  2. ダウンロードしたisoイメージをUSBに焼きます。
  3. USBをPCに挿して電源をON。FreeNASのインストールと同じで予めLANケーブルは接続しておきます。
  4. F10を押してBoot Menuを表示
  5. 起動ドライブをUSBに設定
  6. OpenMediaVaultのインストーラーが表示されます。ここからがFreeNASと違って手順が長いです。
  7. メニューから[Install]を選択
  8. 言語の選択 -> English
  9. 国の選択 -> other -> Asia -> Japan
  10. 言語と国の選択から適切なUnicodeロケールが選べないので選択 -> en_US.UTF-8
  11. キーボードの選択 -> Japanese
  12. マザーボードにNICが2つあるのでプライマリを選択 -> eth0 (ここでLANケーブルが接続されていないとエラーになる)
  13. ホスト名を入力。なんでもいいらしいので -> OMV-NODE804
  14. ドメイン名を入力。これもなんでもいいらしいのでデフォルトの -> local
  15. rootのパスワードを入力
  16. rootのパスワードを再入力
  17. インストールするHDDを選択 -> 120.0 GB ATA Samsung SSD 840
  18. Debianのパッケージマネージャが使うサーバーを選択 -> Japan -> ftp.riken.jp
  19. Httpプロキシの設定 -> 使わないので空白
  20. インストールが完了して再起動します

OpenMediaVaultが起動するとコンソールにログインを促すプロンプトが表示されます。FreeNASと違ってIPアドレスは表示されません。
rootでログインしてみようとしたのですが、キーボードが効きません。。。とりあえず電源ボタン長押してでシャットダウンしてから再起動してみます。
ちなみにSASカードが起動時にいろいろ初期化処理をしてるらしく、起動に4分ぐらいかかります。
再起動後は無事にキーボードが使えました。再度、rootでログインしてみます。インストール時に指定したパスワードでログインすることができました。
ifconfigコマンドでIPを確認して、macからブラウザでアクセスしてみます。


OMV login

ブラウザからログイン画面にアクセスすることができました。
またもやrootでログインしてみよとしたのですが、ログインできません。。。ググってみると、どうやらWeb管理画面のアカウントは別のようです。Username=admin Password=openmediavault を入力してログインすることができました。


OMV main
OMV physicalDisk 1

物理ディスクの一覧にはSASカードに接続した8台のHDDが表示されていないので、OSからはまだ認識されていないようです。ドライバを入れて無事に認識されればよいのですが。。。まだまだ先は長そうですね。

NASの自作 Part15

ついに今日、ASA-6805H Singleが届きました。


IMG 0535

ADAPTEC ASA-6805Hは結構熱に弱いみたいなネットの情報があったので、買っておいたSASカード用のファンを付けようと思ったのですが、残念ながら付属のネジでは合わず取り付けることができないようです。
後日、もう少し細いネジを後ほど買ってつけることにします。あとASA-6805H Singleについていろいろ調べた結果、ZFSと相性が悪いなど全く良い噂を聞かないのでFreeNASでの運用は諦めてOpenMediaVaultにすることにします。
OpenMediaVaultはかなりの頻度でリリースしており、本当に安定してるのか不安になりますが、手軽に使えて無料のOSだと他に選択肢がないので致し方ありません。
なにわともあれ、とりあえずSASカードを取り付けることにします。


取り付け後の右チャンバー
IMG 0537
取り付け後の左チャンバー
IMG 0538

相変わらずケーブルがゴチャゴチャしてますが、問題なく取り付けることが出来ました。
起動すると、Control+AでAdaptec HBA Configuration ユーティリティが起動します。ユーティリティから全てのドライブが認識されることを確認できました。
右チャンバーにある8台のHDDの1系統の電源から分岐してますが、とりあえずは問題はなさそうです。
あとはOSを入れ替えて、ドライバをインストールしてOSから正常に認識できるかが問題ですね。これでやっとスタートラインに立つことが出来ました。