XigmaNASでPCをLAN接続HDDにする

MicroServer N40L(RAM 8GB、HDD 4TB×4、USBメモリ 16GB)にXigmaNAS 11.2.0.4.6154をインストールしてみた。HDD 4TB×4をRAID-Z1でまとめて12TBのWindows共有フォルダにした。ネットワークドライブに割り当てて、CrystalDiskMarkで速度を測ってみたところ、100MB/秒ほど出ているので良いカンジ。

  • 2018/12/07 ポート開放&ダイナミックDNS更新スクリプトの内容を更新

-----------------------------------------------------------------------
CrystalDiskMark 6.0.2 x64 (C) 2007-2018 hiyohiyo
                          Crystal Dew World : https://crystalmark.info/
-----------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes

   Sequential Read (Q= 32,T= 1) :   118.343 MB/s
  Sequential Write (Q= 32,T= 1) :    97.254 MB/s
  Random Read 4KiB (Q=  8,T= 8) :    29.552 MB/s [   7214.8 IOPS]
 Random Write 4KiB (Q=  8,T= 8) :    10.873 MB/s [   2654.5 IOPS]
  Random Read 4KiB (Q= 32,T= 1) :    28.637 MB/s [   6991.5 IOPS]
 Random Write 4KiB (Q= 32,T= 1) :    10.871 MB/s [   2654.1 IOPS]
  Random Read 4KiB (Q=  1,T= 1) :     7.871 MB/s [   1921.6 IOPS]
 Random Write 4KiB (Q=  1,T= 1) :     5.302 MB/s [   1294.4 IOPS]

  Test : 1024 MiB [Z: 0.0% (0.0/10450.9 GiB)] (x5)  [Interval=5 sec]
  Date : 2018/11/06 15:45:52
    OS : Windows 10 Professional [10.0 Build 17134] (x64)

インストール

LAN接続にしたいHDDを取り付けた適当なPCと2つのUSBメモリを用意する
XigmaNASの最新版のLiveUSBイメージのGPT版をRawrite32USBメモリに書き込む
作成したUSBメモリと、空のUSBメモリを取り付けて、作成したUSBメモリから起動する

  1. Console Menuが出たら、9) Install/Upgrade from LiveCD/LiveUSBを選択するために9を入力する
  2. XigmaNAS Install & Upgrade Menuが出たら、1 Install 'Embedded' OS on HDD/SSD/CF/USB (Preferred)を選択して、OK
  3. XigmaNAS Embedded Install Option Menuが出たら、1 Install 'Embedded' OS/GPT on HDD/SSD/CF/USB (Preferred)を選択してOK
  4. XigmaNAS Embedded Installationが出たら、OK
  5. Choose Sourceが出たら、作成したUSBメモリが選択されているので、OK
  6. Choose Destinationが出たら、空のUSBメモリを選択して、OK
  7. Enter the size of the OS partitionが出たら、適切に入力されているので、OK
  8. Enter the size of the SWAP partitionが出たら、適切に入力されているので、OK
  9. Enter the size of the DATA partition or enter 'ALL' to take what's availableが出たら、ALLと入力して、OK
  10. Press ENTER to continue.が出たら、Enterキーを押す
  11. XigmaNAS Install & Upgrade Menuが出たら、Exit
  12. Console Menuが出たら、8) Shutdown Serverを選択するために8を入力する
  13. Do you really want to shutdown the server?が出たら、Yes

電源が切れたら、作成したUSBメモリを取り外して、電源を入れる

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

初期設定

  1. Console Menuが出たら、WebGUI AddressをWebブラウザで開く
  2. ユーザ名にadmin、パスワードにxigmanasを入力して、ログイン
  3. システム→基本
  4. タイムゾーンをAsia/Tokyoに変更
  5. 日付のフォーマットを2018-10-08 23:47:40に変更(日時部分には現在日時が入る)
  6. NTPを有効化にチェックを入れる
  7. NTP Time Serverをntp.nict.jpに書き換える
  8. ホスト名を適当に書き換える(xigmanasなど)
  9. 保存
  10. パスワード(もしくは、システム→基本、パスワード)
  11. 現在のパスワードにxigmanasを入力
  12. New Passwordに新しいパスワードを入力
  13. 新しいパスワードの確認に新しいパスワードを入力
  14. 保存
  15. サービス→CIFS/SMB
  16. Common Internet File Systemの有効にチェックを入れる
  17. NetBIOS Nameを適当に書き換える(xigmanasなど)
  18. Dos CharsetからCP932 (日本語 Shift-JIS)を選択
  19. Time ServerからNoを選択
  20. Null Passwordsにチェックを入れる
  21. 保存して再起動

ディスクの登録

  1. ディスク→マネージメント
  2. +(ディスクを追加)
  3. ディスクからHDD/SSD/USBメモリ等のデバイスを選択
  4. S.M.A.R.T.にチェックを入れる(診断→情報でS.M.A.R.T.が利用可能の場合のみ)
  5. 追加
  6. 変更の適用

