容器化 nfs 服务器安装
2018-05-13 tech storage nfs 5 mins 1 图 2006 字
这篇文章记录如何安装和使用容器化的nfs,目前只是临时使用验证某个服务,只记录安装使用过程,不做过多描述。
什么是 nfs
它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。
NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。一般用来存储共享视频,图片等静态数据。
安装
-
加载内核模块 nfs
modprobe nfs modprobe nfsd
-
安装nfs-utils
apt-get install nfs-common # 或者 yum install nfs-utils
-
安装docker
curl -sSL https://get.docker.com/ | sh usermod -aG docker $USER systemctl enable docker systemctl start docker
-
准备nfs配置文件
例如:配置文件位于
./exports.txt
/nfs *(rw,fsid=0,sync,no_root_squash)
-
运行服务器
参考ehough/docker-nfs-server - github
version: '3.2' services: nfs: image: erichough/nfs-server:latest container_name: nfs network_mode: bridge restart: always volumes: - /home/kelu/Workspace:/nfs - ./exports.txt:/etc/exports ports: - 2049:2049 - 2049:2049/udp - 32765:32765 - 32765:32765/udp - 32767:32767 - 32767:32767/udp cap_add: - SYS_ADMIN privileged: true
将主机
/home/kelu/Workspace
文件夹作为共享根目录。 -
客户端连接
服务器ip为 172.10.1.100 ,将共享目录挂载到客户端的 /kelu 目录下
mount -o nfsvers=4 172.10.1.100:/ /kelu mount # 查看挂载 umount -v /kelu # 解除挂载 umount -f -l /app/Downloads # 服务端挂了的情况下接触挂载
错误参考
无法启动,显示“rpc.statd already running”
==================================================================
STARTING SERVICES ...
==================================================================
----> starting rpcbind
----> starting exportfs
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/nfs".
Assuming default behaviour ('no_subtree_check').
NOTE: this default has changed since nfs-utils version 1.0.x
----> starting rpc.mountd on port 32767
----> starting rpc.statd on port 32765 (outgoing from port 32766)
Statd service already running!
---->
----> ERROR: /sbin/rpc.statd failed
---->
先stop掉这个服务即可:
systemctl stop rpc-statd.service