Puncte:2

Cum pot restabili un instantaneu LVM a unui volum mai mare pe un disc mai mic?

drapel in

Încerc să fac backup/restaurează un volum LVM pe un server local Ubuntu 20.04 (Focal Fossa). Serverul de producție are un LV de 500 GB, totuși până acum sunt utilizați doar 19 GB.

Serverul de dezvoltare locală are 24 GB spațiu liber unde intenționez să refac cei 19 GB din producție. Eu folosesc -L 24G ca parametru în timpul efectuării instantaneului LVM.Procesul nu reușește să se restabilească cu mesajul: „nu a mai rămas spațiu pe dispozitiv”:

Server de producție:

sudo lvcreate -s /dev/vg0/test -n backup_test -L 24G
sudo dd if=/dev/vg0/backup_test | lz4 > test_lvm.ddimg.lz4

1048576000+0 înregistrări în
1048576000+0 înregistrări
536870912000 de octeți (537 GB, 500 GiB) copiați, 967,79 s, 555 MB/s

sudo lvdisplay /dev/vg0/backup_test
  --- Volum logic ---
  Calea LV /dev/vg0/backup_test
  Nume LV backup_test
  Nume VG vg0
  UUID LV IsGBmM-VM7C-2sO4-VrC1-kHKg-EzcR-4Hej44
  LV Write Access citire/scriere
  Gazdă LV Creation, time leo, 2021-07-04 12:45:45 +0200
  Starea instantanee LV destinație activă pentru m360
  Status LV disponibil
  # deschis 0
  Dimensiune LV 500,00 GiB
  Actual LE 128000
  Dimensiunea mesei COW 24,00 GiB
  Masa COW LE 6144
  Alocat pentru instantaneu 0,01%
  Dimensiunea fragmentului de instantaneu 4,00 KiB
  Segmente 1
  Alocare moștenire
  Citiți înainte sectoare auto
  - setat în prezent la 256
  Blocați dispozitivul 253:10

Server de testare local:

sudo lvcreate -n restaurare -L 24.5G date
sudo mkfs.ext4 /dev/data/restore
sudo lz4 -d test_lvm.ddimg.lz4 | sudo dd of=/dev/data/restore

Atenție: se utilizează stdout ca ieșire implicită. Nu vă bazați pe acest comportament: folosiți în schimb `-c` explicit!
dd: scrierea în „/dev/data/restore”: nu a mai rămas spațiu pe dispozitiv
51380225+0 înregistrări în
51380224+0 înregistrări
26306674688 octeți (26 GB, 24 GiB) copiați, 1181,48 s, 22,3 MB/s

Există o modalitate de a restabili volumul de 500 GB care conține doar 19 GB pe un disc mai mic decât 500 GB?

Michael Hampton avatar
drapel cz
Nu restabiliți 19 GB, restabiliți 500 GB!
merlin avatar
drapel in
Dar ce semnificație are atunci parametrul în timpul lvcreate: -L 24G?
Michael Hampton avatar
drapel cz
Ați creat un volum de 24,5 GB.
merlin avatar
drapel in
Da, am făcut-o doar pentru a mă asigura că este suficient pentru 24G. Am creat mai întâi 24G, apoi a eșuat și l-am încercat cu puțin mai mult pentru a mă potrivi pentru orice mici diferențe.
Michael Hampton avatar
drapel cz
Dar aceasta este încă mult mai mică decât cei 500 GB pe care încercați să îi restaurați!
A.B avatar
drapel cl
A.B
Apropo, care este sistemul de fișiere de bază? ext4? xfs? btrfs? Altceva?
merlin avatar
drapel in
Ext4 ESTE sistemul de fișiere.
Puncte:5
drapel us

Datele pe care încercați să le restaurați au o dimensiune de 500 GB și nu se vor potrivi pe un volum logic de dimensiunea de 24 GB. Puteți fi mai selectiv cu privire la ceea ce transferați sau puteți aloca mai mult spațiu grupului de volum țintă.

Se pare că datele de pe volumul logic pe care îl faceți backup sunt de doar 19 GB. Există câteva moduri prin care puteți transfera acele date.

Dacă vă pasă doar de date și nu de sistemul de fișiere, puteți crea un nou sistem de fișiere (prin mkfs.ext4 sau așa) pe țintă și utilizați instrumente care funcționează pe fișiere în loc de dispozitive blocate, cum ar fi rsync(1) sau tar(1).

Alternativ, ai putea folosi fsarchiver(8), care poate face o copie de rezervă a unui sistem de fișiere și apoi îl poate restaura pe un dispozitiv mai mic.

În cele din urmă, puteți micșora dimensiunea dispozitivului bloc pentru care faceți backup cu resize2fs(8) și lvreduce(8). Puteți apoi să faceți copii de rezervă pentru volumul mai mic și să îl restaurați la un volum de dimensiuni similare pe noul server.

