FreeBSD连载19:维护文件系统

来源:岁月联盟 编辑:zhu 时间:2008-01-17
FreeBSD连载19:维护文件系统内容简介:【FreeBSD教程】维护文件系统 由于文件系统是系统中非常重要的部分,因此维护文件系统的任务也非常重要。这个任务包括检查、修复文件系统,以及调整目录树以适合系统的变化,增添新存储设备等。 检查硬盘 正常情

  【FreeBSD教程】维护文件系统

  由于文件系统是系统中非常重要的部分,因此维护文件系统的任务也非常重要。这个任务包括检查、修复文件系统,以及调整目录树以适合系统的变化,增添新存储设备等。

  检查硬盘

  正常情况下使用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命令,是为了保证复制文件和目录时保留它们的属主、权限控制属性的一致性。

图片内容