Stage1st

 找回密码
 立即注册
搜索
查看: 1819|回复: 9
打印 上一主题 下一主题

[软件] [Arch求助]如何实现启动自动挂载nfs

[复制链接]
     
跳转到指定楼层
楼主
发表于 2024-3-30 22:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人只是闲来瞎折腾的非超能力者,瞎折腾linux。
有一台aib的服务器,运行omv系统共享nfs。原先大奶使用manjaro,在fstab里设置可以挂载服务器里的资源,在dolphin里点一下远程位置里的挂载文件夹即可访问。
后来折腾把manjaro换成了arch,依然是在fstab里设置,但是启动时可以看到mount failed的日志。通过
  1. journalctl -b | grep mount
复制代码

查询到在执行mount.nfs时,网络不可达。
  1. mount[689]: mount.nfs: Network is unreachable for 192.168.0.105:/export on /mnt
复制代码
但是fstab里
  1. 192.168.0.105:/export   /mnt            nfs             defaults,timeo=900,retrans=5,_netdev            0 0
复制代码
根据wiki上的介绍_netdev表示在告知系统在网络启动后再挂载。
通过查询日志
  1. 3月 30 21:18:51 Main-PC kernel: mlx4_en: eth0: Link Up
  2. 3月 30 21:18:51 Main-PC kernel: NFS: Registering the id_resolver key type
  3. 3月 30 21:18:51 Main-PC kernel: Key type id_resolver registered
  4. 3月 30 21:18:51 Main-PC kernel: Key type id_legacy registered
  5. 3月 30 21:18:51 Main-PC mount[689]: mount.nfs: Network is unreachable for 192.168.0.105:/export on /mnt
  6. 3月 30 21:18:51 Main-PC systemd[1]: mnt.mount: Mount process exited, code=exited, status=32/n/a
  7. 3月 30 21:18:51 Main-PC systemd[1]: mnt.mount: Failed with result 'exit-code'.
  8. 3月 30 21:18:51 Main-PC systemd[1]: Failed to mount /mnt.
  9. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/video.
  10. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for Remote File Systems.
  11. 3月 30 21:18:51 Main-PC systemd[1]: remote-fs.target: Job remote-fs.target/start failed with result 'dependency'.
  12. 3月 30 21:18:51 Main-PC systemd[1]: mnt-video.mount: Job mnt-video.mount/start failed with result 'dependency'.
  13. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/download.
  14. 3月 30 21:18:51 Main-PC systemd[1]: mnt-download.mount: Job mnt-download.mount/start failed with result 'dependency'.
  15. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/Music.
  16. 3月 30 21:18:51 Main-PC systemd[1]: mnt-Music.mount: Job mnt-Music.mount/start failed with result 'dependency'.
  17. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/photo.
  18. 3月 30 21:18:51 Main-PC systemd[1]: mnt-photo.mount: Job mnt-photo.mount/start failed with result 'dependency'.
  19. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/PT.
  20. 3月 30 21:18:51 Main-PC systemd[1]: mnt-PT.mount: Job mnt-PT.mount/start failed with result 'dependency'.
  21. 3月 30 21:18:51 Main-PC systemd[1]: Dependency failed for /mnt/winstorge.
  22. 3月 30 21:18:51 Main-PC systemd[1]: mnt-winstorge.mount: Job mnt-winstorge.mount/start failed with result 'dependency'.
  23. 3月 30 21:18:51 Main-PC kernel: <mlx4_ib> mlx4_ib_probe: mlx4_ib: Mellanox ConnectX InfiniBand driver v4.0-0
  24. 3月 30 21:18:51 Main-PC systemd[1]: TPM2 PCR Barrier (User) was skipped because of an unmet condition check (ConditionSecurity=measured-uki).
  25. 3月 30 21:18:51 Main-PC kernel: <mlx4_ib> mlx4_ib_probe: counter index 1 for port 1 allocated 1
  26. 3月 30 21:18:51 Main-PC kernel: mlx4_core 0000:0c:00.0 enp12s0: renamed from eth0
  27. 3月 30 21:18:51 Main-PC systemd[1]: Starting Permit User Sessions...
  28. 3月 30 21:18:51 Main-PC systemd[1]: Finished Permit User Sessions.
  29. 3月 30 21:18:51 Main-PC systemd[1]: Reached target Multi-User System.
  30. 3月 30 21:18:51 Main-PC systemd[1]: Started Simple Desktop Display Manager.
  31. 3月 30 21:18:51 Main-PC systemd[1]: Reached target Graphical Interface.
  32. 3月 30 21:18:51 Main-PC systemd[1]: Startup finished in 18.052s (firmware) + 7.552s (loader) + 6.305s (kernel) + 8.001s (userspace) = 39.911s.
  33. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4174] device (eth0): interface index 3 renamed iface from 'eth0' to 'enp12s0'
  34. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4208] device (enp12s0): state change: unmanaged -> unavailable (reason 'managed', sys-iface-state: 'external')
  35. 3月 30 21:18:51 Main-PC kernel: mlx4_en: enp12s0: Steering Mode 1
  36. 3月 30 21:18:51 Main-PC kernel: mlx4_en: enp12s0: Link Up
  37. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4640] settings: (enp12s0): created default wired connection 'Wired connection 2'
  38. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4642] device (enp12s0): carrier: link connected
  39. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4651] device (enp12s0): state change: unavailable -> disconnected (reason 'carrier-changed', sys-iface-state: 'managed')
  40. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4654] policy: auto-activating connection 'Wired connection 2' (11e70bbe-e8f7-3b41-bc80-cd0b2a20ba79)
  41. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4656] device (enp12s0): Activation: starting connection 'Wired connection 2' (11e70bbe-e8f7-3b41-bc80-cd0b2a20ba79)
  42. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4656] device (enp12s0): state change: disconnected -> prepare (reason 'none', sys-iface-state: 'managed')
  43. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4657] manager: NetworkManager state is now CONNECTING
  44. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4658] device (enp12s0): state change: prepare -> config (reason 'none', sys-iface-state: 'managed')
  45. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4660] device (enp12s0): state change: config -> ip-config (reason 'none', sys-iface-state: 'managed')
  46. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4662] dhcp4 (enp12s0): activation: beginning transaction (timeout in 45 seconds)
  47. 3月 30 21:18:51 Main-PC sddm[713]: Detected locale "C" with character encoding "ANSI_X3.4-1968", which is not UTF-8.
  48.                                     Qt depends on a UTF-8 locale, and has switched to "C.UTF-8" instead.
  49.                                     If this causes problems, reconfigure your locale. See the locale(1) manual
  50.                                     for more information.
  51. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.4683] dhcp4 (enp12s0): state changed new lease, address=192.168.0.101, acd pending
  52. 3月 30 21:18:51 Main-PC sddm[713]: Initializing...
  53. 3月 30 21:18:51 Main-PC sddm[713]: Starting...
  54. 3月 30 21:18:51 Main-PC sddm[713]: Logind interface found
  55. 3月 30 21:18:51 Main-PC sddm[713]: Adding new display...
  56. 3月 30 21:18:51 Main-PC sddm[713]: Loaded empty theme configuration
  57. 3月 30 21:18:51 Main-PC sddm[713]: Xauthority path: "/run/sddm/xauth_syoTia"
  58. 3月 30 21:18:51 Main-PC sddm[713]: Using VT 2
  59. 3月 30 21:18:51 Main-PC sddm[713]: Display server starting...
  60. 3月 30 21:18:51 Main-PC sddm[713]: Writing cookie to "/run/sddm/xauth_syoTia"
  61. 3月 30 21:18:51 Main-PC sddm[713]: Running: /usr/bin/X -nolisten tcp -background none -seat seat0 vt2 -auth /run/sddm/xauth_syoTia -noreset -displayfd 16
  62. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6282] dhcp4 (enp12s0): state changed new lease, address=192.168.0.101
  63. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6283] policy: set 'Wired connection 2' (enp12s0) as default for IPv4 routing and DNS
  64. 3月 30 21:18:51 Main-PC dbus-broker-launch[631]: Activation request for 'org.freedesktop.resolve1' failed: The systemd unit 'dbus-org.freedesktop.resolve1.service' could not be found.
  65. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6662] device (enp12s0): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'managed')
  66. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6668] device (enp12s0): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'managed')
  67. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6669] device (enp12s0): state change: secondaries -> activated (reason 'none', sys-iface-state: 'managed')
  68. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6670] manager: NetworkManager state is now CONNECTED_SITE
  69. 3月 30 21:18:51 Main-PC NetworkManager[633]: <info>  [1711804731.6671] device (enp12s0): Activation: successful, device activated.
