fsck 命令
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看一个目录的总容量。
别的我觉的不常用,而且书上讲的也很清楚,就不在这里说了。
是出现经常非法关机,断电,导致文件系统不连续,而在强制检查后不能通过的情况,系统会进入一个修复(repair)模式……
【一】
是出现经常非法关机,断电,导致文件系统不连续,而在强制检查后不能通过的情况,系统会进入一个修复(repair)模式,
需要远程协助开启network和sshd服务,然后 cd /boot; umount / ; fsck -y /dev/sda3(假设根目录分区为sda3)
这里可能会有一些不连续或者部分损坏的文件被系统搁置到/lost+found目录下,都以#开头,以节点命名的目录,
需要手动恢复,恢复步骤自行到网上查询,需要确认原来的目录结构
【二】
另外一种比较严重,同样因为某些原因,例如升级内核,例如频繁断电,导致启动到内核后,出现类似以下错误,
Boot error:
-----------------------------------------------------
root (hd0,0)
Filesystem type is ext2fs, partition type 0x83
kernel /vmlinuz-2.6.15.6 ro root=LABLE=/ rhgb quiet
[Linux-bzImage, setup=0x1e00, size=0x1807f8]
initrd /initrd-2.6.15.6.img
[Linux-initrd @ 0x37f82000, 0x6d283 bytes]
Uncompressing Linux... Ok, booting the kernel.
Red Hat nash version 4.1.18 starting
mkrootdev: label / not found
umount /sys failed:16
mount: error 2 mounting ext3
mount: error 2 mounting none
switchroot: mount failed: 22
umount /initrd/dev failed: 2
Kernel panic - not syncing: Attempted to kill init!
-------------------------------------------------------
a. 远程协助,进入grub后,能否检测到系统完整的 LINUX分区,如果分区完整,并且进一步分区下的目录结构和文件初步完整,OK
将 kernel 后的 root=LABEL=/ 改成 root=/dev/hda3 或者 root=/dev/sda3 (根目录所在分区,我一般分为sda3)
应该可以顺利进入系统,然后参考 mklabel 命令,给根分区打上LABEL,或者修改grub.conf,将标签项改成用分区表示,然后grub-install ....
进行grub安装
b. 远程协助,进入grub后,只能检测到/boot所在分区,而root分区不完整,只能通过进入rescue模式,或者用live cd, 利用fsck了,
这里提醒一下,尽量别用带x-window的LIVECD,这种垃圾盘把我害惨了.
另外尽量平时能备些CD的盘,大家用习惯了DVD,可是这次的情况就是服务器上没有DVD,全是CD,又找不来移动DVD
只能通过网络PXE来完成了.....
c. 把磁盘挂载到其他的主机上个别分区如果挂载不上提示指定文件系统的话我们可以通过如下步骤来恢复数据:
恢复数据实践步骤!!!
1.复制磁盘
dd if=源盘分区 of=目标盘分区 (最好一模一样大小) ,例如目标盘分区为/dev/sdb3
2.
mkfs.ext3 -n /dev/sdb3 (一定要有-n,切记) 记住最后一个数字值
3.
screen -S check
fsck -b XXXX /dev/sdb3 -y
XXX为第二部里最后一个数字
开始检测,不用管,按 Ctrl+a -> d ,切换到后台,等扫描完, fsck -y /dev/sdb3 确认。
4.
mount /dev/sdb3 /mnt
【三】
至于连grub都进不去的,不用说了,远程协助,直接进入live cd 或者 rescue模式,先看分区是否完整,如果完整,直接用grub-install.......,具体使用参考网络
如果分区不完整,那只能用数据恢复软件,数据重要的话就花点时间找吧,或者花点money,不重要的话直接reinstall吧
文章来自中国建站:http://www.jz123.cn/text/1628386.html