Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Petr Kratochvíl

Stran: 1 [2] 3 4 5
16
Cteni 10GB z /dev/sdX+1GB neodpovida lokaci ktera je z tech sestavenych disku do /dev/mdX+1GB

To je pravda. Šlo mi hlavně o čtení z jiného místa než kam se zapisuje. Jiné testy ukázaly, že asi vůbec nezáleží na offsetu, problém se projevil stejně i při jiných offsetech.

A pokud pises "provadi se zapis na jine misto", tak v pripade ze mas nad tim LVM, je zcela mozne ze ty bloky se ti prekryvaj a meni se ti /dev/mdX prave tam kde to necekas.

Chápu přesně pointu, ale LVM mám na šifrovaném oddílu, který není připojený. Tj. nepoužil jsem cryptsetup luksOpen a problém se přesto projevuje. Pro jistotu uvedu vrstvy jak leží na sobě (jsem otevřen radám na vylepšení):

  • fyzicky 7 disků 8 TB
  • na každém disku partitiona přes celý disk /dev/sdX1
  • mdadm RAID 6 přes všech 7 partitions (vytváří 40 TB blokové zařízení /dev/md0)
  • dm-crypt/LUKS
  • LVM Physical Device
  • LVM Volume Group (sestává se jen z /dev/md0)
  • LVM Logical Volumes
  • ext4 a Btrfs na LVM logických oddílech (některé r, některé rw; některé snapshoty)
  • Btrfs oddíly mají vždy 1 nebo více subvolumes (když už dělíme do vrstev)

Problém se projevuje před zadáním hesla, tj. na prvních 3 vrstvách:

  • fyzicky 7 disků 8 TB
  • na každém disku partitiona přes celý disk /dev/sdX1
  • mdadm RAID 6 přes všech 7 partitions (vytváří 40 TB blokové zařízení /dev/md0)

17
Vypni cache jednotlivych disku, vykon ti teda dost padne, ale aspon na test to zkus.

Díky za tip!

Klobouk dolů, to by mě nenapadlo.

Cache disků jsem vypnul takto příkazem hdparm v cyklu:

Kód: [Vybrat]
for DEV in sdb1 sdc1 sdd1 sdi1 sdj1 sdk1 sdl1 ; do hdparm -W 0 /dev/$DEV ; done

A zkusil znova testy čtení při zápisu (20x čtení stejných 10 GiB při kontinuálním zápisu na jiný offset). Testy postupně dopadly:

  • Vypnutí diskových cache.
  • Čtení při zápisu: OK
  • Zapnutí diskových cache.
  • Čtení při zápisu: náhodná data
  • Vypnutí diskových cache.
  • Čtení při zápisu: OK

Pro info: čtení při zápisu je vypnutou cache cca 5x pomalejší, s čímž počítáme.

Prosím, jaká je tedy prvotní příčina a jak postupovat dál?

18
Vyřešeno.

Dlužím zde ještě pár odpovědí Vám a případným náhodným kolemjdoucím.

Jinou zálohu

Na konec jsem obnovil zálohu z CrashPlan, což trvalo snad den a byla shodou okolností stará asi 2 měsíce, proto jsem se tomu chtěl za každou cenu vyhnout, ale na konec tato záloha kupodivu stačila (nová data byla jinde v Git repozitářích apod.).

a zveřejnit

Wedos a jejich moderní VPS ON.

Což zde asi řadu lidí nepřekvapí. Ale čtěte dál, prosím.

a opustit tento dementní hosting.

Wedos rozeslal e-mail s omluvou a popisem ze kterých technologií (FS, ...) přejdou na které, aby se to již neopakovalo.

Navíc mi jako omluvu prodloužili VPS o 3 měsíce čímž ušetřili tisíce Kč a navíc jsem je přemluvil k navýšení RAM zdarma u jiné VPS u nich, což je drobná polehčující okolnost.

Dnes mám uptime své VPS ON přesně 100 dní, což cca odpovídá době obnovy z mojí zálohy u služby CrashPlan, tj. co tím chci říct: od té doby s VPS již nebyl žádný problém.

Jelikož mění používané technologie, tak je velká šance, že se problém již nebude opakovat a proto jim dávám druhou šanci a zůstávám u nich (ale s inkrementálním zálohováním každých 15 minut všech VPS ke mně, zálohuji rozdíly snapshotů přes btrfs send a btrfs receive a k tomu paralelně přes CrashPlan, když už mě jednou zachránil).

19
Ahoj všichni,

předem díky za jakoukoliv konstruktivní radu, došly mi nápady.

Úvod

