I et Btrfs-filsystem med flere enheder eller Btrfs RAID, afhængigt af filsystemkonfigurationen, kan der være flere kopier af data / metadata-blokke, der er gemt forskellige steder på lagerenhederne, der er føjet til Btrfs-filsystemet. Når Btrfs-skrubbeværktøjet finder en beskadiget data / metadata-blok, søger det i alle lagerenheder, der er føjet til Btrfs-filsystemet for duplikatkopier af den data / metadata-blok. Når en kopi af den pågældende data / metadata-blok er fundet, overskrives den beskadigede data / metadata-blok med den korrekte data / metadata-blok. Sådan reparerer Btrfs-skrubbeværktøjet beskadigede data / metadata-blokke i et Btrfs-filsystem med flere enheder eller Btrfs RAID.
I denne artikel vil jeg vise dig, hvordan du bruger Btrfs-skrubbeværktøjet til at finde og reparere beskadigede data / metadata-blokke i et Btrfs-filsystem med flere enheder eller Btrfs RAID. Så lad os komme i gang.
Forkortelser
RAID - Redundant matrix med billige / uafhængige diske
GB - Gigabyte
Forudsætninger
For at følge denne artikel skal du have et fungerende Btrfs-filsystem med flere enheder eller et Btrfs RAID.
Jeg har oprettet en Btrfs RAID i RAID-1 konfiguration (monteret på /data bibliotek) ved hjælp af 4 lagerenheder sdb, sdc, sdd, og sde, som du kan se på skærmbilledet nedenfor. Jeg bruger denne Btrfs RAID til Btrfs-skrubbedemonstrationen i denne artikel.
$ sudo btrfs filsystembrug / data
Hvis du har brug for hjælp til installation af Btrfs-filsystemet på Ubuntu, skal du kontrollere min artikel Installer og brug Btrfs på Ubuntu 20.04 LTS.
Hvis du har brug for hjælp til installation af Btrfs-filsystemet på Fedora, skal du se min artikel Installer og brug Btrfs på Fedora 33.
Hvis du har brug for hjælp til at oprette en Btrfs RAID, skal du tjekke min artikel Sådan opsættes Btrfs RAID.
Generering af dummy-filer på Btrfs-filsystemet
For at vise dig, hvordan Btrfs-skrubbeværktøjet fungerer, er vi nødt til at generere nogle tilfældige filer for at udfylde Btrfs-filsystemet. Lad os oprette et shell-script, der gør netop det.
Opret et nyt shell-script genfiles.sh i / usr / local / bin / katalog som følger:
$ sudo nano / usr / local / bin / genfiles.sh
Indtast de følgende linjer med koder i genfiles.sh skal script.
#!/ bin / bashmens det er sandt
gør
FILENAME = $ (uuidgen)
ekko "[Opretter] $ FILENAME"
dd if = / dev / random of = $ FILENAME bs = 1M count = 256 status = progress
ekko "[Oprettet] $ FILENAME"
Færdig
Når du er færdig, skal du trykke på
Det genfiles.sh shell-script kører en uendelig mens løkke.
mens det er sandtgør
# andre koder
Færdig
Den følgende linje genererer et UUID ved hjælp af uuidgen kommando og gemmer UUID i FILNAVN variabel.
Den følgende linje udskriver en besked på konsollen før filen FILNAVN genereres.
Den følgende linje genererer en ny tilfældig fil FILNAVN bruger dd kommando. Filen bliver 256 MB i størrelse.
Den følgende linje udskriver en besked på konsollen efter filen FILNAVN genereres.
Tilføj udfør tilladelse til genfiles.sh shell-script som følger:
s
Det genfiles.sh shell-script skal nu være tilgængeligt som andre kommandoer.
$ hvilke genfiler.sh
Lad os generere nogle tilfældige filer i Btrfs RAID monteret i /data vejviser.
Naviger til /data mappe, hvor Btrfs RAID er monteret som følger:
$ cd / data
Som du kan se, er der ingen filer tilgængelige i min Btrfs RAID i øjeblikket.
$ ls -lh
For at generere nogle tilfældige filer i den aktuelle arbejdsmappe (/data i dette tilfælde), kør genfiles.sh shell-script som følger:
$ sudo genfiles.sh
Det genfiles.sh shell script skal begynde at generere tilfældige filer i /data vejviser.
Det genfiles.sh script genererer tilfældige filer. Lad scriptet køre i et par minutter, så det fylder ca. 2-3 GB diskplads på Btrfs RAID.
Når du vil stoppe genfiles.sh skal script, tryk
Som du kan se, genereres nogle tilfældige filer i Btrfs RAID.
$ ls -lh
Jeg har genereret ca. 13 GB tilfældige filer i Btrfs RAID monteret i /data bibliotek, som du kan se på skærmbilledet nedenfor.
$ sudo du -sh / data
Arbejde med Btrfs Scrub Tool
I dette afsnit vil jeg vise dig, hvordan du bruger Btrfs-skrubbeværktøjet. Lad os komme igang.
Du kan starte skrubbe processen på Btrfs filsystemet monteret på /data bibliotek med følgende kommando:
$ sudo btrfs skrubbe start / data
En Btrfs-skrubbe-proces skal startes på Btrfs-filsystemet monteret på /data vejviser.
Du kan se status for Btrfs-skrubbe-processen, der kører på Btrfs-filsystemet monteret på /data katalog som følger:
$ sudo btrfs skrubber status / data
Som du kan se, er Btrfs-skrubbeprocessen stadig kører.
Skrubning af et Btrfs-filsystem eller Btrfs RAID, der har mange filer, tager lang tid at gennemføre.
Når Btrfs-skrubbe-processen er afsluttet, skal status ændres til færdig, som du kan se på skærmbilledet nedenfor.
$ sudo btrfs skrubber status / data
Du kan også se Btrfs-skrubbestatus for hver af de lagerenheder, der er føjet til Btrfs-filsystemet (monteret i /data katalog) separat som følger:
$ sudo btrfs skrubber status -d / data
Jeg har fortalt dig, at Btrfs-skrubbe-processen tager lang tid at gennemføre på et stort Btrfs-filsystem. En stor fordel ved Btrfs-skrubbeværktøjet er, at processen kan stoppes og genoptages når som helst.
Lad os se, hvordan vi sætter en Btrfs-skrubbe på pause og genoptager dem.
Start først en ny Btrfs-skrubbe-proces på Btrfs-filsystemet monteret i / data-biblioteket som følger:
$ sudo btrfs skrubbe start / data
For at annullere eller pause Btrfs-skrubbe-processen, der i øjeblikket kører på Btrfs-filsystemet monteret på /data bibliotek, kør følgende kommando:
$ sudo btrfs skrubbe annullere / data
Den kørende Btrfs-skrubbe-proces skal annulleres eller pauses.
Som du kan se, er Btrfs-skrubbestatus afbrudt. Så Btrfs skrubbe processen kører ikke længere.
$ sudo btrfs skrubber status / data
For at genoptage Btrfs-skrubbe-processen, som du har annulleret eller sat på pause, skal du køre følgende kommando:
$ sudo btrfs skrubbe CV / data
Btrfs-skrubbe-processen skal genoptages.
Som du kan se, er Btrfs-skrubbestatus nu kører. Så Btrfs-skrubbe-processen genoptages.
$ sudo btrfs skrubber status / data
Når Btrfs-skrubbe-processen er afsluttet, skal Btrfs-skrubbestatus ændres til færdig.
$ sudo btrfs skrubber status / data
Konklusion
I denne artikel har jeg vist dig, hvordan du arbejder med Btrfs-skrubbeværktøjet til at finde og rette beskadigede data / metadata-blokke i et Btrfs-filsystem med flere enheder eller RAID. Jeg har vist dig, hvordan du annullerer / pause og genoptager en Btrfs-skrubbe-proces, når den også er startet.