由于文件系统是系统中非常重要的部分,因此维护文件系统的任务也非常重要。这个任务包括检查、修复文件系统, 以及调整目录树以适合系统的变化,增添新存储设备等。
正常情况下使用FreeBSD的时候,文件系统不会出现问题。然而在某些情况下,如没有正常关机操作就切断了 计算机的电源,就会造成文件系统出现问题。此外,出于系统维护的目的,也需要经常检查磁盘的正确性。这就需要使用文件 系统检查工具fsck。
# fsck /dev/wd0s3e
** /dev/rwd0s3e ** Last Mounted on /var ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 573files,3387used,26340free(132frags,3276blocks,0.4%fragmentation) |
fsck使用raw方式存取磁盘,因此即使使用普通块设备/dev/wd0s3e为参数,fsck也将使用对 应的raw方式设备文件/dev/rwd0s3e进行操作。为了避免与当前磁盘的存取操作冲突,因此要求在进行检查之 前先将文件系统卸载,否则文件系统的状态总是不正确(没有被正确的卸载)。
为了不影响系统中正运行的进程,进行磁盘维护,最好首先进入单用户状态。这个状态下将关闭所有不必要的进程, 系统也只安装了根文件系统,其他文件都没有安装,而且即使是根文件系统,也是以只读方式安装的,这样能保证不会发生存 取冲突,导致文件系统出现错误。
一旦磁盘被检查出错误,fsck将提示管理员是否进行修改,可以使用 “-y” 参数,使得fsck自动进行 修复工作,而不进行任何提示。系统每次启动的时候,都会使用这个参数自动检查和修复文件系统。
系统安装时在目录树上安装了不同的文件系统,随着时间的推移,有些目录使用的文件系统就会被文件数据占满,而 有些目录下的文件系统却很少使用,使得文件系统不太适合系统的需求,此时或者增加新的硬盘设备,或者将文件在不同文件 系统中进行调整。
例如,如果FreeBSD系统被用作一台News服务器,读者发表文章将保存在/var目录所在的文件系统, 而缺省情况/var目录空间有限,那么这个目录就会被占满。如果不断在系统中安装各种应用软件,那么/usr/loc al目录所在的文件系统会被占满,等等。管理者就需要根据实际情况进行调整,可以使用df命令来查看文件系统的当前状 态信息。
# df
Filesystem 512-blocks Used Avail Capacity Mounted on /dev/wd0s3a 63550 50822 7644 87% / /dev/wd0s3f 1693228 977436 580334 63% /usr /dev/wd0s3e 59454 6772 47926 12% /var profs 8 8 0 100% /proc /dev/wd0s1 2055744 2032096 23648 99% /mnt/dosc |
df报告的信息包括这个文件系统的大小和剩余空间(包括使用大小、剩余大小和已使用空间的百分比),如果一个 文件系统中的剩余空间不足,而另一个文件系统还剩余足够的空间,就可以通过调整来充分利用现有空间。
有时,df报告已使用空间的百分比会超过100%,这是由于UFS文件系统中有一些冗余空间可用。这样就给用 户一个机会,可以不必因为文件系统满而中断当前正在写文件的操作,而清除同一个文件系统中其他不必要的文件,在这个文 件系统中腾出存储空间,从而保证数据最后能被可以正确的保存在文件系统中。
调整文件系统空间的基本方法是使用符号连接,可以先将该文件系统中的一个子目录中数据全部转移或复制到其他文 件系统中的另一个目录中,然后将原有目录改名或删除,再建立一个对新目录的符号连接来达到目的。例如可以将/usr/local 目录转移到另一个安装到/disk2的文件系统中:
# cd /usr/local
# tar cf - * | (cd /disk2; tar xf -) # mv /usr/local /usr/local.old # ln -s /disk2/local /usr/local |
为了保证数据安全,这里例子中没有使用mv直接移动数据,而是使用tar将数据复制到另一个目录中,之所以使 用tar而非cp -R命令,是为了保证复制文件和目录时保留它们的属主、权限控制属性的一致性。
未完,待续。。。