Mám 7 disků, každý z nich 8 TB s jedním velkým oddílem /dev/sd[bcdijkl]1, vytvářející přes mdadm RAID 6 jedno blokové zařízení /dev/md0 velké 40007 GB. Na celém /dev/md0 jsou data šifrovaná přes dm-crypt/LUKS, na kterém je LVM a na něm cca 20 oddílů ext4 a Btrfs, ale to je teď vedlejší, protože problém nastává již před připojením šifrovaného oddílu, tj. před provedením cryptsetup luksOpen /dev/md0 <dm_name>.

Stručný popis

Občas se čtou z mdadm RAID 6 pole /dev/md0 náhodná data, při současném zápisu se čtou velmi často náhodná data. Čtení z jednotlivých disků čte vždy stejná data, nikdy náhodná. Dle mdadm check je pole v pořádku.

Experiment č. 1: čtení z /dev/md0

Pokud zkusím číst opakovaně stejných 10 GiB z /dev/md0 od offsetu 1 TiB, mají data dle očekávání vždy stejný md5 checksum:

Kód: [Vybrat]
root@krato-space:~# for DEV in md0 ; do ( echo "==== $DEV ====" ; date ; for i in {1..6} ; do ( dd if=/dev/$DEV bs=1M count=10240 skip=1048576 status=none | md5sum ) 
; done ) ; done ; date
==== md0 ====
Po lis 26 12:13:26 CET 2018
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
Po lis 26 12:16:03 CET 2018

Experiment č. 2: čtení z /dev/md0

Občas je oproti očekávání ne vždy stejný md5 checksum (viz poslední):

Kód: [Vybrat]
root@krato-space:~# for DEV in md0 ; do ( echo "==== $DEV ====" ; date ; for i in {1..4} ; do ( dd if=/dev/$DEV bs=1M count=10240 skip=1048576 status=none | md5sum ) ; done ) ; done ; date
==== md0 ====
Po lis 26 22:20:25 CET 2018
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
03247245c2a9920f6acc2ce7ce51ad92  -
1e434d76b388b0c21dec709a6d1b6d20  -
Po lis 26 22:22:08 CET 2018

Experiment č. 3: čtení z /dev/md0 při zápisu

A teď pozor. Pokud při čtení zároveň probíhá jakýkoliv zápis na jiném místě pole, přečtu z /dev/md0 občas nebo pokaždé data s jiným checksumem.

Říkám si, že mi leží těch 7 SATA kabelů volně uvnitř i vně case (disky leží vedle case, dovnitř se už nevešly), tak zda nechytají nějaké rušení nebo nezlobí některý ze dvou SATA řadičů, jenže pokud čtu data z disků zvlášť, je checksum vždy v pořádku. První a poslední čtveřice jsou checksumy 10 GiB čtených z /dev/md0, sedm čtveřic mezi nimi jsou čtení z jednotlivých disků:

Kód: [Vybrat]
root@krato-space:~# for DEV in md0 sdb1 sdc1 sdd1 sdi1 sdj1 sdk1 sdl1 md0 ; do ( echo "==== $DEV ====" ; date ; for i in {1..4} ; do ( dd if=/dev/$DEV bs=1M count=10240 skip=1048576 status=none | md5sum ) ; done ) ; done ; date
==== md0 ====
Po lis 26 20:03:03 CET 2018
31a877f49150e0f6452b843d81a8c88d  -
9b2010d3fb1344139f9eba21ad309b7b  -
e11e03afc313e5de46105f15ffc33665  -
9bfde541773fc0ef03a4b1ff1c45621c  -
==== sdb1 ====
Po lis 26 20:08:15 CET 2018
7fdc1658562a2ecd4d676bf656c973a7  -
7fdc1658562a2ecd4d676bf656c973a7  -
7fdc1658562a2ecd4d676bf656c973a7  -
7fdc1658562a2ecd4d676bf656c973a7  -
==== sdc1 ====
Po lis 26 20:26:35 CET 2018
7c671e9e47fdb2604e2ecfcea6009218  -
7c671e9e47fdb2604e2ecfcea6009218  -
7c671e9e47fdb2604e2ecfcea6009218  -
7c671e9e47fdb2604e2ecfcea6009218  -
==== sdd1 ====
Po lis 26 20:45:38 CET 2018
bb14e932be6c2ae2751404a997c24712  -
bb14e932be6c2ae2751404a997c24712  -
bb14e932be6c2ae2751404a997c24712  -
bb14e932be6c2ae2751404a997c24712  -
==== sdi1 ====
Po lis 26 20:56:27 CET 2018
4fb8ad4d063fff30e39ff64205713952  -
4fb8ad4d063fff30e39ff64205713952  -
4fb8ad4d063fff30e39ff64205713952  -
4fb8ad4d063fff30e39ff64205713952  -
==== sdj1 ====
Po lis 26 21:07:44 CET 2018
00528ce93f8c54882d022f976004442f  -
00528ce93f8c54882d022f976004442f  -
00528ce93f8c54882d022f976004442f  -
00528ce93f8c54882d022f976004442f  -
==== sdk1 ====
Po lis 26 21:38:04 CET 2018
33d73ace82b8bc28fd284fc32c216039  -
33d73ace82b8bc28fd284fc32c216039  -
33d73ace82b8bc28fd284fc32c216039  -
33d73ace82b8bc28fd284fc32c216039  -
==== sdl1 ====
Po lis 26 21:45:57 CET 2018
842b476f2973e16403f3fc1a031b968a  -
842b476f2973e16403f3fc1a031b968a  -
842b476f2973e16403f3fc1a031b968a  -
842b476f2973e16403f3fc1a031b968a  -
==== md0 ====
Po lis 26 21:53:30 CET 2018
e08baf910b005f1f001c8258330a0637  -
4ce735569e51ad0e75d4775a0a2e565b  -
d740da3b4b7a2167ca369c9b00efe6d2  -
75f0c751bbd8f95b0ed6d49c379f9ff8  -
Po lis 26 22:06:22 CET 2018

