Mam laptopa Samsung (Chronos S7) z jednego dysku twardego SATA na autobus ata:1
, który jest wykrywany jako /dev/sda
, na 8G na SSD ata:2
, /dev/sdb
i różnych innych urządzeń w pozostałej części interfejsu SATA.
Problem polega na tym, że jest dysk SSD
- wlutowany do płyty głównej (niewymienny)
- odpadł (po prostu podaje błędy we / wy dla dowolnej operacji)
- nie pojawia się w biosie (prawdopodobnie dlatego, że jest zepsuty)
Teraz ten dysk:
- opóźnia rozruch o trzy do pięciu minut, próbując sondować uszkodzony dysk, co jest denerwujące;
- ale najbardziej denerwujące jest to, że system nie zawiesza się z powodu
/dev/sdb
awarii.
Zauważ, że mogę żyć z opóźnieniem przy starcie --- martwi mnie to wznawianie / zawieszanie.
Pytanie więc brzmi: czy mogę powiedzieć kernelowi, aby unikał nawet sondowania urządzenia na ata: 2?
W starszym jądrze (<3.0), kiedy nadal byłem w stanie trochę zagłębić się w źródło, istniał parametr wiersza polecenia stylu hdb=ignore
, który zrobiłby tę sztuczkę.
Wypróbowałem wszystkie sztuczki zaproponowane poniżej z parametrami jądra udev
i libata:force
bezskutecznie. W szczególności następujące funkcje nie działają:
Dodanie do jednego z poniższych
/etc/udev/rules.d/
plików (we wczesnym wykonaniu, jak00-ignoredisk.rules
lub późno, jak99-ignoredisk.rules
w obu miejscach)SUBSYSTEMS=="scsi", DRIVERS=="sd", ATTRS{rev}=="SSD ", ATTRS{model}=="SanDisk iSSD P4 ", ENV{UDISKS_IGNORE}="1"
ani
KERNEL=="sdb", ENV{UDISKS_IGNORE}="1"
ani wiele rozwiązań pośrednich --- powoduje to, że dysk nie jest dostępny po rozruchu, ale jest sprawdzany podczas rozruchu i nadal sprawdzany podczas zawieszania --- powodując awarię zawieszenia.
Edycja plików systemowych
/lib/udev/rules.d/60-persistent-storage.rules
(iudisks
,udisks2
) zmianaKERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md", GOTO="persistent_storage_end"
do
KERNEL=="ram*|loop*|fd*|nbd*|gnbd*|dm-|md|sdb*", GOTO="persistent_storage_end"
znowu ma to pewien efekt, maskując dysk z przestrzeni użytkownika, ale dysk jest nadal widoczny dla jądra.
Uruchamianie ze wszystkimi możliwymi kombinacjami (cóż, wiele z nich)
libata:force
parametrów (znalezionych na przykład tutaj ) w celu wyłączenia DMA, niższej prędkości lub cokolwiek innego o uszkodzonym dysku --- nie działa. Ten parametr jest używany, ale dysk jest nadal sondowany i nie działa.Pełna
udevadm info -a -n /dev/sdb
wklejona na http://paste.ubuntu.com/6186145/smartctl -i /dev/sdb -T permissive
daje: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
co jest wyraźnie błędne. Niemniej jednak:
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
(Dane SSD z http://ubuntuforums.org/showthread.php?t=1935699&p=11739579#post11739579 ).
/etc/fstab
? Ponieważ opóźnienie przy rozruchu może być spowodowane wcześniej przez jądro lub udev, co wydaje się, że tak jest, ale także później przez fsck podczas czytaniafstab
.