复制代码
虽然最初内核里mlx4 link up了,但是网络启动未完成,后续networkmanager接手才完成了网络启动。
想知道这该如何处理。
另外,进入系统后,我如果想挂载nfs,必须要sudo组才可以,普通用户无法挂载,挂载本机上未自动挂载的盘也必须sudo才行。这样我通过dolphin就不能直接操作,必须terminal操作才可以。求助该怎么办?


回复

使用道具 举报

     
2#
发表于 2024-3-30 22:24 来自手机 | 只看该作者
本帖最后由 indtability 于 2024-3-30 22:28 编辑

man systemd.special | grep network-online
man systemd-networkd-wait-online
man NetworkManager-wait-online

tldr
disable systemd-networkd-wait-online
好像没啥必要禁这个
enable NetworkManager-wait-online
大概可以解决

多说一句,以前看到 linux 入门会教各种终端命令行工具用法,现在就感觉只是为了满足初学者想象中的 linux 体验的噱头,我认为正经入门现代 linux 发行版应该从阅读 systemd 文档开始,从 systemd 切入了解 linux 系统的结构和各个角落才是正途。
回复

使用道具 举报

3#
发表于 2024-3-30 22:36 来自手机 | 只看该作者
你可以用gvfs在userland挂载nfs,但是性能比fstab差一些
或者用autofs
回复