Konkrétně u tohoto experimentu č. 3 jsem prováděl zápis tím způsobem, že jsem na jiném offsetu 1 GiB načetl 100 GiB dat do souboru na systémovém SSD disku:

Kód: [Vybrat]
dd if=/dev/md0 bs=1M count=102400 skip=1024 status=progress of=/root/md0_offset-1024M_size-102400M-2018-11-26-1308.bin

A tato data jsem pak při testu čtení v cyklu zapisoval zpět přesně tam, odkud jsem je přečetl:

Kód: [Vybrat]
for i in {1..10} ; do dd if=/root/md0_offset-1024M_size-102400M-2018-11-26-1308.bin bs=1M count=102400 seek=1024 status=progress of=/dev/md0 ; done

Chyba software vs. hardware

Nezkouším koupit nový hardware (kabely, case, zdroj, disky, ...), protože při čtení z jednotlivých disků zvlášť nikdy tento problém nepozoruji.

Vyloučení nekonzistence dat RAID 6

Už se určitě chystáte poradit mdadm check a mdadm resync. To by to ale bylo příliš jednoduché.

Před testy výše jsem provedl postupně:

  • mdadm resync ... našel 3688 chyb (dle čísla v /sys/block/md0/md/mismatch_cnt)
  • mdadm check ... našel 0 chyb (dle čísla v /sys/block/md0/md/mismatch_cnt)

Verze software


root@krato-space:~# lsb_release --description
Description:    Ubuntu 18.04.1 LTS

root@krato-space:~# uname --all
Linux krato-space 4.19.2-041902-generic #201811132032 SMP Tue Nov 13 20:34:19 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

root@krato-space:~# mdadm --version
mdadm - v4.1-rc1 - 2018-03-22

