系统管理员的职责是密切关注驱动器和分区。如果任何分区溢出,系统很可能会停止正常工作,无论其他分区上有多少可用空间,直到空间被回收。
分区和磁盘可以使用 df
轻松监控,应该经常进行,或许可以使用 cron 任务或其他通用系统管理工具。
不要忘记交换分区,最好使用内存统计程序(如 free
、procinfo
或 top
)来监控它们。
驱动器使用情况监控更加困难,但为了性能,避免争用非常重要 - 如果其他驱动器可用且空闲,则避免对单个驱动器施加过多的需求。
在安装软件包时,清楚地了解各种文件的存放位置非常重要。如前所述,GCC 将二进制文件保存在库目录中,还有其他一些程序由于历史原因很难弄清楚,例如 X11 就具有异常复杂的结构。
当您的系统即将被填满时,就应该检查和修剪旧的日志消息,以及查找核心转储文件。在全球 shell 设置中正确使用 ulimit
可以帮助您避免核心转储文件散落在系统周围。
细心的读者可能已经注意到一些关于备份有用性的提示。关于事故以及当备份被证明无法使用甚至不存在时,责任人会发生什么事的恐怖故事数不胜数。您可能会发现投资于适当的备份比拥有第二个秘密身份更简单。
有很多选项,还有一个迷你 HOWTO(Backup-With-MSDOS
)详细介绍了您需要了解的内容。除了 DOS 特有的内容外,它还包含一般信息和进一步的引导。
除了进行这些备份外,您还应该确保可以恢复数据。并非所有系统都会验证写入的数据是否正确,许多管理员在事故发生后开始恢复系统时,高兴地相信一切正常,却惊恐地发现备份毫无用处。请务必小心。
Linux 有免费和商业备份系统可用。一个商业示例是来自 QuickStart 的磁盘映像级别备份系统,它在线提供功能齐全的 30 天 Linux 演示版。
这非常依赖于文件系统设计,有些文件系统遭受快速且几乎使人衰弱的碎片化。幸运的是,ext2fs
不属于这一类,因此很少有人谈论碎片整理工具。它实际上确实存在,但几乎不需要。
如果出于某种原因您觉得这有必要,快速简便的解决方案是进行备份和恢复。如果只有小区域受到影响,例如主目录,您可以将其 tar
压缩到另一个分区上的临时区域,验证 存档,删除原始文件,然后再将其解压缩回来。
通常,只需删除系统周围积累的不必要的文件即可缓解磁盘空间短缺的问题。通常,异常终止的程序会导致各种混乱的文件散落在最奇怪的地方。通常,在发生此类事件后会产生核心转储,除非您要调试它,否则可以简单地删除它。这些文件可能在任何地方找到,因此建议您不时进行全局搜索。locate
命令对此很有用。
意外终止也可能导致各种临时文件残留在 /tmp
或 /var/tmp
等位置,这些文件在程序正常结束时会自动删除。重新启动会清理其中一些区域,但并非全部,如果您有很长的正常运行时间,您可能会最终得到很多旧的垃圾文件。如果空间不足,您必须小心删除,首先确保该文件未被积极使用。像 file
这样的实用程序通常可以告诉您您正在查看的文件类型。
系统运行时会记录许多内容,主要记录到 /var/log
区域中的文件中。特别是文件 /var/log/messages
往往会增长直到被删除。最好保留旧日志文件的小型存档以进行比较,以防系统开始表现异常。
如果邮件或新闻系统工作不正常,可能会导致其假脱机区域(分别为 /var/spool/mail
和 /var/spool/news
)过度增长。请注意概览文件,因为这些文件有一个前导点,这使得它们对 ls -l
不可见,最好始终使用 ls -Al
,这将显示它们。
用户空间溢出是一个特别棘手的话题。系统管理员和用户之间已经爆发了战争。需要的是策略、外交手段和用于新驱动器的慷慨预算。利用每日消息功能,从 /etc/motd
文件登录期间显示的信息,告知用户何时空间不足。设置默认 shell 设置以防止转储核心转储文件也可以为您节省大量工作。
某些类型的人试图在系统周围隐藏文件,通常试图利用文件名中带有前导点的文件对 ls
命令不可见的事实。一个常见的例子是看起来像 ...
的文件,这些文件通常要么看不到,要么在使用 ls -al
时会消失在每个目录中像 .
或 ..
这样的正常文件的噪声中。但是,有一种对策可以解决这个问题,使用 ls -Al
可以抑制 .
或 ..
,但会显示所有其他点文件。
无论您的驱动器有多大,总有一天您会发现您需要更多。随着技术的进步,您可以用更少的钱获得更多。在撰写本文时,似乎 6.4 GB 的驱动器最划算。
请注意,对于 IDE 驱动器,您可能必须移除旧驱动器,因为您的主板上支持的最大数量通常只有 2 个或有时是 4 个。对于 SCSI,每个通道可以最多有 7 个窄 (8 位) SCSI 或最多 15 个宽 (15 位) SCSI。某些主机适配器可以支持多个通道,并且在任何情况下,每个系统都可以有多个主机适配器。我个人的建议是,从长远来看,您很可能更适合使用 SCSI。
问题来了,您应该把这个新驱动器放在哪里?在许多情况下,扩展的原因是您想要更大的假脱机区域,在这种情况下,快速简单的解决方案是将驱动器挂载在 /var/spool
下的某个位置。另一方面,较新的驱动器可能比旧驱动器更快,因此从长远来看,您可能会发现值得花时间进行完全重组,可能使用您的旧设计表。
如果升级是由于用于 /usr
或 /var
等事物的分区空间不足而被迫进行的,则升级会稍微复杂一些。您可以考虑从您最喜欢的(并且希望已升级的)发行版完全重新安装的选项。在这种情况下,您必须小心不要覆盖您的基本设置。通常这些东西都在 /etc
目录中。谨慎操作,进行全新备份并准备好可用的救援磁盘。另一种可能性是将旧目录复制到新目录,该目录挂载在临时挂载点上,编辑您的 /etc/fstab
文件,使用新分区重新启动并检查它是否工作。如果失败,您可以使用救援磁盘重新启动,重新编辑 /etc/fstab
并重试。
在卷管理可用于 Linux 之前,这既复杂又危险。如果您发现需要从备份中恢复系统,请不要感到太惊讶。
Tips-HOWTO 给出了以下关于如何跨目录结构移动的示例
(cd /source/directory; tar cf - . ) | (cd /dest/directory; tar xvfp -)
虽然这种移动目录树的方法在许多 Unix 系统中是可移植的,但记住它很不方便。此外,当路径名变得太长而 tar 无法处理时,它对于深度嵌套的目录树也会失败(GNU tar 具有处理长路径名的特殊规定)。
如果您可以访问 GNU cp(在 Linux 系统上始终如此),您也可以使用
cp -av /source/directory /dest/directory
GNU cp 特别了解符号链接、硬链接、FIFO 和设备文件,并将正确复制它们。
请记住,尝试传输 /dev
或 /proc
可能不是一个好主意。
还有一个 硬盘升级迷你 HOWTO,它为您提供了关于将整个 Linux 系统(包括 LILO)从一个硬盘迁移到另一个硬盘的逐步指南。
系统崩溃有很多种有趣的类型,而分区表损坏总是能保证足够的刺激。对于我们这些对正常水平的刺激感到满意的人来说,最近出现的一个无疑有用的工具是 gpart,意思是“猜测 PC 类型硬盘分区”。很有用。
此外,还有一些在 DOS 下可用的 分区实用程序。
内核和硬件的升级在 Linux 世界中并不罕见,因此,当您使用特殊驱动程序访问硬件时,准备更新的救援磁盘非常重要。救援磁盘可以从网上获取,从您的发行版获取,或者您可以自己组装一个。请务必确保启动和根参数已设置,以便内核知道在哪里找到您的系统。
如果您没有恢复软盘,您可以使用 GRUB 引导加载程序从磁盘上的某个位置加载 Linux 内核,并带有参数。