OVH Community, your new community space.

Problème d'iowait à 99% sur un disque peu utilisé (disque mourant ?)


pascalp
28/01/2014, 16h19
swap?

Voir la sortie de iotop en ce qui concerne les acces disques, plus detaille que top.

Hexalyse
28/01/2014, 00h41
Bump. Toujours pas d'idées .? J'ai dû prévenir les utilisateurs d'arrêter momentanément d'utiliser ownCloud à cause de ce problème... :/
Ce serait cool qu'il soit résolu assez rapidement, ou que j'ai une explication sur ce qui provoque ça. Je vois mal en quoi un ownCloud qui synchrone quelques dizaines de fichiers à une vitesse ridicule puisse saturer autant la journalisation... O_o

Hexalyse
23/01/2014, 19h42
Merci pour cette superbe explication !
Je me demandais s'il fallait que les valeurs restent en dessus, ou en dessous, justement (j'ai du mal à comprendre la signification de certaines).

Bref, donc mon disque dur n'a aucun problème selon toi. Mais du coup, ma question : Pourquoi ai-je ce processus jbd2 (processus de journalisation) qui me bouffe autant de temps d'accès disque ? Dans top, bien souvent, j'ai maximum 5% de charge user ou system, et c'est le "wa" (les i/o wait donc), qui montent à 90-100%.
Je n'ai jamais vu ça de ma vie, sur aucun des systèmes Linux que j'ai administré : même mon RaspberryPi, qui tourne sur une carte SD ultra lente, n'a pas autant de problèmes d'accès disque :O

