USB HD gives I/O errors while spinning up (ήταν Re: usb hard disk / ext3 partition - permissions change...)

Ilias Paraponiaris paraponiaris at yahoo.com
Wed Jun 6 21:43:41 EEST 2007


Καλησπέρα
Το πρόβλημα ισχύει τουλάχιστον για debian-testing (2.6.18) και
ubuntu-feisty(2.6.20) και πιθανότατα έχει να κάνει με το kernel. Με τη
βοήθεια της λίστας (Νίκος Δήμου) και αρκετό ψάξιμο στο google κατέληξα
στα εξής, αλλά δεν έχω λύσει πλήρως το πρόβλημα:

ΠΕΡΙΓΡΑΦΗ ΠΡΟΒΛΗΜΑΤΟΣ
Ο εξωτερικός usb σκληρός δίσκος Seagate "FreeAgent" 250GB κάνει auto
spin down κάθε φορά που μένει ανενεργός για 15 λεπτά, το οποίο δεν είναι
παραμετροποιήσιμο. Όταν επιχειρηθεί πρόσβαση στον δίσκο αφότου έχει
κάνει spin down, τότε δίνει I/O errors διότι το ext3 filesystem κάνει
timeout προτού ο δίσκος κάνει spin up (προφανώς ο κατασκευαστής δεν
τήρησε κάποια πρότυπα με συνέπεια ο δίσκος να αργεί πολύ να κάνει spin
up). Ως αποτέλεσμα το filesystem γίνεται mount ως read-only. 
Για πληρέστερη πληροφόρηση αναφέρω ότι η εντολή dmesg δίνει:
iplaptop:~# dmesg
...
(όταν επιχειρώ πρόσβαση και ο σκληρός έχει κάνει spin down)
> sd 0:0:0:0: Device not ready: <6>: Current: sense key: Not Ready
>     Additional sense: Logical unit not ready, initializing command
> required
> end_request: I/O error, dev sda, sector 6291527
> Buffer I/O error on device sda1, logical block 6291464
> [...πολές φορές...]
> Buffer I/O error on device sda1, logical block 6291471
> sd 0:0:0:0: Device not ready: <6>: Current: sense key: Not Ready
>     Additional sense: Logical unit not ready, initializing command
> required
> end_request: I/O error, dev sda, sector 420031737
> EXT3-fs error (device sda2): ext3_find_entry: reading directory #2
> offset 0
> Aborting journal on device sda2.
> sd 0:0:0:0: Device not ready: <6>: Current: sense key: Not Ready
>     Additional sense: Logical unit not ready, initializing command
> required
> end_request: I/O error, dev sda, sector 420031785
> Buffer I/O error on device sda2, logical block 1545
> lost page write due to I/O error on sda2
> ext3_abort called.
> EXT3-fs error (device sda2): ext3_journal_start_sb: Detected aborted
> journal
> Remounting filesystem read-only
Σημειώνω ότι το πρόβλημα αφορά μόνο το ext3 partition (/dev/sda2) και
όχι το ntfs partition (/dev/sda1) του ίδιου δίσκου, το οποίο
χρησιμοποιώντας το ntfs-3g λειτουργεί κανονικά (read-write) και δεν
εμφανίζει πρόβλημα με την καθυστέρηση στο spin up.
Προσθέτω ότι στο
http://www.mail-archive.com/debian-kernel@lists.debian.org/msg26808.html
βρήκα
το "Re: Bug#419175: linux-image-2.6.18-4-686: USB HD gives I/O errors
while spinning up", δεν βρήκα όμως λύση.

ΠΡΟΧΕΙΡΗ ΛΥΣΗ 1
Στο
http://www.nslu2-linux.org/wiki/FAQ/DealWithAutoSpinDownOnSeagateFreeAgent προτείνεται ως λύση η εντολή "echo 1 >/sys/class/scsi_disk/0:0:0:0/allow_restart" η οποία αλλάζει την default τιμή στο αρχείο "/sys/class/scsi_disk/0:0:0:0/allow_restart" από "0" σε "1". Πράγματι με δίνοντας στο allow_restart τιμή "1" το πρόβλημα διορθώνεται. 
Το συγκεκριμμένο αρχείο όμως δημιουργείται κάθε φορά που συνδέεται ο
εξωτερικός σκληρός στον Η/Υ ενώ εξαφανίζεται όταν αποσυνδέεται, με
συνέπεια σε κάθε επανεκίννηση του Η/Υ το αρχείο allow_restart να έχει
τιμή "0" και να χρειάζεται να ξαναδίνω την εντολή "echo 1
>/sys/class/scsi_disk/0:0:0:0/allow_restart".
===> Το ερώτημα είναι αν υπάρχει τρόπος κάθε φορά που γίνεται mount το
ext3 (/dev/sda2) να δημιουργείται το allow_restart με τιμή "1" αντί της
default "0"? ή τουλάχιστον πως μπορώ να φτιάξω μια αυτόματη σχετική
εντολή?

ΠΡΟΧΕΙΡΗ ΛΥΣΗ 2
Ακολούθησα τις οδηγίες που βρήκα εδώ
http://mailgate.dada.net/linux/linux.debian.kernel/msg25606.html αλλά
όπως λέει "This, however, is really just a quick-fix. It would be nice
to be able 
to use automatic spindown/spinup" 
===> Το ερώτημα είναι αν είναι επικίνδυνο για τον σκληρό δίσκο να είναι
συνέχεια σε ενεργή κατάσταση. Αν υπάρχει κίνδυνος, προτιμώ να δίνω κάθε
φορά την εντολή echo 1 ... που αναφέρω παραπάνω παρά να χαλάσω τον
δίσκο. ΠΑΡΑΚΑΛΩ ΓΙΑ ΤΗΝ ΣΥΜΒΟΥΛΗ ΣΑΣ δεδομένου ότι τώρα ακολουθώ την
πρόχειρη λύση 2.
Παραθέτω την πρόχειρη λύση:
This seems to be the way to disable spindown: 
--------------------------------------------------------------------------------
$ sudo sdparm -al /dev/sda 
    /dev/sda: Seagate   FreeAgentDesktop  100D
    Direct access device specific parameters: WP=0  DPOFUA=0
Power condition mode page:
  IDLE        0  [cha: n, def:  0, sav:  0]  Idle timer active
  STANDBY     1  [cha: y, def:  1, sav:  1]  Standby timer active
  ICT         0  [cha: n, def:  0, sav:  0]  Idle condition timer (100 ms)
  SCT       9000  [cha: y, def:9000, sav:9000]  Standby condition timer (100 ms)
$ sudo sdparm --clear STANDBY -6 /dev/sda 
    /dev/sda: Seagate   FreeAgentDesktop  100D
$ sudo sdparm -al /dev/sda 
    /dev/sda: Seagate   FreeAgentDesktop  100D
    Direct access device specific parameters: WP=0  DPOFUA=0
Power condition mode page:
  IDLE        0  [cha: n, def:  0, sav:  0]  Idle timer active
  STANDBY     0  [cha: n, def:  1, sav:  0]  Standby timer active
  ICT         0  [cha: n, def:  0, sav:  0]  Idle condition timer (100 ms)
  SCT         0  [cha: n, def:9000, sav:  0]  Standby condition timer (100 ms)
--------------------------------------------------------------------------------

ΤΕΛΙΚΗ ΛΥΣΗ
... την αναζητώ. Κάθε βοήθεια δεκτή.

Ευχαριστώ Πολύ
Ηλίας




More information about the Linux-greek-users mailing list