Přetížený disk

Přetížený disk
« kdy: 08. 09. 2019, 14:05:47 »
Ahoj,
mám dedikovaný server od firmy Hetzner. Poslední týden zaznamenávám velmi pomalou odezvu serveru. Vypadá to na přetížené disky. Mám RAID 1 sestavený s SSD Intel. Disky monitoruji pomocí atop -d, kdy disk sdb je většinu času na 100% přitom WRDSK je max 4000K. Na druhý disk se zapisuje stejně a přitom je busy max 10%. viz. příloha.

Pole je sestavené v pořádku:
Kód: [Vybrat]
cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda3[0] sdb3[1]
      216994368 blocks super 1.2 [2/2] [UU]
      bitmap: 2/2 pages [8KB], 65536KB chunk

md1 : active raid1 sda2[0] sdb2[1]
      523712 blocks super 1.2 [2/2] [UU]

md0 : active raid1 sda1[0] sdb1[1]
      16760832 blocks super 1.2 [2/2] [UU]

unused devices: <none>

Smartctl vypadá v pořádku:
Kód: [Vybrat]
smartctl -a /dev/sdb
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Intel 530 Series SSDs
Device Model:     INTEL SSDSC2BW240A4
Serial Number:    BTDA327105PZ2403GN
LU WWN Device Id: 5 001517 8f3661985
Firmware Version: DC02
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Sep  8 14:03:44 2019 CEST
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: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

General SMART Values:
Offline data collection status:  (0x02) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Disabled.
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:                ( 5860) seconds.
Offline data collection
capabilities:                    (0x7f) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Abort Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        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:        (  48) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x0025) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       2
  9 Power_On_Hours_and_Msec 0x0032   100   100   000    Old_age   Always       -       37441h+14m+38.250s
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       6
170 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       1
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       83
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   090    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   060   060   000    Old_age   Always       -       40
190 Airflow_Temperature_Cel 0x0032   039   049   000    Old_age   Always       -       39 (Min/Max 20/49)
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       83
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
225 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       1629373
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       65535
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       24
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       65535
232 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0
233 Media_Wearout_Indicator 0x0032   048   048   000    Old_age   Always       -       0
241 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       1629373
242 Host_Reads_32MiB        0x0032   100   100   000    Old_age   Always       -       518191
249 NAND_Writes_1GiB        0x0032   100   100   000    Old_age   Always       -       468253

SMART Error Log not supported

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%     37441         -
# 2  Short offline       Completed without error       00%     37424         -
# 3  Offline             Interrupted (host reset)      10%     20433         -
# 4  Extended offline    Completed without error       00%     20424         -
# 5  Extended offline    Completed without error       00%     20411         -
# 6  Offline             Interrupted (host reset)      10%     20410         -
# 7  Extended offline    Completed without error       00%     20410         -
# 8  Extended offline    Completed without error       00%     20398         -
# 9  Offline             Interrupted (host reset)      10%     20397         -
#10  Offline             Interrupted (host reset)      10%         4         -
#11  Offline             Interrupted (host reset)      10%         0         -
#12  Offline             Interrupted (host reset)      10%         0         -
#13  Offline             Interrupted (host reset)      10%         0         -

SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
 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.
Je disk vadný?




Jose D

  • *****
  • 850
    • Zobrazit profil
Re:Přetížený disk
« Odpověď #1 kdy: 08. 09. 2019, 14:25:38 »
Smartctl vypadá v pořádku:
Kód: [Vybrat]
smartctl -a /dev/sdb
...
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
...
  9 Power_On_Hours_and_Msec 0x0032   100   100   000    Old_age   Always       -       37441h+14m+38.250s
...
170 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       1
...
232 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0


co??  :D

Tohle SSD je IMO chodící mrtvola..
jinak u smartmontools neni od věci si nainstalovat poslední verzi - už je venku 7.0.0.

EDIT: 4 roky - celkem slušné, na to že jde o spotřební disk, v tom datacentru asi dostal zabrat..
« Poslední změna: 08. 09. 2019, 14:29:43 od Jose D »

Re:Přetížený disk
« Odpověď #2 kdy: 08. 09. 2019, 14:34:53 »
530 byl před lety spotřebka, navíc někde mezi lowend a mid-range...


Několik let v serveru... no chudák disk ;-)

