ik-fibTweetタイトルの通り、新しくNASを構築しようと思ったのですが、その際にZFSを使ってみたかったのでZFSのバージョンが高いものが使えるFreeBSDをインストールして、ZFSでNAS構築をしてみました。その中で幾つか詰まったこともあったので、作業内容と共にメモ代わりに...SSDを認識しない最初の難所として、システムディスクに使用しようとしていたSSDをFreeBSDのインストーラが認識しない問題が発生しました。初めに物理的にSSDが正常に刺さっていない可能性もあるため、BIOS上でSSDを認識するか試しました。結果として、BIOS上では正常にSSDが認識されているため、少なくとも物理的には認識できる形でつながっていることは確認できました。12.04.1のインストールディスクで試した所、こちらでは普通に認識され、インストール先に指定が出来る状態でした。9.2のディスクを新たに作り確認してみましたが、特に変化なしBIOSでSSDのモード変更BIOSの設定でSATAの設定をAHCIからIDEに変更しました。変更した所、ドライブが認識され標準のインストール画面から、インストールすることが出来ました。インストール後、モードをAHCIに戻しても、少なくとも表面上は問題ありませんでした。(インストール時にモードの確認等しているのであれば問題があると思いますが...)CDドライブを手動でマウント最初は上記の指定でやっていましたが、その後テストでOS再インストールした時にいろいろ試していたら、マウントポイントを手動で指定する際に、CDドライブを指定すれば特に設定を変えずにインストーラが実行されました。私の環境だと以下の様な形です。cd9660:/dev/cd0内蔵ドライブではなくUSBの外付けDVDドライブでインストールしようとしたのが原因なのか、SSDをブート時のドライバだけでは認識できなかったのかはわかりませんが、これでインストーラが正常に起動しました。あとは思いついたけどやらなかったことといえば、ドライバ組み込みやSATAケーブル変えることを思いつきましたが、前者は敷居が高いのと後者は別OSでは認識しているのであまり意味はなさそうだったので、試しませんでした。OS初期設定DNSサーバ設定インストール段階では、DNSサーバ情報が登録されておらず、名前解決が一切できないのでURL指定でのほとんどの通信ができないので、最初に設定します。install時計合わせインストール時にntpの設定はしましたが、ネットワークに後から繋いだので、最初はを手動で合わせました。trim有効化システムディスクにはssdを利用しましたが、デフォルトではtrimの設定が有効ではなかったため、手動で有効化しました。起動中にその起動ディスク自体の設定を変えることはできないようなので、インストールディスクをLiveCDモードで利用して、以下のコマンドで有効化、その確認を行いました。trimZFS構築ある程度の初期設定が終わったら、FreeBSDを利用した主目的であるZFSの設定を行います。初めにZFSのプールを作成します。この際、ある程度の冗長性を持たせるためにRAIDZ2を選択して、構築しました。作成したプールから実際にシステムにマウントされるファイルシステムを作成します。/zpool0/main圧縮機能の利用・確認ZFSにはファイルシステム単位でファイルの圧縮を行うことができるので、その利用およびアルゴリズム毎の動作を確認しました。localその後、/dev/urandomを使って128MBのファイルを各ファイルシステムに作成しました。/zpool0/zleしかし、圧縮するシステムの方が圧縮しないよりも書き込みが速い自体になってしましました。書き込み自体も特別圧縮された様子が無く、完全なランダムデータのため圧縮できなかったのではと思い、用意したbmpファイルで再チェックしました。-今回は圧縮アルゴリズム毎に使用されている容量にかなり差が生まれ、圧縮機能が動いていることが確認できました。書き込みはやはり圧縮しないよりも圧縮した方が早く、これがただの誤差レベルなのか、圧縮して書きこむ方が最終的な書き込み量が減るため、こちらの体感として早くなっているのかはわかりませんでした。ZFS破壊テストわざわざ冗長性を持たせていても、実際に障害時に復旧できなかったら意味が無いため、わざと障害を起こし、そこから復旧できるかを以下の3点、テストしました。SATAケーブルを稼働中に引き抜く(HDDの故障テスト)SATAケーブルを稼働中に抜き、別のHDDを差す(HDDの故障→交換テスト)ZFS領域はそのまま、OSを再インストールしてデータを読み出せるか確認する(システムディスクの故障→復旧テスト)SATAケーブルを稼働中に引き抜く文字通り、SATAケーブルを稼働中にいきなり引き抜きアクセス出来ない状態にします。今回、raidz2なので理論上2台の障害までは問題なく動くはずなので、2台引き抜きます。statusで以下のように表示されます。errors一旦、エラーの出ている箇所をオフラインにして、再度SATAケーブルを挿し直した後にオンラインに戻します。healthyすると、何も問題なく表示されるようになりました。HDDをぶっこ抜き→入れ替えHDDを稼働中に抜いた後に、差し込む端子を変更してみました。/dev/ada7OS再インストールシステムディスクが壊れた際にZFSのデータが取りだせるかを検証するために、上記の状態からシステムをインストールしているSSDをフォーマット、OSの再インストールを行い、ZFSのデータが取り出せるかを確認しました。システムディスクのフォーマット後、同じ設定でOSを再インストールした後、以下のコマンドで状態を確認。directory上記の通り、OS再インストール直後は以前の状態を取得できていません。importでプール名を確認の後、強制インポートで復旧しました。zle上記のようにimportでOS再インストール前のデータも正常に取得できました。'zfs_enable="YES"'>>/etc/rc.confsambaインストールwindowsからも利用することを想定しているので、ports経由でsambaをインストールしました。usernameそしてsambaを実行。最近はUTF-8設定のマシンが多いので、文字コードで悩まないためにデフォルトの設定をUFT-8化しました。:lang=ja_JP.UTF-8:sSMTP,root宛メールの転送設定sendmailを設定しようと思いましたが、root宛のメールを転送したいだけだったので、送信だけのsSMTPを試してみました。sendmailの停止設定まだ特にsendmailの設定はしていないので起動することはないと思いますが、sSMTPはsendmailの代行として動く点も多いので、競合しないよう念のため止めて起きます。replaceで/etc/mail/mailer.confを修正して、sendmailからssmtpに置き換えを行ってくれるようです。ssmtpの設定ssmtp自体の設定とroot当てのメールをgmailに転送する設定を行います。protected]AuthPass=yourpasswordUseSTARTTLS=YESこのとき、googleの二段階認証を使っている場合、AuthPassにはログインパスワードではなく、googleアカウントのセキュリティページで発行できる「アプリケーション固有のパスワード」を設定する必要があります。mail送信のテスト以下のコマンドで適当なメールを送って正しく送信できるかを確認します。適当な本文(Ctrl+Dで終了を入力)rootに設定したアドレスで受信できていることを確認します。scriptが含まれており、それを有効にするだけで毎日チェック→通知をしてくれるそうです。試しに実行すると下のような形で表示してくれます。healthyそして毎日実行を有効にするために以下のコマンドで設定ファイルに記載します。/etc/periodic.confWindowsからの速度計測Windowsからも利用することを想定しているので、Windowsからの速度計測も行ってみました。一応これも圧縮形式ごとに測定しました。圧縮なしzlelz4gzipgzip-9速度自体はNASとしては、それなりに高速なので、いい感じですが、やはりddで確認した時と同様に圧縮と速度の関係がわかりにくいことに...マシンスペックもそれなりのを用意しているので、実質的に圧縮で速度低下を気にしないレベルまで圧縮速度が出ているのでしょうか。まとめ作り初めてまだ1~2週間程度ですが、特に問題も無い形なのでメインで使い始めました。本来データの安全を確保するには、データを分散すべきですが、管理が大変なので大きくそれなりの安定性のところに集約しようと思い、今回のNAS制作を行いました。これで壊れたらしかたないですが、出来るだけ壊れないように冗長性や故障時の復元準備等もしているので、後は出来るだけ壊れないことを祈りつつ維持して行く形でしょうか。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。ik-fib東京のどこかの会社のエンジニア基本的に思考も行動もカオスです。WordPress.com.。