V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
asdasdqqq
V2EX  ›  Linux

请教 Linux (debian11)开机挂载 nfs 的问题

  •  
  •   asdasdqqq · 2022-03-20 18:27:08 +08:00 · 3162 次点击
    这是一个创建于 761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我有一个 nas 开启了 nfs 共享( 192.168.1.100:/volume1/share ),我需要让我的另外一台 debian11 虚拟机(192.168.1.101)开机的时候自动挂载。 于是我在 /etc/fstab 里添加了行 192.168.1.100:/volume1/share /data nfs defaults 0 0 但是重启后并没有挂载成功,看日志提示 mount.nfs: Network is unreachable 应该是网络还没准备好

    请问下各位大佬需要怎么设置呢?通过 systemd 吗?

    19 条回复    2022-03-22 07:06:16 +08:00
    msg7086
        1
    msg7086  
       2022-03-20 18:30:26 +08:00
    youdoit
        2
    youdoit  
       2022-03-20 18:31:37 +08:00
    用脚本,设置 sleep 多久之后在挂载,这样就不会出现系统没有起来就先挂载了。
    asdasdqqq
        3
    asdasdqqq  
    OP
       2022-03-20 18:45:00 +08:00
    @youdoit 我之前就是这么处理的,但是这个有一个问题
    我需要 docker 挂载这个 nfs 。但是 docker 已经起来了,然后 nfs 才挂载成功,导致 docker 里面 link 的文件夹是未挂载的本地文件夹。
    Lyrica
        4
    Lyrica  
       2022-03-20 19:07:52 +08:00
    defaults 改成 defaults,_netdev
    asdasdqqq
        5
    asdasdqqq  
    OP
       2022-03-20 19:09:30 +08:00
    @msg7086 谢谢,参考了你的连接还有其他一些地址,目前 fstab 的配置是

    192.168.1.100:/volume1/share /data nfs x-systemd.automount,x-systemd.after=network-online.target 0 0

    也就是挂载参数由 defaults 变为 x-systemd.automount,x-systemd.after=network-online.target

    目前是可以的,也是我自己测试过的,不知道还有没有其他正确的方案(较官方的)
    asdasdqqq
        6
    asdasdqqq  
    OP
       2022-03-20 19:12:01 +08:00
    @Lyrica 谢谢,这个试过了,不行,reboot 后没有挂载成功
    lithiumii
        7
    lithiumii  
       2022-03-20 19:31:34 +08:00 via Android
    修改 systemd 让 docker 在指定的
    lithiumii
        8
    lithiumii  
       2022-03-20 19:32:07 +08:00 via Android
    @lithiumii 让 docker 在指定挂载成功后再启动
    corvofeng
        9
    corvofeng  
       2022-03-20 19:36:15 +08:00
    如果你的 NFS 挂载之后只是在 Docker 里面用, 可以试试 Docker 自己的 volume 功能

    https://docs.docker.com/storage/volumes/
    asdasdqqq
        10
    asdasdqqq  
    OP
       2022-03-20 20:13:57 +08:00
    @corvofeng 谢谢 涨姿势💪💪💪
    Chowe
        11
    Chowe  
       2022-03-20 21:48:08 +08:00 via iPhone
    刚好处理过一个又一丢丢类似的,我的做法是写个 systemd 的 service ,等网络启动之后再去执行。
    hxsf
        12
    hxsf  
       2022-03-20 22:22:14 +08:00
    systemd-mount 了解下? 然后 docker.service 依赖这个 mount
    defunct9
        13
    defunct9  
       2022-03-20 22:53:23 +08:00 via iPhone
    开 ssh ,让我上去试试
    wzaqqq
        14
    wzaqqq  
       2022-03-21 09:35:08 +08:00
    ```bash
    172.16.0.2:/share /share nfs vers=3,nolock,noacl,proto=tcp,noresvport,_netdev 0 0
    ```
    yanqiyu
        15
    yanqiyu  
       2022-03-21 11:59:08 +08:00
    remote-fs.target 的时机和 network-online.target 的时机应该是 systemd 会处理好的,是不是你的网络管理器的 online 检测服务没 enable
    yanqiyu
        16
    yanqiyu  
       2022-03-21 11:59:54 +08:00
    @asdasdqqq 这种情况下给 docker 的 service 一个 RequiresMountsFor=/path/to/mount/point 的属性就行
    asdasdqqq
        17
    asdasdqqq  
    OP
       2022-03-21 16:56:00 +08:00
    @yanqiyu 谢谢,是这个位置不 /lib/systemd/system/docker.service ,[unit]部分添加一行
    yanqiyu
        18
    yanqiyu  
       2022-03-21 19:11:39 +08:00
    @asdasdqqq 这个路径升级会覆盖,用 systemctl edit docker 创建 drop-in 配置文件
    jxr111
        19
    jxr111  
       2022-03-22 07:06:16 +08:00 via Android
    可以使用 autofs 服务来代替 fstab 配置文件挂载网络存储,fstab 挂载不稳定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   993 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 19:35 · PVG 03:35 · LAX 12:35 · JFK 15:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.