20
Server / Re:Unmountable btrfs: bad tree block start
« kdy: 18. 10. 2018, 20:22:33 »
Na vydolování dat by měl pomoct "btrfs restore" (https://btrfs.wiki.kernel.org/index.php/Restore). V podstatě to udělá to, že projde všechna data na disku a co jde vykopíruje ven. Už jsem takhle z jednoho rozbitého FS soubory tahal, povedlo se bez problémů.

Díky. To je přesně to, co zkouším. Bohužel mi to obnovuje často jen části souborů, takže nevím, zda se na to spoléhat. Např. obnoví adresář s 20 soubory *.tgz, každý má podle ls -l velikost 50 GB. Celkem mají podle du -h velikost 15 GB a opravdu ani u jednoho kontrola tar ztf <filename.tgz> neprojde. Takto jsem obnovil cca polovinu adresářů, měly by zabírat min. 16 TB, zabírají ale necelé 3 TB. Možná to souvisí s tímto dotazem, který se při obnově často objevil (přesměroval jsem příkaz yes na stdin, ať nemusím zadávat 'y' ručně):

Kód: [Vybrat]
We seem to be looping a lot on /nas-real/restore-space/video/LinuxDays-roomdays/LinuxDays 2018 - neděle - Místnost 105.mp4, do you want to keep going on ? (y/N/a):

Znamená tento dotaz, zda má obnovit soubor s tím, že v něm nechá "díry" (sekvence nenaalokovaných NULLů) a nebo jinak že ten soubor usekne na místě první chyby dat (místo aby ho smazal, což bych uvítal víc)?

Jinak jedna záloha celého pole se zrovna vytvářela a soukala ven přes internet, ale stihl se zazálohovat cca 1 TB. Dalších 13 TB vyštrachám z disků po šuplíkách a zbytek? Snad jen osobní data, většina z toho zálohy. Beru to tak, že alespoň už ta data nebudu muset třídit a také toho volného místa najednou...

Až si budu příště hrát s Btrfs, rád bych celý Btrfs oddíl (resp. blokové zařízení) snapshotoval, ale jak na to? Když kernel vidí dvě Btrfs blokové zařízení se stejným UUID, tak je automaticky považuje za jeden celek (jako je RAID 0). Proto sami autoři vytváření bitových kopií nedoporučují, tj. vytvářet LVM snapshoty není dobrý nápad, viz https://btrfs.wiki.kernel.org/index.php/Gotchas#Block-level_copies_of_devices . Někdo nějaký nápad jak snapshotovat Btrfs oddíl jako takový (tj. ne subvolume)? Díval jsem se, zda umí LVM vytvořit skrytý snapshot, ale vypadá to, že neumí, viz z man lvcreate: "But for example, snapshots can only be created in the active state so -an cannot be used with --snapshot."

21
Server / Re:Unmountable btrfs: bad tree block start
« kdy: 17. 10. 2018, 21:59:28 »
Vystrel naslepo (BTRFS ani *buntu nepouzivam), pouzivaji i ostatni volumes kompresi? Nemohl to rozbit update?

ERROR: btrfs not compiled with zstd support


Díky i za výstřel. Btrfs umí už dlouho komprese zlib a zlo, ale zstd se naučilo teprve v listopadu 2017. Zkompiloval jsem si vlastní btrfs-progs s kouzelným argumentem "--enable-zstd" u configure. Nyní již btrfs-restore něco obnovuje. Mám podezření, že jen něco, ale lepší než nic. Tiše doufám, že neobnoví data, u kterých mu nebude sedět checksum (neví někdo?).

Zálohy mám, ale stručně řečeno roztroušené na 5 až 10 různých místech a nějaká nejnovější data v nich ještě chybí.

22
Server / Unmountable btrfs: bad tree block start
« kdy: 17. 10. 2018, 20:02:37 »
Zdravím,

nenapadne prosím někoho nějaká rada jak zkusit zachránit data?

Mám 40 TB Btrfs (obsazeno 32 TB) šifrované přes dm-crypt/LUKS ležící na diskovém poli mdadm RAID 6. Používám kompresi zstd, zapnuté datacow a checksum a mám tyto verze software (měly by být aktuální): OS Xubuntu 18.04.1 LTS, kernel 4.18.14-041814-generic, btrfs-progs 4.17

Prováděl jsem několik btrfs receive a mazal pár desítek subvolumes (je jich tam cca 800), když v tom jsem si všiml, že jeden subvolume nejde otevřít (chyba stejná jako dole v citaci z dmesg). Pole nešlo odpojit, že prý je používané, tak jsem restartoval.

Po restartu na mě bafá error:

Kód: [Vybrat]
root@krato-space:~# mount /dev/mapper/space /space
mount: /space: chybný typ souborového systému, chybný přepínač, chybný superblok na /dev/mapper/space, chybí kódová stránka nebo pomocný program nebo jiná chyba.

Kód: [Vybrat]
root@krato-space:~# mount /dev/mapper/space /space -o ro,nodatacow,nodatasum,rescan_uuid_tree,usebackuproot,nologreplay
mount: /space: chybný typ souborového systému, chybný přepínač, chybný superblok na /dev/mapper/space, chybí kódová stránka nebo pomocný program nebo jiná chyba.

V dmesg:

Kód: [Vybrat]
[ 1417.319669] BTRFS info (device dm-5): force zstd compression, level 0
[ 1417.319672] BTRFS info (device dm-5): setting nodatacow
[ 1417.319682] BTRFS info (device dm-5): disk space caching is enabled
[ 1417.319683] BTRFS info (device dm-5): has skinny extents
[ 1526.548506] BTRFS error (device dm-5): bad tree block start 10958796935674774848 24225444036608
[ 1526.559154] BTRFS error (device dm-5): bad tree block start 5626120839175671030 24225443971072
[ 1526.559180] BTRFS error (device dm-5): failed to read block groups: -5
[ 1526.638363] BTRFS error (device dm-5): open_ctree failed

Zoufalý pokus o záchranu dat jejich vydolováním nevyšel:

Kód: [Vybrat]
root@krato-space:~# btrfs restore -smvio /dev/mapper/space /star1/restore/
Restoring /star1/restore/smartphones
Restoring /star1/restore/smartphones/App_Backup_Restore
Restoring /star1/restore/smartphones/App_Backup_Restore/personal
Restoring /star1/restore/smartphones/App_Backup_Restore/personal/Archive_2_20170802_014258.txt
ERROR: btrfs not compiled with zstd support
Error copying data for /star1/restore/smartphones/App_Backup_Restore/personal/Archive_2_20170802_014258.txt
Restoring /star1/restore/smartphones/App_Backup_Restore/personal/Archive_3_20180503_044336.txt
ERROR: btrfs not compiled with zstd support
Error copying data for /star1/restore/smartphones/App_Backup_Restore/personal/Archive_3_20180503_044336.txt
Restoring /star1/restore/smartphones/App_Backup_Restore/personal/Archive_2_20180503_044336.txt
ERROR: btrfs not compiled with zstd support
...

A oprava také ne:

Kód: [Vybrat]
root@krato-space:~# btrfs check --repair -p /dev/mapper/space
enabling repair mode
checksum verify failed on 24225443971072 found CE56CADF wanted 623CE031
checksum verify failed on 24225443971072 found CE56CADF wanted 623CE031
bytenr mismatch, want=24225443971072, have=5626120839175671030
ERROR: cannot open file system

Nemluvě o tom, že běh btrfs check se mi ani dříve nikdy nezdařil, protože vždy po pár hodinách došla fyzická RAM 8 GB a nevyšel ani jeden pokus na PC s RAM 48 GB. Swap mám také a velký, ale btrfs check ho nerad používá, ale to je teď jedno.

Nelze nějak příkazu mount vnutit aby ignoroval (přeskakoval) problém "bad tree block start"? Existuje jakékoliv řešení jak se dostat alespoň k většině těch 32 TB dat?

23
Diky velmi za dosavadni rady, ale asi jsem se modlil malo a nebo ten hosting zalohuje opravdu hodne spatne.

Co by se dalo zkusit dal?

repair.sh

Kód: [Vybrat]
#!/bin/sh
set -x
DIR="/dev/mapper/linux-system"
btrfsck --repair "$DIR"
btrfsck --init-extent-tree "$DIR"
btrfsck --repair --init-extent-tree "$DIR"
btrfs check --repair --init-extent-tree "$DIR"
mount "$DIR" /media/linux-system -o recovery

stdout + stderr

Stejne errory a stejne mount chyby.

Kód: [Vybrat]
+ DIR=/dev/mapper/linux-system
+ btrfsck --repair /dev/mapper/linux-system
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
ERROR: cannot open file system
enabling repair mode
+ btrfsck --init-extent-tree /dev/mapper/linux-system
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
ERROR: cannot open file system
+ btrfsck --repair --init-extent-tree /dev/mapper/linux-system
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
ERROR: cannot open file system
enabling repair mode
+ btrfs check --repair --init-extent-tree /dev/mapper/linux-system
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
parent transid verify failed on 316823060480 wanted 669201 found 669285
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
ERROR: cannot open file system
enabling repair mode
+ mount /dev/mapper/linux-system /media/linux-system -o recovery
mount: /media/linux-system: wrong fs type, bad option, bad superblock on /dev/mapper/linux-system, missing codepage or helper program, or other error.

Kód: [Vybrat]
root@xubuntu:~# tail /var/log/syslog
Jul 25 11:47:17 xubuntu kernel: [ 8526.538193] BTRFS error (device dm-1): parent transid verify failed on 316779692032 wanted 669200 found 669282
Jul 25 11:47:17 xubuntu kernel: [ 8526.539002] BTRFS error (device dm-1): parent transid verify failed on 316779692032 wanted 669200 found 669282
Jul 25 11:47:17 xubuntu kernel: [ 8526.539006] BTRFS warning (device dm-1): failed to read tree root
Jul 25 11:47:17 xubuntu kernel: [ 8526.546243] BTRFS error (device dm-1): parent transid verify failed on 316689694720 wanted 669199 found 669282
Jul 25 11:47:17 xubuntu kernel: [ 8526.548020] BTRFS error (device dm-1): parent transid verify failed on 316689694720 wanted 669199 found 669282
Jul 25 11:47:17 xubuntu kernel: [ 8526.548026] BTRFS warning (device dm-1): failed to read tree root
Jul 25 11:47:17 xubuntu kernel: [ 8526.549930] BTRFS error (device dm-1): parent transid verify failed on 316629712896 wanted 669198 found 669277
Jul 25 11:47:17 xubuntu kernel: [ 8526.551346] BTRFS error (device dm-1): parent transid verify failed on 316629712896 wanted 669198 found 669277
Jul 25 11:47:17 xubuntu kernel: [ 8526.551351] BTRFS warning (device dm-1): failed to read tree root
Jul 25 11:47:17 xubuntu kernel: [ 8526.589922] BTRFS error (device dm-1): open_ctree failed

24
Server / Btrfs - errory při mount, btrfs rescue zero-log, ...
« kdy: 25. 07. 2018, 12:42:10 »
Zdravím,

mám VPS u jednoho hostingu, ten mi vlivem jeho chyby smazal celý 370 GB virtuální disk, obnovili mi ho z jejich zálohy, ale Btrfs na šifrovaném LVM při pokusu o mount píše chybu. Zkoušel jsem opravit, ale marně, viz níže. Nenapadne někoho něco jak to opravit?

Verze software

Kód: [Vybrat]
root@krato-space:~# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04 LTS
Release:        18.04
Codename:       bionic
root@krato-space:~# uname -a
Linux krato-space 4.17.8-041708-generic #201807180730 SMP Wed Jul 18 07:32:29 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
root@krato-space:~# btrfs --version
btrfs-progs v4.15.1

Chyba při mount

Kód: [Vybrat]
root@xubuntu:/media# mount /dev/mapper/linux-system linux-system
mount: /media/linux-system: wrong fs type, bad option, bad superblock on /dev/mapper/linux-system, missing codepage or helper program, or other error.
root@xubuntu:/media# tail /var/log/syslog
Jul 24 18:56:57 xubuntu dhclient[2686]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 6 (xid=0x823cbd3d)
Jul 24 18:57:03 xubuntu dhclient[2686]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 9 (xid=0x823cbd3d)
Jul 24 18:57:24 xubuntu kernel: [ 2019.510859] BTRFS info (device dm-1): disk space caching is enabled
Jul 24 18:57:24 xubuntu kernel: [ 2019.510861] BTRFS info (device dm-1): has skinny extents
Jul 24 18:57:24 xubuntu kernel: [ 2019.515375] BTRFS error (device dm-1): parent transid verify failed on 290030944256 wanted 685941 found 686068
Jul 24 18:57:24 xubuntu kernel: [ 2019.516184] BTRFS error (device dm-1): parent transid verify failed on 290030944256 wanted 685941 found 686068
Jul 24 18:57:24 xubuntu kernel: [ 2019.516188] BTRFS warning (device dm-1): failed to read tree root
Jul 24 18:57:24 xubuntu kernel: [ 2019.576034] BTRFS error (device dm-1): open_ctree failed
Jul 24 18:57:21 xubuntu dhclient[2686]: message repeated 2 times: [ DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 9 (xid=0x823cbd3d)]
Jul 24 18:57:30 xubuntu dhclient[2686]: DHCPDISCOVER on ens3 to 255.255.255.255 port 67 interval 12 (xid=0x823cbd3d)

Marné pokusy o opravu

Kód: [Vybrat]
root@xubuntu:/media# mount /dev/mapper/linux-system linux-system -o ro,usebackuproot
mount: /media/linux-system: wrong fs type, bad option, bad superblock on /dev/mapper/linux-system, missing codepage or helper program, or other error.

Kód: [Vybrat]
root@xubuntu:/media# btrfs rescue zero-log /dev/mapper/linux-system
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
Ignoring transid failure
Couldn't setup extent tree
Couldn't setup device tree
ERROR: could not open ctree

Kód: [Vybrat]
root@xubuntu:/media# btrfs check /dev/mapper/linux-system
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
parent transid verify failed on 290030944256 wanted 685941 found 686068
Ignoring transid failure
Couldn't setup extent tree
ERROR: cannot open file system

Kód: [Vybrat]
root@xubuntu:/media# mount /dev/mapper/linux-system linux-system -o ro
mount: /media/linux-system: wrong fs type, bad option, bad superblock on /dev/mapper/linux-system, missing codepage or helper program, or other error.

Dodatek: Zkusil jsem i mount -o recovery, ale také bez úspěchu.

25
Server / Re:Btrfs ztratilo část volného místa
« kdy: 10. 06. 2016, 14:14:55 »
Jenže ouha:

Kód: [Vybrat]
root@web6:/# btrfs subvolume snapshot -r /.snapshots/manual-2016-06-09-2136-all_ok /
ERROR: error accessing '/.snapshots/manual-2016-06-09-2136-all_ok'

Jsem už z toho všeho nějak zmatený, moje chyba.

Tímto se omlouvám čtenářům a s radostí i souborovému systému Btrfs a děkuji za pomoc s vyřešením problémů. Najdete níže rozdíl v parametrech oproti kódu v citátu výše? ;-)

