我有两个 2 TB 硬盘(不是启动/系统硬盘),每个硬盘都有一个分区,我与 Samba 共享这些分区。挂载点位于/mnt/drive01
和/mnt/drive02
。
这些也是两个 samba 共享的路径,分别名为 backup1 和 backup2。这些共享启动后,它们会开始被网络中其他机器的(大量)数据填满(有些机器写入 backup1,有些写入 backup2,但没有一台机器同时写入两者)。
一切按计划进行,Samba 没有问题。此服务器(位于远程位置)配置为在断电等情况下自动重启。此外,我在 RAID1 中有两个驱动器作为系统/启动驱动器,以确保服务器(几乎!)至少始终可以启动。
问题是,如果系统启动正常,但由于某种原因无法安装 2 TB 硬盘中的一个(或两个):samba 将开始共享,/mnt/drive01
并且/mnt/drive02
大容量驱动器未安装,因此所有数据实际上都位于系统驱动器上,将其填满并导致系统无法使用或无法通过 ssh 远程访问。
因此,我认为输入两个 2 TB 驱动器的分区不是一个好主意/etc/fstab
,因为我注意到启动时会出现一些问题,例如,如果其中一个数据驱动器断开连接。这一点也很重要,因为服务器位于远程位置,不能依靠操作员干预来修复屏幕上的消息,例如“驱动器未准备好,继续等待,按 S 跳过安装,M 表示手动...”
所以我写了一个小脚本,它会在启动一分钟后尝试安装数据驱动器,这样就修复了 fstab 部分。现在开始使用 Samba。
我希望 Samba 在一段时间后启动(没有问题),但也能“动态”启用或禁用这两个共享。因此,例如,如果第二个数据驱动器发生故障,我的脚本将只能安装第一个数据磁盘,而 Samba 只会宣传备份 1 共享(数据正在写入 2 TB 磁盘驱动器);另一个共享(备份 2,映射到/mnt/drive02
)将不会被宣传/禁用,但至少我有一个共享在运行(我的一些机器可以将数据倒入其中)。
当然,最简单的方法是让 Samba 仅在两个数据驱动器都安装后才启动,但这是一个全有或全无的解决方案
有任何想法吗?
答案1
有两个选项。如果你没有其他 Samba 共享,你可以使用 upstart 或 systemd 在两个共享都挂载时启动 Samba,在两个共享都卸载时停止。使用 systemd 时,你应该需要Requires=
节和新贵start on mounted /dev/something
。另一种方法是从启动脚本中删除 Samba,然后使用您的脚本启动。这些选项取决于您已经完成的操作。