Chyby na různých discích na Btrfs poli

Chyby na různých discích na Btrfs poli
« kdy: 07. 10. 2024, 18:49:45 »
Zdravím

postavil jsem si NAS a vytvořil na něm pole disků z btrfs.
Disky jsou tak trochu co dům dal. Nekteré starší, některé nové, ale hlídal jsem si aby neměly špatné sektory.
Původně jsem neměl na redundanci kapacitu tak jsem měl data:single a metadata:raid1.
Pravidelně jsem pouštěl scrub abych si ověřil že data nehnijí.
Jednou mě to ale opravdu našlo chybu na nějakém souboru. Naštěstí na něm nezáleželo tak jsem ho smazal a rozšířil jsem pole abych mohl mít data:raid1 a metadata:raid1c3.
Pak ale po jednom scrubu naskákalo 5 neopravitelných chyb na dvou discích (dva úplně nové stejné WD40EFPX-68C) a při dalším scrubu ty chyby nezmizely. Z logů nebylo patrné kde to nastalo, sice jsem hledal na internetu ale na nic jsem nepřišel.
Pak jsem bohužel na problém neměl čas a NAS stejně ležel většinu doby vyplý.
Teď jsem se k tomu opět dostal. Po dalším zkoumání mě nenapadlo nic lepšího než koupit 2 nové disky(tentokrát sem si řekl že koupím seagate ST4000NE001-2MA1), abych mohl z těchto disků data odlét a zkusit je na špatné sektory nebo s nimi něco udělat.
Tak jsem ty nové disky přidal do pole pomocí device add a problémové jsem dal odstraňovat pomocí device delete.
Jenže v průběhu odstraňování to napsalo prostě I/O error a nedokončilo se (u obou disků).
Na internetu jsem našel, že existuje btrfs replace a tím jsem vyměnil, ale během tohoto procesu vyskákalo do logu celá řada chyb, kterým nerozumím, a při následném scrubu vyskákaly také (přikládám log).

Není mě jasné proč chyby skáčou na těchto discích, zrovna nové ne staré. Není to ani šuplíkem v PC protože jsem v pátek kolem 4 hodiny PC vypl a jeden z problémových disků přestěhoval do jiné pozice.
A proč teď skáčou na těch nových. Očekával bych že se po srcubu nebo replacu ty chyby opraví.

Chtěl bych proto požádat o radu, kde dělám chybu a jak z toho ven. Už mě jen napadá koupit dostatek nových disků a data pomocí rsync překopírovat na nové pole a doufat že už to nenastane.


Kód: [Vybrat]
Model: ATA ST4000NE001-2MA1 (scsi)
Disk /dev/sda: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  4001GB  4001GB  btrfs


Model: ATA WDC WD7500BPKX-8 (scsi)
Disk /dev/sdb: 750GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  750GB  750GB  primary  btrfs


Model: ATA ST4000NE001-2MA1 (scsi)
Disk /dev/sdc: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  4001GB  4001GB  btrfs


Model: ATA WDC WD5000AAKS-0 (scsi)
Disk /dev/sdd: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  500GB  500GB  primary  btrfs


Error: /dev/sde: unrecognised disk label
Model: ATA WDC WD40EFPX-68C (scsi)                                       
Disk /dev/sde: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:

Model: ATA WDC WD30EFRX-68E (scsi)
Disk /dev/sdf: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  3001GB  3001GB  btrfs        data


Model: WD_BLACK SN770 250GB (nvme)
Disk /dev/nvme0n1: 250GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system     Name  Flags
 1      1049kB  1128MB  1127MB  fat32                 boot, esp
 2      1128MB  239GB   238GB   btrfs
 3      239GB   250GB   10,7GB  linux-swap(v1)        swap


Model: Realtek RTL9210B-CG (scsi)
Disk /dev/sdk: 512GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  512GB  512GB  primary  btrfs


Model: ATA WDC WD10EZEX-08M (scsi)
Disk /dev/sdi: 1000GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  1000GB  1000GB  primary  btrfs


Model: ATA WDC WD30EFRX-68E (scsi)
Disk /dev/sdg: 3001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  3001GB  3001GB  btrfs


Model: Patriot M.2 P300 128 (scsi)
Disk /dev/sdj: 128GB
Sector size (logical/physical): 512B/4096B
Partition Table: msdos
Disk Flags:

Number  Start   End    Size   Type     File system  Flags
 1      1049kB  128GB  128GB  primary  btrfs


Error: /dev/sdh: unrecognised disk label
Model: ATA WDC WD40EFPX-68C (scsi)                                       
Disk /dev/sdh: 4001GB
Sector size (logical/physical): 512B/4096B
Partition Table: unknown
Disk Flags:


disky sdb sdj a sdk úplně neřešte, přidal jsem je do pole ať mám větší manévrovací prostor, pak je odstraním.

