ラズパイAlexaにはまりました。近いうちに記事を書きますね。今回の記事では、前回、設置した4台のハードディスクを2組のRAID1ディスクに構成にします。pi特有なのか、外付けHDDでRAIDを組む場合に起こるのか、いくつか問題が発生しましたので、その問題解決を含めて、説明していきます。RAIDディスク構築の流れRAIDディスク構築の大まかな流れは、以下の通りです。RAIDに用いるディスクにRAID用のパーティションを作成する。それぞれのパーティションを用いて、RAIDディスクを構成する。ファイルシステムを作成する。マウントする(必要に応じて、自動マウントするように設定する)。今回は、2台のRAIDディスクを作成するので、まず1台目のRAIDを上記の流れに従って設定した後に、2台目を1台目と同様に設定します。以下では、流れに沿ってそれぞれ説明します。ディスクの確認まずは、4台あるディスクがちゃんと認識されているか確認します。/dev/sdd上の4つがHDDなのですが、4つもあるとどれとどれが対応するのか区別ができないので(*)、まず2つのHDDを用いて1つのRAIDディスクを構成することにしました。はじめに、USB2.0のHDDを外したところ、ASMediaが/dev/sda,/dev/sdbとして残りました。これがUSB3.0のHDDです。残りが、SunplusがUSB2.0のHDDとなります。lsusbやhdparmでは特定できませんでした。パーティションの作成fdiskやparted、gpartedなどで、パーティションテーブルを編集できます。ここでは、fdiskとpartedでの作成例を示します。実際にはfdiskで作成しました。昔は、fdiskでは2TB超のHDDを取り扱えない場合があったので、partedを使う必要がありましたが、最近はどうなんでしょう。2TB超の場合、gdiskを使うようです。パーティションテーブルの編集には、これまでpartedを使っていましたが、次の機会にはgdiskを使ってみようと思います。fdiskを使う場合fdiskの場合、最短「n→(default)→t→fd→w」だけのキー入力なので、簡単です。partedを使う場合partedを使う場合には、以下のようになります。typeを指定する必要はないような気がしますが、いつも使っているext4を指定しています。RAID1デバイスの作成/dev/sda,/dev/sdbのパーティションを作成したら、次にRAIDデバイスを構成します。mdadmのインストールRAIDディスクを構築・管理するmdadmをインストールします。mdadmインストールの途中、起動時にアレイを開始するか聞かれましたが、"none"と回答しました。ubuntuでは聞かれない質問でしたので、ちょっと困惑。最終的には、"all"にしました。"none"のまま自動マウントを設定すると、ラズパイの起動が途中で停止して、自動マウントが設定できなかったのです。自動マウントできる方が便利なので、"all"に変更しました。"auto"でもRAIDにトラブルが発生した場合には、やはり停止します。途中停止した場合には、コンソールでrootになって、emacsやnanoで/etc/fstabを編集し、RAIDディスクをマウントしないようにすれば、起動できるようになりましたが、ディスプレイ・キーボードなしだとこれができないので、この場合、"none"にして、手動でRAIDを起動した方がよいかもしれません(ディスプレイ・キーボードなしの私の初代ラズパイサーバは、起動がストップして困ったことはありません。fstabのディスクマウントのエラー時の処理の仕様が変わったのでしょうかね)。初代ラズパイはwheezy、ラズパイ3はjessieですが、jessieではマウント時の取り扱いに変更があり、リムーバブルドライブのマウントオプションはnoauto(自動マウントしない)かnofail(マウント失敗してもbootは継続する)を付けるようにする方がよいとのこと*1。起動が途中停止してしまうのは、この違いでしょうかね。RAIDのresync/recovery完了後の検証ですが、後述のrootdelay=10の設定後は、"none"でも"all"でも、どちらでも自動マウントができました。"none"でも起動完了後にはRAIDはアクティブになっていたので、"none"だからといって、RAIDデバイスが起動されないということではないようです。mdadmのインストール時の問い合わせ。"none"で自動マウントを設定すると、RAIDが起動していない状態でディスクをマウントしようとする。タイムアウトするまで待って、その後、起動が途中停止する(sshではアクセスできない)。RAIDデバイスの作成mdadmを使って、RAIDデバイス/dev/md0を構成しました。started./bootは入れられないよ、と警告がでますが、/bootは入れないのでyesを回答。これで、/dev/md0というRAID1デバイスが構成されます。/etc/mdadm/mdadm.confに追加し、デバイスの構成情報を保存します。作成したRAIDデバイスにパーティション、ファイルシステムを作成し、マウントできるようにします。ファイルシステムはext4で作成しました。mdadmのインストールで、boot時のRAID起動を"none"にした場合この場合、起動時にmd0にアクセスできませんので、起動完了後に以下を実行します。/mnt/raspi3-u3/ラズパイ本体を再起動、動作確認をして設定完了です。mdadmのインストールで、boot時のRAID起動を"all"にした場合まず、blkidで/dev/md0p1のUUIDを調べます。PARTUUID="fe3a90ec-01"このUUIDを用いて、以下の行を/etc/fstabに追加し、自動的にマウントするようにします。マウントポイントは、/mnt/raspi3-u3にしています。0注:nofailにより、自動マウント失敗した場合でも、bootが停止しない*2。マウントして、fstabの設定を確認します。/mnt/raspi3-u3自動的にマウントしたい場合には、"none"ではなく、"all"を選択し、RAIDを起動させておく必要がありますが、既にnoneを選択している場合には、dpkg-reconfigureで"all"に再設定できます(dpkg-reconfigureでは、他に、定期的な冗長性のチェックや監視デーモンの起動、メールの通知先の設定もできます)。mdadm再起動して、特に問題がなければ、RAIDディスクの設定は終了です。問題がありました...。通常であれば、再起動して問題なく動作するはずですが、正常に起動しませんでした。コンソールメッセージを見ていると、RAIDのアクティブ化に失敗している模様。調べたところ、外付けディスクの起動を待つ必要があるようなので、bootを遅延させることで、解決できました。bootの遅延は、/boot/cmdline.txtの既存行に以下のように"rootdelay=10"を追加しました*3。rootwait以上で、1台目のRAID1ディスクの完成です。2台目のRAIDディスクの構築2台目のRAIDディスクも1台目と同様に設定を行います。デバイス名の確認1台目のRAID1ディスクが接続している状態で、既存のHDDのデバイス名を確認します。/dev/sdb1次に、2台目のHDDを接続し、デバイス名を確認します。/dev/sdeあれれ、...。/dev/sda,/dev/sdbが消えている。HDDを3台しか認識していない。その後、いろいろやってみましたが、(リビルド中でHDDの電力消費が多いため?)1つのハブではデバイスの認識が不安定になっているようなので、もう1つハブを加えて、配線し直しました。/dev/sdc1が1台目RAIDディスク、/dev/sdb,/dev/sddがUSB2.0のHDDです。同じHDDケース、同じ内蔵HDDだと、さらに混乱するので、hdparmで予めHDDのシリアル番号を調べておいた方がよいかもしれません。2台目のRAIDディスクの設定デバイス名が確認できたら、あとは1台目のRAIDディスクと同様に設定を行います。-a再起動して期待通りの動作をしているか、確認します。2台ともに正常動作していれば、RAIDディスクの設定は完了です。最後に、同期の完了時間を確認してみました。finishするのに、約2800min、まるまる2日かかります。RAIDが1台だけだと、1日程度だったので、約2倍になってしまいました。USBの転送速度がネックになっているのでしょうかね。md0の"recovery"は、ご愛敬。やっているうちに、修復することになってしまいました。pi3でのRAID1ディスクの構築についてまとめました。ubuntu+内蔵HDDで構成する場合と違って、多少苦労しました。起動を遅延させること、ハブの給電不足の解消のところでハマりました。2つハブが必要になったり、最近2TBでは窮屈だったりしているので、初代ラズパイとの兼ね合いでHDD3台の4TBのRAID5ディスクに構成し直すかもしれません。次回は、samba、nfsなどを使ったファイル共有についてまとめる予定です。HDDの起動を待つため、bootを遅延させる(/boot/cmdline.txtにrootdelay=10を追加)。自動マウント失敗での起動停止を避けるなら、/etc/fstabでnofailを追加する。boot時のRAID起動設定の"none","all"は、少なくともRAIDが正常な状態では、自動マウントを含めて違いはないように見えます。参考文献コンピュータとかバイクとか。関連記事*1:http://qiita.com/Cinosura/items/6ab435331ea2b3671a1d*2:https://www.debian.org/releases/jessie/i386/release-notes/ch-information.ja.html#systemd-auto-mounts-incompat*3:http://blog.drewwithers.com/2013/11/raspberry-pi-usb-raid1-root-partition.htmlこのブログの記事はRAIDブートの方法ですが、SSDブートにも応用できそうですね。後々、問題が生じそうなので、やりませんけど...。楽天ROOMにガジェットをまとめてます。グレイテスト・ショーマン心温まるミュージカル。アイロンを使って本を分解してみましたCrystalDiskMarkっぽい計測を行うコマンドfio-cdmとCrystalDiskMarkの結果を比較したAmazonダッシュボタンと定期おトク便で紙パンツを発注。