NAS4Freeを使ってPCでLAN接続のHDDを作る

USB接続HDDや内蔵HDDはPCのトラブルに巻き込まれて内容が消えたことがあるので、そういった心配の少ないLAN接続HDD(NAS)をメインで使っている。市販のNASは自由度が少ない上に買うと割高なので、今回も適当なPCにNAS専用OSをインストールしてNASを作った。
HDDは1台でもいいけど、HDDを複数台組み合わせれば、1つの大きなディスクにしたり、3台以上なら1台分の容量は減るけど1台壊れても内容が消えないし、壊れた1台だけを交換したりも出来る。複数台のHDDを組み合わせる方法として定番のRAID 5には書き込みホール問題でサイレントクラッシュが発生する可能性があるので、この問題が発生しないRAID Zを使いたい。
NAS専用OSはWebブラウザだけで設定出来て、RAID Zにも対応しているFreeNASをこれまで使っていたけれど、iXsystems社が関わるようになったバージョン8から見た目も使い勝手も違うものになってしまったので、バージョン7までを作っていたチームが別の名前で始めたNAS4Freeを今は使っている。
NAS4FreeFreeBSDベースで、512MB以上のメモリ(ただし、RAID Zを使う場合は最低でも2GB以上が望ましい)と2GB以上のストレージ(HDD、SSDUSBメモリ等)があれば動作する。ただし、バージョン11からは64ビット版のみになってしまったので、32ビットCPUの場合はバージョン10を使用する。
とりあえず、NAS4FreeをインストールしたHDDまたはUSBメモリ等の空き領域を共有フォルダとしてWindowsから見えるようにして、必要に応じて追加したHDDを共有フォルダとして追加、DLNAクライアントから動画や音楽の再生、WebブラウザやSFTPクライアントでファイルの読み書き、S.M.A.R.T.でHDD異常検出時にメール通知、UPnPとダイナミックDNSで外部からインターネット経由でファイルの読み書き出来るところまで設定してみた。

ダウンロード

NAS4Free公式サイト(英語)から「DOWNLOADS」→「NAS4Free Downloads」の「NAS4Free x86 (32/64-bit)」から「Get/browse NAS4free releases」で、SourceForge.netにあるNAS4Freeのファイル一覧が開く。
32ビット版なら「NAS4Free-10.3.0.3」→「10.3.0.3.3776」→「NAS4Free-x86-LiveUSB-10.3.0.3.3776…」(CD-R等を使う場合は「NAS4Free-x86-LiveUSB-10.3.0.3.3776.iso」)を、64ビット版なら「NAS4Free-10.3.0.3」→「10.3.0.3.3776」→「NAS4Free-x64-LiveUSB-10.3.0.3.3776…」(CD-R等を使う場合は「NAS4Free-x64-LiveUSB-10.3.0.3.3776.iso」)か、最新版の「NAS4Free-11.0.0.4」→「11.0.0.4.3882」→「NAS4Free-x64-LiveUSB-11.0.0.4.3882…」(CD-R等を使う場合は「NAS4Free-x64-LiveUSB-11.0.0.4.3882.iso」)をダウンロードする。
今回は32ビット版も使いたかったのでNAS4Freeのバージョン10(10.3.0.3.3776)を使ったけど、バージョン11でも基本的には同じ。ただ、WebGUIを日本語化した際にいくつか英語のままの箇所があったり、英語のままだった箇所が逆に日本語になってたりする部分がある。
ダウンロードしたgzファイルをUSBメモリに書き込むためにRawrite32をダウンロードする。(CD-R等を使うためにダウンロードしたisoファイルは右クリックして「ディスクイメージの書き込み」、もしくは「C:\Windows\System32\isoburn.exe」を起動してCD-R等に焼く。)
Rawrite32公式サイト(英語)から「Download」→「rw32-setup-1.0.4.0.exe」をダウンロードして開き、以下の手順でインストールする。(もしくは「rawrite-1.0.4.0.zip」か「rawriteexe-1.0.4.0.zip」をダウンロードして解凍する。)

  1. 「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」が出たら「はい」
  2. 「インストール先を選んでください。」が出たら「インストール」
  3. 「Rawrite32 セットアップ ウィザードは完了しました。」が出たら「完了」

