弹出/安全删除 vs 卸载

LGe*_*lis 53 command-line power-management unmounting eject disk

我使用的是 Ubuntu 12.04,当我右键单击我的闪存驱动器图标(在 Unity 左侧栏中)时,我得到两个让我感到困惑的选项:弹出和安全删除.
我越接近答案是这个论坛帖子,它得出的结论是(对于闪存驱动器)它们既相同又等效于使用umount命令。然而,这最后的断言似乎是错误的。
如果我使用umount从控制台卸载我的闪现潜水,然后我使用命令lsblk,我仍然可以看到我的设备(当然,MOUNTPOINT 下没有任何内容)。另一方面,如果我弹出或安全移除我的闪存驱动器,lsblk则不再列出它。

所以,我的问题是,真正重现弹出和安全删除行为的控制台命令/命令是什么?

jim*_*mij 81

如果您正在使用,systemd则使用udisksctl带有power-off选项的实用程序:

关机

安排驱动器安全移除和断电。在操作系统方面,这包括确保没有进程正在使用驱动器,然后请求将动态缓冲区和缓存提交到稳定存储。

我建议首先卸载该 USB 上的所有文件系统。这也可以用 来完成udisksctl,所以步骤是:

udisksctl unmount -b /dev/sda1
udisksctl power-off -b /dev/sda
Run Code Online (Sandbox Code Playgroud)

如果您不使用,systemd那么旧货udisks应该可以工作:

udisks --unmount /dev/sda1
udisks --detach /dev/sda
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,`udisksctl power-off` 似乎不等同于“安全删除”。在我的内部读卡器中使用 micro-SD 卡,设备 `/dev/sdd`,没有安装文件系统,当我使用命令 `udisksctl power-off -b /dev/sdd` 时,读卡器的 LED 关闭,但随后整个设备变得无法操作,我猜是因为它实际上完全断电了。我必须重新启动系统才能使其再次可用。 (4认同)

mik*_*erv 17

umount对磁盘来说是完全安全的。完成后,您已成功卸载文件系统,您无需担心这些问题。弹出和umount根本不关心磁盘之间的主要区别- 而是关于 USB 端口的 5v 电源输出。

之后umount您仍然可以看到您的磁盘列在其中,lsblk因为它仍然处于开机和连接状态。umount内部硬盘的文件系统,出于相同的原因,您将看到相同的行为。但是当你弹出一个 USB 设备时,你会关闭它,它会停止绘制通常会用到的 5v 电压——我认为它会下降到 0.5v,但这种情况很久以前就发生了。

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
NAME   FSTYPE LABEL   UUID                                 MOUNTPOINT
sdd                                                        
??sdd1 vfat   USBESP  3AD6-C7CC                            
??sdd2 ext4   USBROOT 5afbfe93-6955-44ec-8c4f-cf381f8ef174 
Run Code Online (Sandbox Code Playgroud)

这是它的USB总线路径...

cat /sys/bus/usb/devices/5-3/manufacturer 
SanDisk
Run Code Online (Sandbox Code Playgroud)

尽管我几乎从不安装它,但它已经插入并闪烁了很长时间,我想......

cat /sys/bus/usb/devices/5-3/power/{level,connected_duration}
on
1777877440
Run Code Online (Sandbox Code Playgroud)

我应该为此做些什么:

echo 1 | sudo tee /sys/bus/usb/devices/5-3/remove                                      
Run Code Online (Sandbox Code Playgroud)

现在我再看一遍……

cat /sys/bus/usb/devices/5-3/power/level                            
cat: /sys/bus/usb/devices/5-3/power/level: No such file or directory
Run Code Online (Sandbox Code Playgroud)

嗯...

lsblk -f /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0
lsblk: /dev/disk/by-id/usb-SanDisk_Cruzer_200522428118F4325EC2-0:0: not a block device
Run Code Online (Sandbox Code Playgroud)

  • 我不认为“umount”相当于“安全删除”,“udisksctl power-off”也不是,请参阅我对其他答案的评论。例如,与 Windows 中的行为进行比较。我的猜测是 Windows 所做的不仅仅是“卸载”设备上的文件系统。我观察到它会降低外部硬盘驱动器的速度,关闭读卡器上的 LED(*没有*随后使设备无法使用,除非重新插入或重新启动系统)等。 (2认同)
  • @ack - Windows 与此有什么关系?你猜为什么?并且您不必重新启动它即可再次使用。你`卸载`它。然后你把它关掉。我从来没有以一种或另一种方式提出过关于`udiskctl`的任何建议。 (2认同)
  • @mikeserv“安全删除硬件”是 Windows 中使用的表达方式。由于用户熟悉,其他系统很可能复制了该短语。将其与单纯的文件系统卸载区分开来非常重要。这一点非常重要的一个例子是当操作系统不确定存储设备的写入缓存时。我个人经历过在仅仅卸载和拔出外部硬盘后就发生相当严重的数据丢失(损坏的超级块和文件)。后来我发现Linux对此发出了警告:“找不到缓存模式页面”,“假设驱动器缓存:直写”。 (2认同)