Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3150071
  • 博文数量: 443
  • 博客积分: 11301
  • 博客等级: 上将
  • 技术积分: 5678
  • 用 户 组: 普通用户
  • 注册时间: 2004-10-08 12:30
个人简介

欢迎加入IT云增值在线QQ交流群:342584734

文章分类

全部博文(443)

文章存档

2022年(1)

2021年(1)

2015年(2)

2014年(1)

2013年(1)

2012年(4)

2011年(19)

2010年(32)

2009年(2)

2008年(4)

2007年(31)

2006年(301)

2005年(42)

2004年(2)

分类:

2005-08-24 13:21:34

文件系统检测程序
文件系统可以因为电源的损坏的原因,内核中的软件错误,硬件故障,或者不正确的关闭了系统。
文件系统检测程序,fsck,检测一个文件系统的数据一致性,并且纠正或者修复任何被找到的不同或者故障
每次系统启动,fsck自动的预先运行一个文件系统一致性检测。Fsck在文件系统被装配之前检测和修复任何遇到的文件系统的问题。
当文件系统被装配,并且附加了ufs logging选项,就不需要运行fsck。因为logging禁止文件系统发生变化。
每次他扫描到检测下列类型的文件系统冲突,fsck命令让几个通行证通过一个文件系统。

lost+found目录
fsck命令放置分派文件和目录,但是不参考位于那个文件系统中的lost+found目录。每个文件的inode编号当作名字分配。如果lost+found目录不存在,fsck就建立他,并且如果在lost+found目录中的空间不足,fsck就增加他的空间。
Superblock一致性
文件系统超级块是为了检测调用的文件系统长度的不同,空余块计数器,和空余的inode计数器。
Inode一致性
Fsck命令为每个inode检测分派状态,类型,连接计数器,复制块,错误块,inode长度和块计数器。任何未使用的inode和非0的连接计数器都链接到文件系统的lost+found目录。
数据块一致性
fsck命令不能检测普通的数据块,但是可以检测目录数据块。在这个数据块中,为inode指针检测未分配的块,标记为以用的未分配的块,标记为空闲的未分配的块,“.”和“..”和目录没有链节到文件系统的错误的inode。这些目录是连接返回到文件系统的lost+found目录。
柱头组块一致性
fsck命令检测已经要求inode的未分配的数据块,未分配的数据块计数器和未分配的inode计数器。
Fsck的状态
Fsck命令为每个在/etc/vfstab文件中包括设备到fsck和fsck通行条目的文件系统运行通过5个状态。这5个状态是:
Phase 1:检测块和长度,检测矛盾的inode
Phase 2:检测路径名,检测目录inode一致性
Phase 3:检测连通性,检测所有目录是否已经连接到文件系统
Phase 4:检测参考计数器,从Phase 2和3比较连接计数器信息,校正误差。
Phase 5:检测柱头组,检测空余块和已经使用inode映象的一致性
非交互式模式
在一个普通系统启动期间,fsck操作在非交互式模式,经常整理查阅或者无记载的模式。
在这个过程期间,fsck仅修复可以修复的问题。
可是,如果一个较大的问题被发现,并且产生了结果,fsck程序就中断并且使系统进入但用户模式。用户必须运行交互式的fsck来继续。
交互式模式
在这个过程中间,fsck列出每个遇到的问题,下列在下列的纠正建议的动作中,问题需要回答yes或者no
通过回应yes,fsck允许纠正动作并且继续。
回应no,fsck将报告最初的问题,并且提出解决的方法,并且不在继续向前直到用户回应yes。
使用fsck命令
下面的实例中示范root用户如何使用fsck命令来完整的检测文件系统。
。检测单独的没有装配的文件系统,执行下列命令
# fsck /dev/rdsk/c0t0d0s7
这是检测没有加入/etc/vfstab文件的文件系统的唯一方法。
。使用列在/etc/vfstab文件中的文件系统的装配点目录名检测文件系统,执行下列命令
# fsck /opt
fsck发现并修理故障
如果文件系统中显示了问题,用户可以接到来自fsck的警告。下面描述了一些比较多需要采用交互式干涉的文件系统错误。
从新连接一个已经分配的不可引用的文件。
在这个例子中,fsck程序发现一个已经分配的inode,但是不能引用或者不能连接到其他目录。
在RECONNECT?后面回答yes,会导致fsck保存文件到lost+found目录,并且以inode编号命名。
** Phase 3 – Check Connectivity
UNREF FILE I=788 OWNER=root Mode=100644
SIZE=19994 MTIME=Jan 18 10:49 1999
RECONNECT? Y
决定什么类型的文件被移动到lost+found目录中
1.列出文件系统的lost+found目录的内容,比如
# ls /export/home/lost+found
#788
2.决定文件的类型,使用file命令
#  file /export/home/lost+found/#788
/export/home/lost+found/#788:ascii text
3.使用more或者cat命令显示ACSII文本文件的内容。使用strings命令显示二进制文件的内容。如果文件是与一个应用相关的,就必须使用该应用程序来打开这个文件
#  cat /export/home/lost+found/#788
4.如果文件是完整的并且用户知道他属于哪里,文件可以直接拷贝回他应该在的文件系统
校正连接计数器
在这个实例中,fsck程序发现一个目录的inode的连接计数器的数值和实际目录的连接计数器的数值不符。
在ADJUST?后面回答yes,fsck将校正目录inode的连接计数器
** Phase 4 – Check Reference Counts
LINK COUNT DIR I=2 OWNER=root MODE=40755
SIZE=512 MTIME=Jan 18 15:59 1999 COUNT 4 SHOULD BE 3
ADJUST? y
抢救空余列表
在这个实例中,fsck程序发现未分配的块计数器和空余块编号列表中的超级块不符合。
在SALVAGE?后面回答yes,fsck将升级文件系统的超级块的信息。
** Phase 5 – Check Cyl groups
CG 0: BAD MAGIC NUMBER
FREE BLK COUNT(S) WRONG IN SUPERBLK
SALVAGE? y
使用备份的超级块
文件系统不能被装配,超级块碎片是可能的原因。
在系统启动的时候或者手动装配文件系统的时候,显示信息“Can’t mount file system name”表示一个文件系统不可用。例如:
Can’t mount /dev/dsk/c0t0d0s7
如果fsck因为超级块错误而返回一个错误信息,用户必须选择一个超级块来恢复系统。
纠正的动作是运行fsck的-o选项,并且加b标志。标志后面跟超级块号码。
每个文件系统通常有一个预备超级块在32号块上,可以利用他来修复主超级块。
# fsck –o b=32 /dev/rdsk/c1t3d0s0
fsck程序在备份的超级块上提取信息,与实际的文件系统比较并且重建主超级块。
可是如果这个被破坏的块是文件系统的部分。用户必须选择其他的备份超级块使fsck继续。
要列出文件系统所有的备份超级块的位置,就运行newfs –N命令,例如
# newfs –N /dev/rdsk/c#t#d#s#
用户可以使用-N选项来显示出文件系统参数到that would be used来建立即将使用的新文件系统而没有真正的建立文件系统
输出的一部分是列出所有可以被-o参数使用的备份超级块的位置
用户也可以使用任何备份块编号来列出每个备份超级块的内容。
监视文件系统的使用
系统管理员的一个重要工作就是监视普通用户的文件系统的使用。有4个可以使用命令用于这个任务,包括df,du,ff和quot
df:显示空闲磁盘块和文件的编号
du:总结磁盘的使用
ff:为文件系统列出文件名和统计报表
quot:总结文件系统所有权
df命令
用户使用df命令来显示已经装配的文件系统使用的磁盘空间的数量。他列出的是已经使用的和可用空间的数量,并且用了多少文件系统的总容量。
命令格式
df [-k] [directory]
选项
-k显示已经使用的K字节和从可用空间的部分通过操作系统减去保留的空间。
显示文件系统的容量,使用下面的命令
# df –k
在文件系统中,已用的空间加上空闲的空间是小于整个空间的。其中的一小部分空间,大约是1%到10%是保留给每个文件系统的。
当文件系统报告所有的空间都被使用的时候,容量显示100%。普通用户就会接到信息“File System Full”,并且不能继续工作。而保留的空间,root仍然可以使用,root用户可以删除或者备份文件到有空闲空间的文件系统。
Df –k显示下列的部分
File system:已经装配的文件系统
Kbytes:文件的长度(K为单位)
Used:已经使用的空间(K为单位)
Avail:空闲的空间(K为单位)
Capacity:文件系统已经使用的部分的百分比
Mounted on:装配点
Du命令
用户使用du命令来显示每个目录或者文件已经使用的磁盘块的数量
命令格式
du [-a] [-s] [-k] [directory]
选项
-k以K字节为单位显示
-s显示只有512字节的块。S和k一起使用,显示总共使用的K字节
-a显示所有文件和目录已经使用的块的数目,可以指定目录体系
ff命令
ff文件提供文件系统中的路径名的列表和文件的inode编号。
Quot命令
Quot命令显示了每个用户使用了多少空间。(K为单位)
命令格式
quot [-af] [file system …]
选项
a报告所有已经装配的文件系统
f包含的文件的数目
故障解决
如果boot损坏了,修复重要的文件。
/etc/vfstab文件是一个重要的系统文件。如果出现问题或者包含了编辑上的错误,就会导致系统启动错误。
使用下面的方法从Solaris操作环境光盘中启动并且修复编辑/etc/vfstab文件
1.插入Solaris 8光盘(Software 1 of 2)
2.利用光盘启动到单用户模式
ok boot cdrom -s
3.使用fsck命令修复/(root)分区的潜在问题
# fsck /dev/rdsk/c0t0d0s0
4.如果fsck成功完成,装配/(root)文件系统到/a目录,以允许对磁盘上的文件系统的访问。
# mount /dev/dsk/c0t0d0s0 /a
5.设置并且输出TERM变量允许vi编辑器进行工作
# TERM=sun
# export TERM
6.编辑/etc/vfstab文件并且纠正问题。然后退出保存文件
# vi /a/etc/vfstab
:wq!
7.卸载文件系统
# cd /
# umount /a
8.重新启动系统
# reboot
1、fsck 
fsck是可以说是使用次数第一的工具(系统自己使用占90%以上)。它是FS完整性
检查,包括supblk,cylgrpblk,inode.tab,data区等。检查的原理是:冗余发。修
复时按照实际情况调整记录信息。
lost+found目录:在fsck的时候,将找不到父目录的那些文件拷贝到该目录中,并
以i节点号作为文件名。
当系统启动的时候会使用fsck对文件系统进行扫描,并相应的报出扫描结果。例
如:/dev/rdsk/c0t0d0s7 stable等。
后面是Fs的状态。其中,clean表示文件系统umount后无人用,stable表示文件系
统用过,但却是完整的,好的。而出一大堆的话,还有什么fragment %什么的的那
都表示文件系统上有乱的地方,那么就应该进入系统后使用fsck来整理。提起这个
来,我想说说在非法关机后(各种原因),再次启动的时候会有很多的情况,上面
说的是一种情况,再厉害一些是系统只能进入但用户状态,最厉害的是连单用户的
状态都无法进入(肯定是/和/usr区有问题。这是因为fsck对/区的扫描无法通过的
话,系统当然无法启动,而fsck调用的一些函数库又在/usr上。。。。)
当系统的状态是clean,stable和logging的状态的时候(logging??不知道的看上
一课吧)fsck不运行。

