(※)と記載している理由は正確にはシンボリックリンクではなくbind mountを使用しているため。シンボリックリンクって書いたほうがイメージつきやすいだろうからタイトルはシンボリックリンクと入れた。
シンボリックリンクで今回のマウントを実行したがQNAP NASのシンボリックリンクはsmbで表示されないことがわかったためbind mountを使用する。
前提
我が家のQNAP NASは速度を重視してフルフラッシュNASを採用している。4TBのSATA SSDを4枚、RAID5で運用しており、スナップショット領域やディスクの保護領域を差っ引くと実際使える容量は8TBほどである。
今までは8TBで十分足りていたのだが、データが増えてきて容量圧迫の懸念があったためエンクロージャーを導入することになった。
環境詳細
NAS本体
| 1 | 2 |
|---|---|
| モデル | TS-i410X |
| Disk0 | Crucial MX500 4TB |
| Disk1 | Crucial MX500 4TB |
| Disk2 | Crucial MX500 4TB |
| Disk3 | Crucial MX500 4TB |
エンクロージャ
| 1 | 2 |
|---|---|
| モデル | TL-D800C |
| Disk0 | ST20000DM001 20TB |
| Disk1 | ST20000DM001 20TB |
| Disk2 | 空き |
| Disk3 | 空き |
| Disk4 | 空き |
| Disk5 | 空き |
| Disk6 | ST24000DM001 24TB |
| Disk7 | ST24000DM001 24TB |
※Disk0と1でRAID1を組んでデータ保存用ディスクとしている。
Disk6と7もRAID1で構成されていてSSDとデータ保存用ディスクのバックアップを取得している。
Disk2から5はデータがさらに増えて容量が枯渇した際にデータ保存用ディスクとバックアップディスクを入れるスロット。
やりたいこと
QNAPのNASはQSync等を使用するとhomeフォルダを必ず作成する必要がある。そのため、個人用のファイルはhomeフォルダに保存する運用としている。
今回データ保存用ディスクを追加することで本来はhomeフォルダと別に共有フォルダを作成してアクセスすることとなる。
こうすることでフォルダ構成を今までと変えることなく特定のフォルダはデータ保存用ディスクに保存することができるようになる。
表示としてはこんな感じ。
NAS
├home/
├DATA/ ←ここが今回追加したデータ保存用の共有フォルダ
├Public
└etc...
今回やりたいのは
NAS
├home/
│ └DATA/ ←ここが今回追加したデータ保存用の共有フォルダ
├Public
└etc...
手順
QNAP NASにSSHでログインし、以下コマンドを実行する。
mount --bind <リンクしたい実態のあるパス> <作成するリンクのパス>
このコマンドで任意のパスにマウントすることができる。
ただし上記コマンドはNASの再起動をするとリセットされてしまう。
そのため、再起動後に自動で上記コマンドを実行されるようにする必要がある。
QNAP NASのスタートアップ実行はautorun.shに記述することで実現可能。
# adminユーザに切り替える
sudo -i
# 上記コードを実行後、パスワードを入力、メンテナンス画面に入るため「Q」→「Y」でコンソールに戻る
# NASのフラッシュ領域を/tmp/configにマウントする。(QTS 5.xの場合)
mount $(/sbin/hal_app --get_boot_pd port_id=0)6 /tmp/config
# /tmp/configに移動する。
cd /tmp/config
# autorun.shを作成する。
vi autorun.sh
autorun.shの中はこんな記載
#!/bin/sh
# NASが起動後、エンクロージャーにある共有フォルダがマウントされるまで待機する
while [ ! -d /share/該当共有フォルダ ]; do
sleep 5
done
mount --bind <リンクしたい実態のあるパス> \
<作成するリンクのパス>
上記スクリプトを作成したら以下コマンドを実行
# 実行権限を付与
chmod +x /etc/config/autorun.sh
ここまで終わったらQNAP NASのWeb管理画面にログインする。
コントロールパネルの「システム」→「ハードウェア」に進み、起動時にユーザー定義処理を実行にチェックをつける。
autorun.shを押下するとautorun.shに先ほど記述したスクリプトが表示されることを確認する。

これで再起動をしても自動でバインドマウントが行われる。
注意事項
この操作はQNAP NASに標準搭載されている機能ではあるが、コードの内容やバインドマウントはQNAP公式にサポートされているものではないので実行する際には自己責任、自身の環境で十分にテストした上で実行すること。
参考