Kód: [Vybrat]
root@web6:/# btrfs subvolume snapshot -r / /.snapshots/manual-2016-06-09-2136-all_ok
Create a readonly snapshot of '/' in '/.snapshots/manual-2016-06-09-2136-all_ok'

26
Server / Re:Btrfs ztratilo část volného místa
« kdy: 10. 06. 2016, 00:10:55 »
Asi mi něco uniká, ale co má ksakru za smysl v dnešní době řešit 200MB místa na disku za cenu totálního rozmrdání filesystému (jehož defaultní nastavení jsou asi defaultní proto, že to dává nějaký smysl)?

 ::) ::) ::)

Odpovím citáty:

Chtěl bych začít používat Btrfs všude kde mám nyní ext4, včetně ještě letos plánovaného datového RAID úložiště na více než 10 TB dat. Proto bych se rád naučil tento problém vyřešit jiným způsobem než zkopírovat data jinam, pak Btrfs partitionu znova vytvořit a na konec vrátit data zpět. U jedné VPS s 11 GB to problém není, ale však chápete.

Předem děkuji za jakékoliv konstruktivní rady.

navic na zacatku jsi mel metadata jak DUP tak single, to neni asi dobre

27
Server / Re:Btrfs ztratilo část volného místa
« kdy: 09. 06. 2016, 22:30:01 »
Tak se objevil ještě jeden problém, který může s tím vším souviset.

