alpine 以NFS方式手工&开机自动挂载 阿里云NAS

  1. 手工挂载:
  2. 开机自动挂载
    1. 方法 1:检查并启动 nfs 服务
    2. 方法 2:使用local.d/强制挂载
    3. 方法 3: init.d强制挂载
    4. 使脚本可执行并加入启动项

💡 alpine通过OpenRC服务设置开机自启,类似debian上的systemd

手工挂载:

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 相关服务在开机时启动:

  1. 确认 NFS 客户端服务在系统启动时运行。编辑 /etc/rc.conf 文件,将 nfs 添加到 modules 中:

    rc-update add nfsmount boot
    
  2. 重启服务或直接重启系统:

    rc-service nfsmount start
    

方法 2:使用local.d/强制挂载

/etc/local.d/ 中创建一个脚本来执行挂载操作:

  1. 创建脚本 /etc/local.d/mount_nfs.start 并写入以下内容:

    #!/bin/sh
    mount -a
    
  2. 设置脚本为可执行:

    chmod +x /etc/local.d/mount_nfs.start
    
  3. 确保 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 卸载失败"
}

使脚本可执行并加入启动项

  1. 确保脚本可执行:

    chmod +x /etc/init.d/mount_nfs
    
  2. 然后尝试将脚本添加到开机启动项:

    rc-update add mount_nfs default
    
  3. 如果你仍然遇到问题,可以手动启动脚本进行测试:

    /etc/init.d/mount_nfs start
    

    这个版本的脚本通过检查命令行参数 (startstop) 来定义服务的启动和停止行为。现在,rc-update 应该能够正确识别并将其添加为服务。

完成后,重启系统。这样可以确保在系统启动时挂载 NFS 文件系统。


欢迎指出任何有错误或不够清晰的表达,可以在下面评论区评论。

×

喜欢就点赞,疼爱就打赏

//