mount of filesystem failed

原文地址:http://blog.csdn.net/kankan_summer/article/details/6026539


Problem: 
mount of filesystem failed 
a maintenance shell will now be started. 
Control-D will terminate this shell and re-try 
root@kubuntu:~#


 
its ridiculous, this just happened randomly

Resolution:

run this command 

"fsck -f" then hit "Y" for all the errors it prompted me with. 

that will fix all problems, as of right now. 

Use caution because i cant guarantee that this will fit for everyone.

 

 


 

fsck 详解
 
 
Linux命令:fsck 
功能说明:检查文件系统 并尝试修复错误。
 
语 法:fsck [-aANPrRsTV][-t <文件系统类型>][文件系统...] 
补充说明:当文件系统发生错误时,可用fsck指令尝试加以修复。 
参 数: 
-a 自动修复文件系统,不询问任何问题。 
-A 依照/etc/fstab 配置文件的内容,检查文件内所列的全部文件系统。 
文件/etc/fstab存放的是系统中的文件系统信息。当正确的设置了该文件,则可以通过"mount /director yname"命令来加载一个文件系统,每种文件系统都对应一个独立的行,每行中的字段都有空格或tab键分开。同时fsck、mount、umount 的等命令都利用该程序。 
-N 不执行指令,仅列出实际执行会进行的动作。 
-P 当搭配"-A"参数使用时,则会同时检查所有的文件系统。 
-r 采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式。 
-R 当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查。 
-s 依序执行检查作业,而非同时执行。 
-t<文件系统类型> 指定要检查的文件系统类型。 
-T 执行fsck指令时,不显示标题信息。 
-V 显示指令执行过程。 


运行fsck后,该命令会分6个阶段对文件系统 
进行检查,这六个阶段分别是: 


阶段1: 检查块和块的大小 
阶段2: 检查路径名 
阶段3: 检查连接性 
阶段4: 检查参考记数 
阶段5: 检查自由块列表 
阶段6: 补救自由块列表 


fsck在对每个阶段进行检查时,如果发现错误,会提示用户进行修改,常见的一些错误有: 
1) 移去一个没有相关文件的目录入口 
这时用户可以回答Yes或Y来删除该目录入口。 

2) 重连接一个已分配但不能访问的文件: 
fsck找到了一个已分配的I节点,但却不可访问(该节点没与任何目录连接),这时一般对fsck的"RECONNECT?"回答Yes,即把该I节点连接到lost+found目录下,文件名即是I节点号,之后管理员应检查该文件类型,判明该文件用途,再将该文件拷贝到相应目录下。 

3) 连接数调整 
在交互方式下,fsck若发现连接数不一致,将询问用户采取何种行动,本例发现一目录的I节点连接数与该目录的真实连接数不一致。 
这时用户应该回答Yes或Y来改正连接数。 

4) 自由块表不一致 
fsck查出未分配块数与超级块中所给出的自由块表不一致。 
这时用户应该回答Yes或Y来修正超级块。 

从上面的出错信息和处理方法可以发现,对于fsck询问的问题大多数情况下都可以用Yes来回答,所以在实际应用时,可以用" -y"选项来执行该命令对硬盘进行检查和修复。 


用fsck检查文件系统完整性 
文件系统很复杂,因此易于发生错误。可以用fsck命令检查文件系统是否正确和有效。它可以根据指令修复找到的小错误,并将未修复错误报告用户。幸运的是,文件系统的代码非常有效,所以根本极少出现问题,并且问题通常原因是电源失败、硬件失败、或操作错误,例如没有正常关闭系统。大多数系统设置为启动时自动运行fsck,因此任何错误将在系统使用前被检测到(并根据希望修正)。使用有错误的文件系统可能使问题变得更坏:如果数据结构有问题,使用这个文件系统可能使之更糟,导致更多的数据丢失。当然,在大的文件系统上运行fsck 会花一定的时间,如果系统正常关闭,几乎从不发生错误,因此有一些方法可以不进行检查。如果文件/etc/fastboot 存在,就不检查。 另外,如果ext2文件系统在超级块中有一个特定的标记告知该文件系统在上次mount后没有正常unmount. 如果标记指出unmount正常完成(假设正常unmount指出没问题),e2fsck (fsck 的ext2文件系统版) 就不检查系统。/etc/fastboot 是否影响系统依赖于你的启动手稿,但ext2标记则在你使用e2fsck 时发生作用--基于一个e2fsck 选项(参阅e2fsck 手册页) 
自动检查只对启动时自动mount的文件系统发生作用。==>? 使用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和log ging的状态的时候(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导致发生错误的情况。不过还是建议大家操作的时候规范一些,否则出错了不要来找我呀。尤其是考试的时候) 

FSCK数据出错的灾难应急方案 介绍 
1、文件系统:ext2 ext3 reiserfs xfs等 
2、范围:提示文件系统需要FSCK时,未执行或FSCK执行完成 

[症状] 
1、无法MOUNT分区; 
2、大量文件、目录丢失,根目录下生成/LOST+FOUND文件夹,里面有大量#XXXXXX类的文件和目录; 
3、FSCK很快报错完成; 
4、FSCK执行时,有大量提示,如修改节点、清0节点等操作 