Po tom opakovaném spouštění "btrfs mconvert" a "btrfs balance" s různými parametry jsem si řekl, že na závěr vytvořím read-only snapshot. Jenže ouha:

Kód: [Vybrat]
root@web6:/# btrfs subvolume snapshot -r /.snapshots/manual-2016-06-09-2136-all_ok /
ERROR: error accessing '/.snapshots/manual-2016-06-09-2136-all_ok'

Tušíte někdo jak to vyřešit? Z dob před řešením volného místa mám vytvořené a dostupné 4 snapshoty, ale nový prostě nevytvořím, i když používám stejný způsob. Chybu "error accessing" znám v souvislosti s pokusem o smazání snapshotu vytvořeného utilitou apt-btrfs-snapshot, kterou jsem myslím dříve používal, ale tu jsem jednak odinstaloval a pak se nyní jedná o vytvoření a ne smazání snapshotu.

Volné místo by být mělo, navíc by ho nemělo být moc potřeba:

Kód: [Vybrat]
root@web6:/# btrfs fi df /
Data, single: total=9.00GiB, used=8.73GiB
System, single: total=64.00MiB, used=16.00KiB
Metadata, single: total=1.50GiB, used=759.33MiB
GlobalReserve, single: total=224.00MiB, used=2.59MiB
root@web6:/# df -h /
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda1        13G  9.7G  2.7G  79% /

