ディスクをディスクベイに接続する必要がある場合があります。また、デスクトップから電源を引き出しながら、ラップトップでSATA-eSATAケーブルを使用してSSDを接続するという非常に奇妙な設定をしている場合もあります。
システムからSATAディスクを安全に取り外すにはどうすればよいですか?この Phoronix フォーラムのスレッドにはいくつかの提案があります:
justsumdoodが書いた:
(名声のある)ドロイドは書きました:
次に、プラグを抜く前にソフトウェア側で何をしますか?単純な「umount/dev/sd」[ドライブ文字]ですか?デバイスをアンマウントした後、ユニットを「電源オフ」(またはスリープ)するには:hdparm -Y /dev/sdX
(Xは電源をオフにするデバイスを表します。例:/ dev/sdb)
これによりドライブの電源が切断され、電圧サージのリスクなしでドライブを取り外すことができます。
これは、ディスクキャッシュが適切にフラッシュされ、その後電源がオフになることを意味しますか?
同じスレッドからの別の提案:
チサンは書きました:
すべてのSATAおよびeSATAハードウェアは、物理的にホットプラグすることができます(つまり、プラグを挿入/プルしても破損しない)。チップセットとドライバーがこれをどのように処理するかは、別の問題です。一部のドライバー/チップセットの組み合わせは、ホットプラグを適切に処理せず、次のようなwarmplugコマンドが必要です。
echo 0 - 0 > /sys/class/scsi_Host/hostX/scan
XをSATA/eSATAポートの適切な番号に置き換えます。
それが正しい方法であるかどうかは疑問ですが、それに対する証拠もいくつか見つかりません。
では、接続されているディスクをシステムから削除する正しい方法は何ですか?私はすでにディスク上のすべてのパーティションをアンマウントしてsync
を実行したと仮定します。可能であれば、公式のドキュメントをポイントしてください。Linuxのドキュメントツリーにも Linux ATA wiki も見つかりませんでした。
umount ...
_)vgchange -an
_)慎重になりたい場合は、最初にecho 1 > /sys/block/(whatever)/device/delete
を実行してください。これにより、デバイスがカーネルから登録解除されるため、プラグを抜いたときにknowは何も使用していません。 eSATAエンクロージャのドライブでそれを行うと、ドライブのヘッドが止まるのが聞こえるので、カーネルがドライブに電源切断の準備をするように指示しているようです。
AHCIコントローラーを使用している場合は、プラグが抜かれたデバイスに対応する必要があります。他の種類のSATAコントローラーを使用している場合、ドライバーがホットプラグによって混乱する可能性があります。
私の経験では、SATAホットプラグ(AHCIを使用)はLinuxでかなりうまく機能します。オプティカルドライブを取り外し、ハードドライブを接続し、エラーをスキャンし、ファイルシステムを作成してデータをコピーし、アンマウントして取り外し、別のDVDドライブを差し込み、ディスクに書き込みました。と実行しています。
eject /dev/sdX
?私のセットアップでは、このコマンドはドライブのマウント解除、同期、電源切断を行います。
これらの2つのセクションは別のものです。
最初はプラグを抜くです。 2番目はpluggingの場合です。
アンプラグの場合、OSはアンマウント操作中にデータを同期します。したがって、ディスクがアンマウントされている場合(実際には完全なハードウェアサポートがあると想定)、ディスクの電源をオフにしてから、データの損失や破損のリスクなしにディスクを取り外すことができます。
差し込むには、デバイスが自動的に認識される必要があります。そうでない場合は、そのコマンドを実行してバススキャンをトリガーできます。デバイスが認識されたら、マウントできます。
そして、私がUSBドライブでこの種のことをしたのは初めてだと言って、これを警告します。
Wyzardによる回答 をベースにしたスクリプトのペアがあります。最初のscsi-drop
は、単一のディスクを安全に切り離すことです。
#!/bin/sh
if test -h "$1"
then
disk=$(chase "$1")
else
disk="$1"
fi
if test -b "$disk"
then
echo 1 >/sys/block/$(basename "$disk")/device/delete
else
echo "$0: not a block device: $1" >&2
exit 1
fi
その主な利点は、/dev/disk/by-id/
にあるようなシンボリックリンクを渡すことができ、それを実際のデバイスに解決することです。 chase
をインストールする必要があります。 readlink -e
を使用しても同じ結果が得られる場合があります。
2番目のスクリプトscsi-rescan
は、新しいデバイスのホットプラグ後に使用されます。
#!/bin/bash
exec tee /sys/class/scsi_Host/host*/scan <<<'- - -' >/dev/null
これにより、すべてのアダプターがデバイスを再スキャンします。これが、新しい容量とパーティションテーブルを読み取るための唯一の方法でした。
実際には、SATAドライブは、電源が失われると自動的にヘッドをパークします。ドライブがまだ回転しているときにドライブを引っ張っても、問題は発生しません。ただし、回転するディスクは、ぶつかるとへこみが発生しやすくなります。フレークパワーまたは太陽フレアがあるときにこれを聞くことができます。
ほとんどの損傷は、通常、フラッシュされていないキャッシュやバッファ内のコミットされていない書き込みなどによって引き起こされます...これが、ドライブを取り外す前にマウントを解除する必要がある理由です。 SCSIコマンドは適切な測定であり、同じ目的で機能します。