手工挂载:
apk add nfs-utils
echo -e "options sunrpc tcp_slot_table_entries=128\noptions sunrpc tcp_max_slot_table_entries=128" >> /etc/modprobe.d/sunrpc.conf
mount -t nfs -o vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 29fbbf4a698-bso8.cn-wulanchabu.nas.aliyuncs.com:/ /mnt/nfs1
开机自动挂载
写入 fstab
echo "29fbbf4a698-bso8.cn-wulanchabu.nas.aliyuncs.com:/ /mnt/nfs1 nfs vers=4,minorversion=0,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport 0 0" >> /etc/fstab
Alpine Linux 有时不会自动加载 NFS 文件系统,即使它在 /etc/fstab
中被正确配置。可以尝试以下方法:
方法 1:检查并启动 nfs
服务
确保 nfs
相关服务在开机时启动:
确认 NFS 客户端服务在系统启动时运行。编辑
/etc/rc.conf
文件,将nfs
添加到modules
中:rc-update add nfsmount boot
重启服务或直接重启系统:
rc-service nfsmount start
方法 2:使用local.d/
强制挂载
在 /etc/local.d/
中创建一个脚本来执行挂载操作:
创建脚本
/etc/local.d/mount_nfs.start
并写入以下内容:#!/bin/sh mount -a
设置脚本为可执行:
chmod +x /etc/local.d/mount_nfs.start
确保
local
服务在启动时运行:rc-update add local default
方法 3: init.d
强制挂载
创建 /etc/init.d/mount_nfs
#!/sbin/openrc-run
description="等待 Docker 容器 zero 启动后挂载 NFS"
depend() {
need docker
}
start() {
# 检查是否已经挂载
if mount | grep -q '/mnt/nfs1'; then
einfo "NFS 已挂载,无需重复挂载。"
return 0
fi
# 等待 Docker 容器启动
while ! docker ps --filter "name=zero" --format '{{.Names}}' | grep -q 'zero'; do
einfo "等待容器 zero 启动..."
sleep 5
done
# 挂载 NFS
ebegin "挂载 NFS"
mount /mnt/nfs1
eend $? "NFS 挂载失败"
}
stop() {
# 检查是否已经卸载
if ! mount | grep -q '/mnt/nfs1'; then
einfo "NFS 未挂载,无需卸载。"
return 0
fi
# 卸载 NFS
ebegin "卸载 NFS"
umount -f /mnt/nfs1
eend $? "NFS 卸载失败"
}
使脚本可执行并加入启动项
确保脚本可执行:
chmod +x /etc/init.d/mount_nfs
然后尝试将脚本添加到开机启动项:
rc-update add mount_nfs default
如果你仍然遇到问题,可以手动启动脚本进行测试:
/etc/init.d/mount_nfs start
这个版本的脚本通过检查命令行参数 (
start
或stop
) 来定义服务的启动和停止行为。现在,rc-update
应该能够正确识别并将其添加为服务。
完成后,重启系统。这样可以确保在系统启动时挂载 NFS 文件系统。
欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。