Προς το περιεχόμενο

βοήθεια: αργός σκληρός δίσκος σε Ububtu


g1annis

Προτεινόμενες αναρτήσεις

Πως σας φαίνεται το παρακάτω:

 

Αντιγραφή 60ΜΒ αρχείου από σκληρό σε σκληρό σε 5 λεπτά

 

pentium 4 στα 1,66gh

256MB RAM (rim)

Ubuntu 6.06 με Gnome

 

Εκείνη την ώρα έτρεχαν:

amaroK

kTorrent

firefox

gaim

 

Η αντιγραφή έγινε από σκληρό (hda) 20GB ext3 με 42% ελεύθερο χώρο στον οποίο βρίσκεται το λειτουργικό και στον οποίο αποθηκεύεται το ένα 1 τορρεντ που κατεβάζω. Η αντιγραφή έγινε προς σκληρό (hbb) 120GB ext3 με 11% ελεύθερο χώρο από τον οποίο seed-άρω 1 τορρεντ. Ο φάκελος που αντέγραφα περιείχε 901 αρχεία.

 

Το παραπάνω είναι υπερβολή, 5 λεπτά για 60ΜΒ. Γενικά είναι πολύ πιο γρήγορη η μεταφορά, αλλά και πάλι αργή. Πολύ αργή σε σχέση με τα win.

 

1) Εϊναι φυσιολογικό????? Γιατί μπορεί να γίνεται αυτό?

2) Μπορεί να πρέπει να ρυθμίσω το πρωτόκολλο σε dma όπως έκανα με τα cdrom, dvdrom? Αν ναι πως θα το κάνω αυτό? Είναι κι αυτό στο /etc/ddparm?

3) Υπάρχει τρόπος να δω την ταχύτητα περιστροφής του δίσκου μου?

4) Υπάρχει τρόπος να δω την υγεία του δίσκου μου?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αστειάκι:

 

Πολύ μεγάλο σκληρό έχεις. Κοτζάμ αγρό. Τον δηλώνεις ως ακίνητο στην εφορία;

 

Τώρα στο πρόβλημα...

 

Τι filesystem έχουν οι δύο σκληροί;

 

1.Πολλοί λόγοι.

2.Ναί με hdparm αν και πρέπει να είναι ήδη ενεργοποιημένο το dma.

3.Αν εννοείς κατα τη διάρκεια της λειτουργίας του δε γνωρίζω αλλά αμφιβάλλω.

4.Ναί με hddtemp για θερμοκρασίες και δεν μπορώ να θυμηθώ ποιό πρόγραμα διαβάζει S.M.A.R.T. πληροφορίες. Ψάξε λίγο θα το βρείς. Βέβεαι μόνο αν ο σκληρός σου υποστηρίζει SMART τεχνολογία.

 

Ελπίζω να βοήθησα λιγάκι

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

2) Αυτό είναι το ddparm μου:

## This is the default configuration for hdparm for Debian. It is a

## rather simple script, so please follow the following guidelines :)

## Any line that begins with a comment is ignored - add as many as you

## like. Note that an in-line comment is not supported. If a line

## consists of whitespace only (tabs, spaces, carriage return), it will be

## ignored, so you can space control fields as you like. ANYTHING ELSE

## IS PARSED!! This means that lines with stray characters or lines that

## use non # comment characters will be interpreted by the initscript.

## This has probably minor, but potentially serious, side effects for your

## hard drives, so please follow the guidelines. Patches to improve

## flexibilty welcome. Please read /usr/share/doc/hdparm/README.Debian for

## notes about known issues, especially if you have an MD array.

##

## Note that if the init script causes boot problems, you can pass 'nohdparm'

## on the kernel command line, and the script will not be run.

##

## Uncommenting the options below will cause them to be added to the DEFAULT

## string which is prepended to options listed in the blocks below.

##

## If an option is listed twice, the second instance replaces the first.

##

## /sbin/hdparm is not run unless a block of the form:

## DEV {

## option

## option

## ...

## }

## exists. This blocks will cause /sbin/hdparm OPTIONS DEV to be run.

## Where OPTIONS is the concatenation of all options previously defined

## outside of a block and all options defined with in the block.

 

# -q be quiet

quiet

# -a sector count for filesystem read-ahead

#read_ahead_sect = 12

# -A disable/enable the IDE drive's read-lookahead feature

#lookahead = on

# -b bus state

#bus = on

# -B apm setting

#apm = 255

# -c enable (E)IDE 32-bit I/O support - can be any of 0,1,3

