停止/切换 eSATA 热插拔磁盘

停止/切换 eSATA 热插拔磁盘

我想知道安全启动/停止/切换 eSATA 磁盘的最佳做法是什么。

首先:我读过这篇文章:安全移除 eSATA 磁盘但给出并接受的答案对我不起作用。起初我想寻求澄清,但我读到这是应该避免的,所以我唯一的选择是提出另一个问题。

我正在运行 kUbuntu 13.04。我的 bios 支持 AHCI,并且我专门为连接到我的 eSATA 托架的 SATA 端口启用了热插拔。我的 eSATA 底座有一个电源按钮。

启动似乎很容易。如果我将磁盘插入托架,然后打开电源,该磁盘将自动安装为“fuseblk”磁盘(至少对于我测试的磁盘,看起来这是 NTFS 磁盘的报告方式)

但是,我想知道如何在不停止计算机的情况下停止磁盘,可能安装另一个磁盘,同时避免数据丢失和物理磁盘损坏,最好以(半)自动化的方式,这样我就不必每次都打开命令行。

我目前发现的情况:

  • sdparm 似乎没有任何用处,即使它应该是正确的工具(磁盘是 /dev/sda),但却sdparm -C stop什么也不做
  • 另一方面,hdparm 确实会使磁盘进入休眠状态,sudo hdparm -Y /dev/sda从而使磁盘停止旋转。但是,磁盘仍处于挂载状态,如 mount -l 所报告的那样
  • sudo echo 1 > /sys/block/sda/device/delete会给我一个权限被拒绝的错误(即使我使用了 sudo)
  • 如果我右键单击 Dolphin 中的磁盘,会出现一个“弹出”图标,它将卸载磁盘,但磁盘不会停止旋转(而且我当然不想物理移除旋转的磁盘)

因此,目前,我使用“弹出”按钮卸载磁盘,然后让磁盘进入睡眠状态。但是,我对硬盘管理了解不够,无法确定“睡眠”是否足够。没有真正的“停止”或“关机”命令吗?当操作系统要关闭时,它是否只是让驱动器进入睡眠状态,这是否足以进行安全处理。

此外,按照上述步骤操作然后切换到另一个磁盘时,磁盘有时会显示为 /dev/sde 而不是 /dev/sda,这让我相信有些资源没有正确释放。也许这正是该sudo echo 1 > /sys/block/sda/device/delete命令的意义所在,但由于我无法运行它,即使使用 sudo,它也没什么用。

还有其他我应该注意的命令并添加到序列中吗?

至于如何实现自动化,我想我可以编写一个 shell 脚本,但如果我有一个多分区磁盘怎么办。使用 umount /dev/sda1 不会卸载其他分区,而且我认为不可能仅使用 /dev/sda 来卸载,对吗?它可以与 /dev/sda* 一起使用吗?目前我手头上唯一的多分区磁盘是我的系统磁盘,所以我无法尝试卸载它并查看会发生什么。

答案1

如果您遇到包含正在安装的卷的旋转磁盘的情况,则必须按照正确的顺序组合所有元素。

  1. 卸载此磁盘上的所有卷,例如:

    sudo umount /path/to/mount/point
    

    使用 验证它是否已卸载grep sda /proc/mounts。对物理磁盘上的其他卷重复此操作。

  2. 停止驱动器,例如:

    sudo hdparm -Y /dev/sda
    
  3. 告诉 SATA 控制器您想要拔掉它:

    sudo sh -c "echo 1 > /sys/block/sda/device/delete"
    

相关内容