2GB以上のUSBメモリを取り付けたら、以下の手順でUSBメモリNAS4Freeを書き込む。

  1. スタートメニュー→「Rawrite32」→「Rawrite32」(もしくは「Rawrite32.exe」)を実行する
  2. 「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」が出たら「はい」
  3. ファイルシステムイメージ」から「開く」
  4. ダウンロードしたNAS4Freeのgzファイルを選択して「開く」
  5. 「書込先」からUSBメモリのドライブ(例:D: Generic USB SD Reader [1.83 G バイト])を選択して「書き込み」
  6. 「読み込んだイメージをドライブ D: Generic USB SD Reader [1.83 G バイト] に書き込みます。」が出たら「はい」
  7. 「プログラムメッセージ出力に、949.0 M バイト 正常に書き込まれました。」が出たら、Rawrite32のウィンドウを×で閉じる
  8. 「ハードウェアを安全に取り外してメディアを取り出す」で、USBメモリを取り外す

インストール

NAS4FreeUSBメモリ(もしくはCD-R等)から起動して、PCのメモリ容量+2GB以上のUSBメモリやHDD等にインストールする。

  1. 「Console Menu」が出たら「9) Install/Upgrade from LiveCD/LiveUSB」を選択するために「9」を入力して、Enterキーを押す
  2. NAS4Free Install & Upgrade Menu」が出たら「1 Install 'Embedded' OS on HDD/SSD/CF/USB (Preferred)」を上下で選択、「OK」を左右で選択して、Enterキーを押す
  3. NAS4Free Embedded Install Options Menu」が出たら「1 Install 'Embedded' OS/GPT on HDD/SSD/CF/USB (Preferred)」を上下で選択、「OK」を左右で選択して、Enterキーを押す
  4. NAS4Free Embedded Installation」が出たら「OK」を左右で選択して、Enterキーを押す
  5. 「Choose installation media」が出たらNAS4FreeUSBメモリ(例:「da0 Generic USB SD Reader 1.00」)を上下で選択、「OK」を左右で選択して、Enterキーを押す
  6. 「Choose destination media」が出たらインストール先のUSBメモリやHDD等(例:「da1 14907MB 」)を上下で選択、「OK」を左右で選択して、Enterキーを押す
  7. 「Enter the size of the swap partition in MB.」が出たら、「OK」を左右で選択して、Enterキーを押す
  8. 「Press ENTER to continue.」が出たら、Enterキーを押す(直前に「There was a problem during initializing the destination disk.」が出ている場合は、インストール先の初期化に失敗しているので、Windows等で初期化を行なってから再度インストールを行う。)
  9. NAS4Free Install & Upgrade Menu」が出たら「Exit」を左右で選択して、Enterキーを押す
  10. 「Console Menu」が出たら「8) Shutdown Server」を選択するために「8」を入力して、Enterキーを押す
  11. 「Do you really want to shutdown the server?」が出たら「Yes」を左右で選択して、Enterキーを押す
  12. NAS4FreeUSBメモリ(もしくはCD-R等)を取り外す

初期設定

NAS4FreeをインストールしたUSBメモリやHDD等から起動する。
初期状態ではIPアドレスが192.168.1.250の固定割当になっているので、別のPCからWebブラウザでNAS4Freeを設定するためには、そのPCのIPアドレスを一時的にでも192.168.1.249等に変更する必要があるが、それは面倒なのでNAS4FreeIPアドレスを自動割当に変更する。

  1. 「Console Menu」が出たら「2) Configure Network IP Address」を選択するために「2」を入力して、Enterキーを押す
  2. 「Do you want to use DHCP for this interface?」が出たら「Yes」を左右で選択して、Enterキーを押す
  3. 「Do you want to configure IPv6 for this interface?」が出たら「No」を左右で選択して、Enterキーを押す
  4. 「Press ENTER to continue.」が出たら、Enterキーを押す