Puncte:2
drapel cn

Singura modalitate prin care vă puteți restaura datele este să utilizați un dispozitiv bloc care este comprimat (de exemplu, VDO, dispozitiv de buclă peste un sistem de fișiere comprimat, cum ar fi btrfs și ZFS).

Cu toate acestea, chiar dacă datele dvs. sunt de numai 17 GB, spațiul liber poate conține date din scrierile anterioare și întregul LV ar putea să nu fie atât de compresibil.

Ca sisteme de fișiere comprimate, puteți utiliza btrfs sau ZFS și puteți crea un fișier zero 500G pe care îl mapați pe un dispozitiv în buclă (cu losetup), sau, pe ZFS, puteți crea direct un dispozitiv bloc care este comprimat. Apoi restaurați LV-ul pe dispozitivul de blocare pe care l-ați creat la pasul anterior. Comprimarea ar trebui să vă ofere șansa de a restaura toate datele.

merlin avatar
drapel in
Ce raționament are atunci dimensiunea instantaneului volumului logic? Mărimea vacii?
Puncte:1
drapel cn

Două puncte de abordat.

Crearea unui instantaneu 24G LVM înseamnă că instantaneul va supraviețui 24G de schimbări între volumul original și volumul instantaneului. Dispozitivul instantaneu în sine va apărea ca și cum ar avea aceeași dimensiune cu volumul original. Chiar dacă nu faceți niciodată modificări la volumul instantaneului, orice modificare a volumului inițial va trebui înregistrată ca modificări între volumul original și instantaneu, iar acest lucru va consuma dimensiunea de 24G a instantaneului.

Pentru a face ceea ce încerci să faci, iată câteva idei:

  1. Pentru o copie nu atât de perfectă, utilizați doar o copie a fișierelor la nivel de sistem de fișiere:

pe serverul de testare:

sudo mount /dev/data/restore /mnt/restore

pe serverul sursă:

sudo rsync -avPAHX /source/dir/ root@testserver:/mnt/restore/
  1. Pentru o copie precisă la un moment dat, montați instantaneul și rsync acea:
sudo mount -r /dev/vg0/backup_test /mnt/backup_test
sudo rsync -avPAHX /dev/vg0/backup_test/ root@testserver:/mnt/restore/
  1. Dacă doriți cu adevărat să transferați imaginea de disc, va trebui mai întâi să micșorați sistemul de fișiere și volumul logic. Rețineți că mai întâi va trebui să demontați sistemul de fișiere.
sudo lvresize -L24G -r vg0/test

Atunci fă ce ai făcut.

Puncte:1
drapel ru

Conceptul de octeți (ne)utilizați nu există la nivelul LVM. Dacă un octet (sau de fapt un sector) conține date semnificative sau gunoi neutilizat este determinat de sistemul de fișiere care trăiește în interiorul LV. LVM nu știe ce este un sistem de fișiere. Tot ce face este că necesită o grămadă de discuri și le combină logic, conform instrucțiunilor tale. Nu-i pasă ce vei face cu acel volum combinat.

Aceasta înseamnă că faceți un instantaneu de 500 GB de date. LVM nu înțelege ce părți ale acestui instantaneu sunt semnificative și merită păstrate și care nu.

Ceea ce doriți să obțineți este posibil la nivel de sistem de fișiere prin imagini. Unele programe, cum ar fi partclone gratuit, înțeleg structurile sistemelor de fișiere și pot crea un imagine - în esență un fișier rar care conține doar părți ale sistemului de fișiere care sunt în uz. Problema aici este că dispozitivul țintă trebuie să aibă cel puțin aceeași dimensiune cu sursa, deoarece partclone nu ajustează geometria sistemului de fișiere: toate piesele stocate trebuie să intre în locațiile lor originale atunci când imaginea este restaurată.

Deci planul ar fi următorul:

  • Redimensionați sistemul de fișiere sursă la 25 GB (acest lucru nu necesită redimensionarea LV!)
  • Imaginează-l cu partclone sau ceva similar
  • Recreează manual LV pe țintă
  • Restaurați sistemul de fișiere din imagine

O variantă a acestui lucru ar fi redimensionarea sistemului de fișiere la 25 GB și apoi trimiterea instantaneului LVM. Se va eroa cu „nici spațiu rămas pe dispozitiv”, deoarece încă trimiteți 500 GB întregi, dar este în regulă, deoarece numai primii 25 GB din volum vor conține sistemul de fișiere.

Oricum, probabil va trebui să ajustați fstab-ul dacă acestea sunt volume bootabile, așa că fiți pregătiți pentru asta.

Puncte:0
drapel dk

Trebuie să utilizați lvconvert comanda cu --mergesnapshot opțiunea și numele instantaneului volumului logic pentru a restabili un volum logic LVM. Cand --mergesnapshot este utilizată opțiunea, instantaneul este îmbinat în volumul logic original și apoi șters.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.