我目前正在研究使用 mhddfs 聚合可用磁盘空间的 DIY 网络存储。
现在我想要的是,例如给定一个热插拔托架,当我插入一个全新的未分区磁盘时,我希望使用 bash 脚本自动对磁盘进行分区并挂载新的 mhddfs 分区。
如果服务器关闭,插入新磁盘并再次打开服务器,则会出现相同的情况。
所以问题是:如何使用 bash 脚本检测未分区的磁盘?
问题还包括不应有错误检测。例如,如果插入了一个加密磁盘,它不应该被自动重新分区和格式化——这一点是问题的主要兴趣点。
从我目前出现故障的硬盘驱动器中,我知道我正在以大约 300kB/s 的写入速度擦除它,原因是至少有几个坏扇区
我很好奇究竟是什么导致了这种缓慢的写入速度?例如,假设 linux 程序 dd 写入磁盘,假设 4kB 扇区大小将导致一个 4kB 扇区在大约 0.05 毫秒内写入(如果我的计算是正确的 ^^),通常会获得至少 75MB/s。如果我以 300kB/s 的速度写入失败的磁盘,则意味着 4kB 在大约 13 毫秒内完成。
那么考虑到一个编写良好的用户空间应用程序能够以 75MB/s 的速度写入,是什么导致下降到 300kB/s?我不认为 linux 内核有某种“睡眠”或如此高的重试尝试,以至于需要更长的时间才能注意到写入失败?还是磁盘本身会减慢一切?如果是,为什么?我假设物理磁盘立即知道数据是否可以写入?为什么出现故障的磁盘会变慢?