2.2 KiB
2.2 KiB
Intro
本文介绍如何把 NAS 主机目录挂载到 Linux 主机,并通过 Volume 挂载到 Docker 容器,借助 NAS 的阵列盘实现高可靠数据存储。
- NAS:"/vol1/workspace"
- Linux:"/mnt/nas/vol1/workspace"
- Docker:"/workspace"
假设 NAS 的用户名密码是"admin/123456",IP为"192.168.1.100",目录映射目标:"/vol1/workspace" -> "/mnt/nas/vol1/workspace" -> "/workspace"。
基于 NFS 协议挂载
- 在 Linux 安装相关工具
Debian/Ubuntu:
sudo apt update && sudo apt install nfs-common -y
CentOS/RHEL:
sudo yum install nfs-utils
- 创建目录
NAS:
sudo /vol1/workspace
Linux:
sudo mkdir -p /mnt/nas/vol1/workspace
- 授权(UID=1000,GID=1000)
NAS:
sudo chown -R 1000:1000 /vol1/workspace
Linux:
sudo chown -R 1000:1000 /mnt/nas/vol1/workspace
- 在 Linux 执行挂载
sudo mount -t nfs -o rw,vers=4.2,noatime,rsize=1048576,wsize=1048576,timeo=1200,retrans=2,_netdev 192.168.1.100:/vol1/workspace /mnt/nas/vol1/workspace
| 参数名称 | 说明 |
|---|---|
| rw | 拥有读写权限 |
| vers | 使用 nfs 4.2 版本 |
| noatime | 不更新文件的访问时间戳,能显著减少磁盘 I/O 和网络开销,提升性能 |
| rsize/wsize | 读写块大小,1MB 是 NFS v4.2 推荐的尺寸,适合高速内网传输文件,有效利用网络带宽 |
| timeo | 客户端等待重传前的超时时间,给网络波动留的容忍度,单位是厘秒,1200=120秒 |
| retrans | 连接彻底失败之前,仅重传 2 次。配合长超时,客户端会很有耐心地等待,不会因短暂网络抖动而频繁报错 |
| _netdev | 告诉系统等网络可用后再挂载,防止在启动初期,网络未就绪时挂载失败 |
- 在 Linux 设置开机自动挂载(可选但强烈推荐)
sudo nano /etc/fstab
在文件末尾追加一行:
192.168.1.100:/vol1/workspace /mnt/nas/vol1/workspace nfs rw,vers=4.2,noatime,rsize=1048576,wsize=1048576,timeo=1200,retrans=2,_netdev 0 0
- 在 Linux 运行 Docker 容器并挂载
docker run -v /mnt/nas/vol1/workspace:/workspace --user 1000:1000 <镜像名>