2、fsck的使用
本课讲的三个参数:
-o f 对系统进行强制检查,不论系统是否在clean等状态
-o p 非交互式检查并修复文件系统,对有的问题则立即退出
-o b=xx 用来修复超级块的错误,就是将备份的超级块内容拷入超级块中。solaris对
超级块很重视,它的备份有很多,一般的b=32就可以了,如果不行可以使用命令
newfs -N /dev/rdsk/cxtxdxsx来查看超级块的位置,其中任何一个备份块都可使用

3、一些错误的情况
一、RECONNECT
表示目录丢失,可将其存入lost+found中再作转移。回答yes
二、SUPERBLK坏(注意是坏,不是wrong)
修复见上面(如果是wrong就随便了,修不修都可以)
三、CLEAR
删i节点,可能会错
四、REMOVE
删文件,一般给出文件名。file=....
五、ADJUST
调整连接数。实际数与原记录不符。回答yes
六、SALVAGE
自由列表计数不正确。回答yes
(题外话:其实我使用一般都是yes过去的,而且书上说不能在正在mount的文件系统上
操作,否则有可能导致文件系统损坏。但我也没有碰到过用fsck导致发生错误的情况。
不过还是建议大家操作的时候规范一些,否则出错了不要来找我呀。尤其是考试的时候)

4、df和du命令
最长用的是
df -k看现在系统的挂接和使用情况
du -ks看一个目录的总容量。

阅读(7346) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~