#io32_support = 1

# -d disable/enable the "using_dma" flag for this drive

#dma = off

# -D enable/disable the on-drive defect management

#defect_mana = off

# -E cdrom speed

#cd_speed = 16

# -k disable/enable the "keep_settings_over_reset" flag for this drive

#keep_settings_over_reset = off

# -K disable/enable the drive's "keep_features_over_reset" flag

#keep_features_over_reset = on

# -m sector count for multiple sector I/O

#mult_sect_io = 32

# -P maximum sector count for the drive's internal prefetch mechanism

#prefetch_sect = 12

# -r read-only flag for device

#read_only = off

# -S standby (spindown) timeout for the drive

#spindown_time = 24

# -u interrupt-unmask flag for the drive

#interrupt_unmask = on

# -W Disable/enable the IDE drive's write-caching feature

#write_cache = off

# -X IDE transfer mode for newer (E)IDE/ATA2 drives

#transfer_mode = 34

# -y force to immediately enter the standby mode

#standby

# -Y force to immediately enter the sleep mode

#sleep

# -Z Disable the power-saving function of certain Seagate drives

#disable_seagate

# -M Set the acoustic management properties of a drive

#acoustic_management

# -p Set the chipset PIO mode

# chipset_pio_mode

# --security-freeze Freeze the drive's security status

# security_freeze

# --security-unlock Unlock the drive's security

# security_unlock = PWD

# --security-set-pass Set security password

# security_pass = password

# --security-disable Disable drive locking

# security_disable

# --user-master Select password to use

# user-master = u

# --security-mode Set the security mode

# security_mode = h

 

# Root file systems. Please see README.Debian for details

# ROOTFS = /dev/hda

 

## New note - you can use straight hdparm commands in this config file

## as well - the set up is ugly, but it keeps backwards compatibility

## Additionally, it should be noted that any blocks that begin with

## the keyword 'command_line' are not run until after the root filesystem

## is mounted. This is done to avoid running blocks twice. If you need

## to run hdparm to set parameters for your root disk, please use the

## standard format.

 

#Samples follow:

#First three are good for devfs systems, fourth one for systems that do

#not use devfs. The fifth example uses straight hdparm command line

#syntax. Any of the blocks that use command line syntax must begin with

#the keyword 'command_line', and no attempt is made to validate syntax.

#It is provided for those more comfortable with hdparm syntax.

 

#/dev/discs/disc0/disc {

# mult_sect_io = 16

# write_cache = off

# spindown_time = 240

#}

 

#/dev/discs/disc1/disc {

# mult_sect_io = 32

# spindown_time = 36

# write_cache = off

#}

 

#/dev/cdroms/cdrom0 {

# dma = on

# interrupt_unmask = on

# io32_support = 0

#}

 

#/dev/hda {

# mult_sect_io = 16

# write_cache = off

# dma = on

#}

 

#command_line {

# hdparm -q -m16 -q -W0 -q -d1 /dev/hda

#}

 

/dev/hdd {

dma = on

}

 

/dev/cdrom {

dma = on

}

 

/dev/dvd {

dma = on

}

 

/dev/hdc {

dma = on

}

 

Οι δίσκοι είναι σε ext3 όπως έχω γράψει και παραπάνω.

 

3) Από που θα δω τις στροφές του σκληρού, έστω και με σβυστό το μηχάνημα?

4) Ο μικρός δίσκος, που είναι ο "λειτουργικός" δεν υποστηρίζει smart

 

Αυτό είναι το mount μου

$ mount

/dev/hda1 on / type ext3 (rw,errors=remount-ro)

proc on /proc type proc (rw)

/sys on /sys type sysfs (rw)

varrun on /var/run type tmpfs (rw)

varlock on /var/lock type tmpfs (rw)

procbususb on /proc/bus/usb type usbfs (rw)

udev on /dev type tmpfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

devshm on /dev/shm type tmpfs (rw)

lrm on /lib/modules/2.6.15-26-386/volatile type tmpfs (rw)

/dev/hdb1 on /media/Deposit type ext3 (rw)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αυτό είναι το configuration του script αυτοματοποίησης του debian που πρέπει να περνάει αυτές τις παραμέτρους στο hdparm σε κάθε εκκίνηση. Το ότι έχεις σωστό configuration δεν σημαίνει απαραίτητα ότι έχεις ενεργοποιημένο DMA. Για να το δεις αυτό τρέξε

>hdparm -Id /dev/hda
hdparm -Id /dev/hdb

 

