有时UAS
Linux 的驱动程序有问题,我需要使用usb-storage
. 过去,我通过在/etc/modprobe.d
指定连接驱动器的 SATA/USB 电缆的怪癖中输入一个条目来做到这一点,但这每次我想切换时都需要重新启动。
我已经尝试从UAS
驱动程序中取消绑定设备并将其重新绑定到,usb-storage
但是重新绑定时我得到了write error: No such device
.
(该unbind
命令确实成功,我使用完全相同的总线 ID 进行绑定)。
有时UAS
Linux 的驱动程序有问题,我需要使用usb-storage
. 过去,我通过在/etc/modprobe.d
指定连接驱动器的 SATA/USB 电缆的怪癖中输入一个条目来做到这一点,但这每次我想切换时都需要重新启动。
我已经尝试从UAS
驱动程序中取消绑定设备并将其重新绑定到,usb-storage
但是重新绑定时我得到了write error: No such device
.
(该unbind
命令确实成功,我使用完全相同的总线 ID 进行绑定)。
有时您需要卸载文件系统或分离循环设备,但这是busy
因为打开的文件描述符,可能是因为smb
服务器进程。
要强制卸载,您可以终止有问题的进程(或 try kill -SIGTERM
),但这会关闭smb
连接(即使它打开的某些文件不需要关闭)。
这里使用gdb
to call描述了一种强制进程关闭给定文件描述符的 hacky 方法close(fd)
。然而,这似乎很危险。如果关闭的描述符被回收了怎么办?该进程可能使用旧的存储描述符,但没有意识到它现在指的是完全不同的文件。
我有一个想法,但不知道它有什么样的缺陷:使用gdb
,打开/dev/null
方式O_WRONLY
(编辑:建议O_PATH
作为更好的选择的评论),然后dup2
关闭有问题的文件描述符并将其描述符重用于/dev/null
. 这样,对文件描述符的任何读取或写入都将失败。
像这样:
sudo gdb -p 234532
(gdb) set $dummy_fd = open("/dev/null", 0x200000) // O_PATH
(gdb) p dup2($dummy_fd, offending_fd)
(gdb) p close($dummy_fd)
(gdb) detach
(gdb) quit
会出什么问题?
这可能是一个边缘情况,但这里有......
我正在从 2TB 硬盘恢复数据。仅当我使用它时才可挂载mount -r
,并且我正在使用rsync --files-from
它来复制重要目录。
每隔一段时间它就会失败,需要重新启动(电源循环)。我希望有一种方法可以缓存整个目录树,并使用跨越多个挂载的缓存:换句话说,当我需要重新挂载磁盘时,我会提供用于文件查找的缓存,而不是做更多的寻找磁盘。
假设由于备份空间不足,磁盘无法完整映像(使用dd
或)。ddrescue