バスにはSATA HDDを搭載したSamsung Notebook(Chronos s7)があり、これはSATAインターフェースの他のさまざまなデバイスで8G SSData:1
として検出されます。/dev/sda
ata:2
/dev/sdb
問題はSSDディスクです。
- マザーボードにはんだ付け(取り外し可能)
- 失敗(すべてのジョブに対してI / Oエラーのみが発生)
- BIOSには表示されません(おそらく破損している可能性があります)。
これで、このディスクは次のようになります。
- 失敗したディスクのスキャン中に起動が3〜5分遅れます。これは迷惑なことです。
- しかし、最も迷惑なのは、システムが
/dev/sdb
中断されないことです。
私は起動時に遅延を取ることができます。私が心配するのは再開/一時停止です。
質問は次のとおりです。ata:2でデバイスを検索しないようにカーネルに指示できますか?
以前のカーネル(<3.0)には、まだソースコードを調べることができたときにhdb=ignore
これを実行できるコマンドライン引数スタイルがありました。
以下に提案されているすべてのトリックudev
とカーネルパラメータを試しましたが、libata:force
成功しませんでした。特に、以下は機能しません。
/etc/udev/rules.d/
次のファイルのいずれかに追加します(初期実行00-ignoredisk.rules
、後半実行、99-ignoredisk.rules
または両方の場所)。SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
...でもない
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
中間ソリューションもあまりありません。つまり、起動後にディスクにアクセスすることはできませんが、起動時にスキャンし、一時停止中にスキャンを実行して一時停止に失敗します。
システムファイル
/lib/udev/rules.d/60-persistent-storage.rules
(およびudisks
、udisks2
)の変更を編集するKERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
到着
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
繰り返しますが、これはユーザー空間からディスクを保護する効果がありますが、ディスクはカーネルに表示され続けます。
可能なすべてのパラメータの組み合わせから始めてください(まあ、たくさん)
libata:force
(例:findここ)DMAを無効にしたり、遅くしたり、障害が発生したディスクに関するすべての操作を実行することは機能しません。このパラメーターが使用されましたが、ディスクがまだ検出されてエラーが発生しました。完全な貼り
udevadm info -a -n /dev/sdb
付けhttp://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
以下を提供します。root@samsung-romano:/home/romano# smartctl -i /dev/sdb -T permissive smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.8.0-31-generic] (local build) Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net Vendor: /1:0:0:0 Product: User Capacity: 600,332,565,813,390,450 bytes [600 PB] Logical block size: 774843950 bytes >> Terminate command early due to bad response to IEC mode page
これは明らかに間違っています。それにもかかわらず:
root@samsung-romano:/home/romano# fdisk -b 512 -C 970 -H 256 -S 63 /dev/sdb fdisk: unable to read /dev/sdb: Input/output error
(SSDデータhttp://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579)。
答え1
libata
noprobe オプションはまったくありません。これは従来のIDEオプションです。
しかし、私は行ってカーネルを書いた修理するあなたのためにそれを実現しなさい。多くのカーネルで非常に簡単に動作します(上記の行は2013-05-21/v3.10-rc1 *に追加されましたが、行なしで手動で安全に適用できます)。
修正するパッチは今上流(少なくとも3.12.7安定カーネルでは)。 Ubuntu 14.04(3.13-stableベース)で配布される標準カーネルにあります。
パッチのインストール後に追加
libata.force=2.00:disable
カーネルブートパラメータに追加すると、Linuxカーネルからディスクが非表示になります。番号が正しいことをもう一度確認してください。デバイス名を検索すると役立ちます(明らかにカーネルメッセージを確認する必要があります)。今後起動パラメータの追加):
(0)samsung-romano:~% dmesg | grep iSSD
[ 1.493279] ata2.00: ATA-8: SanDisk iSSD P4 8GB, SSD 9.14, max UDMA/133
[ 1.494236] scsi 1:0:0:0: Direct-Access ATA SanDisk iSSD P4 SSD PQ: 0 ANSI: 5
重要な数字はata2.00
上記の最初の行の数字です。
答え2
ハードウェアの問題には物理ハードウェアソリューションがあります。ドライブのはんだを取り除いたり、電源を切ったりすることを検討しましたか?
編集:まあ、これは人々が以前にハードドライブをホットプラグするために使用したオプションではなかったと思います。これを使用してドライブを無効にできます。
echo 1 > /sys/block/sdb/device/delete
他のプロセスでは、SATAバスを強制的に検索してから戻すことができます。ノートブックを休止状態にする前に、これを試してください。
OP編集:効率的な。次のファイルを追加しました。
-rwxr-xr-x 1 root root 204 Dec 6 16:03 99_delete_sdb
コンテンツ:
#!/bin/sh
# Tell grub that resume was successful
case "$1" in
suspend|hibernate)
if [ -d /sys/block/sdb ]; then
echo Deleting device sdb
echo 1 > /sys/block/sdb/device/delete
fi
;;
esac
...これでシステムが正しく一時停止(および再開)されます。
答え3
バイオス
BIOSでデバイスがどのように表示されないのですか?
通常、ハードドライブは「自動」モードで構成されており、1つのハードドライブのみを明示的に有効にし、残りはすべて無効にしても、そのデバイスが無効になっていることを確認します。
カーネルブートオプション
通常、Linuxカーネルにスイッチに渡すことができるさまざまな起動オプションを使用して、Linuxカーネルの自動検出で起動するさまざまなサブシステムを無効にできます。
すべてではありませんが、ほとんどのオプションがここにリストされています。
Linuxの簡潔な本
O'Reillyの本を閲覧したいかもしれません。Linuxカーネルの簡単な紹介具体的には、第7章:カーネルのカスタマイズ。
この本は作家Greg Kroah-Hartmanの個人的なウェブサイトで無料で利用可能です。本全体をダウンロードすることもできます。
答え4
Linuxがロックを確認する方法:(sudo hdparm -I /dev/sdX
X = a..zを使用してください。もちろん、ドライブがどのデバイスであるかを知る必要があります)。 (大きい)出力が終わったら、最後の10行を読むことができるはずです*not* locked
。