ディスクの初期化(USBメモリのデータパーティションを使う場合は不要)

  1. ディスク→マネージメント
  2. HDD フォーマット
  3. ファイルシステムからUFS (GPT and Soft Updates)もしくはZFS ストレージプールを選択
  4. Disk Selectionから初期化するHDD/SSD/USBメモリ等のデバイスにチェックを入れる
  5. Next
  6. アドバンスドフォーマット(AF)にチェックを入れる(ファイルシステムがUFSの場合で、AFTなHDDの場合)
  7. Next
  8. フォーマット(下部にコマンド出力が表示されるので最下段にDone!が表示されるまで待つ)
  9. OK

ディスクのマウント(複数のHDDを結合して使う場合は不要)

  1. ディスク→マウントポイント
  2. +(マウントポイントの追加)
  3. ディスクからHDD/SSD/USBメモリ等のデバイスを選択
  4. パーティション番号を4に書き換える(USBメモリのデータパーティションを使う場合のみ)
  5. マウントポイント名を適当に入力(publicなど)
  6. 追加
  7. 変更の適用

複数のHDDを結合して使う

  1. ディスク→ZFS
  2. 仮想デバイス
  3. +(仮想デバイスを追加)
  4. 名前を適当に入力(tankなど)
  5. 4KBラッパーにチェックを入れる(AFTなHDDの場合)
  6. バイスリストから結合して使うHDD/SSD/USBメモリ等のデバイスにチェックを入れる
  7. RAID-Z1(もしくはSTRIPE、MIRROR、RAID-Z2、RAID-Z3など)
  8. Do you want to create a RAID-Z1 from selected disks?が出るので、OK
  9. 変更の適用
  10. プール(もしくは、ディスク→ZFS
  11. +(プール追加)
  12. 名前を適当に入力(shareなど)
  13. 仮想デバイスリストから先ほど作成した仮想デバイスの名前にチェックを入れる
  14. 追加
  15. 変更の適用

Windows共有フォルダの作成

  1. サービス→CIFS/SMB
  2. 共有
  3. +(Samba 共有追加)
  4. 名前を適当に入力(shareなど)
  5. コメントを適当に入力(Shared Folderなど)
  6. パスの「…」から先ほど設定したマウントポイント名やプールの名前を選択して、OK
  7. Recycle Binのチェックをはずす
  8. Hide Dot Filesのチェックをはずす
  9. シャドウコピーのチェックをはずす
  10. 追加
  11. 変更の適用

DLNAサーバを動かす

  1. サービス→DLNA/UPnP
  2. MiniDLNA
  3. 編集
  4. MiniDLNA AV メディアサーバの有効にチェックを入れる
  5. 名前を適当に入力する(xigmanasなど)
  6. データベースのディレクトリに/mntを入力
  7. コンテンツロケーションに/mntを入力して、追加
  8. 適用
  9. Do you want to apply these settings?が出るので、OK

ユーザの作成

  1. アクセス→ユーザとグループ
  2. +(ユーザアカウントを追加)
  3. 名前に作成するユーザ名を適当に入力
  4. フルネームを適当に入力
  5. パスワードを適当に入力(2箇所とも同じものを入力する)
  6. シェルをnologinからbashに変更(SSH、SFTPを使う場合のみ)
  7. 追加のグループでwheelを選択(SSHでスーパーユーザになる場合のみ)
  8. 追加
  9. Apply Changes

ユーザが作成したファイルをすべてのユーザーで読み書きできるようにする

  1. システム→高度な設定
  2. コマンドスクリプト
  3. +(コマンドを追加)
  4. コマンドに「echo 'umask 0000' > /mnt/.profile」を入力
  5. タイプから初期化後を選択
  6. 追加
  7. 変更の適用

※要再起動

再起動

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

Webサーバを動かす

  1. サービス→ウェブサーバ
  2. ウェブサーバの有効にチェックを入れる
  3. ポートを適当に入力(8080など)
  4. Document Rootに/mntを入力
  5. 認証にチェックを入れる(ユーザ認証が必要で、ユーザを作成している場合のみ)
  6. ディレクトリリストにチェックを入れる
  7. 保存して再起動

SFTPサーバ(SSHサーバ)を動かす

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

メールの設定

  1. システム→高度な設定
  2. メール
  3. From Email Addressに送信元メールアドレスを入力
  4. To Email Addressに送信先メールアドレスを入力
  5. SMTP ServerにSMTPサーバを入力(Gmailの場合はsmtp.gmail.com
  6. ポートをSMTPサーバのポート番号に書き換える(Gmailの場合は587)
  7. 認証はSMTPサーバに認証が必要な場合にチェックを入れる(Gmail以外の場合はチェックを入れる)
  8. ユーザ名にSMTPサーバのユーザ名を入力(Gmailの場合はアカウント名を入力)
  9. パスワードにSMTPサーバのユーザ名に対するパスワードを2箇所に入力(Gmailの場合はアカウント名に対するパスワードを入力)
  10. 認証方法をSMTPサーバに合わせて選択(Gmailの場合はログインを選択)
  11. Use TLSSMTPサーバがTLS対応ならばチェックを入れる(Gmailの場合はチェックを入れる)
  12. Enable STARTTLSはSMTPサーバがSTARTTLS対応ならばチェックを入れる(Gmailの場合はチェックを入れる)
  13. Use Default TLS Trust FileはSMTPサーバがTLS対応もしくはSTARTTLS対応ならばチェックを入れる(Gmailの場合はチェックを入れる)
  14. テストメールの送信(メールが届くことを確認する)
  15. 保存

HDDエラー発生時のメール通知

  1. ディスク→マネージメント
  2. S.M.A.R.T.
  3. セルフモニタリング、分析及びレポートの有効にチェックを入れる
  4. 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.にチェックを入れる
  5. レポートメールの有効化にチェックを入れる
  6. To Email Addressに送信先メールアドレスを入力
  7. Test Emailにチェックを入れる
  8. 保存して再起動(メールが届くことを確認する)

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

USBメモリのデータパーティションを/mnt/publicにマウントした上で行う

  1. ツール→コマンド
  2. コマンドに「mkdir /mnt/public/.cust」を入力して、実行
  3. コマンドに「chmod 700 /mnt/public/.cust」を入力して、実行
  4. システム→高度な設定
  5. コマンドスクリプト
  6. +(コマンドを追加)
  7. コマンドに「/usr/local/sbin/pkg install -y /mnt/public/.cust/miniupnpc* /mnt/public/.cust/wget* || /usr/local/sbin/pkg install -y miniupnpc wget && cp -R /var/cache/pkg/* /mnt/public/.cust」を入力
  8. タイプから初期化後を選択
  9. 追加
  10. 変更の適用
  11. ツール→ファイルエディタ
  12. ファイルパスに「/mnt/public/.cust/upnpcd.sh」を入力、下記内容を入力して、保存(UPnPで開放するポートはfor port inに続けて内部ポート:外部ポートで、MyDNS.JPのユーザー情報はwget -O - https://に続けてID:パスワードで指定する)
#!/bin/sh
tmpfile=`mktemp`
upnpc -l > $tmpfile
nowip=`sed -n -e "s/Local LAN ip address : //p" $tmpfile`
for port in 22:22 8080:80; do
oldip=`sed -n -e "s/.*TCP *${port#*:}->\([0-9.]*\).*/\1/p" $tmpfile`
if [ -n "$oldip" -a "$oldip" != "$nowip" ]; then upnpc -d ${port#*:} TCP > /dev/null; fi
upnpc -a $nowip ${port%:*} ${port#*:} TCP > /dev/null
done
wget -q -O /dev/null "https://mydns012345:abCDefGHijK@ipv4.mydns.jp/login.html"
wget -q -O /dev/null "https://mydns012345:abCDefGHijK@ipv6.mydns.jp/login.html"
rm $tmpfile

oldipを求める際に誤って内部ポート番号を指定していたので外部ポート番号に訂正(2019/03/07更新)
MyDNS.JPではなく、GnuDIPを使ったダイナミックDNSサービスを使う場合は、上記内容の代わりに下記内容を入力する(UPnPで開放するポートの変更は上記と同じ、GnuDIPサービスのUsername/Hostname、Domain、Password、URLはuser=、domn=、pass=、host=に続けて指定する)

#!/bin/sh
user="bar"
domn="example.com"
pass="foobar"
host="http://www.example.com/gnudip/cgi-bin/gnudip.cgi"
tmpfile=`mktemp`
upnpc -l > $tmpfile
nowip=`sed -n -e "s/Local LAN ip address : //p" $tmpfile`
extip=`sed -n -e "s/ExternalIPAddress = //p" $tmpfile`
for port in 22:22 8080:80; do
oldip=`sed -n -e "s/.*TCP *${port#*:}->\([0-9.]*\).*/\1/p" $tmpfile`
if [ -n "$oldip" -a "$oldip" != "$nowip" ]; then upnpc -d ${port#*:} TCP > /dev/null; fi
upnpc -a $nowip ${port%:*} ${port#*:} TCP > /dev/null
done
curip=`ping -c 1 $user.$domn 2>&1 | head -n 1 | sed -e 's/^.*(//' -e 's/).*$//'`
if [ "$curip" != "$extip" ]; then
wget -q -O $tmpfile  "${host%/*}/gdipupdt.cgi"
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`
wget -q -O /dev/null "${host%/*}/gdipupdt.cgi?salt=$salt&time=$time&sign=$sign&user=$user&pass=$hash&domn=$domn&reqc=0&addr=$extip"
fi
rm $tmpfile
  1. ツール→コマンド
  2. コマンドに「chmod 700 /mnt/public/.cust/upnpcd.sh」を入力して、実行
  3. システム→高度な設定
  4. Cron
  5. +(ジョブの追加)
  6. コマンドに「/mnt/public/.cust/upnpcd.sh」を入力
  7. 概要にUPnP port open scriptを入力
  8. スケジュール時刻の分から0、5、10、15、20、25、30、35、40、45、50、55を選択
  9. 追加
  10. 変更の適用