[应急方案] 
1、如遇提示FSCK时,请小心。如果可能,请尽快断开系统,UMOUNT所有分区。 
2、必需执行FSCK时,先做准备工作,方法一:可事先用dd命令将所涉及到的分区输出到另外的存储 体上(最好不要在出错的存储体本身上做dd) 命令大致结构可如: dd if=/dev/sda0 of=/dev/sdb0 ….. 
3、必需执行FSCK时,先做准备工作,方法二:将整个LINUX存储体挂载到虚拟机环境,将LINUX存储体设为Nonpersisten模式,再执行,执行过后,如果数据完好,应尽快通过FTP等方式拷贝出来。 
4、必需执行FSCK时,先做准备工作,方法三:将整个LINUX存储体挂载到其他系统上(如WINDOWS),做好镜像后再做FSCK。 
5、如上面几种方式均因条件等原因无法实施,必须执行时,可小心观察FSCK的执行提示(关掉-a)如果发现有提示节点错误需更正或清0、节点描述文件大小不正确等信息,应停止执行FSCK。 
6、因恢复 需要参考很多信息,因尽可能保持系统不工作状态,至少不得再次MOUNT分区(即便不做任何读写操作,也会因系统的工作原理不断降低数据恢复的可能性,增加数据恢复的难度) 
7、寻求专业数据恢复公司帮助。 


对磁盘进行镜像的方案: 
1、可用相同或大于源盘容量的硬盘做为目标盘,将源盘全部扇区方式CLONE到目标盘。 
2、可将源盘完全以扇区方式输出文件到某大容量存储空间(如大容量硬盘、NAS、SAN、DAS等) 

输入Root密码 登录后采用:fsck -t ext3 -r /usr/local 修复 

fsck的命令的几个使用方法 

指令:fsck 

使用权限 : 超级使用者 

使用方式 : fsck [-sACVRP] [-t fstype] [–] [fsck-options] filesys […] 

说明 : 检查与修复 Linux 档案系统,可以同时检查一个或多个 Linux 档案系统 

参数 : 
filesys : device 名称(eg./dev/sda1),mount 点 (eg. / 或 /usr) 

-t : 给定档案系统的型式,若在 /etc/fstab 中已有定义或 kernel 本身已支援的则不需加上此参数 

-s : 依序一个一个地执行 fsck 的指令来检查 

-A : 对/etc/fstab 中所有列出来的 partition 做检查 

-C : 显示完整的检查进度 

-d : 列印 e2fsck 的 debug 结果 

-p : 同时有 -A 条件时,同时有多个 fsck 的检查一起执行 

-R : 同时有 -A 条件时,省略 / 不检查 

-V : 详细显示模式 

-a : 如果检查有错则自动修复 

-r : 如果检查有错则由使用者回答是否修复 

例子 : 
检查 msdos 档案系统的 /dev/hda5 是否正常,如果有异常便自动修复 :fsck -t msdos -a /dev/hda5 

注意 : 
此指令可与 /etc/fstab 相互参考操作来加以了解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在ESP32 IDF中,可以使用esp_vfs_fat_sdmmc_mount函数来挂载FAT文件系统,而格式化FAT文件系统的方法有两种: 1. 使用mkfatfs工具进行格式化 可以在终端中使用mkfatfs工具来格式化FAT文件系统。首先需要连接ESP32板子并打开终端,然后执行以下命令: ``` $ idf.py -p PORT erase_flash $ sudo mkfatfs -F 32 /dev/sdX1 ``` 其中,PORT是ESP32板子连接的串口端口号,/dev/sdX1是SD卡的设备名称。执行完毕后,SD卡的FAT文件系统就被格式化了。 2. 在程序中使用fatfs_vfs_format函数进行格式化 在程序中,可以使用fatfs_vfs_format函数来格式化FAT文件系统。具体方法如下: ``` #include "esp_vfs_fat.h" void format_fatfs(void) { // 打开SD卡设备 sdmmc_host_t host = SDMMC_HOST_DEFAULT(); sdmmc_slot_config_t slot_config = SDMMC_SLOT_CONFIG_DEFAULT(); sdmmc_card_t* card; esp_err_t ret = sdmmc_host_init(&host); ret = sdmmc_card_init(&host, &slot_config, &card); // 格式化FAT文件系统 const char* mount_point = "/sdcard"; esp_vfs_fat_sdmmc_unmount(); esp_vfs_fat_sdmmc_mount_config_t mount_config = { .format_if_mount_failed = true, .max_files = 5, .allocation_unit_size = 16 * 1024 }; ret = esp_vfs_fat_sdmmc_mount(mount_point, &host, &slot_config, &mount_config, &card); if (ret != ESP_OK) { printf("Failed to mount FAT filesystem. Error: %s\n", esp_err_to_name(ret)); return; } // 卸载SD卡设备 sdmmc_card_deinit(card); sdmmc_host_deinit(); } ``` 需要注意的是,使用esp_vfs_fat_sdmmc_mount函数进行格式化时,必须先执行esp_vfs_fat_sdmmc_unmount函数卸载之前挂载的FAT文件系统,否则会出现错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值