LXC(Linux Containers)上からNAS上のファイルへのアクセスを実現すべく、NAS共有フォルダ(SMB共有フォルダ)をLXC上にマウントしてみました。本記事では、LXC上にSMB共有フォルダをマウントするにあたっての手順について、実際のコマンドも交えて解説します。
- なぜ、LXC上にSMB共有フォルダをマウントするのか
- LXC上にSMB共有フォルダをマウントするには、何をすれば良いか?
本記事に掲載している手順・画面仕様等は、筆者の利用環境下のものです。利用環境によっては異なる場合がございます。
背景・前提
なぜ、LXC上にSMB共有フォルダをマウントするのか
Linux系OS(Linuxディストリビューション)の、無料で利用できる、動作に必要なCPU能力・メモリ容量が少ない、という特長は、仮想環境との相性が良いです。
1台の物理マシン上に複数の仮想Linuxサーバーを構築することで、物理マシンのCPU能力・メモリ容量を効率的に使うことができます。たとえば、仮想化プラットフォーム上にLXC(Linux Containers)を作成することで、仮想化されたLinuxサーバーとして使うことができます。
LXCをメディアサーバー等として利用する場合に、同一ネットワーク上のNASをメディアファイル等の保存場所として、LXC上のサーバーソフトウェアからNAS上のファイルにアクセスさせたい、ということがあると思います。
LXC上のサーバーソフトウェアからNAS上のファイルにアクセスさせるには、NAS共有フォルダ(SMB共有フォルダ)をLXC上にマウントすることが一般的です。
本記事では、LXC上にSMB共有フォルダをマウントする手順について解説します。
筆者の環境について
以前の記事では、Proxmox VEサーバー上にDebianのLXCを作成しました。
今回、LXC上にNASのSMB共有フォルダをマウントします。
マシン | フォルダパス | |
---|---|---|
マウント元 | Synology DS1621+ | \\【NAS IPアドレス】\test |
マウント先 | Proxmox VEサーバー – Debian LXC(非特権LXC) | /mnt/nas-test |
- マザーボード: ASUS ROG STRIX Z690-GAMING WIFI
- CPU: Intel Core i7 12700K
- メモリ: DDR5 16 GB x 2
- ストレージ: 2 TB NVMe SSD x 2
- GPU: NVIDIA GeForce GTX 1070
- ネットワークアダプター: ASUS XG-C100C
- OS: Proxmox VE 8.2-2
SMB共有フォルダマウント方法の検討
SMB共有フォルダを非特権LXC上に直接マウントすることはできません。
今回、ホストOS上にSMB共有フォルダをマウントし、さらにホストOS上のマウントフォルダをLXC上にマウントする、という方法をとることにしました。
SMB共有フォルダマウントの手順
(Proxmox VE Web UI)ホストOS上にSMB共有フォルダをマウントする
まずは、ホストOS上にマウントしていきます。
PCのWebブラウザから、Proxmox VEサーバーのWeb UIにアクセスします。
https://【Proxmox VEサーバーIPアドレス】:8006
Proxmox VE Web UI上で、ホストOSのシェルを起動します。
シェル上で下記コマンドを実行します。
# パッケージリストを最新の状態に更新
apt update
# CIFS(SMB)共有フォルダをマウントするためのツールをインストール
apt install -y cifs-utils
# Proxmox上のマウントポイントを作成
mkdir -p /mnt/pve/nas-test
# fstabファイルを編集し、SMB共有の自動マウント設定を追加
nano /etc/fstab
/etc/fstabファイルの編集画面が表示されます。下記のように編集し、保存します。「uid=100000,gid=100000」により、LXCのrootユーザー(uid=100000)・rootグループ(gid=100000)が書き込み権限を有するように設定しています。
//【NAS IPアドレス】/test /mnt/pve/nas-test cifs username=【NASユーザー名】,password=【NASパスワード】,uid=100000,gid=100000,vers=3.0 0 0
シェル上で下記コマンドを実行します。
# fstabの設定を適用し、すべてのファイルシステムをマウント
mount -a
# 正しくマウントされているか確認
df -h | grep /mnt/pve/nas-test
フォルダがマウントされていることが確認できれば、ホストOS上へのマウント設定は完了です。
(Proxmox VE Web UI)LXC上にSMB共有フォルダをマウントする
次に、ホストOS上のマウントフォルダを、LXC上にマウントしていきます。
ホストOSのシェル上で下記コマンドを実行します。
# 指定したLXCコンテナの設定ファイルを編集し、共有フォルダを設定
nano /etc/pve/lxc/【LXC ID】.conf
/etc/pve/lxc/【LXC ID】.confファイルの編集画面が表示されます。下記を追記し、保存します。ホストOSの/mnt/pve/nas-testがLXCの/mnt/nas-testにマウントされるように設定しています。
mp0: /mnt/pve/nas-test,mp=/mnt/nas-test
(LXCコンソール)LXC上のSMB共有フォルダマウントを確認する
Proxmox VE Web UI上で、LXCのコンソールを起動します。
コンソール上で下記コマンドを実行します。
# 正しくマウントされているか確認
df -h | grep /mnt/nas-test
フォルダがマウントされていることが確認できれば、LXC上へのマウント設定は完了です。
(Proxmox VE Web UI)Proxmox VEサーバー起動時のマウント自動実行を設定する
これまでの設定で、基本的にはLXC上へのSMB共有フォルダ設定は完了です。
しかし、私の環境では、Proxmox VEサーバー再起動後にマウントが解除されているというトラブルが起こりました。
/etc/fstabファイル上の設定は通常であればサーバー再起動後も自動で適用されるはずですが、Proxmox VEサーバー起動時の各種処理のタイミングの前後関係により自動でマウントされていないものと考えられます。
そこで、Proxmox VEサーバー再起動後の一定時間経過後に「mount -a」が実行されるように設定します。
ホストOSのシェル上で、下記コマンドを実行します。
# サービスファイルを作成し、SMBマウントの自動化を設定
nano /etc/systemd/system/mount-smb.service
/etc/systemd/system/mount-smb.serviceファイルの編集画面が表示されます。下記のように編集し、保存します。「ExecStart=/bin/sleep 30 && /bin/mount -a」により、サーバー起動後30秒経過してから「mount -a」が実行されるように設定しています。
[Unit]
Description=Mounting SMB folder on boot
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/bin/sleep 30 && /bin/mount -a
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
シェル上で、下記コマンドを実行します。
# 作成したSMBマウントのサービスを有効化し、即時起動
systemctl enable --now mount-smb.service
# SMBマウントサービスの状態を確認
systemctl status mount-smb.service
これで、Proxmox VEサーバー起動時のマウント自動実行設定は完了です。
まとめ
今回、LXC上にSMB共有フォルダをマウントすることで、LXC上からNAS上のファイルへのアクセスを実現しました。
それでは、良いLinuxライフを!
Linuxを専門的に学ぶ!
Linuxを専門的に学びたい方には、ウズウズカレッジ(LinuCコース)がおすすめです!
PR
Linux活用についての記事
本ブログでは、Linuxの活用についての情報を発信しています。