Πάντως στο configuration δεν έχεις ορίσει DMA για τον hdb, το αν θα είναι ON by default είναι αμφίβολο. Μπορείς να το προσθέσεις στο config όπως είναι ορισμένο και για τις άλλες συσκευές.

 

>
/dev/hdb {
dma = on
}

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

/dev/hda:

using_dma = 1 (on)

 

Model=WDC WD200BB-00CXA0, FwRev=02.05B02, SerialNo=WD-WMAC61065472

Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }

RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40

BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=off

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=39102336

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes: pio0 pio1 pio2 pio3 pio4

DMA modes: mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5

AdvancedPM=no WriteCache=enabled

Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5

 

* signifies the current active mode

 

 

/dev/hdb:

using_dma = 1 (on)

 

Model=WDC WD1200BB-00FTA0, FwRev=15.05R15, SerialNo=WD-WMAES2056821

Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }

RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=74

BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=off

CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648

IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}

PIO modes: pio0 pio1 pio2 pio3 pio4

DMA modes: mdma0 mdma1 mdma2

UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5

AdvancedPM=no WriteCache=enabled

Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6

 

* signifies the current active mode

Πως τα βλέπεις chief?

 

Και κάτι ακόμα. Γιατί dma και όχι ultra-dma?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Άρα δε φταίει το DMA :???:

 

Για κάνε 1-2 τεστάκια στους δίσκους ώστε να δούμε αν μπορούν να γράψουν τουλάχιστον στον εαυτό τους με ικανοποιητική ταχύτητα

 

>time dd if=/dev/zero of=/root/temp count=300000              
time dd if=/dev/zero of=/media/Deposit/temp count=300000

 

Αυτό γεμίζει μηδενικά ένα αρχείο (temp) μεγέθους 154MB (300.000 x 512 bytes που είναι το default blocksize της dd) σε κάθε έναν από τους δίσκους. Θυμίσου να σβήσεις τα temp μετά.

 

>hdparm -tT /dev/hda
hdparm -tT /dev/hdb

 

Αυτό μετράει την raw ταχύτητα ανάγνωσης σε επίπεδο δίσκου (χωρίς το overhead του filesystem) σε best-case και average-case scenarios

 

Και κάτι ακόμα. Γιατί dma και όχι ultra-dma?

Σε UDMA-5 παίζουν και οι 2 όπως υποδεικνύει το *

 

 

ΥΣ. Επίσης προτίμησε να βάλεις τους δίσκους σε χωριστό IDE controller ώστε να μην μοιράζονται το ίδιο bus. Πάντως σε κάθε περίπτωση 60MB σε 5 λεπτά είναι μερικές εκατοντάδες φορές πιο αργό από το ελάχιστο αναμενόμενο! :neutral:

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

~$ time dd if=/dev/zero of=/media/Deposit/temp count=300000

300000+0 records in

300000+0 records out

Σφάλμα κατάτμησης (segmentation fault)

 

real 0m12.346s

user 0m0.168s

sys 0m1.496s

 

~$ time dd if=/dev/zero of=/root/temp count=300000