Kód: [Vybrat]
Overall:
    Device size:   15.36TiB
    Device allocated:   12.79TiB
    Device unallocated:    2.57TiB
    Device missing:      0.00B
    Used:   12.77TiB
    Free (estimated):    1.29TiB (min: 886.65GiB)
    Free (statfs, df):    1.24TiB
    Data ratio:       2.00
    Metadata ratio:       3.00
    Global reserve: 512.00MiB (used: 0.00B)
    Multiple profiles:         no

Data,RAID1: Size:6.38TiB, Used:6.38TiB (99.87%)
   /dev/sdi1 614.00GiB
   /dev/sdf1    2.42TiB
   /dev/sda1    3.33TiB
   /dev/sdc1    3.33TiB
   /dev/sdg1    2.42TiB
   /dev/sdd1 151.00GiB
   /dev/sdb1 381.00GiB
   /dev/sdk1 162.00GiB

Metadata,RAID1C3: Size:8.00GiB, Used:7.41GiB (92.67%)
   /dev/sdi1    3.00GiB
   /dev/sdf1    4.00GiB
   /dev/sda1    5.00GiB
   /dev/sdc1    5.00GiB
   /dev/sdg1    3.00GiB
   /dev/sdb1    3.00GiB
   /dev/sdk1    1.00GiB

System,RAID1C3: Size:64.00MiB, Used:1.03MiB (1.61%)
   /dev/sda1   64.00MiB
   /dev/sdc1   32.00MiB
   /dev/sdd1   32.00MiB
   /dev/sdb1   32.00MiB
   /dev/sdk1   32.00MiB

Unallocated:
   /dev/sdi1 314.51GiB
   /dev/sdf1 314.52GiB
   /dev/sda1 314.96GiB
   /dev/sdc1 313.99GiB
   /dev/sdg1 314.52GiB
   /dev/sdd1 314.73GiB
   /dev/sdb1 314.60GiB
   /dev/sdj1 119.24GiB
   /dev/sdk1 313.91GiB

Kód: [Vybrat]
Linux server 6.8.0-45-generic #45~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Sep 11 15:25:05 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.5 LTS
Release: 22.04
Codename: jammy


RDa

  • *****
  • 2 670
    • Zobrazit profil
    • E-mail
Re:Chyby na různých discích na Btrfs poli
« Odpověď #1 kdy: 08. 10. 2024, 00:44:30 »
Pokud jsi v praze tak ti s tim rsyncem pomuzu (mam misto nebo volne disky na pujceni), ale nenapada me jak to resit kdyz je ten FS takova netykavka (napr. na ntfs a ext4 jsem psal vlastni driver/dekoder.. az me klene btrfs tak nejspis budu muset taky udelat nejake nastroje - vetsina magickych samochodu je k nicemu - obnova dat je vzdy interaktivni proces podle me).

Jsem ted nedavno nasadil btrfs na hlavni (8x14T) a zalozni (16x8T) stroj, data/meta oboji v raid6 (jsem si vedom nedokonalosti R5/R6 u btrfs pri padu - ale zas od toho jsou zalohy).

Pokud mas R1 a dva disky - zkousel jsi nechat v systemu pouze jeden a udelat scrub, nebo jine cteni - mam napr. z dob ext4 skrip ktery dela find .  -type f -exec md5sum (+- syntakticka omacka). Tohle bys mohl pustit nezavisle na obou pulkach mirroru a pak udelat sort & diff..  zda jsou tam ty data vazne nejak poskozena a na kterych souborech konkretne.

Re:Chyby na různých discích na Btrfs poli
« Odpověď #2 kdy: 08. 10. 2024, 06:53:33 »
Tak ty neopravitelné chyby jsou právě vlastnost RAID1. Dříve MD-RAID1 dostal nějaká data z jednoho disku a jiná z druhého disku - je to chyba, ale které si má vybrat jako správná - to neví. Ten rozdíl může jednoduše vzniknout třeba neočekávaným vypnutím, kdy jeden disk už stihne zapsat a druhý ne.

Na BTRFS by mohl z nich vybrat ta, u kterých pak bude souhlasit csum souboru, ale nevím, jestli je to tak implementováno. Rozdíl v datech je na úrovni bloků - pak by musel hledat jakému souboru to patří a ten kontrolovat. To v podstatě říkal RDa, že máte udělat scrub (kontrola csum) na jen jednom zapnutém disku. Tak se pozná, jestli na jednom z disku není některý soubor celý dobře. Ale samozřejmě soubor - to je více bloků. Takže to tak být vždy nemusí.

rmrf

Re:Chyby na různých discích na Btrfs poli
« Odpověď #3 kdy: 08. 10. 2024, 08:42:00 »
Poslední scrub proběhl v pořádku. Akorát to hází chybu v souboru marun/files/fotky/raw/2023-03-02/IMGP1750.dng, který má špatný kontrolní součet. Soubor je v háji, pokud neexistuje záloha někde jinde.

Kromě scrubu existuje i btrfs check, který zkontrouje strukturu btrfs na discích.

Re:Chyby na různých discích na Btrfs poli
« Odpověď #4 kdy: 08. 10. 2024, 10:14:52 »
A ty IO errory vyhazuje jen btrfs nebo už samotné disky/řadič? V logu jsou jen hlášky od btrfs, nic jiného tam není.

