[Contribute Advice] 发现文件管理和USB之间的重大bug!
Tofloor
poster avatar
正直笔尖
deepin
2021-08-21 15:19
Author

在USB传输数据时,图形百分比进度条和后台数据不同步,不能反应后台数据传输的进行、结束的真实状态和过程。

 

百分比进度条一开始就非常夸张的速度,一二百兆的写盘速度!然后迅速递减,很快进度条到100%自动关闭,写盘压根就没完成。容易造成U盘写盘拷贝数据不完整,且大部分人找不到原因,以为U盘坏了。

 

deepin系统环境下制作启动盘时,显示已制作完成,其实远没有完成,制作不全的U盘启动盘会造成大部分人安装deepin是安装失败和各种故障,大部分人会误解为自己硬件兼容性问题,没想到USB背后会挖坑。

 

目前如制作启动盘最好用Windows系统制作,保证数据的完整性。成熟系统的进度条很准,进度条一结束就可以放心的拔U盘。

 

解决办法:进度条和完成提示菜单都别相信它!关键看系统监视器左下角“读写盘”进度怎么样,如果写盘还有几M十几M的数据流,表明后台数据传输远没有完成,观察写盘走直线只有几K几十K小数据流,证明U盘写盘数据已经结束。

 

这是个很严重的问题!

Reply Favorite View the author
All Replies
蒙笛
deepin
2021-08-21 16:10
#1

这是个很严重的问题!

Reply View the author
Maicss
deepin
2021-08-21 16:13
#2

https://zhidao.baidu.com/question/1370677141267240779.html?mid=10002-mda-kfsef7csjnayzzm4&vvideo=1

可以参考一下这个,拔出U盘前要手动弹出

Reply View the author
pengaocode
deepin
2021-08-21 17:42
#3

这个问题我之前也反馈过(https://bbs.deepin.org/zh/post/224341),部分社区大佬回复是linux在拷贝文件时会先将文件加载到内存(Deepin显示的就是这个速度),然后才会慢慢的将文件从内存中写入U盘,因此会出现这个问题

Reply View the author
正直笔尖
deepin
2021-08-21 17:55
#4
pengaocode

这个问题我之前也反馈过(https://bbs.deepin.org/zh/post/224341),部分社区大佬回复是linux在拷贝文件时会先将文件加载到内存(Deepin显示的就是这个速度),然后才会慢慢的将文件从内存中写入U盘,因此会出现这个问题

这是文件管理的机制错误,只显示加载缓存的速度(鸡肋),没有显示写盘的速度(结果),让人变成了瞎子,不知背后的情况如何,产生各种故障和误解。

Reply View the author
Ziggy
deepin
2021-08-21 19:47
#5

文管在完成后会显示同步状态的

Reply View the author
joo
deepin
2021-08-21 23:47
#6

第一、等文管显示信息完成,第二、拨U盘一定要点弹出U盘。磁盘读写是有缓存(指硬件级别)的,当系统写完文件,硬件也通知系统我已完成,系统就没办法也没必要再做什么了(这是内核开发的原话),事实上硬件(磁盘)通知系统我已写完,实际是最后部分数据已在硬件的缓存就通知系统完成,硬件缓存的数据真正写入磁盘是硬件内部的事,为什么这样做,第一、性能问题,如果不是这样目前所有的硬盘性能下降至少10倍以上,这个问题不需要讨论,厂商和linux、微软、苹果在20多年前已讨论过,第二、事实上linux关于硬盘缓存的讨论太多,这是托瓦兹也无法解决的问题,比尔盖茨亲自回去也没用,第三、对于固定硬盘这不是问题,所以在移动硬盘无论windows、mac os还是linux,都提供弹出移动硬盘,你现在可以安全拨出移动硬盘的操作,这个操作如果没有必要的话,就没必要三大系统都有这么一个操作。

Reply View the author
joo
deepin
2021-08-21 23:54
#7

linux你可以在磁盘参数那里关闭掉硬盘的缓存,其实大家可以试试的,同时也感受一下性能是不是更爽了。

Reply View the author
joo
deepin
2021-08-22 00:00
#8

缓存在很多硬件(大部分,70%以上)都有的,比如网卡,呵呵,热拨 插,不等于乱拨 插,跟系统无关。

Reply View the author
qq8645
deepin
2021-08-22 02:11
#9

此现象一直存在。

已经习惯拷贝完成后,用“弹出”菜单功能完美弹出后再拔除usb闪存。

Reply View the author
正直笔尖
deepin
2021-08-22 02:47
#10
qq8645

此现象一直存在。

已经习惯拷贝完成后,用“弹出”菜单功能完美弹出后再拔除usb闪存。

对于大部分人说,由于进度条的不准确,在deepin上不知道什么能够时候完成,用“弹出”毫无意义。

在Windows下习惯了热插拔,大部分人很久没用过“弹出”这个老土的步骤。

 

Reply View the author
joo
deepin
2021-08-22 06:34
#11
正直笔尖

对于大部分人说,由于进度条的不准确,在deepin上不知道什么能够时候完成,用“弹出”毫无意义。

在Windows下习惯了热插拔,大部分人很久没用过“弹出”这个老土的步骤。

 

你还是不明白,微软、linux、苹果都一样,进度条完成不等于硬盘所有的数据已写入永久保存,有几率一部分数据是在缓存,20年前的比你盖茨也问过同样的问题,但就是这样,所以至今windows的U盘是需要点击弹出的,这是微软的标准回答,你可以咨询微软,他一定建议你点击弹出,普通传送文件你不点击弹出没发生问题,是得益近10年的硬件速度更快了,但对于制作启动盘或格式化磁盘这种大动作你不点击弹出就是自己为难自己,因为这两种情况都是需要将整个硬盘的索引重建,特别是制作启动盘,制作启动盘不是用复制文件的方式制作的,是通过复制扇区方式制作的,现代的文件系统有很强大的容错性,发生一些差错可以纠错回来的,但扇区复制是没有任何容错的,你不点击弹出(发送一个低级指令给硬盘)通知清空缓存、复位硬件等,就是跟自己过不去。

Reply View the author
joo
deepin
2021-08-22 06:48
#12

linux下制作启动盘并不需要一些高级工具软件,内置的dd命令就可以将iso制作成U盘启动,dd就是扇区复制的命令(这个命令不是为制作启动盘而来的,但可以制作启动盘),我相信10年前用linux的人一定用dd制作过启动盘,就是今天你在debian 11的安装文档还能找到dd制作启动盘的教程,但就是这个教程告诉你dd命令完成后,不要忘记运行另外一个命令清空缓存和复位硬盘。

Reply View the author
keep_up
deepin
2021-08-23 18:35
#13

Linux挂载磁盘默认带async选项,反馈给应用的写盘状态跟实际状态不一样的。这样能够加快应用响应、减少写盘次数、提升磁盘寿命。感兴趣可以运行

man mount

下面截取说明书的关键部分:

defaults

Use the default options: rwsuiddevexecautonouser, and async.

Note that the real set of all default mount options depends on the kernel and filesystem type. See the beginning of this section for more details.

sync

All I/O to the filesystem should be done synchronously. In the case of media with a limited number of write cycles (e.g. some flash drives), sync may cause life-cycle shortening.

async

All I/O to the filesystem should be done asynchronously. (See also the sync option.)

 

Reply View the author
keep_up
deepin
2021-08-23 18:36
#14

总之拔出磁盘之前,记得安全移除!

Reply View the author