dd: opening `/root/temp': Άρνηση πρόσβασης

 

real 0m0.172s

user 0m0.008s

sys 0m0.000s

 

Αυτά μου έβγαλε.

Θα δω τις απαντήσεις το απόγευμα ίσως γιατί πρέπει να φύγω επιγόντως. Ευχαριστώ.

 

Σε UDMA-5 παίζουν και οι 2 όπως υποδεικνύει το *
Αβλεψία.
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το permission denied του dd που πήγε να γράψει γράφει στο /root/temp ως απλός χρήστης είναι φυσιολογικό, εκτέλεσέ το από root shell (ή με sudo).

 

Το segmentation fault δε μπορώ να το ερμηνεύσω αλλά σίγουρα δεν είναι φυσιολογικό! Κρίμα που δεν υποστηρίζει SMART ο 20ρης σου! :-|

 

Απ' όσο μπορώ να σκεφτώ σε 4 πράγματα μπορεί να παραπέμπει:

1) Πρόβλημα στην επιφάνεια του δίσκου (πιθανότατα παρακάμπτεται με την fsck, μαρκάροντας την προβληματική περιοχή)

2) Πρόβλημα στη δομή του filesystem (διορθώνεται με την fsck)

3) Πρόβλημα στη μνήμη (θα πρέπει να είναι random τέτοιου είδους μηνύματα)

4) Πρόβλημα στο binary ή κάποιο linked library της dd (μάλλον απίθανο)

 

Μιας που πρόκειται για το / filesystem που δε μπορεί να γίνει unmount, κάνε boot από ένα boot/live cd και κάνε έλεγχο με την fsck.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το δοκίμασα και πριν με sudo. Δες τι βγάζει:

 

~$ sudo time dd if=/dev/zero of=/root/temp count=300000

Password:

300000+0 records in

300000+0 records out

Command terminated by signal 11

0.21user 1.60system 0:07.78elapsed 23%CPU (0avgtext+0avgdata 0maxresident)k

0inputs+0outputs (6major+281minor)pagefaults 0swaps

 

~$ sudo time dd if=/dev/zero of=/media/Deposit/temp count=300000

300000+0 records in

300000+0 records out

Command terminated by signal 11

0.21user 1.40system 0:14.86elapsed 10%CPU (0avgtext+0avgdata 0maxresident)k

0inputs+0outputs (8major+279minor)pagefaults 0swaps

 

Απ' όσο μπορώ να σκεφτώ σε 4 πράγματα μπορεί να παραπέμπει:

1) Πρόβλημα στην επιφάνεια του δίσκου (πιθανότατα παρακάμπτεται με την fsck, μαρκάροντας την προβληματική περιοχή)

Αυτό πως μπορώ να το επιβεβαιώσω? Αν ισχύει πράγματι, τόε πάμε για άλλον δίσκο ε?
2) Πρόβλημα στη δομή του filesystem (διορθώνεται με την fsck)
Δηλαδή? (fsck = file system check να φανταστώ?) Πως θα τη συντάξω? Τι πρέπει να κάνω γενικώς? Είναι επικίνδυνο να χάσω δεδομένα, ή τίποτα άλλο?
3) Πρόβλημα στη μνήμη
Αυτό πως το ελέγχω?
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το ενδεχόμενο του να άργησε λόγω του οτι το ext3 δεν είναι γρήγορο με μικρά αρχεία δεν υπάρχει;

Αντέγραψε 901 αρχεία με μέσο όρο μεγέθους 68kb.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Λοιπόν... Έχω νέα δεδομένα.

Έκανα reboot για να ξεκουραστεί το μηχάνημα και αντέγραψα 2 αρχεία από και προς. Ορίστε οι χρόνοι:

 

αρχείο 1,4 GB από hda σε hdb έκανε 1:27

αρχείο 1,4 GB από hdb σε hda έκανε 1:17

 

αρχείο 900 MB από hda σε hdb έκανε 0:55

αρχείο 900 MB από hdb σε hda έκανε 0:50

 

Πως σα φαίνονται αυτοί οι χρόνοι?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και κάτι άλλο. Δε θυμάμαι με ποια εντολή κάποτε είχα δει μεταξύ άλλων και το ποσοστό των fragmented (δε φαντάζομαι να υπάρχει κατάλληλη ελληνική λέξη: τεμαχισμένων? κομματιασμένων?) αρχείων σε κάθε δίσκο.

 

Υπάρχει περίπτωση να φταίει πιθανό μεγάλο ποστοστό fragmented files? Κάποτε όταν πρωτοξεκινούσα σε λίνουξ είχα κάνει μια σχετική ερώτηση. Παραθέτω το link.

Αφού δεν υπάρχει λόγος για defragment στο linux, γιατί κάθισε κάποιος να φτιάξει πρόγραμμα γι' αυτή τη δουλειά?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Απολύτως φυσιολογικοί οι χρόνοι τώρα, όμως το γεγονός ότι η dd προκαλεί segmentation fault και τερματίζει με SIGNAL 11 είναι ανησυχητικό.

 

Αυτό πως μπορώ να το επιβεβαιώσω? Αν ισχύει πράγματι, τόε πάμε για άλλον δίσκο ε?
Όχι απαραίτητα, υπάρχει η δυνατότητα να συμαδευτεί η κατεστραμένη περιοχή του δίσκου ώστε να μην γραφτούν δεδομένα πάνω της. Αυτό μπορεί να το κάνει η fsck.

 

Δηλαδή? (fsck = file system check να φανταστώ?) Πως θα τη συντάξω? Τι πρέπει να κάνω γενικώς? Είναι επικίνδυνο να χάσω δεδομένα, ή τίποτα άλλο?

Ναι αν και επειδή η χρήση της πολλές φορές σχετίζεται με προβλήματα, μπορείς να το ερμηνεύεις και ως f*ck :-D

Ειδικά το ext3 είναι πολύ ώριμο filesystem και είναι εξαιρετικά απίθανο να χάσεις αρχεία από την fsck του. Σε κάθε περίπτωση αν είναι να κάνει κάποια ευαίσθητη τροποποίηση θα σε ειδοποιήσει. Εγώ θα έκανα έναν βασικό έλεγχο και στη συνέχεια έναν εκτεταμένο έλεγχο για κατεστραμένες περιοχές.

 

e2fsck /dev/hda1

e2fsck -c /dev/hda1

 

Το θέμα είναι ότι ένα partition δε μπορεί να ελεγχθεί όταν είναι mounted με read-write, κι επειδή το / partition σου δε μπορεί να γίνει unmount/remount εφόσον χρησιμοποιείται, ο πιο εύκολος τρόπος είναι να bootareis από ένα live cd και να το κάνεις από εκεί. Είναι standard εργαλείο οπότε λογικά θα υπάρχει σε όλα τα cds.

 

3) Πρόβλημα στη μνήμη
Αυτό πως το ελέγχω?

Με το να stress-άρεις τη μνήμη. Επειδή το linux χρησιμοποιεί σύστημα προσταστευμένης διαχείρισης της μνήμης, αν υπάρξει πρόβλημα και μία εφαρμογή από λάθος πάει να προσπελάσει διεύθυνση που δεν έχει κάνει allocate, θα την τερματίσει (από αυτό προκαλείται το segmentation Fault).

Ένας αρκετά σίγουρος τρόπος να την stress-άρεις, είναι να κάνεις copy ένα αρχείο λίγο μικρότερο από τη μνήμη σου καμια 10ρια φορές και να ελέγξεις αν είναι πιστό αντίγραφο. Ένα παράδειγμα σε bash:

 

>
#!/bin/sh
for x in `seq 1 10`; do
cp -v $1 $1-$x
md5sum $1-$x
done

 

Βάλε το παραπάνω σε ένα αρχειάκι, κάνε το chmod +x, και εκτελόντας το δώσε του ως παράμετρο ένα αρχείο γύρω στα 200 MB. Θα το αντιγράψει 10 φορές και θα παράξει ένα αρκετά αντιπροσωπευτικό signature για κάθε αρχείο, το οποίο θα πρέπει να είναι πάντα ίδιο. Το πιθανότερο είναι αν υπάρχει σοβαρό πρόβλημα να φανεί.

 

Επίσης αν θέλεις δοκίμασε και το memtester.

 

Τέλος αν βάλεις να κάνεις compile τον kernel καμια δεκαριά φορές, λογικά θα χτυπήσει ο gcc αν υπάρχει πρόβλημα.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Και κάτι άλλο. Δε θυμάμαι με ποια εντολή κάποτε είχα δει μεταξύ άλλων και το ποσοστό των fragmented (δε φαντάζομαι να υπάρχει κατάλληλη ελληνική λέξη: τεμαχισμένων? κομματιασμένων?) αρχείων σε κάθε δίσκο.

Τα λένε "κατακερματισμένα" όσοι επιμένουν να μεταφράζουν! Και αυτό το κάνει η fsck, "fsck -f /dev/hda1" :-)

 

Υπάρχει περίπτωση να φταίει πιθανό μεγάλο ποστοστό fragmented files?

 

Όχι, το fragmentation επηρεάζει πολύ το seek time αλλά ελάχιστα το throughput. Αν και το seek time έχει επίπτωση στο throughput, σίγουρα όχι τόση όσο ανέφερες στο 1ο post!

 

 

Υπάρχει περίπτωση να φταίει πιθανό μεγάλο ποστοστό fragmented files? Κάποτε όταν πρωτοξεκινούσα σε λίνουξ είχα κάνει μια σχετική ερώτηση. Παραθέτω το link.

Αφού δεν υπάρχει λόγος για defragment στο linux, γιατί κάθισε κάποιος να φτιάξει πρόγραμμα γι' αυτή τη δουλειά?

 

Το fragmentation είναι ένα αναπόφευκτο φαινόμενο για όλα τα filesystems, όμως λόγω του μεθοδικού τρόπου εγγραφής στο ext3 και άλλα *nix filesystems, μπορεί να χρειαστούν και χρόνια για να φτάσει σε αξιοσημείωτο επίπεδο. Σε κάθε περίπτωση η λύση για το defragmentation είναι τόσο απλή όσο το να κάνεις ένα tarball όλων των περιεχομένων του partition με την tar, κάπου, να το αδειάσεις, και στη συνέχεια να ξανακάνεις extract μέσα του το tarball.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...