Re:Přetížený disk
« Odpověď #3 kdy: 08. 09. 2019, 15:19:49 »
1. Mohu se zeptat, jak se chybující disk pozná? Podle FAILING_NOW ?
2. Proč disk nebyl teda vyhozen z pole?
3. Může to způsobovat přetížení disku viz atop?
4. Zde je smart ještě /dev/sda ten je asi také v háji...
Kód: [Vybrat]
smartctl -a /dev/sda
smartctl 6.4 2014-10-07 r4002 [x86_64-linux-3.16.0-4-amd64] (local build)
Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Intel 530 Series SSDs
Device Model:     INTEL SSDSC2BW240A4
Serial Number:    BTDA327101HH2403GN
LU WWN Device Id: 5 001517 8f3660734
Firmware Version: DC02
User Capacity:    240,057,409,536 bytes [240 GB]
Sector Size:      512 bytes logical/physical
Rotation Rate:    Solid State Device
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2 (minor revision not indicated)
SATA Version is:  SATA 3.0, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Sep  8 15:15:46 2019 CEST
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: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
See vendor-specific Attribute list for failed Attributes.

General SMART Values:
Offline data collection status:  (0x02) Offline data collection activity
                                        was completed without error.
                                        Auto Offline Data Collection: Disabled.
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:                ( 5860) seconds.
Offline data collection
capabilities:                    (0x7f) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Abort Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        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:        (  48) minutes.
Conveyance self-test routine
recommended polling time:        (   2) minutes.
SCT capabilities:              (0x0025) SCT Status supported.
                                        SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  5 Reallocated_Sector_Ct   0x0032   100   100   000    Old_age   Always       -       8
  9 Power_On_Hours_and_Msec 0x0032   100   100   000    Old_age   Always       -       37262h+07m+30.480s
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       6
170 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       4
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       51
183 SATA_Downshift_Count    0x0032   100   100   000    Old_age   Always       -       0
184 End-to-End_Error        0x0033   100   100   090    Pre-fail  Always       -       0
187 Uncorrectable_Error_Cnt 0x0032   000   000   000    Old_age   Always       -       104
190 Airflow_Temperature_Cel 0x0032   034   049   000    Old_age   Always       -       34 (Min/Max 20/49)
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       51
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
225 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       1608451
226 Workld_Media_Wear_Indic 0x0032   100   100   000    Old_age   Always       -       65535
227 Workld_Host_Reads_Perc  0x0032   100   100   000    Old_age   Always       -       34
228 Workload_Minutes        0x0032   100   100   000    Old_age   Always       -       65535
232 Available_Reservd_Space 0x0033   001   001   010    Pre-fail  Always   FAILING_NOW 0
233 Media_Wearout_Indicator 0x0032   066   066   000    Old_age   Always       -       0
241 Host_Writes_32MiB       0x0032   100   100   000    Old_age   Always       -       1608451
242 Host_Reads_32MiB        0x0032   100   100   000    Old_age   Always       -       844553
249 NAND_Writes_1GiB        0x0032   100   100   000    Old_age   Always       -       397202

SMART Error Log not supported

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%     37248         -
# 2  Offline             Interrupted (host reset)      10%     20433         -
# 3  Extended offline    Completed without error       00%     20424         -
# 4  Extended offline    Completed without error       00%     20411         -
# 5  Offline             Interrupted (host reset)      10%     20410         -
# 6  Extended offline    Completed without error       00%     20410         -
# 7  Extended offline    Completed without error       00%     20398         -
# 8  Offline             Interrupted (host reset)      10%     20397         -
# 9  Offline             Interrupted (host reset)      10%         4         -
#10  Offline             Interrupted (host reset)      10%         0         -
#11  Offline             Interrupted (host reset)      10%         0         -
#12  Offline             Interrupted (host reset)      10%         0         -

SMART Selective self-test log data structure revision number 0
Note: revision number not 1 implies that no selective self-test has ever been run
 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.

Děkuji

Re:Přetížený disk
« Odpověď #4 kdy: 08. 09. 2019, 16:41:45 »
1. Mohu se zeptat, jak se chybující disk pozná? Podle FAILING_NOW ?
Jop, SMART zobrazuje normalizované hodnoty a pokud jsou na nebo pod THRESH tak je to problém. Obzvlášť ty typu Pre-fail. Tyhle dva disky už mají tolik mrtvého místa, že už jim skoro došel záložní prostor.


Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Přetížený disk
« Odpověď #5 kdy: 08. 09. 2019, 17:11:42 »
Kdyby ty SSD byly v RAID0, ještě by dlouho žily. RAID1 likviduje nejen SSD, ale i HDD.

