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