使用道具 举报

     
4#
发表于 2024-3-31 01:10 | 只看该作者
我是用的docker自动启动的
回复

使用道具 举报

5#
发表于 2024-3-31 01:43 | 只看该作者
本帖最后由 posthoc 于 2024-3-30 09:55 编辑

https://blog.agchapman.com/auto- ... stems-with-systemd/
以为会很直观,其实好像意外的有微妙的地方,比如上面坛友提到的默认的NetworkManager-wait-online.service其实结果上只是等待NetworkManager自己启动完成而不是确认有实际的网络连接,还要自己再做一个。

另外你用dolphin想去挂载应该会自动调用kdesu弹出一个输入密码的窗口啊,arch不一样么……
回复

使用道具 举报

     
6#
发表于 2024-3-31 02:17 来自手机 | 只看该作者
posthoc 发表于 2024-3-31 01:43
https://blog.agchapman.com/auto- ... stems-with-systemd/
以为会很直观,其实好像意外的有微妙的地方, ...

没错,但我还是更鼓励从文档和文件中找答案,
systemctl cat NetworkManager-wait-online
里面就写明了命令和作用,如果愿意
nm-online --help
的话,会得到更直白的答案。

比起创建新服务,我是写了个 drop-in override 文件来去掉 -s 参数,以及调整 timeout 时间。

drop-in override 参见 man systemd.unit。
回复

使用道具 举报

     
7#
 楼主| 发表于 2024-3-31 16:59 | 只看该作者
indtability 发表于 2024-3-30 22:24
man systemd.special | grep network-online
man systemd-networkd-wait-online
man NetworkManager-wait-o ...
  1. sytemctl enable networkmanager-wait-online.service
复制代码

第一次重启,grub之后屏幕长时间显示
  1. Arch linux: clean, xxxx files, xxxx blocks
复制代码

等待之后显示网络加载成功进入登陆界面,启动之后nfs并未自动加载。当时没有时间继续排查。
今天启动,依然是长时间显示clean,然后网络加载成功,进入登陆界面,启动之后nfs加载成功。
原来启动在clean之后很快就会显示mount失败,然后进入登陆界面。


回复

使用道具 举报

     
8#
发表于 2024-3-31 18:51 来自手机 | 只看该作者
本帖最后由 indtability 于 2024-3-31 18:54 编辑
暗影翔 发表于 2024-3-31 16:59
第一次重启,grub之后屏幕长时间显示

等待之后显示网络加载成功进入登陆界面,启动之后nfs并未自动加载 ...

