N0r*_*ert 10 flash usb kernel eject udisks
我在多台机器(带有 USB 2.0 和 USB 3.0 的笔记本电脑和台式机)上使用 Ubuntu MATE 16.04.5 LTS 和最新的 4.4 Linux 内核。
对我来说,内核的 USB 驱动程序内部似乎发生了一些变化(或者可能udisks
)。或者 USB 闪存硬件变得更便宜和低质量。
我的 USB 闪存有 LED 指示灯。杂牌礼物(ChipsBank CBM2099E控制器)。
当我将它连接到计算机时 - 它有 LED 指示灯,当数据传输时它会闪烁。
我的主要想法:当我看到闪烁的指示灯时,我认为闪光灯正忙,所以我不应该断开它以防止数据损坏。
许多闪光 - 旧的创见 JFV60、JF110、JF150、JF500、现代的 JF790;Kingston Data Traveler G2 和 ADATA UE700、SanDisk Extreme Pro 就没有这种连续闪烁的问题。它们在选择弹出选项后完全停止闪烁,并显示设备可以安全移除的气泡消息:
当我通过按弹出菜单选项从 Caja 文件管理器或 GNOME 磁盘弹出有问题的 USB 闪存驱动器时,闪光灯 LED 会持续快速闪烁。我试着等了大约一个小时,但经过这段时间后仍然闪烁。即使我没有在驱动器上写任何东西,也会发生这种情况。未显示通知气泡。
我的问题 - 这种闪烁问题的原因可能是什么?只有我吗?断开这种闪烁的闪光灯是否安全(对于数据)?
1. 我不会在这里询问写入缓存和/或sync
驱动器的缓慢下降。它高度依赖于 RAM 大小和闪存的实际写入速度。在没有写入数据的情况下存在上述行为。
2. 所有这些闪光灯在 Windows 上的弹出功能都没有问题。单击Eject / Safely remove后,它们就会关闭 LED 。
3. 选择关闭此磁盘电源() 在 GNOME 磁盘中强制闪存停止闪烁,但我不确定在这种情况下的数据安全性(对于这个特定的闪存;对于其他闪存和 USB HDD 或 SSD,它是安全的,我知道)。
4. 我知道例如 WD MyPassport USB 硬盘驱动器在安全移除后将闪烁频率从快速变为慢速渐隐,但这是另一回事,因为它之前已经降速并停放过,所以之后拔掉它是安全的. 所以我不认为 USB 闪光灯的闪烁表明他们正在轮询并强制用户将其分离......
1.下面是实时输出 tail -f /var/log/syslog
Nov 11 23:37:35 hostname kernel: [32596.101403] scsi 7:0:0:0: Direct-Access General UDisk 5.00 PQ: 0 ANSI: 2
Nov 11 23:37:35 hostname kernel: [32596.102526] sd 7:0:0:0: Attached scsi generic sg2 type 0
Nov 11 23:37:35 hostname kernel: [32596.104745] sd 7:0:0:0: [sdc] 31129600 512-byte logical blocks: (15.9 GB/14.8 GiB)
Nov 11 23:37:35 hostname kernel: [32596.107594] sd 7:0:0:0: [sdc] Write Protect is off
Nov 11 23:37:35 hostname kernel: [32596.107611] sd 7:0:0:0: [sdc] Mode Sense: 0b 00 00 08
Nov 11 23:37:35 hostname kernel: [32596.107792] sd 7:0:0:0: [sdc] No Caching mode page found
Nov 11 23:37:35 hostname kernel: [32596.107805] sd 7:0:0:0: [sdc] Assuming drive cache: write through
Nov 11 23:37:35 hostname kernel: [32596.109561] sdc:
Nov 11 23:37:35 hostname kernel: [32596.110621] sd 7:0:0:0: [sdc] Attached SCSI removable disk
Nov 11 23:37:35 hostname udisksd[2294]: Mounted /dev/sdc at /media/username/FLASHDEVICE on behalf of uid 1000
Nov 11 23:37:52 hostname udisksd[2294]: Cleaning up mount point /media/username/FLASHDEVICE (device 8:32 is not mounted)
Nov 11 23:37:52 hostname udisksd[2294]: Unmounted /dev/sdc on behalf of uid 1000
Run Code Online (Sandbox Code Playgroud)
请注意这里的最后几行,在 23:37:35 设备已从文件管理器中卸载/弹出,在 23:37:52 udisks 将其删除,但其 LED 仍在闪烁。
2. 遵循@WinEunuuchs2Unix 的想法,我尝试了 UDisks(旧版,由于从 12.04 升级而保留在我的系统上)和 UDisks2(现代和实际)以执行安全删除过程 - 两者
#udisks1 (legacy)
udisks --unmount /dev/sdc1 && udisks --detach /dev/sdc
#udisks2 (modern)
udisksctl unmount -b /dev/sdc1 && udisksctl power-off -b /dev/sdc
Run Code Online (Sandbox Code Playgroud)
以相同的 LED 闪烁问题结束,只有我的一个闪光灯。
3. 在我的旧 Ubuntu 12.04.5 LTS 上重复上述方法,此时 LED 在有问题的闪光灯上闪烁。所以这是一个USB闪存硬件问题。
我的基于芯片银行 CBM2099E 的无名闪存与 Linux 和/或 Udisks 之间存在一些软件硬件不兼容。其他闪光灯(在上面的预期行为中列出)没有问题。
在同一台笔记本电脑上运行的 Windows 8.1 中,其安全移除成功且 LED 熄灭。
在NautilusEject
中选择后 LED 闪烁的问题,与 2013 年的这个 Launchpad Bug 报告非常接近:
该错误报告只有 5 个订阅者,并且已作为 2011 年错误报告的重复项被关闭:
后一个错误报告有 155 个订阅者,并且:
仔细浏览第一个错误报告(作为副本关闭的报告),您会看到作者udisks
提到了如何制作补丁。然而,两名应用该补丁的用户表示没有成功。
我认为在错误报告中他们错过了一个用户输出的一些重要方面。这是我的系统的等效输出(有效):
$ gvfs-mount -li
Drive(3): 3SYSTEM USB Flash Disk
Type: GProxyDrive (GProxyVolumeMonitorUDisks2)
ids:
unix-device: '/dev/sdb'
themed icons: [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
symbolic themed icons: [drive-removable-media-usb-symbolic] [drive-removable-media-symbolic] [drive-removable-symbolic] [drive-symbolic] [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
is_media_removable=1
has_media=1
is_media_check_automatic=1
can_poll_for_media=0
can_eject=1
can_start=0
can_stop=0
start_stop_type=shutdown
sort_key=01hotplug/1546789639130384
Volume(0): LIVE_USB
Type: GProxyVolume (GProxyVolumeMonitorUDisks2)
ids:
class: 'device'
unix-device: '/dev/sdb1'
uuid: '641A-A7DB'
label: 'LIVE_USB'
themed icons: [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
symbolic themed icons: [drive-removable-media-usb-symbolic] [drive-removable-media-symbolic] [drive-removable-symbolic] [drive-symbolic] [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
can_mount=1
can_eject=1
should_automount=1
sort_key=gvfs.time_detected_usec.1546789639358749
Mount(0): LIVE_USB -> file:///media/rick/LIVE_USB
Type: GProxyMount (GProxyVolumeMonitorUDisks2)
default_location=file:///media/rick/LIVE_USB
themed icons: [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
symbolic themed icons: [drive-removable-media-usb-symbolic] [drive-removable-media-symbolic] [drive-removable-symbolic] [drive-symbolic] [drive-removable-media-usb] [drive-removable-media] [drive-removable] [drive]
can_unmount=1
can_eject=1
is_shadowed=0
sort_key=gvfs.time_detected_usec.1546789639395990
Run Code Online (Sandbox Code Playgroud)
is_media_removable
设置为1
,但在错误报告器系统上设置为0
。我认为这个问题应该得到解决。can_eject=0
,但我的系统有can_eject=1
检查你自己的gvfs-mount -li
输出到我的。另请考虑订阅上面的错误报告和/或在那里发布。