Når du har oprettet en Btrfs RAID, kan du tilføje flere lagerenheder til RAID for at udvide RAID. Men når du først har tilføjet flere lagerenheder til RAID, spreder Btrfs ikke de eksisterende data / metadata / systemdata automatisk til de nye lagerenheder. Så du får muligvis ikke den ønskede gennemstrømning (læse / skrivehastighed) ud af RAID, og den kan muligvis ikke udfylde de nye lagerenheder med de krævede overflødige data. Så RAID-arrayet kan muligvis ikke overleve det ønskede antal drevfejl.
For at løse disse problemer leverer Btrfs-filsystemet et indbygget balanceringsværktøj. Btrfs-balanceværktøjet spreder data / metadata / systemdata for de eksisterende lagerenheder i RAID til de nyligt tilføjede lagerenheder.
I denne artikel vil jeg vise dig, hvordan du bruger Btrfs-balanceværktøjet til at sprede data / metadata / systemdata for de eksisterende lagerenheder i RAID til de nyligt tilføjede lagerenheder. Så lad os komme i gang!
Forkortelser
RAID - Redundant matrix med billige / uafhængige diske
MB - Megabyte
GB - Gigabyte
Forudsætninger
For at følge denne artikel skal du have en fungerende Btrfs RAID- eller multi-enhedsopsætning.
Jeg har oprettet en Btrfs RAID i RAID-0 konfiguration ved hjælp af 4 lagerenheder sdb, sdc, sdd, og sde.
Som du kan se, tildelt Btrfs-filsystemet 1 GB diskplads til data1 256 MB diskplads til metadata2, og 4 MB diskplads til systemdata3 fra hver af lagerenhederne i RAID.
Om 18.75 GB ud af 20 GB er stadig ikke allokeret4 fra hver af RAID's lagerenheder.
$ sudo btrfs filsystembrug / data
Skrivning af et script til generering af tilfældige filer
For at vise dig, hvordan Btrfs-balancevæ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-genfiler.sh i / usr / local / bin / biblioteket 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 har en størrelse på 256 MB.
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:
$ sudo chmod + x / usr / local / bin / genfiles.sh
Det genfiles.sh shell-script skal nu være tilgængeligt som andre kommandoer.
$ hvilke genfiler.sh
Generering af tilfældige filer i Btrfs-filsystemet
Vi ønsker at generere tilfældige filer i Btrfs RAID. Lad os sige, at Btrfs RAID er monteret på /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
Som du kan se, tildelte Btrfs RAID 2 GB fra hver af de lagerenheder, der blev føjet til RAID. Tidligere tildelte Btrfs RAID 1 GB fra hver af de lagerenheder, der blev føjet til RAID.
Den ikke-tildelte diskplads er reduceret fra 18.75 GB til 17.75 GB i alle RAID's lagerenheder.
$ sudo btrfs filsystembrug / data
Tilføjelse af en anden lagerenhed til Btrfs RAID
For at vise dig, hvordan du balancerer en Btrfs RAID efter tilføjelse af en ny lagerenhed, skal du tilføje en ny lagerenhed til den.
Jeg har tilføjet en ny harddisk sdf til min computer, som jeg vil føje til Btrfs RAID monteret på /data vejviser. Lad os se, hvordan man gør det.
$ sudo lsblk -e7
Naviger til en anden mappe (i.e., HJEM bibliotek) fra /data katalog som følger:
$ cd
For at tilføje lagerenheden sdf til Btrfs RAID monteret på /data bibliotek, kør følgende kommando:
$ sudo btrfs enhed tilføje / dev / sdf / data
Som du kan se, lagerenheden sdf føjes til Btrfs RAID. RAID-størrelsen er steget fra 80 GB til 100 GB.
$ sudo btrfs filsystembrug / data
Balancering af Btrfs RAID
Som du kan se, er den nyligt tilføjede lagerenhed (sdf) af RAID (monteret på /data bibliotek) har 20 GB ikke-allokeret, og de andre lagerenheder (sdb, sdc, sdd, sde, etc.) har 17.75 GB ikke allokeret.
$ sudo btrfs filsystembrug / data
Dataene1, metadata2, og systemdata3 er kun tilgængelige på RAID's eksisterende lagerenheder, ikke den nyligt tilføjede lagerenhed.
At sprede data, metadata og systemdata på alle RAID's lagerenheder (inklusive den nyligt tilføjede lagerenhed) monteret på /data bibliotek, kør følgende kommando:
$ sudo btrfs balance start - fuld balance / data
Det kan tage et stykke tid at sprede data, metadata og systemdata på alle RAID's lagerenheder, hvis det indeholder en masse data.
Når RAID's lagerenheder er korrekt afbalanceret, skal du se følgende meddelelse.
Som balancen er afsluttet, har den nyligt tilføjede lagerenhed en lige så stor mængde ikke-allokeret diskplads som de andre lagerenheder i RAID.
Efter balanceoperationen tildeles en lige stor mængde diskplads som de andre lagerenheder i RAID til data, metadata og systemdata fra den nyligt tilføjede lagerenhed (sdf) af RAID.
Konklusion
I denne artikel har jeg diskuteret formålet med Btrfs-balanceværktøjet samt hvordan man balancerer et Btrfs RAID- eller multi-enheds-filsystem efter tilføjelse af nye lagerenheder til RAID- eller multi-enheds-filsystemet.