28
Server / Re:Btrfs ztratilo část volného místa
« kdy: 08. 06. 2016, 13:01:47 »
Pro info: Zkusil jsem "btrfs balance" s různými parametry. První dvě varianty po chvíli napsaly "No space left on device", kdežto poslední se dokončila bez problémů:

Kód: [Vybrat]
time btrfs balance start / ; btrfs balance start -dusage=100 / ;  btrfs balance start -dusage=99 /

Také jsem před tím Metadata zesinglil, což by prakticky nemělo vadit, jelikož se jedná o SSD VPS, snad leda v případě zálohování binární kopií na klasický mechanický disk:

Kód: [Vybrat]
btrfs balance start -mconvert=single -v -f /

A výsledek?

Kód: [Vybrat]
root@web6:~# btrfs fi df /
Data, single: total=10.00GiB, used=9.07GiB
System, single: total=32.00MiB, used=16.00KiB
Metadata, single: total=1.25GiB, used=754.52MiB
GlobalReserve, single: total=224.00MiB, used=0.00B
root@web6:~# df /
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       13619200 10509080   2767944  80% /

13619200 = 10509080 + 2767944 + "zmizelých" 342176 kB (dříve 998336 kB)

Ok, df nevěřit. V tom případě je důležitější jiný údaj z toho řádku, na který imho aplikace a systém hledí při zápisu do souborů: Available: 2767944 kB

Výše zmíněné Btrfs příkazy pomohly. Bohužel nevím jak moc přesně, protože jsem před balance a mconvert=single něco ručně smazal, ale smazal jsem rozhodně méně než uvolněných více než 2 GB. Brzy ještě zkusím zda "btrfs check" stále píše chybu.

Každopádně teď už vím co v takové situaci příště dělat. Děkuji všem moc za rady.

29
Server / Re:Btrfs ztratilo část volného místa
« kdy: 07. 06. 2016, 12:10:04 »
tak zmatena cisla dela jenom stary kernel, ne? ja bych btrfs radeji provozoval na 4.6 nez na kernelu rady 3...

