依赖外部硬盘的 systemd 服务的实现

依赖外部硬盘的 systemd 服务的实现

我只想分享一些关于我的第一个 systemd 配置的想法。到目前为止,我只使用了 start 和 stop 之类的命令,这次我想要更多。

我有一台运行 arch 的 raspberry-pi。我有一个外部 USB HDD 来存储数据。我想运行 samba 来共享该外部驱动器上的文件夹。

问题:如果没有连接 HDD,Samba 就无法启动。如果稍后连接 HDD,Samba 就会启动。如果在操作过程中断开 HDD,Samba 就会停止(可能会丢失数据,我想我无能为力)。

阅读示例和 systemd 手册后,我得到了以下信息:

/etc/fstab

UUID="6509-D18E"  /storage  vfat  defaults,nofail,x-systemd.device-timeout=20  0  2

/etc/systemd/system/smbd.service:

[Unit]
Description=Samba SMB/CIFS server
After=network.target nmbd.service winbindd.service
BindsTo=storage.mount
RequiresMountsFor=/storage

[Service]
Type=forking
PIDFile=/var/run/smbd.pid
ExecStart=/usr/bin/smbd -D
ExecReload=/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target storage.mount

关键要素包括不会失败在 fstab 中,如果缺少该项,我的整个系统在启动时都会被锁定。我认为它会告诉 systemd 如果硬盘未连接则继续。

通缉者用于在硬盘已连接的情况下启动 Samba,并且绑定到如果挂载点消失则负责停止 samba。

我是否遗漏了什么或者是否有更优雅的解决方案?

干杯

相关内容