防止挂载失败时根系统填满的最佳方法?


16

我们有一个内部Web服务器(虚拟化,托管ReviewBoard,但不是超级相关),并且我们有一个相对一致的故障模式,其中NFS挂载失败导致/填满。Distro是Ubuntu(不要问),如果解决方案取决于其他发行版,则实施起来会较慢。

正在执行到/ mnt / backup /的备份,该备份应该将NFS挂载到另一个系统。不幸的是,当挂载失败或丢失时,备份将在根文件系统上执行,您可以想象它不会花很长时间就/充满,然后服务开始失败。

已经讨论了许多可能的解决方案。

  1. 监视/ mnt / backups并确保它不是root用户。也许是一个cron工作。

  2. 使用/ mnt / protected / backups,然后将/ protected首先安装到小型文件系统,也许是循环安装到本地文件,因此发生故障的可能性要小得多。

  3. Chmod a-rwx / mnt / backups(根文件系统安装点)。我不确定是否可以安装在受保护的控制器上,我认为可以。

  4. 在安装的树上,创建一个名为“ Backups”的目录,然后创建一个软链接“ ln-s / mnt / backup / Backups / Backups”。除非安装了/ mnt / backup,否则使用/ Backups进行备份将失败,因为本地树不包含子目录。

  5. 检查备份脚本中是否正确安装了目录。

我对有关这些方法的任何反馈意见,利弊或人们用作保护根文件系统免遭这种麻烦的标准方法的任何其他技术感兴趣。

Answers:


13

5号-在备份脚本中进行测试,以确保在继续安装之前已安装目录。如果挂载不可用或不存在,脚本应失败。或者,您可以确保在运行备份之前已装入所有内容。

尝试使用该mountpoint命令,该命令检查指定目录是否为安装点:

mountpoint -q /mnt/backups || mount /mnt/backups


嗯,我想我会加|| 回声“安装/ mnt /备份失败” 2>&1或可能仅存在于此。还是谢谢你!!!
彼得

22

最防错的解决方案是使安装点不可写。这将是您的解决方案3。但是,您应该执行另一步骤。chattr +i /mnt/backups。这是因为即使没有权限,root仍然可以写入目录。使用chattr +i(设置不可变标志)甚至root都无法写入它。一旦挂载安装,权限就无关紧要,因为权限将是远程目录的权限,而不是本地目录的权限。


1
这是一个非常巧妙的技巧-从未想过使用'chattr'–
沃伦

1
我在所有安装点上都使用了此技术。
3dinfluence 2011年

1
我尝试了encfs一个保险丝文件系统。它给出了错误:fusermount: user has no write access to mountpoint
ctrl-alt-delor

这是我通常使用的解决方案,我认为它应该是公认的答案。
shodanshok

3

怀特怀特说了什么。另外,对基本系统运行状况进行一些额外的监视也不是一个坏主意。

诸如Monit之类的东西可以查看剩余的空间。如果您想全力以赴地进行系统监视,可以看看Nagios,但是Monit的重量很轻,将做基础。

由于您使用的是Ubuntu,因此Monit已经在仓库中,因此您可以执行“ sudo apt-get install monit”,然后开始查看配置文件,以告诉它将警报发送到正确的位置,监视正确的服务,等等。这是一个快速教程


1

这是一个可以作为cron作业运行的衬板,它假设有问题的安装在fstab中:

if mountpoint -q /mnt ; then : ; else mount /mnt ; fi

0

对于较长期的解决方案:不知道如何在Ubuntu(我以RH为中心)上执行此操作,或者是否值得(如果您只有一台计算机),但是对我们有用很多年的方法是创建单独的逻辑卷,文件系统甚至服务器计算机上的卷组。因此,作为标准做法,我们为/,/ tmp创建LVM逻辑卷。/ usr,/ usr / local,/ opt,/ home,/ var,交换空间和/ boot的单独分区。这种方法使文件系统填充和禁用系统特别困难。实际上,这种方法将几乎不可能填满/文件系统。当然,您仍然需要观看/ tmp,/ var。如果需要存储数据,则可以为其创建一个完全不同的卷组。这种方法还有其他好处,可以随意扩展文件系统,移动它们,创建新文件系统等。


因此,防止安装失败的文件系统填满的解决方案是添加更多安装?什么?
Patrick
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.