Kód: [Vybrat]
root@web6:~# uname -a
Linux web6 4.6.0-040600rc7-generic #201605081830 SMP Sun May 8 22:32:57 UTC 2016 x86_64 GNU/Linux
root@web6:~# btrfs subvolume list /
ID 283 gen 303818 top level 5 path @
ID 285 gen 18548 top level 283 path .snapshots/manual-2016-04-14-1623-very_clear_system
ID 286 gen 18549 top level 283 path .snapshots/manual-2016-04-15-1717-installed_and_configured
ID 287 gen 18550 top level 283 path .snapshots/manual-2016-04-19-0206-first_websites_incl_webman
ID 308 gen 303619 top level 283 path .snapshots/manual-2016-05-20-00-50-all_ok
ID 309 gen 303619 top level 283 path .snapshots/manual-2016-05-31-1725-all_ok
root@web6:~# btrfs qgroup show /
qgroupid rfer                 excl
-------- ----                 ----
0/5      16384                18446744073649876992
0/259    1193369600           0
0/260    1463951360           0
0/272    0                    0
0/273    12769861632          10737438720
0/274    18446744065036468224 0
0/275    18446744065125613568 18446744073709539328
0/276    18446744065125924864 18446744073709543424
0/277    18446744065128497152 18446744073709539328
0/278    18446744066230890496 0
0/279    18446744066230161408 18446744073709539328
0/280    18446744066221613056 0
0/281    18446744066252259328 18446744073569497088
0/282    18446744066447921152 0
0/283    3836088320           1323204608
0/284    18446744066164314112 18446744073709408256
0/285    1193598976           176877568
0/286    1464197120           180932608
0/287    2064633856           316268544
0/288    18446744065077616640 18446744073708093440
0/289    18446744065090887680 18446744073708716032
0/290    18446744065051447296 18446744073684271104
0/291    18446744066179928064 18446744073707323392
0/292    18446744066049306624 18446744073692155904
0/293    18446744066344050688 18446744073707667456
0/294    18446744066315300864 210194432
0/295    18446744066311512064 18446744073709023232
0/296    18446744066059468800 21733376
0/297    0                    0
0/301    3958255616           233730048
0/302    4273758208           346615808
0/303    3581575168           751820800
0/304    2835787776           94531584
0/305    18446744070282821632 0
0/308    3289006080           958746624
0/309    3950317568           1336872960

navic na zacatku jsi mel metadata jak DUP tak single, to neni asi dobre

vono myslim mkfs.btrfs detekuje SSD, nebo HDD a na SSD dela system/metadata single a na HDD DUP, toto jako by bylo v polovine convertu nebo co

asi bych udelal, nebo mkfst.btrfs znova

Kód: [Vybrat]
btrfs balance start -mconvert=single /

Ok, díky, zkusím.

30
Server / Re:Btrfs ztratilo část volného místa
« kdy: 07. 06. 2016, 11:04:05 »
Zkoušel jsi btrfs fi df? Ukáže podrobnější informace o tom co kolik žere. Například metadata jsou defaultně dokonce duplikována, pokud máš hodně malých souborů a tedy hodně metadat, tak se to podle mě může projevit.

Už to asi chápu. Klasické df do "Used" z nějakého důvodu nezapočítává duplikovaná metadata, která u mne dle "btrfs fi df" zabírají 940 MB:

Kód: [Vybrat]
root@web6:~# btrfs filesystem df /
Data, single: total=9.95GiB, used=9.72GiB
System, DUP: total=32.00MiB, used=16.00KiB
Metadata, DUP: total=1.35GiB, used=940.31MiB
GlobalReserve, single: total=240.00MiB, used=0.00B

A jelikož záhadně chybějící volné místo dle df je cca 720 MB, tak by to mohla být nezapočítaná metadata.

Kód: [Vybrat]
root@web6:~# df /
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       13619200 12367364    531612  96% /

Jenže 940 MB a 720 MB jsou trochu odlišné hodnoty a navíc to nevysvětluje tu neopravitelnou chybu z výpisu "btrfs check" a zmatená čísla ve výpisu "btrfs qgroup show".

btw: Tu ZFS partitionu na tom 8 TB SMR disku jsem včera opět zkusil připojit přes zfsonlinux read-write. Asi tak 15 hodin se prováděl příkaz "zpool import" a zuřivě to pracovalo a pak práce disku přestala a stroj přestal reagovat. Do syslogu se problém, ať už je jakýkoliv, nestihne zaznamenat. Včera jsem to zkusil ve virtuálce, ale totéž to dělá i nativně. Asi opravdu jedině data evakuovat na ne-SMR disk. Proto řeším, zda na ZFS nebo zda je již Btrfs dostatečně zralé.

Stran: 1 [2] 3 4 5