Bref... serait-ce un bug du à un logiciel, au kernel, à la version d'Ubuntu ? Est-ce possible que mon installation d'ownCloud soit foirée (je vois mal comment), et qu'il me crée beaucoup trop d'accès disque ? (un simple affichage de la racine sur l'interface web ownCloud bouffe pas mal d'IO-wait ... c'est du jamais vu, je dois avoir 5 dossiers et 3 fichiers tout au plus, à la racine !)

Si vous avez des idées, je suis preneur !

starouille
23/01/2014, 18h45
RAW_VALUE c'est la valeur actuelle BRUTE. Par exemple, ça va te dire combien de secteur réalloués sur ton disque (ici 0) ou encore combien d'heures de fonctionnement..

En général on regarde:

-Les erreurs smart qui s'affichent à la fin et la date de ces erreurs (à comparer avec la valeur brute de Power_On_Hours). Si c'est éloigné, on s'en fiche, les erreurs sont anciennes et le disque n'a jamais eu de nouveau problème, sinon, on peut le changer. Ici tu n'a rien qui s'affiche.

- le nombre de secteurs réalloués. Si le disque est vieux, c'est moins choquant d'en voir quelques uns, cependant, il faut surveiller ça de pres... si ça augmente, il faut changer de disque. Si le disque est neuf (power on hours de quelques dizaines d'heures max), je le ferais changer directement car ce n'est pas normal..

- La valeur "VALUE" ne doit pas descendre sous le THRESHOLD (le pallier limite quoi), sinon, le disque risque de planter (car il déconne (attributs PRE-FAIL), ou devient vieux (attributs old age)


Le reste, tu t'en fiche un peu je dirais.



Dans ton cas, tu en concluera que ton disque n'a rien d'anormal .

Hexalyse
23/01/2014, 16h19
Bonjour,

Voilà quelques mois que je possède un serveur Kimsufi (celui à 3,5HT€/mois qui a été sold out en quelques jours). J'avais déjà remarqué que la charge du disque dur se comportait étrangement, mais sans m'y pencher plus que ça (la vitesse d'écriture lors de l'écriture séquentielle d'un gros fichier, par exemple avec un "dd" avec /dev/zero comme entrée, donnait une vitesse tout à fait normale).
Cependant, voilà que depuis quelques mois, je m'inquiète vraiment, car une simple copie ou synchronisation de fichiers (par exemple, une synchronisation ownCloud qui utilise à peine 100ko/s de bande passante) monte la charge du disque à fond :
Le "wa" dans "top" est à 70% en moyenne selon Munin.
Et voilà le résultat de la commande "iotop -o" :
Code:
Total DISK READ:       0.00 B/s | Total DISK WRITE:     595.30 K/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND
 3322 be/3 root        0.00 B/s    0.00 B/s  0.00 % 97.23 % [jbd2/sda2-8]
31902 be/4 www-data    0.00 B/s  135.29 K/s  0.00 %  0.33 % php-fpm: pool www
On voit bien que le processus php-fpm (mon serveur tourne sur nginx, et héberge un owncloud ainsi qu'un site statiques et quelques autres fichiers php quasiment jamais utilisés) écrit à 135K/s, vitesse ridicule... et pourtant le processus de journalisation jbd2 est à 97% d'IO - sachant que cette valeur tourne en moyenne dans les 99% et oscille légèrement.

En bref, une simple écriture de quelques dizaines de ko/s sur le disque met le serveur complètement à genoux, rendant l'utilisation quasiment impossible. J'ai lu que cela pouvait venir d'une trop grande quantités de données écrites (ce qui n'est pas le cas ici), ou... d'un disque dur en train de flancher.
S'il s'avère que le problème est matériel, est-il possible d'obtenir un changement de disque dur sur mon Kimsufi ? Si oui, dois-je procéder à un backup de mes fichiers/fichiers de configuration avant, ou une copie du système est-elle possible ?


merci pour votre aide,




PS: voilà la sortie de la commande "smartctl -a -d ata /dev/sda" :
Code:
smartctl 5.43 2012-06-30 r3573 [x86_64-linux-3.10.9-xxxx-grs-ipv6-64] (local build)
Copyright (C) 2002-12 by Bruce Allen, http://smartmontools.sourceforge.net

=== START OF INFORMATION SECTION ===
Device Model:     TOSHIBA DT01ACA050
Serial Number:    538H3VXNS
LU WWN Device Id: 5 000039 ff6d4f797
Firmware Version: MS1OA750
User Capacity:    500,107,862,016 bytes [500 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Device is:        Not in smartctl database [for details use: -P showall]
ATA Version is:   8
ATA Standard is:  ATA-8-ACS revision 4
Local Time is:    Thu Jan 23 15:06:17 2014 CET
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x84) Offline data collection activity
                                        was suspended by an interrupting command from host.
                                        Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0) The previous self-test routine completed
                                        without error or no self-test has ever
                                        been run.
Total time to complete Offline
data collection:                ( 4901) seconds.
Offline data collection
capabilities:                    (0x5b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        Selective Self-test supported.
SMART capabilities:            (0x0003) Saves SMART data before entering
                                        power-saving mode.
                                        Supports SMART auto save timer.
Error logging capability:        (0x01) Error logging supported.
                                        General Purpose Logging supported.
Short self-test routine
recommended polling time:        (   1) minutes.
Extended self-test routine
recommended polling time:        (  82) minutes.
SCT capabilities:              (0x003d) SCT Status supported.
                                        SCT Error Recovery Control supported.
                                        SCT Feature Control supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   100   100   016    Pre-fail  Always       -       0
  2 Throughput_Performance  0x0005   136   136   054    Pre-fail  Offline      -       91
  3 Spin_Up_Time            0x0007   119   119   024    Pre-fail  Always       -       193 (Average 193)
  4 Start_Stop_Count        0x0012   100   100   000    Old_age   Always       -       10
  5 Reallocated_Sector_Ct   0x0033   100   100   005    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000b   100   100   067    Pre-fail  Always       -       0
  8 Seek_Time_Performance   0x0005   110   110   020    Pre-fail  Offline      -       36
  9 Power_On_Hours          0x0012   100   100   000    Old_age   Always       -       4502
 10 Spin_Retry_Count        0x0013   100   100   060    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       10
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       27
193 Load_Cycle_Count        0x0012   100   100   000    Old_age   Always       -       27
194 Temperature_Celsius     0x0002   142   142   000    Old_age   Always       -       42 (Min/Max 25/45)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0022   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0008   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x000a   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Completed without error       00%      1764         -
# 2  Short offline       Completed without error       00%      1760         -
# 3  Short offline       Completed without error       00%        15         -
# 4  Short offline       Completed without error       00%         9         -
# 5  Short offline       Completed without error       00%         9         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.
Si je comprends bien toutes ces valeurs, je vois que la valeur actuelle correspond bien souvent à la "Worst" avec des "Pre-Fail" ou "Old Age" indiqués : cela signifie que mon disque dur est sur le point de tomber en panne, c'est ça ? Ou est-ce la RAW_VALUE qui est la valeur actuelle ?

Et la sortie de la commande "hdparm -tT /dev/sda", lorsque le disque n'est pas utilisé par un autre processus :
Code:
/dev/sda:
 Timing cached reads:   1160 MB in  2.00 seconds = 579.51 MB/sec
 Timing buffered disk reads: 212 MB in  3.01 seconds =  70.48 MB/sec