Re:Přetížený disk
« Odpověď #6 kdy: 08. 09. 2019, 17:17:21 »
Kdyby ty SSD byly v RAID0, ještě by dlouho žily. RAID1 likviduje nejen SSD, ale i HDD.

Tak určitě.

(A ať se toho nikdo nechytí - RAID 0 není RAID ale recept na ztrátu dat. RAID1 nelikviduje disky o nic víc než žádný RAID.)

Re:Přetížený disk
« Odpověď #7 kdy: 08. 09. 2019, 18:22:48 »
> 2. Proč disk nebyl teda vyhozen z pole?

Protože pořád ještě nenahlásil fatální chybu, jenom zpomalil.
Patrně mu došly volné celé erase-bloky a má čím dál víc práce s průběžnými škatule-batulemi, aby v rámci wear levelingu mohl nějaký erase block celý smazat a realokovat na něj použité uvolněné řádky, sesbírané z jiných částečně zaplněných erasebloků...

e3k

  • ***
  • 217
    • Zobrazit profil
    • E-mail
Re:Přetížený disk
« Odpověď #8 kdy: 08. 09. 2019, 21:15:32 »
iotop si pustil?

Re:Přetížený disk
« Odpověď #9 kdy: 08. 09. 2019, 21:40:19 »
iotop si pustil?
A co přesně mám hledat? IO>0
Tam se tam nejčastěji objevuje jbd2/md2-8 - to je žurnálovací systém, to by mohlo vést na ty vadné disky?
Následně mysqld....

Kit

  • *****
  • 704
    • Zobrazit profil
    • E-mail
Re:Přetížený disk
« Odpověď #10 kdy: 08. 09. 2019, 22:01:50 »
Kdyby ty SSD byly v RAID0, ještě by dlouho žily. RAID1 likviduje nejen SSD, ale i HDD.

Tak určitě.

(A ať se toho nikdo nechytí - RAID 0 není RAID ale recept na ztrátu dat. RAID1 nelikviduje disky o nic víc než žádný RAID.)

Redundance se nedělá zdvojením disků, ale zdvojením serverů.

Re:Přetížený disk
« Odpověď #11 kdy: 09. 09. 2019, 07:04:02 »
Kdyby ty SSD byly v RAID0, ještě by dlouho žily. RAID1 likviduje nejen SSD, ale i HDD.

Tak určitě.

(A ať se toho nikdo nechytí - RAID 0 není RAID ale recept na ztrátu dat. RAID1 nelikviduje disky o nic víc než žádný RAID.)

Redundance se nedělá zdvojením disků, ale zdvojením serverů.

Redundance se dělá na těch úrovních, kde ji zrovna potřebuješ

Re:Přetížený disk
« Odpověď #12 kdy: 09. 09. 2019, 09:25:37 »
Dobre rano,

Prosim opravte me pokud nemam pravdu. Prijde mi ze pouziti md raid 1 na ssd neni uplne nejlepsi. Pokud budu delat raid1, tak se pri vytvareni obsah prvniho disku prepise na druhy disk na blokove urovni. Tim si druhy disk bude myslet ze je cely obsazeny. Asi by se to dalo resit tim ze pokud necham oba disky zesynchronizovat, muzu je pote zfromatovat, tam by mel zafungovat trim. Nicmene md raid musi poslat trim oboum diskum. Nevim zdali to umi.

Radek

Re:Přetížený disk
« Odpověď #13 kdy: 09. 09. 2019, 09:36:39 »

Re:Přetížený disk
« Odpověď #14 kdy: 09. 09. 2019, 19:15:37 »
Dobre rano,

Prosim opravte me pokud nemam pravdu. Prijde mi ze pouziti md raid 1 na ssd neni uplne nejlepsi. Pokud budu delat raid1, tak se pri vytvareni obsah prvniho disku prepise na druhy disk na blokove urovni. Tim si druhy disk bude myslet ze je cely obsazeny. Asi by se to dalo resit tim ze pokud necham oba disky zesynchronizovat, muzu je pote zfromatovat, tam by mel zafungovat trim. Nicmene md raid musi poslat trim oboum diskum. Nevim zdali to umi.

Radek

Trochu nad tím dumám, a je to zajímavý tenký led :-)

Tady o tom debatěj. Sesynchronizovat oba disky při vytváření mirroru je dobré k tomu, aby se později ten mirror dal podrobovat pravidelné kontrole (porovnávat oba disky). Protože ta kontrola jede šmahem po celé ploše na blokové vrstvě, o vrstvu níž, než žije filesystém (a o filesystému nic neví).

