我有一台运行 Ubuntu 16.04 的用于映像磁盘的计算机。将每个磁盘插入 USB 3.0 坞站,进行映像/擦除,然后断开连接。磁盘没有任何需要卸载的已安装文件系统。它们按预期从侏儒磁盘中消失。最终,使用 gparted 和/或 gnome-disks,我不再能够看到添加的任何新磁盘。有时,新磁盘出现在旧的 /dev/sdx 设备下,我可以访问它们,但它们显示旧设备的分区表和大小。我认为这是因为 /dev/sdx 已满并且内核保留了指向不再存在的磁盘的指针?
编辑:我应该补充一点,其中一些磁盘存在坏扇区或其他问题,因此这也可能是问题的一部分。当添加/删除更多故障驱动器时,这种“块设备耗尽”发生得更快。一旦发生这种情况,即使是好的驱动器在添加到系统时也不会出现。但我注意到,即使我添加/删除的所有驱动器都健康且正常运行,也会发生这种情况。
我可以做什么来防止这种行为或告诉内核“忘记”断开连接的磁盘?
答案1
在断开连接之前,/dev/sdX
请先执行 ablockdev -flushbufs /dev/sdX
以确保所有数据都完全写入磁盘,而不是在缓冲区中等待,只是为了确定。
然后做一个echo 1 > /sys/block/sdX/device/delete
.这将告诉内核它将/dev/sdX
消失并且应该被忘记。根据所涉及的磁盘/坞站,这甚至可能会自动降低磁盘转速。