大概率是你有某个服务依赖 network-online,导致阻塞了启动,至于昨天可能是连接超时,活用 systemd-analyze [critical-chain], systemctl list-depencencies [--reverse] 以及其他功能找到被阻塞的服务,用 systemctl edit 让它变成非阻塞之类。
man bootup 查看系统启动流程,对找阻塞服务可能有帮助。
我建议多读文档,对 troubleshooting 或者实现自己想要的功能很有帮助,我也很推荐通过自定义 arch 这种原味系统来学习 linux,但如果没有时间折腾这些细节,或者发现碰到的问题比解决的问题还多,我反倒觉得不如用回那些以用户友好为卖点的发行版,ubuntu,mint,manjaro 之流,我自己用的就是 manjaro,不是鼓吹谁好谁坏,只是觉得不如把时间花在对的东西上。
回复

使用道具 举报

     
9#
 楼主| 发表于 2024-4-2 22:49 | 只看该作者
本帖最后由 暗影翔 于 2024-4-2 23:12 编辑
indtability 发表于 2024-3-31 18:51
大概率是你有某个服务依赖 network-online,导致阻塞了启动,至于昨天可能是连接超时,活用 systemd-anal ...

感谢大佬,通过几个命令查了一下:

  1. ☁  ~  systemd-analyze blame
  2. 2min 162ms systemd-networkd-wait-online.service
  3.     6.010s NetworkManager-wait-online.service
复制代码


  1. ☁  ~  systemd-analyze critical-chain
  2. The time when unit became active or started is printed after the "@" character.
  3. The time the unit took to start is printed after the "+" character.

  4. graphical.target @2min 1.607s
  5. └─sddm.service @2min 1.607s
  6.   └─systemd-user-sessions.service @2min 1.599s +7ms
  7.     └─remote-fs.target @2min 1.584s
  8.       └─mnt-photo.mount @2min 1.476s +107ms
  9.         └─mnt.mount @2min 971ms +472ms
  10.           └─network-online.target @2min 959ms
  11.             └─NetworkManager-wait-online.service @1.817s +6.010s
  12.               └─NetworkManager.service @1.641s +175ms
  13.                 └─basic.target @1.640s
  14.                   └─dbus-broker.service @1.620s +19ms
  15.                     └─dbus.socket @1.619s
  16.                       └─sysinit.target @1.618s
  17.                         └─systemd-timesyncd.service @1.582s +35ms
  18.                           └─systemd-tmpfiles-setup.service @1.520s +42ms
  19.                             └─local-fs.target @1.519s
  20.                               └─boot.mount @1.509s +8ms
  21.                                 └─systemd-fsck@dev-disk-by\x2duuid-04AA\x2d52F7.service @787ms +29ms
  22.                                   └─dev-disk-by\x2duuid-04AA\x2d52F7.device @729ms
复制代码


  1. ☁  ~  systemctl list-dependencies --reverse NetworkManager-wait-online.service
  2. NetworkManager-wait-online.service
  3. ● └─network-online.target
  4. ○   ├─archlinux-keyring-wkd-sync.service
  5. ●   ├─mnt-download.mount
  6. ●   ├─mnt-Music.mount
  7. ●   ├─mnt-photo.mount
  8. ●   ├─mnt-PT.mount
  9. ●   ├─mnt-video.mount
  10. ●   ├─mnt-winstorge.mount
  11. ●   ├─mnt.mount
  12. ○   ├─nfs-idmapd.service
  13. ○   ├─nfs-mountd.service
  14. ○   ├─nfs-server.service
  15. ●   ├─rpc-statd-notify.service
  16. ●   └─rpc-statd.service
复制代码


应该是“network-online.target”,阻塞了启动。
是mount阻碍了启动,在fstab里注释掉nfs挂载就飞速启动了。
回复

使用道具 举报

     
10#
发表于 2024-4-3 09:45 来自手机 | 只看该作者
暗影翔 发表于 2024-4-2 22:49
感谢大佬,通过几个命令查了一下:

你把 nfs 注释掉不是又回去了…

我本来以为是把 network-online 改为等待网络配置好之后阻塞了某个网络服务,我刚才简单看了下你几个服务,可能是 systemd-user-session 依赖 remote-fs,它依赖于那几个网络挂载,阻塞了启动,这个可以通过把你 fstab 里网络挂载那几项添加 noauto 或者 x-systemd.automount 选项来解决。具体功能见 man systemd.mount。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|stage1st 沪ICP备13020230号-1 沪公网安备 31010702007642号

GMT+8, 2024-5-5 01:09 , Processed in 0.023804 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表