Z čeho je ten NAS postavený? Nějaký server nebo skládačka ze spotřebních komponent?

Mám totiž zkušenost, že se dokáže porouchat i běžný SATA kablík nebo mě třeba napadá, zda ten řadič zvládne obsluhovat 4TB disky. Podle HW a jeho staří bych tedy kontroloval i takovéhle věci, které jsou ještě před btrfs.


Re:Chyby na různých discích na Btrfs poli
« Odpověď #5 kdy: 08. 10. 2024, 11:43:29 »
Co rika smart? Zbehl si long test na vsech discich? Co rikaji smart logy (pokud je zarizeni umi) a pocitadla? Predpokladam ze na vsech zarizeni ho monitorujes. Tim spis pokud je to sbirka disku ruzneho puvodu.
Treba zminenou poruchu na sata kabliku lze vycist ze smart logu nebo kernel messages.

jjrsk

  • ****
  • 483
    • Zobrazit profil
Re:Chyby na různých discích na Btrfs poli
« Odpověď #6 kdy: 08. 10. 2024, 13:40:45 »
Tak ty neopravitelné chyby jsou právě vlastnost RAID1....
Jenze btrfs neni md ... a pokud mas zapnute COW (coz bydefault je) a pokud funguje spravne, tak se presne tohle vubec stat nemuze. Protoze do metadat se aktualizuje pri zapisu az potom, co mas potvrzeny zapis na disk(y). Takze bud data zapsana mas, nebo nemas ale nic mezi tim.

Jinak bych rek, ze postup "mam chyby na 2 discich = pridam do pole dalsi 2 disky" je vadny od sameho pocatku. Specielne kdyz dotycny provozoval defakto jbod. Kdyz uz, tak by davalo smysl vedle udelat jine pole, data na nej prekopirovat (ta co pujdou) a pak se pripadne zaobirat temi, ktera ne.

Dtto pokusy o replace, co chces replacovat kdyz tam nemas zadny pole ??? Replace je akce, ktera funguje kdyz mas R1 nebo R5/6. To pole pak umi data dopocitat, ale co chces asi tak dopocitavat, kdyz mas jeden vadnej disk?


rmrf

Re:Chyby na různých discích na Btrfs poli
« Odpověď #7 kdy: 08. 10. 2024, 14:13:53 »
Ty chyby mu tam vznikly, když měl data pouze single. A od té doby se mu tam převalují z disku na disk, i když už teď má raid1.
Prostě zkontrolovat hardware, zjistit, jestli smart testy hází nějaké chyby. Pokud ano, disk(y) vyhodit, nebo sledovat a dávat velkého majzla.
Chybná data smáznout, případně nadradit zálohou, pokud nějaká je.
Jinak tomu btrfs jako takovému nejspíš vůbec nic není. Jenom ukazuje, že hardware pod ním pomrvil data.

Re:Chyby na různých discích na Btrfs poli
« Odpověď #8 kdy: 08. 10. 2024, 17:26:25 »
RDa: díky za ochotu, ale z jižní moravy to je docela z ruky. Co se týče těch ostatních rad, to začíná být docela pokročilé a teď si úplně na takovéto experimenty netroufám. Počkám na další rady.

Jan Fikar: já bych očekával, že když scrub najde problém tak ho opraví z té druhé kopie. scrub už jsem pustil mnohokrát a pořád to tam visí.

rmrf: takový soubor tam aktuálně není, nemůže být v některém snapshotu? nešlo by zjistit ve kterém? btrfs check zkusím

Vantomas: dívám se teď že tam opravdu pár chyby komunikace s disky je. ale já sem ty disky i v pozicích prohazoval a pořád byly problémové ty stejné tak mě to mate.

Trident Vasco: smart sleduju na všech discích (přiložím). Smartem si nejsem úplně jistý, některým hodnotám nerozumím a u některých disků se stane že extended self test hodí chybu ale po zopakování chybu nehodí. Nas je z relativně nových desktopových komponent. MB je Gigabyte B560M D3H, CPU Intel(R) Pentium(R) Gold G6405 CPU @ 4.10GHz, a 2x KHX2133C14/8G, jediné 2 problémové místa vidím dodatečnou kartu SATA (MB neměla dost portů) a možná kabely, (celý lshw v příloze).

jirsik: chtěl bych to upřesnit. původně to jbod byl - neměl jsem dost kapacity. ale při první chybě jsem to nakonec rozšířil na raid1, ale mám pocit (úplně si to nepamatuju) že sem se poškozeného souboru tenkrát zbavil. Důvod proč jsem se snažil ty data přehrát byl, protože jsem chtěl ty disky otestovat, tudíž jsem se je snažil odstranit z pole, protože jsem o replace nevěděl tak sem šel cestou add a remove.

rmrf: jak jsem psal výše mám pocit že jsem se chyb zbavil, ale je to nějakou dobu a už si to nepamatuju. Pak jsem neměl čas to řešit