自动安装(和重新安装)systemd

自动安装(和重新安装)systemd

我在 fstab 中有一个 CIFS 挂载,工作正常,除非网络或远程服务器出现问题并且无法恢复。我希望共享在发生故障时自动重新安装,但据我所知,fstab 不支持此功能。

我现在所做的是将其移动到 autofs 挂载,公平地说,它运行良好,但我总是发现 autofs 挂载与 fstab 相比有点滞后(只是我在命令行上的直观感受)。有谁有其他解决方案的经验吗?

答案1

至于重新安装 中存在的安装/etc/fstab,您可以使用此方法强制重新安装:

$ sudo mount -a -t cifs

man mount

   -t, --types vfstype
   [...]

   More than one type may be specified in a comma  separated  list.
   The  list of filesystem types can be prefixed with no to specify
   the filesystem types on which no action should be taken.   (This
   can be meaningful with the -a option.) For example, the command:

            mount -a -t nomsdos,ext

然后,您可以在 shell 脚本中进行检查,该脚本将强制mount -a -t cifs命令根据计划时间运行,或者使用inotify其他方法进行检查,以验证安装的状态,以及是否检测到它们已安装失败,运行mount ..我上面提供的命令。

答案2

自动安装(和重新安装)systemd

出于本示例的目的,我们假设我们的份额是“大存储负载

(因为它可以很好地说明systemd文件路径和单元文件转义,大多数教程都没有涵盖)

  1. 创建您的挂载点:
    sudo mkdir -p "/mnt/Loads o' Big-Storage"
    sudo chown -R "$(whoami)":"$(whoami)" "/mnt/Loads o' Big-Storage"
    
  2. 用于systemd-escape --path创建.mount文件名:
    my_systemd_mountfile="$(
        systemd-escape --path "/mnt/Loads o' Big-Storage"
    )"
    echo "${my_systemd_mountfile}"
    
    mnt-Loads\x20o\x27\x20Big\x2dStorage
    
  3. /etc/system/system/使用以下命令创建该文件文字文件路径内容(无转义)
    sudo vim "/etc/system/system/${my_systemd_mountfile}.mount"
    
    [Unit]
    Description=My CIFs Media Mounter
    Requires=network-online.target
    After=network-online.service
    
    [Mount]
    What=//192.168.2.200/Loads o' Big-Storage
    Where=/mnt/Loads o' Big-Storage
    Options=username=foo-user,password=foo-secret
    Type=cifs
    
    [Install]
    WantedBy=multi-user.target
    EOF
    
  4. 创建对应的.automount文件:
    sudo vim "/etc/system/system/${my_systemd_mountfile}.automount"
    
    [Unit]
    Description=My CIFs Media Automounter
    
    [Automount]
    Where=/mnt/Loads o' Big-Storage
    
    [Install]
    WantedBy=multi-user.target
    
  5. 加载并启用服务:
    sudo systemctl daemon-reload
    sudo systemctl enable "${my_systemd_mountfile}".automount
    sudo systemctl start "${my_systemd_mountfile}".automount
    

故障排除

如果您遇到麻烦,journalctl将会有比自我推荐更好的日志信息systemd status

sudo journalctl -xe "${my_systemd_mountfile}".mount

相关内容