[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