首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在磁盘突然断开后,使用什么实用程序来清理?

在磁盘突然断开后,使用什么实用程序来清理?
EN

Ask Ubuntu用户
提问于 2011-01-19 16:51:49
回答 1查看 765关注 0票数 2

如果外部硬盘被物理断开,并且使用设备映射器安装设备,则不进行清理。

特别是

  • 安装驱动器的目录为空。
  • 安装仍然存在于挂载(8)中。
  • 设备映射器设备仍然存在。
  • 物理设备仍然以/dev/sd*的形式存在

在这个场景中,不需要清理上面的项目,前三个步骤需要手动清理(通过umount、dmsetup remove和udevadm触发器-子系统匹配=块)。即使如此,磁盘的sysfs目录仍然存在于/sys/bus/scsi/drivers/sd中,您需要手动回显1> delete,以确保SCSI设备未注册。没有它,回复磁盘就不起作用。

因此,我的问题是-是否有一个程序能够检测到设备映射的物理磁盘何时不再响应并执行必要的清理?

EN

回答 1

Ask Ubuntu用户

发布于 2011-01-19 18:41:49

我不知道有一个程序为你做,然而,我有一个设备在一个阶段,将周期性地结束在这种状态下,突然断开自己。在手动完成上面描述的步骤之后,它会很好地重新连接,我的解决方案依赖于注意,当它发生时,挂载点显示为空,尽管系统仍然相信已经安装了一些东西。

我的解决方案是,将一个简单的空文件放到驱动器上,然后由shell脚本检查驱动器的存在并自动清理。我已经没有驱动器或完整的shell脚本了,但是我可以给出一个基本的例子,如何创建您自己的程序,并且您可以添加您必须运行的命令,以便在您这样做时手动清理。

注意,在本例中,我将使用/mnt/externalhd作为挂载点,并假定我们要查找的文件在其根文件系统中名为.isonline。您可以检查驱动器上是否存在一个现有文件,也可以假设它在运行期间不会更改。请注意,if语句还会检查/dev条目,因此在等待设备重新连接时,我们不会创建清理循环,但是,如果设备的连接顺序可能会改变我幸运从未遇到的问题,查找和使用磁盘更正/dev/disk/by/*条目将更加准确和必要。

代码语言:javascript
运行
复制
if [ ! -e /mnt/externalhd/.isonline ] && [ -e /dev/sdb ]; then {
   # This line optionally logs the disconnect to a file for your records.
   echo "`date '+%d %b %Y %H:%M:%S'` OFFLINE: /dev/sdb disconnected, cleaning up" >> /var/log/externalhd.log

   # Do whatever you need to do to clean up the bad unmount and enable reconnection

   # Optionally log the completion of the cleanup process
   echo "`date '+%d %b %Y %H:%M:%S'` CLEANUP: /dev/sdb cleanup process completed" >> /var/log/externalhd.log
}
fi

我希望这有帮助,我有点模糊的命令,我不得不运行,以完成全部清理,似乎我删除了旧的脚本时,驱动器本身终于死了。一旦您设置了脚本,您需要运行的命令清理您的驱动器,他们将是相同的,您使用的时候,手动执行,尽管您应该从它们删除sudo部件。

然后,可以通过cron运行脚本,定期检查是否有错误卸载,并在检测到错误时自动清除。假设脚本保存在/home/user/cleanumount中,那么以下步骤可以为它添加一个cron作业,该示例将每5分钟运行一次检查。

首先运行以下命令:sudo crontab -u root -e

您可能会被要求从列表中选择一个文本编辑器,方法是从菜单中按一个数字,如果是这样的话,只需按相应的数字就可以选择您喜欢的编辑器。

然后将以下两行添加到您的crontab (顶部行是一个可选的但建议的注释,这样您就知道它做了什么)。

代码语言:javascript
运行
复制
# Run /home/user/cleanumount every 5 minutes to cleanly unmount /dev/sdb after sudden disconnects
*/5 * * * *    /home/user/cleanumount

然后保存文件并退出文本编辑器,新的crontab将自动安装并加载到cron守护进程中。

如果5分钟不够频繁,您可以调整行的第一部分,将其更改为一个简单的*以每分钟运行一次,或者例如,每2分钟*/3次,每3分钟一次,以此类推。有关crontab的更多详细信息可以通过运行man 5 crontab找到。

希望你能找到有用的东西,除非其他聪明的人能拿出一个精巧的工具,让我为你写的这些信息变得多余--如果是如此奇妙的话:)

票数 1
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/22300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档