NAS のディレクトリを MacBook で automount

家族のNAS（QNAP）の任意のディレクトリーをMacBook上でマウントしたい。
ただし、常にマウントするのではなく、マウント用ディレクトリーにアクセスした時に自動マウントしたい（automountで）。
ファイルのやり取りはNFS又はSMBで行いたい。
MacBookなので、Wi-Fiで接続したい。

これらの要件で調査したときのことを記述する。

# NAS側（QNAP）

## 共有ディレクトリの編集

管理者権限のアカウントでログインし、「コントロールパネル」から「共有フォルダー」画面を開き、アクセスするディレクトリを追加・編集できる。

## 権限の設定（NFS）

NFSだとSMBみたいなユーザー・パスワード認証は基本的にない。
アクセスした全ユーザーを特定のユーザーとして扱う方法（ALL_SQUASH）や、読み書きの制限、IP制限で頑張る。

「共有フォルダー」の「アクション」カラムにある「共有フォルダーの権限の編集」アイコンをクリックすると、「共有フォルダーの権限の編集」画面に行ける。
「共有フォルダーの権限の編集」画面で「権限タイプの選択」を「NFSホストのアクセス」にすると、NFSの権限設定が行える。

![スクリーンショット 2019-11-06 22.46.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/c0acb12c-5398-9ab7-b585-15493790df0d.png)

# MacBook側

## マウント用のディレクトリを設定

自動マウントするディレクトリ（ここでは`/mnt/*`）の親ディレクトリをrootとして作成する。

```bash
sudo mkdir /mnt
```

`/etc/auto_master`をrootとして編集し、ディレクトリと設定ファイル（例：`/mnt`を`/etc/auto_mnt`で設定）を追加する。

```text:/etc/auto_master（追加する行）
/mnt                    /etc/auto_mnt
```

```config:/etc/auto_master（全体）
#
# Automounter master map
#
+auto_master            # Use directory service
/net                    -hosts          -nobrowse,hidefromfinder,nosuid
/home                   auto_home       -nobrowse,hidefromfinder
/Network/Servers        -fstab
/-                      -static

/mnt                    /etc/auto_mnt
```

マウントの設定ファイルを作成（ここでは`/etc/auto_mnt`、NASのIPが10.0.1.4）。

```config:/etc/auto_mnt（サンプル）
#SMB
#nas-runo-home -fstype=smbfs,ro ://user:password@10.0.1.4/home

#NFS
nas-runo-home -fstype=nfs,rsize=32768,wsize=32768 10.0.1.4:/runo-home
nas-public -fstype=nfs,rsize=32768,wsize=32768 10.0.1.4:/Public
```

automountを再起動。

```bash
sudo umount /mnt
sudo automount -vc
```

## マウント

FinderやTerminalで最初にアクセスしたときに、自動的にマウントされる。

```bash:サンプルのnas-publicにアクセス
cd /mnt/nas-public
ls
```

Finderのサイドバーに`/mnt`を設定すると便利。

![スクリーンショット 2019-11-07 8.46.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/badfd7f5-9d3c-3b5b-a425-a2a0ecd8063e.png)

## 測定（NFS）

マウント設定の`rsize`と`wsize`は、環境に合わせて調整した。
結果として自分の家では、16KB〜32KBあたりが最適であった。

AmorphousDiskMarkを使い、2箇所で測定した。

- 近い場所： MacBook -> アクセスポイント -> LAN -> NAS
- 遠い場所： MacBook -> 壁 -> 中継機 -> 壁x2 -> アクセスポイント -> LAN -> NAS

|rsize/wsize|近い場所（ping 1.937ms）|遠い場所（ping 2.640ms）|
|:-:|:-:|:-:|
|8KB||![repeater-ap-lan-nas-8k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/68c57ae1-c64b-e842-0608-b21955a302df.png)|
|16KB|![ap-lan-nas-16k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/e6e989ad-5b16-2355-16ee-07e1309258ac.png)|![repeater-ap-lan-nas-16k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/25fa12fb-4e42-e1d4-ebfc-3165431d327c.png)|
|32KB|![ap-lan-nas-32k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/e2fd448c-5588-cdbd-4f78-61a6caceb025.png)|![repeater-ap-lan-nas-32k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/93cc2efa-228f-15df-6fef-a6d615669542.png)|
|256KB|![ap-lan-nas-256k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/39dd292b-98ed-6d82-bf8a-4cfbba1f8b17.png)|![repeater-ap-lan-nas-256k.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/107169/c36f02b5-1a7f-2e47-96be-062cdcf429f3.png)|

`rsize`/`wsize`が高いほど、sequential read/write はある程度までは速くなるが、ある程度まで行くと誤差レベルになる。逆に random read はどんどん遅くなっていく。

# 調査時の環境

- MacBook：MacBook Air (11-inch, Mid 2013)
- アクセスポイント：TP-LINK RE650、802.11n/ac
- 中継機：TP-LINK RE650、802.11n/ac
- LAN：1Gbps 1本
- NAS：QNAP TS-431P、HDDを3個、RAID5