当文件系统的超级块损坏时,必须恢复它。fsck 命令会在超级块已损坏的时候告知您。好在文件系统中存储有超级块的多个副本。
可以使用 fsck -o b 命令将超级块替换为其中一个副本,或使用 fsck 的自动搜索备份超级块功能(Solaris 10 6/06 发行版中的新增功能)。有关此功能的更多信息,请参见自动搜索备份超级块。
有关超级块的更多信息,请参见超级块。
如果根 (/) 文件系统中的超级块损坏,而且您无法恢复它,则您有以下两种选择:
重新安装系统。
从网络或本地 CD 进行引导,然后尝试执行以下步骤。如果这些步骤失败,请使用 newfs 命令重新创建根 (/) 文件系统,然后从备份副本恢复它。
此过程是 Solaris 10 6/06 发行版的新增内容。如果文件系统具有坏的超级块,则 fsck 会自动计算备用超级块,如以下消息所示:
BAD SUPERBLOCK AT ... LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS? |
如果具有损坏的超级块的文件系统是使用 newfs 或 mkfs 自定义参数(例如 ntrack 或 nsect)创建的,则使用 fsck 自动计算的超级块执行修复过程可能会对文件系统造成无法恢复的损坏。
如果文件系统是使用自定义参数创建的,并且它具有坏的超级块,则 fsck 提供以下提示以取消 fsck 会话:
CANCEL FILESYSTEM CHECK? |
如果此文件系统是使用自定义参数创建的,或者在此文件系统上运行 fsck 可能会带来其他问题,则应取消 fsck 会话。
成为超级用户或承担等效角色。
检查怀疑有坏的超级块的文件系统。
# fsck /dev/rdsk/c0t1d0s0 ** /dev/rdsk/c0t1d0s0 BAD SUPERBLOCK at ... |
确定文件系统是如何创建的,然后选择以下项之一:
文件系统是使用 newfs 命令创建的。
fsck 响应所有超级块都已损坏,而且必须使用通用超级块。按以下示例所示应答 fsck 提示。
如果文件系统是使用自定义参数创建的,则不要使用此选项。仅应在没有其他方法时使用此选项。为从备份副本恢复文件系统做好准备。
# fsck /dev/dsk/c1t2d0s0 ** /dev/rdsk/c1t2d0s0 BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? no LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS? yes SEARCH FOR ALTERNATE SUPERBLOCKS FAILED. USE GENERIC SUPERBLOCK FROM MKFS? no USE GENERIC SUPERBLOCK FROM NEWFS? yes CALCULATED GENERIC SUPERBLOCK WITH NEWFS If filesystem was created with manually-specified geometry, using auto-discovered superblock may result in irrecoverable damage to filesystem and user data. CANCEL FILESYSTEM CHECK? no ** Last Mounted on ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3a - Check Connectivity ** Phase 3b - Verify Shadows/ACLs ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cylinder Groups CORRECT GLOBAL SUMMARY SALVAGE? y UPDATE STANDARD SUPERBLOCK? y 81 files, 3609 used, 244678 free (6 frags, 30584 blocks, 0.0% fragmentation) ***** FILE SYSTEM WAS MODIFIED ***** |
fsck 响应它找到备用超级块,并显示与以下内容类似的消息:
FOUND ALTERNATE SUPERBLOCK 32 WITH NEWFS |
在此 fsck 方案中,按照自动搜索备份超级块所示的提示操作。
文件系统是使用 mkfs 命令创建的。
fsck 响应所有超级块都已损坏,而且必须使用通用超级块。按以下示例所示应答 fsck 提示。
如果文件系统是使用自定义参数创建的,则不要使用此选项。仅应在没有其他方法时使用此选项。为从备份副本恢复文件系统做好准备。
# fsck /dev/dsk/c1t2d0s0 ** /dev/rdsk/c1t2d0s0 BAD SUPERBLOCK AT BLOCK 16: BLOCK SIZE LARGER THAN MAXIMUM SUPPORTED LOOK FOR ALTERNATE SUPERBLOCKS WITH MKFS? yes LOOK FOR ALTERNATE SUPERBLOCKS WITH NEWFS? no SEARCH FOR ALTERNATE SUPERBLOCKS FAILED. USE GENERIC SUPERBLOCK FROM MKFS? yes CALCULATED GENERIC SUPERBLOCK WITH MKFS If filesystem was created with manually-specified geometry, using auto-discovered superblock may result in irrecoverable damage to filesystem and user data. CANCEL FILESYSTEM CHECK? no ** Last Mounted on ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3a - Check Connectivity ** Phase 3b - Verify Shadows/ACLs ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cylinder Groups CORRECT GLOBAL SUMMARY SALVAGE? y UPDATE STANDARD SUPERBLOCK? y 81 files, 3609 used, 243605 free (117 frags, 30436 blocks, 0.0% fragmentation) |
fsck 响应它找到备用超级块,并显示与以下内容类似的消息:
FOUND ALTERNATE SUPERBLOCK 32 WITH MKFS |
在此 fsck 方案中,按照自动搜索备份超级块所示的提示操作。
应答提示以挽救和恢复超级块。
在看到以下消息时,无需重新运行 fsck:
***** FILE SYSTEM WAS MODIFIED ***** |
但是,在出现此消息后重新运行 fsck 并不会损害文件系统。此消息只是有关 fsck 的更正操作的信息。
成为超级用户或承担等效角色。
确定根 (/)、/usr 或 /var 文件系统中是否存在坏的超级块,然后选择以下项之一:
如果根 (/)、/usr 或 /var 文件系统中存在坏的超级块,则从网络或本地连接的 CD 进行引导。
从本地连接的 CD 进行引导时使用以下命令:
ok boot cdrom -s |
从已设置引导服务器或安装服务器的网络进行引导时使用以下命令:
ok boot net -s |
如果需要有关如何停止系统的帮助,请参见《系统管理指南:基本管理》中的第 10 章 “引导系统(任务)”或《系统管理指南:基本管理》中的第 11 章 “基于 GRUB 的引导(任务)”。
如果根 (/)、/usr、/var 文件系统中不存在坏的超级块,则转到损坏的文件系统之外的目录,并取消挂载文件系统。
# umount /mount-point |
务必在下一步中使用 newfs -N。如果省略 -N 选项,则会损坏文件系统中的所有数据,并将它替换为空的文件系统。
使用 newfs -N 命令显示超级块的值。
# newfs -N /dev/rdsk/device-name |
除非文件系统是使用特殊参数创建的,否则命令输出将显示 newfs 命令创建文件系统时用于超级块副本的块编号。有关创建自定义文件系统的信息,请参见自定义 UFS 文件系统参数。
使用 fsck 命令提供备用超级块。
# fsck -F ufs -o b=block-number /dev/rdsk/device-name |
fsck 命令使用指定的备用超级块恢复主超级块。可以始终尝试将 32 作为备用块。或者,使用 newfs -N 命令所示的任何备用块。
以下示例说明如何恢复超级块副本 5264。
# newfs -N /dev/rdsk/c0t3d0s7 /dev/rdsk/c0t3d0s7: 163944 sectors in 506 cylinders of 9 tracks, 36 sectors 83.9MB in 32 cyl groups (16 c/g, 2.65MB/g, 1216 i/g) super-block backups (for fsck -b #) at: 32, 5264, 10496, 15728, 20960, 26192, 31424, 36656, 41888, 47120, 52352, 57584, 62816, 68048, 73280, 78512, 82976, 88208, 93440, 98672, 103904, 109136, 114368, 119600, 124832, 130064, 135296, 140528, 145760, 150992, 156224, 161456, # fsck -F ufs -o b=5264 /dev/rdsk/c0t3d0s7 Alternate superblock location: 5264. ** /dev/rdsk/c0t3d0s7 ** Last Mounted on ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3 - Check Connectivity ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cyl groups 36 files, 867 used, 75712 free (16 frags, 9462 blocks, 0.0% fragmentation) ***** FILE SYSTEM WAS MODIFIED ***** # |