TRIM resp. Discard tu pravidelnou kontrolu nijak neovlivní = ani neusnadní. Trim totiž z filesystému MD RAIDem de facto jenom "propadne skrz", aniž by si RAID vedl nějaká metadata pro svou pozdější potřebu, který blok je obsazený (má se kontrolovat) a který nikoli (při periodické kontrole na něj kašlat, minimálně nekontrolovat disky v zrcadle proti sobě).

Pravidelně kontrolovat celou plochu RAIDu je vhodné, protože se tím včas objeví vadné sektory. Protože když se pravidelná kontrola zanedbá, mohou vadné sektory vzniknout potichu na obou discích. Třeba na různých adresách (LBA offsetech) - ale v logice RAIDu to znamená, že oba disky budou při kompletním přečtení označeny za vadné.

Takže v tomto ohledu: počáteční sync ano, bez ohledu na to, že filesystém stejně poroste "od prázdného disku" a postupně ho zaplní svým platným payloadem a metadaty - a cokoli zapsaného bude z principu synchronní mezi oběma disky.

Ten počáteční sync lze vypnout argumentem --assume-clean, ale pak je myslím vhodné, vypnout taky pravidelnou kontrolu :-(

Tak mě napadá, resp. vrtá mi hlavou, jak je vůbec možné, že při pravidelné kontrole není principielně na škodu taky TRIM/Discard. Touto transakcí totiž disku říkáte "tento prostor je volný" = lze zrecyklovat, v případě potřeby přemapovat apod. Chápal bych to tak, že pokud takový sektor přečtete, není definováno, co tou operací získáte za data.
Takže nemá smysl, řešit jejich porovnání mezi disky navzájem při pravidelném RAID skenu. Je vůbec platná operace, číst ze sektoru, na který byl naposledy proveden TRIM? A je v tom případě skutečně uvolněn? Neznamená to spíš, že při pokusu o čtení se ten sektor musí napřed někam namapovat? Takže ten TRIM přijde vniveč? Spousta dobrých otázek :-)
No on na to zřejmě pamatuje ATA standard (hledejte první odpověď, která se zabývá variantami "Read After Trim"). Variant chování disku je dle normy možných několik, konkrétní model disku nemusí podporovat všechny, existuje ATA příkaz na zjištění podporovaných variant, a vyšší vrstvy (FS, RAID) si zřejmě mohou říct o konkrétní variantu... Zajímavé věci toto, asi bych to měl někdy pod Linuxem vyzkoušet. A zapnout si k tomu "maximum verbosity" :-) Jestli MDRAID oficiálně TRIM podporuje, měl by si být této nuance vědom. Heh vždyť ona se ta situace pro konkrétní RAID volume může změnit i výměnou disku za jiný kus (/model / verzi firmwaru).

Každopádně mi z toho plyne, že správně by bylo, použít FS, který si redundanci nějakých sektorů/bloků/clusterů prostě alokačních jednotek řeší sám, a případnou kontrolu provádí jenom nad bloky, které má dle metadat alokovány do souborů (modulo ještě třeba "děravé" soubory = alokované pouze částečně). U FS které jedou přímo nad NAND Flash je to jasná věc. U FS které jedou nad blokovou vrstvou s TRIMem je to trochu nesamozřejmé. Který to umí? Co třeba ZFS?

Anebo mít RAID, který si taky vede nějakou "bitmapu využití bloků". Per sektor by to asi trochu zabolelo kapacitně (0.2%, nebo 0.025%), sežralo by to na režii pár IOps (asi by to nemuselo běžet v "direct" režimu), ty bitmapy by se přepisovaly pořád na jednom místě, a to tak že pravidelně (tohle by mohlo zabolet z hlediska opotřebení flashky, možná i plotny).

On MD RAID má v modernějších verzích headeru tzv. write-intent bitmap - což se uplatní při rebuildu, ale nevede si to informaci o využití/nevyužití bloku vyššími vrstvami (navíc to má zřejmě dost hrubé rozlišení = velkou "velikost bloku"). Přesto ale: ejhle další věc, která by mohla zvyšovat počet zápisů na disky = opotřebení SSD, pokud porovnáváme "RAID 1" vs. "žádný RAID". Ta bitmapa dá vypnout, při vytváření pole mdadm --bitmap=none. Ale jakýkoli rebuild pak jede po celé ploše...