NAS4Freeの設定を開いて、日本語化などを行う。

  1. ブラウザでWebGUI Address(例: http://192.168.1.250 )を開く(Console Menuの上部に表示されている)
  2. 「Username」に「admin」、「Password」に「nas4free」を入力して「Login」
  3. 「System」→「General」
  4. 「Language」を「English」から「日本語」に変更
  5. 「Hostname」を「nas4free」から必要に応じて書き換える
  6. 「Time zone」を「Etc/UTC」から「Asia/Tokyo」に変更
  7. 「Date format」を「Wednesday February 15 15:12:46 UTC 2017」から「2017-02-15 15:12:46」に変更
  8. 「Enable NTP」の「Use the specified NTP server.」にチェックを入れる
  9. 「NTP Time Server」を「pool.ntp.org」から必要に応じて国内のNTPサーバに書き換える(例:「ntp.nict.jp」)
  10. 「Save」

WebGUIとrootのパスワードを設定する。

  1. 「システム」→「基本」
  2. 「パスワード」
  3. 「現在のパスワード」に「nas4free」を入力
  4. 「新しいパスワード」に新しいパスワードを入力(「(確認)」にも同じものを入力)
  5. 「保存」

Windowsのネットワークから見えるように設定する。

  1. 「サービス」→「CIFS/SMB」
  2. 「Common Internet File System」の「有効」にチェックを入れる
  3. 「NetBIOS 名」を「nas4free」から必要に応じて書き換える
  4. Dos 文字セット」を「CP437 (ラテン US)」から「CP932 (日本語 Shift-JIS)」に変更
  5. 「ローカルマスタブラウザ」を「Yes」から「No」に変更
  6. 「タイムサーバ」を「Yes」から「No」に変更
  7. 「空のパスワード」の「空のパスワードを持つアカウントでのアクセスを許可します。」にチェックを入れる
  8. 「保存して再起動」

NAS4FreeをインストールしたUSBメモリやHDD等の空き領域(末尾のパーティション)をディスクとして追加する。

  1. 「ディスク」→「マネージメント」
  2. 「ディスクのインポート」→「OK」(もしくは、+アイコン(ディスクの追加)で「ディスク」からNAS4FreeをインストールしたUSBメモリやHDD等を選択して「追加」)
  3. 「変更の適用」
  4. 「ディスク」→「マウントポイント」
  5. +アイコン(マウントポイントの追加)
  6. 「ディスク」からNAS4FreeをインストールしたUSBメモリやHDD等を選択(例:「da0: 14907MB (SanDisk Cruzer Switch 1.27」)
  7. パーティション番号」を「1」から「4」に書き換え(「診断」→「情報」の「パーティション」から末尾のパーティション番号を確認できる)
  8. 「マウントポイント名」を適当に入力(例:「public」)
  9. 「追加」
  10. 「変更の適用」

Windowsの共有フォルダとして設定する。

  1. 「サービス」→「CIFS/SMB」
  2. 「共有」
  3. +アイコン(共有の追加)
  4. 「名前」を適当に入力(例:「public」)
  5. 「コメント」を適当に入力(例:「Public Folder」)
  6. 「パス」に「/mnt/」に続けて先ほどのマウントポイント名を入力(例:「/mnt/public」)
  7. 「ごみ箱」の「ごみ箱機能を有効化」のチェックをはずす
  8. 「シャドウコピー」の「シャドウコピーを有効にします。」のチェックをはずす
  9. 「追加」
  10. 「変更の適用」

NAS4Freeを再起動する。

  1. 「システム」→「リブート」
  2. 「Yes」

再起動が終わると、Windowsのネットワークにnas4free(NetBIOS名がnas4freeの場合)が見えるようになり、その中に共有フォルダのpublic(共有の名前をpublicにした場合)が読み書き出来る状態になっている。NAS4Freeの設定もWindows上のブラウザから http://nas4free (NetBIOS名がnas4freeの場合)で開けるようになる。

ディスクの追加

NAS4FreeをインストールしたUSBメモリやHDD以外のディスクを共有フォルダとして使えるように設定する。

  1. ブラウザでNAS4Freeの設定を開く
  2. 「ユーザー名」に「admin」、「パスワード」に「nas4free」を入力して「ログイン」
  3. 「ディスク」→「マネージメント」
  4. 「ディスクのインポート」→「OK」(もしくは、+アイコン(ディスクの追加)で「ディスク」から追加するディスクを選択して「追加」)
  5. 「変更の適用」
  6. 「ディスク」→「マネージメント」
  7. 「HDD フォーマット」(フォーマット済のディスクをそのまま使う場合はこの処理を飛ばして「ディスク」→「マウントポイント」から行えば良い)
  8. 「File System」から「UFS (GPT and Soft Updates)」を選択(任意のフォーマット形式を使いたい場合はそれを選択する)
  9. 「Disk Selection」から追加するディスク(例:「ada0」)にチェックを入れる
  10. 「Next」
  11. 必要に応じて「Advanced Format」の「Enable Advanced Format (4KB Sector Size).」にチェックを入れる
  12. 「Next」
  13. 「フォーマット」
  14. 「OK」
  15. 「ディスク」→「マウントポイント」
  16. +アイコン(マウントポイントの追加)
  17. 「ディスク」から追加するディスクを選択(例:「ada0: 3815448MB (HGST HMS5C4040ALE640)」)
  18. パーティションタイプ」から「GPT パーティション」か「MBR パーティション」を選択(「診断」→「情報」の「パーティション」からGPTかMBRか等を確認できる)
  19. ファイルシステム」から「UFS」を選択(他のフォーマット形式を使っている場合は適切に選択する)
  20. 「マウントポイント名」を適当に入力(例:「share」)
  21. 「追加」
  22. 「変更の適用」
  23. 「サービス」→「CIFS/SMB」
  24. 「共有」
  25. +アイコン(共有の追加)
  26. 「名前」を適当(例:「share」)に入力
  27. 「コメント」を適当(例:「Shared Folder」)に入力
  28. 「パス」に「/mnt/」に続けて先ほどのマウントポイント名を入力(例:「/mnt/share」)
  29. 「ごみ箱」の「ごみ箱機能を有効化」のチェックをはずす
  30. 「シャドウコピー」の「シャドウコピーを有効にします。」のチェックをはずす
  31. 「追加」
  32. 「変更の適用」
  33. 「システム」→「ログアウト」

ディスク4台をRAID-Z1で追加

NAS4FreeをインストールしたUSBメモリやHDD以外のHDD 4台を共有フォルダとして使えるように設定する。

  1. ブラウザでNAS4Freeの設定を開く
  2. 「ユーザー名」に「admin」、「パスワード」に「nas4free」を入力して「ログイン」
  3. 「ディスク」→「マネージメント」
  4. 「ディスクのインポート」→「OK」(もしくは、+アイコン(ディスクの追加)で「ディスク」から追加するディスクを選択して「追加」を繰り返す)
  5. 「変更の適用」
  6. 「ディスク」→「マネージメント」
  7. 「HDD フォーマット」
  8. 「File System」から「ZFS Storage Pool」を選択
  9. 「Disk Selection」から追加するディスクすべてにチェックを入れる(例:「ada0」〜「ada3」)
  10. 「Next」
  11. 「Next」
  12. 「フォーマット」
  13. 「OK」
  14. 「ディスク」→「ZFS
  15. 「仮想デバイス
  16. +アイコン(Add Virtual Device)
  17. 名前を適当に入力(例:「tank」)
  18. 必要に応じて「4KBラッパー」の「4KBラッパー (nop デバイス)を作成する」にチェックを入れる(AFTなディスクの場合)
  19. 「Device List」から追加するディスクすべてにチェックを入れる(例:「ada0」〜「ada3」)
  20. RAID-Z1」→「OK」(他の形式を選択しても良い)
  21. 「変更の適用」
  22. 「ディスク」→「ZFS
  23. +アイコン(プールの追加)
  24. 「名前」を適当に入力(例:「share」)
  25. 「Virtual Device List」から先ほどの仮想デバイスの名前にチェックを入れる(例:「tank」)
  26. 「追加」
  27. 「変更の適用」
  28. 「サービス」→「CIFS/SMB」
  29. 「共有」
  30. +アイコン(共有の追加)
  31. 「名前」を適当に入力(例:「share」)
  32. 「コメント」を適当に入力(例:「Shared Folder」)
  33. 「パス」に「/mnt/」に続けて先ほどのマウントポイント名を入力(例:「/mnt/share」)
  34. 「ごみ箱」の「ごみ箱機能を有効化」のチェックをはずす
  35. 「シャドウコピー」の「シャドウコピーを有効にします。」のチェックをはずす
  36. 「追加」
  37. 「変更の適用」
  38. 「システム」→「ログアウト」

DLNAサーバ

  1. 「サービス」→「DLNA/UPnP
  2. 「MiniDLNA」
  3. 「MiniDLNA AV メディアサーバ」の「有効」にチェックを入れる
  4. 「名前」を「nas4free」から必要に応じて書き換える
  5. 「データベース ディレクトリ」に「/mnt」を入力
  6. 「メディアライブラリ」に「/mnt」を入力して「追加」
  7. 「保存して再起動」

DLNAクライアントからなかなか見えない場合は、ブロードキャスト間隔を300秒から30秒などのように短くしてみると良いかと思われる。
データベースディレクトリを設定するとオーナーはroot:wheel、パーミッションは755に変更されてしまうので、/mntのようにシステム起動時に初期化されるような場所以外に設定する場合は、データベースディレクトリ専用のディレクトリを別途作成した方が良いかと思われる。

ユーザ作成

Webサーバでの認証や、SSHサーバ(SFTPサーバ)等で必須となるので予め作成する。

  1. 「アクセス」→「ユーザとグループ」
  2. +アイコン(ユーザの追加)
  3. 「名前」を適当に入力
  4. 「フルネーム」を適当に入力
  5. 「パスワード」を適当に入力(「(確認)」にも同じものを入力)
  6. 必要に応じて「シェル」を「nologin」から「bash」等に変更(SSH、SFTPを使う場合に必須)
  7. 必要に応じて「グループの追加」で「wheel」を選択(SSHでスーパーユーザになるなら必須)
  8. 「追加」
  9. 「変更の適用」

Webサーバ

NAS内のファイル一覧をブラウザで見たり、ダウンロード等が出来るようにする。認証を有効にするとユーザ名とパスワードが必要になる。

  1. 「サービス」→「ウェブサーバ」
  2. 「ウェブサーバ」の「有効」にチェックを入れる
  3. 「ポート」を適当に(例:「8080」等)入力
  4. 「ドキュメントルート」に「/mnt」を入力
  5. 必要に応じて「認証」の「認証を有効にします。」にチェックを入れる(要ユーザ作成)
  6. ディレクトリリスト」の「ディレクトリリストを有効にします。」にチェックを入れる
  7. 「保存して再起動」

SSHサーバ(SFTPサーバ)

NAS内のファイルをSFTPクライアントから読み書き出来るようになる。もちろん、SSHクライアントからのログインも出来る。

  1. 「サービス」→「SSH
  2. 「Secure Shell」の「有効」にチェックを入れる
  3. 「保存して再起動」

Windowsの共有フォルダと同じように全てのユーザーで読み書き可能な設定(パーミッション)となるようする。

  1. 「システム」→「高度な設定」
  2. 「Command Scripts」
  3. +アイコン(コマンドを追加)
  4. 「コマンド」に「echo 'umask 0000' > /mnt/.profile」を入力
  5. 「タイプ」から「PostInit」を選択
  6. 「追加」
  7. 「システム」→「リブート」
  8. 「Yes」

メール設定

S.M.A.R.T.やレポートメール等で必須となるので予め設定する。

  1. 「システム」→「高度な設定」
  2. 「メール」
  3. 「From Email Address」に送信元メールアドレスを入力
  4. 「To Email Address」に送信先メールアドレスを入力
  5. SMTP Server」に送信元メールアドレスのSMTPサーバ名を入力(例:Gmailの場合は「smtp.gmail.com」)
  6. 必要に応じて「ポート」を「25」から適切に書き換え(例:Gmailの場合は「587」)
  7. 必要に応じて「セキュリティー」を「無し」から適切に変更(例:Gmailの場合は「TLS」)
  8. 必要に応じて「TLSモード」の「STARTTLS暗号化を有効にします。これはTLSを必ず利用しなければいけないわけではなく、SSLを利用できます。」にチェックを入れる(例:Gmailの場合はチェックを入れる)
  9. 必要に応じて「認証」にチェックを入れる(例:Gmailの場合はチェックを入れる)
  10. 必要に応じて「ユーザ名」に送信元メールアドレスのSMTPサーバのユーザ名を入力
  11. 必要に応じて「パスワード」に送信元メールアドレスのSMTPサーバのパスワードを入力(「(確認)」にも同じものを入力)
  12. 必要に応じて「認証方法」を「ログイン」から変更(例:Gmailの場合は「ログイン」のまま)
  13. 「テストメールの送信」で送信先メールアドレスに「テストメール送信元ホスト: nas4free.local」の件名でメールが届くことを確認
  14. 「保存」

S.M.A.R.T.機能によるHDDエラー発生時のメール通知

HDDのS.M.A.R.T.機能を使って、異常を検知した場合にメールで知らせるようにする。

  1. 「診断」→「情報」
  2. 「検出されたディスクのリスト」から「S.M.A.R.T.」が「利用可能, 有効」な「デバイス」を確認
  3. 「ディスク」→「マネージメント」
  4. 先ほど確認した「デバイス」のスパナアイコン(ディスクの編集)
  5. 「S.M.A.R.T.」の「このデバイスの S.M.A.R.T. 機能を有効にします。」にチェックを入れる
  6. 「保存」(これを「S.M.A.R.T.」が「利用可能, 有効」なすべての「デバイス」に対して行う)
  7. 「変更の適用」
  8. 「ディスク」→「マネージメント」
  9. 「S.M.A.R.T.」
  10. 「セルフモニタリング、分析及びレポート」の「有効」にチェックを入れる
  11. 「S.M.A.R.T. Monitoring」の「Enable S.M.A.R.T. monitoring of S.M.A.R.T. capable devices when they are added to the configuration.」にチェックを入れる
  12. 「レポートメール」の「有効化」にチェックを入れる
  13. 「メールの宛て先」に送信先メールアドレスを入力
  14. 「テストメール送信」の「起動時にテストとして警告メールを送信します。」にチェックを入れる
  15. 「保存して再起動」で送信先メールアドレスに「SMART error (EmailTest) detected on host: nas4free」の件名でメールが届く

以後、NAS4Freeの起動の度に上記内容のテストメールが届くようになる。

UPnPによるポート開放とダイナミックDNSの更新

外部からインターネット経由でNASを使えるように、UPnPによるポート開放と、GnuDIPを使っているダイナミックDNSサービスの更新処理を行うスクリプトの設定を行う。スクリプト等の格納場所として「/mnt/public」を使用しているので存在しない場合は書き換える必要がある。
スクリプトで使うコマンドの一部はNAS4Freeに標準で含まれていないので、FreeBSDのパッケージをインストールする必要があるが、NAS4Freeの推奨であるEmbeddedインストールの場合は、起動時にパッケージがインストールされていない状態に戻ってしまうので、起動時の初期化後にパッケージのインストールを行うように指定する。
ただし、インストール時にFreeBSDのサーバに接続出来ないとインストールに失敗してしまうので、インストールに成功した際、インストールしたパッケージファイルをバックアップしておき、次回以降はそのバックアップしたパッケージファイルをインストールするようにしている。

  1. 「高度な設定」→「コマンド」
  2. 「コマンド」に「mkdir /mnt/public/.cust」を入力して「実行」
  3. 「コマンド」に「chmod 700 /mnt/public/.cust」を入力して「実行」
  4. 「システム」→「高度な設定」
  5. 「Command Scripts」
  6. +アイコン(コマンドを追加)
  7. 「コマンド」に「/usr/local/sbin/pkg install -y /mnt/public/.cust/miniupnpc* || /usr/local/sbin/pkg install -y miniupnpc && cp -R /var/cache/pkg/* /mnt/public/.cust」を入力
  8. 「タイプ」から「PostInit」を選択
  9. 「追加」
  10. +アイコン(コマンドを追加)
  11. 「コマンド」に「/usr/local/sbin/pkg install -y /mnt/public/.cust/wget* || /usr/local/sbin/pkg install -y wget && cp -R /var/cache/pkg/* /mnt/public/.cust」を入力
  12. 「タイプ」から「PostInit」を選択
  13. 「追加」
  14. 「高度な設定」→「ファイルエディタ」で下記を入力(自分の環境に合わせて適切に書き換える。開放したいポートは「port 内部ポート番号 外部ポート番号 TCP」で複数行指定、ダイナミックDNSサービスの更新に必要な情報は「server GnuDIPホストの更新用URL」、「user ユーザ名」、「password パスワード」、「domain ドメイン名」で指定する。)
  15. 「ファイルパス」に「/mnt/public/.cust/upnpcd.conf」を入力して「保存」
port 22 22 TCP
port 8080 80 TCP
server http://www.hogehoge.jp/gnudip/cgi-bin/gdipupdt.cgi
user foo
password bar
domain hogehoge.jp
  1. 「高度な設定」→「コマンド」
  2. 「コマンド」に「chmod 600 /mnt/public/.cust/upnpcd.conf」を入力して「実行」
  3. 「高度な設定」→「ファイルエディタ」で下記を入力
  4. 「ファイルパス」に「/mnt/public/.cust/upnpcd.sh」を入力して「保存」
#!/bin/sh
# Use file setting
conffile=/mnt/public/.cust/upnpcd.conf
pkgdir=/mnt/public/.cust
statfile=/tmp/upnpcd.stat
tmpfile=`mktemp`
# Read IGD URL
prvip=
igdurl=
if [ -e $statfile ]; then
	read prvip igdurl < $statfile
fi
# Check IGD URL
if [ x"$igdurl" != "x" ]; then
	/usr/local/bin/upnpc -u $igdurl -l > $tmpfile
	ret=$?
	if [ $ret -ne 0 ]; then
		igdurl=
	fi
fi
# Get IGD URL
if [ x"$igdurl" = "x" ]; then
	/usr/local/bin/upnpc -l > $tmpfile
	igdurl=`sed -n -e '/^ desc: /,/^ st: urn:schemas-upnp-org:device:InternetGatewayDevice:1/s/^ desc: //p' $tmpfile | head -n 1`
fi
# Get External & Local LAN IP address
lanip=`sed -n -e 's/^Local LAN ip address : //p' $tmpfile`
extip=`sed -n -e 's/^ExternalIPAddress = //p' $tmpfile`
# Save IGD URL & External IP address
if [ x"$igdurl" = "x" -o x"$lanip" = "x" -o x"$extip" = "x" ]; then
	rm -f $tmpfile
	exit 1
fi
# Read conf file & port mapping
host=
user=
pass=
domn=
while read cmd var ext opt
do
	case "$cmd" in
	"server" )
		host=$var
	;;
	"user" )
		user=$var
	;;
	"password" )
		pass=$var
	;;
	"domain" )
		domn=$var
	;;
	"port" ) 
		grep " $opt $ext->$lanip:$var " $tmpfile > /dev/null
		ret=$?
		if [ $ret -ne 0 ]; then
			/usr/local/bin/upnpc -u $igdurl -a $lanip $var $ext $opt | grep '(ConflictInMappingEntry)$' > /dev/null
			ret=$?
			if [ $ret -eq 0 ]; then
				/usr/local/bin/upnpc -u $igdurl -d $ext $opt > /dev/null
				/usr/local/bin/upnpc -u $igdurl -a $lanip $var $ext $opt > /dev/null
			fi
		fi
	;;
	esac
done < $conffile
# Check dynamic DNS requied parameter
if [ x"$host" = "x" -o x"$user" = "x" -o x"$pass" = "x" -o x"$domn" = "x" ]; then
	rm -f $tmpfile
	exit 1
fi
# Get dynamic DNS mapping current IP address
curip=`ping -c 1 $user.$domn 2>&1 | head -n 1 | sed -e 's/^.*(//' -e 's/).*$//'`
# Check dynamic DNS mapping IP address
if [ "$curip" != "$extip" -o "$prvip" != "$extip" ]; then
	# Update dynamic DNS
	/usr/local/bin/wget -q -O $tmpfile "$host"
	ret=$?
	if [ $ret -ne 0 ]; then
		rm -f $tmpfile
		exit 1
	fi
	salt=`sed -n -e 's/<meta name="salt" content="\([^"]*\)">/\1/p' $tmpfile`
	time=`sed -n -e 's/<meta name="time" content="\([^"]*\)">/\1/p' $tmpfile`
	sign=`sed -n -e 's/<meta name="sign" content="\([^"]*\)">/\1/p' $tmpfile`
	text=`echo -n "$pass" | md5`
	hash=`echo -n "$text.$salt" | md5`
	/usr/local/bin/wget -q -O $tmpfile "$host?salt=$salt&time=$time&sign=$sign&user=$user&pass=$hash&domn=$domn&reqc=0&addr=$extip"
	retc=`sed -n -e 's/<meta name="retc" content="\([^"]*\)">/\1/p' $tmpfile`
	if [ x"$retc" != "x0" ]; then
		exit 1
	fi
fi
echo "$extip $igdurl" > $statfile
rm -f $tmpfile
exit 0
  1. 「高度な設定」→「コマンド」
  2. 「コマンド」に「chmod 700 /mnt/public/.cust/upnpcd.conf」を「入力」して「実行」
  3. 「システム」→「高度な設定」
  4. 「Cron」
  5. +アイコン(ジョブの追加)
  6. 「コマンド」に「/mnt/public/.cust/upnpcd.sh」を入力
  7. 「概要」に「UPnP Port Open Script」を入力
  8. 「スケジュール時刻」の「分」から「0」、「10」、「20」、「30」、「40」、「50」を選択
  9. 「追加」
  10. 「変更の適用」
  11. 「システム」→「リブート」
  12. 「Yes」

シャットダウンと起動

シャットダウンはWebGUIから下記の手順で行えるが、電源ボタンを押して(長押しは必要ない)も自動的にシャットダウンが開始される。
ここまでの設定を行なったNAS4Freeの場合、PCがHP MicroServer N54L(4GB RAM)で、NAS4FreeをインストールしたUSBメモリSanDisk Cruzer Switch 16GBだと、シャットダウンは約20秒、起動は電源を入れてから約4分だった。

初期化

初期化するとIPアドレスが192.168.1.250の固定割当に戻ってしまうので、別のPCからWebブラウザでNAS4Freeを設定するためには、そのPCのIPアドレスを一時的にでも192.168.1.249等に変更する必要がある。それが面倒な場合は初期設定からやり直す。
尚、初期化してもNAS4FreeをインストールしたHDDやUSBメモリ等の末尾のパーティションや、接続していたHDD等の内容は消えない。

  1. 「システム」→「工場出荷設定」
  2. 「Yes」

RAID Zのディスク交換

下記手順などでディスクのエラーを確認する。

  1. 「診断」→「情報」(「ディスク」が開く)
  2. 「S.M.A.R.T.」でエラーの発生したデバイスを確認(例:「/dev/ada2」に「このドライブを交換することを検討してください」と出ている等)

NAS4Freeをシャットダウンしてドライブを交換した後、NAS4Freeを再度起動する。

  1. 「ディスク」→「マネージメント」(「HDD 管理」が開く)で交換したドライブが赤く表示されていることを確認
  2. 「コンフィグ消去とディスクのインポート」→「OK」(S.M.A.R.T.のチェック等ははずれてしまうので必要に応じて再度ディスクごとにチェックを入れ直す)
  3. 「変更の適用」

RAID Zのディスク交換を行う。

  1. 「ディスク」→「ZFS」(「プール」→「マネージメント」が開く)でプールの「状態」が「DEGRADED」になっていることを確認
  2. 「ツール」
  3. 「Activities」の「Activities」から「Replace a device」を選択
  4. 「Next」
  5. 必要に応じて「Parameter」の「Force Operation」にチェックを入れる
  6. 「プール」からプールを選択
  7. 「Next」
  8. 「Select a pool device」の「Pool Devices」から交換するデバイスを選択(仮想デバイス作成時に4KBラッパーにチェックを入れていた場合は末尾に.nopが付いたものを選択する)
  9. 「Select a data device」の「デバイス」から交換したデバイスを選択(交換するデバイスの末尾に.nopが付いていて、交換したデバイスがAFTなディスクの場合に末尾に.nopが付いた選択肢が無い場合は別途コマンドで行う)
  10. 「Next」

コマンドでRAID Zのディスク交換を行う場合は以下の手順で行う。

  1. 「高度な設定」→「コマンド」
  2. 「zpool replace share ada2.nop」を入力して「実行」(shareの部分はプールの名前を、ada2.nopの部分には交換するデバイスの名前を入力する)

RAID Zのディスク交換後に状態を確認する。

  1. 「ディスク」→「ZFS」(「プール」→「マネージメント」が開く)
  2. 「情報」でstate:がONLINEではなくDEGRADEDの場合はreplacing、resilveringが出ているのでscan:に表示されたto goの時間が経過して100%になるのを待つ

RAID Zでディスク容量の拡張

RAID Zのディスク交換で1台ずつ容量の大きなものに順次交換すると、全体の容量が増加する。これを行うために以下の手順を実行する。

  1. 「高度な設定」→「コマンド」
  2. 「zpool online -e share ada0.nop」を入力して「実行」(shareの部分はプールの名前を、ada0.nopの部分にはプールに含まれるデバイスの名前いずれか1つを入力する)
  3. 「ディスク」→「ZFS」(「プール」→「マネージメント」が開く)でサイズが増えていることが確認できる

初期化後のRAID Z設定取り込み

ディスク単体やパーティション単体なら、ディスクのインポート後に、ディスクのマウントを行うだけで使えるが、RAID Zの場合は設定のインポートが必要になる。

  1. 「ディスク」→「ZFS」(「プール」→「マネージメント」が開く)
  2. 「設定」(「検出」が開く)
  3. 「ディスク上のZFS設定をインポート」
  4. 「ディスク」→「ZFS」(「プール」→「マネージメント」が開く)
  5. 「設定」(「検出」が開く)
  6. 「同期」
  7. 「同期」

ちなみに仮想デバイスの名前は以前と同じものではなく、プール名+「_raidz1_0」のような名称にになる。