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

Ilias Paraponiaris paraponiaris at yahoo.com
Tue Jun 19 22:09:24 EEST 2007


ΤΕΛΙΚΗ ΛΥΣΗ (από Νίκο Δήμου)
Δουλεύει εξαιρετικά. 
Απλώς για πληρότητα αναφέρω ότι δουλεύει μόνο την πρώτη φορά που γίνεται
plug ο σκληρός (οπότε δημιουργείται το αρχείο
"/sys/class/scsi_disk/0:0:0:0/allow_restart") διότι χωρίς επανεκίννηση
του Η/Υ αν γίνει unplug/plug δημιουργείται το αρχείο
"/sys/class/scsi_disk/2:0:0:0/allow_restart" (2:0:0:0 αντί 0:0:0:0).
Φαντάζομαι ότι αν στο myscript.sh γίνει και δεύτερη καταχώρηση για
2:0:0:0 θα διορθωθεί, αν και μάλλον είναι περιττό.
----------------------------------------------------------------------
ΤΕΛΙΚΗ ΛΥΣΗ
On Wed, 2007-06-13 at 16:34 +0300, ndemou at gmail.com wrote:
> 
> τελικά η Σωστή[ΤΜ] απάντηση είναι udev rules:
> http://reactivated.net/writing_udev_rules.html
> 
> απόσπασμα απο σχετικό άρθρο στο Linux Journal:
> 
> Plug your drive in, and cat /proc/scsi/usb-storage/*.
> You should find an entry for it similar to this:
> 
> Host scsi5: usb-storage
> Vendor: Unknown
> Product: USB Mass Storage Device
> Serial Number: 85a5b1f2c96492
> Protocol: Transparent SCSI
> Transport: Bulk
> Quirks:
> 
> Now, with the serial number or the vendor/model combo, you
> can write the rule. The rule creates a symlink for the device in the /dev
> tree, and then calls the script /usr/local/bin/myscript.sh
στο οποίο έκανα την καταχώρηση <<sudo sh -c "echo 1 > /sys/class/scsi_disk/0:0:0:0/allow_restart">>
> 
> Become root (su -), and create a text file in /etc/udev/rules.d called
> 95.myhd.rules. Type a rule like this (all on one line)
> into the file, and save it:
> BUS="usb", SYSFS{serial}="85a5b1f2c96492", SYMLINK="mydrive",
> RUN+="/usr/local/bin/myscript.sh mydrive "
> 
> Your rule now fires every time you plug the drive!
------------------------------------------------------------------------------------------

On Wed, 2007-06-06 at 21:43 +0300, Ilias Paraponiaris wrote:
> Καλησπέρα
> Το πρόβλημα ισχύει τουλάχιστον για 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