linux系统挂载外部存储内的文件无法删除

/*********************************************************************
* Author          :     lile
* Modified        :     2020年8月6日星期四 17:00:58
* Email           :     [email protected]
* HomePage        :     lile777.blog.csdn.net
* CopyRight       :     该文章版权由lile所有。
*                       保留原文出处链接和本声明的前提下,可在非商业目的下任意传播和复制。
*                       对于商业目的下对本文的任何行为需经作者同意。
*********************************************************************/

现象

通过samba服务访问TF卡内的文件,突然无法进行删除操作;

分析

1,登陆终端,查看操作文件的权限,为 -rw-r–r--,说明其他用户无写权限;
2,使用root用户,对操作文件 chmod 666 修改权限;
3,再次查看操作文件的权限,为 -rw-r–r--,强制修改失败;

4,检查umask,为 0077,修改为0011;
5,使用root用户,对操作文件 chmod 666 修改权限;
6,再次查看操作文件的权限,为 -rw-r–r--,强制修改失败;

7,检查 目录粘滞位, 无异常; (Linux-粘滞位的使用: https://www.cnblogs.com/hanxiaoyu/p/5622036.html )
8,dmesg 查看系统日志, 发现 mmc error, 出现过 系统异常;

FAT-fs (mmcblk1p1): error, fat_free_clusters: deleting FAT entry beyond EOF
FAT-fs (mmcblk1p1): Filesystem has been set read-only
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)
FAT-fs (mmcblk1p1): error, fat_get_cluster: invalid cluster chain (i_pos 2461865                                                                                        76)

9,mount命令查看 TF卡挂载状态

/dev/mmcblk1p1 on /www/video type vfat (ro,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)

10,TF卡出错后自动挂载为 只读文件系统;
11,手动卸载 / 挂载 TF卡, 通过samba服务,可以正常删除文件;

结论

TF异常 导致自动挂载为 只读文件系统, 临时使用可以手动重新挂载;

完善

将TF卡 格式化为 linux系统专用的 ext4格式, 提高稳定性;

其他

文件系统报错无法避免,只能通过mount参数规避,防止出现readonly问题
在挂载参数中修改errors处理
可以通过在文档中查看参数定义

linux-kernel/Documentation/filesystems/vfat.txt

errors取值: panic|continue|remount-ro (默认是rmount-ro)

mount时将参数指定为continue即可
如mount -t vfat /dev/sda /mnt/sda -o errors=continue

如何解决FAT文件系统出现readonly的问题: https://blog.csdn.net/dxt1107/article/details/106936862

你可能感兴趣的:(Linux,应用开发)