====== Reorganizarea subvolumelor Btrfs (Fedora, Ubuntu, Linux Mint, Debian, Arch Linux) ====== Când instalezi o distribuție pe Btrfs, installer-ul creează de obicei doar subvolumele minime: unul pentru rădăcină și, eventual, unul pentru ''/home''. Funcționează, dar dacă vrei să folosești snapshot-uri ale sistemului (manual, cu [[http://snapper.io/|Snapper]] sau cu Timeshift), e mai practic ca jurnalele, cache-ul și fișierele temporare să stea în subvolume separate, ca să nu ajungă în fiecare snapshot. În acest tutorial transformăm structura implicită într-una de forma: rădăcina → / home → /home snapshots → /.snapshots var_log → /var/log var_cache → /var/cache var_tmp → /var/tmp Ce câștigăm: * **Un sistem mai ordonat**, cu datele separate după rolul lor. * **Snapshot-uri mai mici și mai curate**, fără jurnale, cache sau fișiere temporare în ele. * **Un sistem pregătit pentru snapshot-uri**, fie că le faci de mână, fie cu un program dedicat. Toată operațiunea se face dintr-un Live USB, nu din sistemul instalat. ===== Ce structură ai acum ===== Fiecare distribuție denumește altfel subvolumele, așa că pașii diferă puțin. Tabelul de mai jos arată ce creează installer-ul în mod implicit: ^ Distribuție ^ Rădăcina (/) ^ /home ^ Alte subvolume existente ^ | Fedora | ''root'' | ''home'' | - | | Ubuntu, Linux Mint (și derivatele lor) | ''@'' | ''@home'' | - | | Debian | ''@rootfs'' | (în interiorul ''@rootfs'') | - | | Arch Linux (archinstall) | ''@'' | ''@home'' | ''@log'', ''@pkg'', ''@.snapshots'' | | openSUSE | ''@'' | ''@/home'' | ''@/.snapshots'', ''@/var'', ''@/opt'' și altele | **openSUSE** vine deja cu o structură completă de subvolume și cu Snapper configurat din instalare, deci acest tutorial nu se aplică. Nu modifica structura de pe openSUSE dacă nu știi exact ce faci. **Arch Linux instalat manual:** structura depinde de ce ai creat tu. Dacă ai doar ''@'' și ''@home'', urmează tab-ul **Ubuntu / Mint**, pașii sunt identici. Tab-ul **Arch Linux** presupune structura creată de ''archinstall''. În pașii de mai jos, comenzile care diferă de la o distribuție la alta sunt puse în tab-uri. Alege tab-ul distribuției tale și urmează-l pe tot parcursul tutorialului. ===== Înainte de a începe ===== **Fă un backup complet înainte de orice!** Modificăm structura de montare a sistemului, iar o greșeală poate face ca sistemul să nu mai pornească. Ai nevoie de: * un **Live USB** al distribuției tale, de preferat aceeași versiune ca cea instalată sau una mai nouă (orice Live USB modern care are ''btrfs-progs'' merge, dar e mai simplu cu al distribuției tale); * un backup verificat (deschide-l și asigură-te că fișierele chiar sunt acolo); * o instalare pe Btrfs cu structura implicită din tabelul de mai sus, fără alte montări speciale pe care trebuie să le păstrezi. Reguli de bază: * **Nu rula comenzile din sistemul instalat în timp ce acesta funcționează.** Toate comenzile care modifică ceva se rulează din Live USB, cu ''sudo''. * **Verifică numele partițiilor și UUID-urile** înainte să copiezi o comandă. Exemplele de mai jos folosesc ''/dev/nvme0n1p2'', dar la tine partiția poate avea alt nume (''/dev/sda2'', ''/dev/nvme0n1p6'' și așa mai departe). * Dacă ai o configurație diferită (alte nume de subvolume, alte montări), va trebui să adaptezi pașii. Dacă Live USB-ul nu are comanda ''btrfs'', instaleaz-o în sesiunea Live: sudo dnf install btrfs-progs sudo apt install btrfs-progs sudo apt install btrfs-progs ISO-ul oficial Arch include deja ''btrfs-progs''. ===== 1. Identifică partiția Btrfs ===== Pornește din Live USB, deschide un terminal și rulează: lsblk -f Un exemplu de rezultat: NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS nvme0n1 ├─nvme0n1p1 vfat FAT32 2621-F308 └─nvme0n1p2 btrfs 5fb25f96-b91a-4871-b765-1a4d7cd8b0d6 Caută partiția cu ''FSTYPE'' ''btrfs'' și notează-ți numele și UUID-ul ei, pentru că le vei folosi mai departe. Celelalte partiții (EFI, eventual ''/boot'' separat, cum are Fedora) nu ne interesează și nu le modificăm. Dacă folosești criptare LUKS, deblochează mai întâi volumul (de exemplu cu ''sudo cryptsetup open /dev/nvme0n1p2 crypt'') și lucrează apoi cu dispozitivul deschis din ''/dev/mapper/'' (sau cu volumul logic, dacă instalarea folosește și LVM). ===== 2. Montează nivelul superior Btrfs ===== Btrfs ține toate subvolumele într-un nivel superior (//top level//), care are mereu ID-ul ''5''. Îl montăm ca să vedem și să putem crea subvolume: sudo mkdir -p /mnt/btrfs-top sudo mount -o subvolid=5 /dev/nvme0n1p2 /mnt/btrfs-top Verifică subvolumele existente: sudo btrfs subvolume list /mnt/btrfs-top Rezultatul trebuie să corespundă cu structura distribuției tale: ID 256 gen ... top level 5 path root ID 257 gen ... top level 5 path home ID 256 gen ... top level 5 path @ ID 257 gen ... top level 5 path @home ID 256 gen ... top level 5 path @rootfs ID 256 gen ... top level 5 path @ ID 257 gen ... top level 5 path @home ID 258 gen ... top level 5 path @log ID 259 gen ... top level 5 path @pkg ID 260 gen ... top level 5 path @.snapshots ID-urile pot fi diferite. Dacă numele nu corespund, oprește-te și adaptează comenzile de mai jos la ce ai tu. ===== 3. Creează subvolumele noi ===== Fedora nu folosește prefixul ''@'', așa că păstrăm aceeași convenție: sudo btrfs subvolume create /mnt/btrfs-top/snapshots sudo btrfs subvolume create /mnt/btrfs-top/var_log sudo btrfs subvolume create /mnt/btrfs-top/var_cache sudo btrfs subvolume create /mnt/btrfs-top/var_tmp sudo btrfs subvolume create /mnt/btrfs-top/@snapshots sudo btrfs subvolume create /mnt/btrfs-top/@var_log sudo btrfs subvolume create /mnt/btrfs-top/@var_cache sudo btrfs subvolume create /mnt/btrfs-top/@var_tmp Debian nu are un subvolum separat pentru ''/home'', așa că îl creăm și pe acesta: sudo btrfs subvolume create /mnt/btrfs-top/@home sudo btrfs subvolume create /mnt/btrfs-top/@snapshots sudo btrfs subvolume create /mnt/btrfs-top/@var_log sudo btrfs subvolume create /mnt/btrfs-top/@var_cache sudo btrfs subvolume create /mnt/btrfs-top/@var_tmp ''archinstall'' a creat deja ''@log'' (pentru ''/var/log''), ''@pkg'' (pentru cache-ul ''pacman'') și ''@.snapshots''. Lipsesc doar ''/var/cache'' și ''/var/tmp'': sudo btrfs subvolume create /mnt/btrfs-top/@var_cache sudo btrfs subvolume create /mnt/btrfs-top/@var_tmp Rolul fiecărui subvolum: ^ Punct de montare ^ Rol ^ | ''/.snapshots'' | snapshot-urile sistemului | | ''/var/log'' | jurnalele sistemului | | ''/var/cache'' | fișierele cache | | ''/var/tmp'' | fișierele temporare care rezistă la repornire | | ''/home'' (doar Debian) | datele utilizatorilor | De ce funcționează asta: **snapshot-urile Btrfs nu sunt recursive**. Un snapshot al subvolumului rădăcină nu include conținutul altor subvolume montate în interiorul lui, deci jurnalele, cache-ul și fișierele temporare rămân automat pe dinafară. ===== 4. Montează sistemul instalat ===== sudo mkdir -p /mnt/root sudo mount -o subvol=root /dev/nvme0n1p2 /mnt/root sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt/root sudo mount -o subvol=@rootfs /dev/nvme0n1p2 /mnt/root sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt/root Acum ''/mnt/root'' este rădăcina sistemului tău instalat (''/mnt/root/etc'', ''/mnt/root/usr'', ''/mnt/root/var'' și așa mai departe). Ești în Live USB! Nu confunda ''/mnt/root/var'' (sistemul instalat) cu ''/var'' (sistemul Live). Toate căile din pașii următori încep cu ''/mnt/root''. ===== 5. Pune deoparte conținutul actual ===== Directoarele care vor deveni puncte de montare trebuie redenumite, ca să nu pierdem nimic din ce conțin. Jurnalele vrem să le păstrăm, cache-ul se poate regenera, iar ''/var/tmp'' poate conține fișiere de care unele aplicații au nevoie și după repornire, deci nu ștergem nimic direct. Dacă vrei să vezi cât spațiu ocupă: sudo du -sh /mnt/root/var/log /mnt/root/var/cache /mnt/root/var/tmp Redenumește directoarele: sudo mv /mnt/root/var/log /mnt/root/var/log.old sudo mv /mnt/root/var/cache /mnt/root/var/cache.old sudo mv /mnt/root/var/tmp /mnt/root/var/tmp.old sudo mv /mnt/root/var/log /mnt/root/var/log.old sudo mv /mnt/root/var/cache /mnt/root/var/cache.old sudo mv /mnt/root/var/tmp /mnt/root/var/tmp.old Pe lângă ''/var'', mutăm și ''/home'', care până acum stătea în ''@rootfs'': sudo mv /mnt/root/home /mnt/root/home.old sudo mv /mnt/root/var/log /mnt/root/var/log.old sudo mv /mnt/root/var/cache /mnt/root/var/cache.old sudo mv /mnt/root/var/tmp /mnt/root/var/tmp.old ''/var/log'' este deja un subvolum separat (''@log''), deci nu îl atingem: sudo mv /mnt/root/var/cache /mnt/root/var/cache.old sudo mv /mnt/root/var/tmp /mnt/root/var/tmp.old Directoarele ''.old'' le ștergem abia la final, după ce ne asigurăm că totul merge. ===== 6. Creează punctele de montare ===== sudo mkdir -p /mnt/root/.snapshots sudo mkdir -p /mnt/root/var/log /mnt/root/var/cache /mnt/root/var/tmp sudo mkdir -p /mnt/root/.snapshots sudo mkdir -p /mnt/root/var/log /mnt/root/var/cache /mnt/root/var/tmp sudo mkdir -p /mnt/root/home /mnt/root/.snapshots sudo mkdir -p /mnt/root/var/log /mnt/root/var/cache /mnt/root/var/tmp sudo mkdir -p /mnt/root/var/cache /mnt/root/var/tmp La pornire, fiecare subvolum va apărea în directorul lui. De exemplu, subvolumul ''var_log'' va fi văzut de sistem ca ''/var/log''. ===== 7. Montează subvolumele noi ===== sudo mount -o subvol=snapshots /dev/nvme0n1p2 /mnt/root/.snapshots sudo mount -o subvol=var_log /dev/nvme0n1p2 /mnt/root/var/log sudo mount -o subvol=var_cache /dev/nvme0n1p2 /mnt/root/var/cache sudo mount -o subvol=var_tmp /dev/nvme0n1p2 /mnt/root/var/tmp sudo mount -o subvol=@snapshots /dev/nvme0n1p2 /mnt/root/.snapshots sudo mount -o subvol=@var_log /dev/nvme0n1p2 /mnt/root/var/log sudo mount -o subvol=@var_cache /dev/nvme0n1p2 /mnt/root/var/cache sudo mount -o subvol=@var_tmp /dev/nvme0n1p2 /mnt/root/var/tmp sudo mount -o subvol=@home /dev/nvme0n1p2 /mnt/root/home sudo mount -o subvol=@snapshots /dev/nvme0n1p2 /mnt/root/.snapshots sudo mount -o subvol=@var_log /dev/nvme0n1p2 /mnt/root/var/log sudo mount -o subvol=@var_cache /dev/nvme0n1p2 /mnt/root/var/cache sudo mount -o subvol=@var_tmp /dev/nvme0n1p2 /mnt/root/var/tmp sudo mount -o subvol=@var_cache /dev/nvme0n1p2 /mnt/root/var/cache sudo mount -o subvol=@var_tmp /dev/nvme0n1p2 /mnt/root/var/tmp Verifică: findmnt -R /mnt/root Toate punctele de montare noi trebuie să apară, fiecare cu subvolumul lui. Dacă lipsește vreunul, verifică din nou comanda respectivă înainte să mergi mai departe. ===== 8. Copiază fișierele înapoi și refă permisiunile ===== Copiem conținutul directoarelor ''.old'' în subvolumele noi. Opțiunea ''-a'' păstrează permisiunile, proprietarii, datele de modificare și celelalte atribute, iar ''--reflink=auto'' face ca fișierele să nu fie duplicate fizic pe disc (fiind același sistem de fișiere Btrfs, copia partajează blocurile cu originalul, deci e rapidă și nu ocupă spațiu în plus). sudo cp -a --reflink=auto /mnt/root/var/log.old/. /mnt/root/var/log/ sudo cp -a --reflink=auto /mnt/root/var/tmp.old/. /mnt/root/var/tmp/ sudo cp -a --reflink=auto /mnt/root/var/cache.old/. /mnt/root/var/cache/ sudo cp -a --reflink=auto /mnt/root/var/log.old/. /mnt/root/var/log/ sudo cp -a --reflink=auto /mnt/root/var/tmp.old/. /mnt/root/var/tmp/ sudo cp -a --reflink=auto /mnt/root/var/cache.old/. /mnt/root/var/cache/ sudo cp -a --reflink=auto /mnt/root/home.old/. /mnt/root/home/ sudo cp -a --reflink=auto /mnt/root/var/log.old/. /mnt/root/var/log/ sudo cp -a --reflink=auto /mnt/root/var/tmp.old/. /mnt/root/var/tmp/ sudo cp -a --reflink=auto /mnt/root/var/cache.old/. /mnt/root/var/cache/ Copierea lui ''/home'' poate dura, în funcție de câte date ai. sudo cp -a --reflink=auto /mnt/root/var/tmp.old/. /mnt/root/var/tmp/ sudo cp -a --reflink=auto /mnt/root/var/cache.old/. /mnt/root/var/cache/ Copia lui ''/var/cache'' aduce și directorul gol ''pacman/pkg'', în care se montează subvolumul ''@pkg''. Dacă alegi să lași ''/var/cache'' gol, creează-l manual, altfel ''@pkg'' nu se va putea monta la pornire: sudo mkdir -p /mnt/root/var/cache/pacman/pkg Copierea lui ''/var/cache'' este opțională pe toate distribuțiile: dacă îl lași gol, aplicațiile își refac singure cache-ul. Acum copiem permisiunile și proprietarii directoarelor vechi pe cele noi. Așa nu trebuie să știi ce permisiuni folosește distribuția ta (de exemplu, pe Ubuntu ''/var/log'' aparține grupului ''syslog'', iar ''/var/tmp'' trebuie să aibă peste tot modul ''1777''): for d in var/log var/cache var/tmp home; do if [ -d /mnt/root/$d.old ]; then sudo chown --reference=/mnt/root/$d.old /mnt/root/$d sudo chmod --reference=/mnt/root/$d.old /mnt/root/$d fi done Bucla sare automat peste directoarele pe care nu le-ai mutat (de exemplu ''home'' pe alte distribuții decât Debian, sau ''var/log'' pe Arch). Verifică rezultatul: sudo stat -c '%a %U:%G %n' /mnt/root/var/log* /mnt/root/var/cache* /mnt/root/var/tmp* Fiecare director nou trebuie să aibă aceleași permisiuni și același proprietar ca perechea lui ''.old''. **Nu șterge încă directoarele ''.old''!** ===== 9. Configurează /etc/fstab ===== Subvolumele sunt create și montate, dar sistemul trebuie să știe să le monteze singur la pornire. Editează ''fstab''-ul **sistemului instalat**: sudo nano /mnt/root/etc/fstab Regula e simplă: **copiază linia existentă pentru ''/'', păstrează UUID-ul și opțiunile de montare și schimbă doar punctul de montare și valoarea lui ''subvol=''.** Exemplele de mai jos arată cum arată de obicei blocul Btrfs după modificare; liniile noi sunt cele de după ''/home''. UUID=XXXX / btrfs subvol=root,compress=zstd:1 0 0 UUID=XXXX /home btrfs subvol=home,compress=zstd:1 0 0 UUID=XXXX /.snapshots btrfs subvol=snapshots,compress=zstd:1 0 0 UUID=XXXX /var/log btrfs subvol=var_log,compress=zstd:1 0 0 UUID=XXXX /var/cache btrfs subvol=var_cache,compress=zstd:1 0 0 UUID=XXXX /var/tmp btrfs subvol=var_tmp,compress=zstd:1 0 0 UUID=XXXX / btrfs defaults,subvol=@ 0 1 UUID=XXXX /home btrfs defaults,subvol=@home 0 2 UUID=XXXX /.snapshots btrfs defaults,subvol=@snapshots 0 0 UUID=XXXX /var/log btrfs defaults,subvol=@var_log 0 0 UUID=XXXX /var/cache btrfs defaults,subvol=@var_cache 0 0 UUID=XXXX /var/tmp btrfs defaults,subvol=@var_tmp 0 0 Aici adăugăm și linia pentru ''/home'': UUID=XXXX / btrfs defaults,subvol=@rootfs 0 0 UUID=XXXX /home btrfs defaults,subvol=@home 0 0 UUID=XXXX /.snapshots btrfs defaults,subvol=@snapshots 0 0 UUID=XXXX /var/log btrfs defaults,subvol=@var_log 0 0 UUID=XXXX /var/cache btrfs defaults,subvol=@var_cache 0 0 UUID=XXXX /var/tmp btrfs defaults,subvol=@var_tmp 0 0 Adaugă cele două linii noi, iar linia pentru ''/var/cache'' trebuie pusă **înaintea** celei pentru ''/var/cache/pacman/pkg'', pentru că ''@pkg'' se montează în interiorul lui ''@var_cache'': UUID=XXXX / btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@ 0 0 UUID=XXXX /home btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@home 0 0 UUID=XXXX /var/log btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@log 0 0 UUID=XXXX /var/cache btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@var_cache 0 0 UUID=XXXX /var/cache/pacman/pkg btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@pkg 0 0 UUID=XXXX /var/tmp btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@var_tmp 0 0 UUID=XXXX /.snapshots btrfs rw,relatime,compress=zstd:3,ssd,space_cache=v2,subvol=/@.snapshots 0 0 Opțiunile de la tine pot fi diferite (de exemplu fără ''compress'' sau cu ''subvolid='' în plus). Dacă liniile existente conțin ''subvolid='', **nu îl copia** în liniile noi, pentru că ID-ul este diferit pentru fiecare subvolum; e suficient ''subvol=''. Înlocuiește ''XXXX'' cu UUID-ul partiției Btrfs notat la pasul 1. Este același UUID pe toate liniile, pentru că toate subvolumele fac parte din același sistem de fișiere. De reținut: * **Nu modifica liniile existente** pentru ''/'' și ''/home'' dacă funcționează. Doar adaugă liniile noi. * **Nu atinge liniile pentru ''/boot'', ''/boot/efi''**, swap sau alte partiții. * Verifică să nu ai linii duplicate. ==== Verifică fișierul ==== sudo findmnt --verify --tab-file /mnt/root/etc/fstab Comanda verifică fișierul fără să monteze nimic. Pentru că rulează din Live USB, poate afișa avertismente legate de mediul Live, pe care le poți ignora. Contează să nu existe erori de sintaxă, linii duplicate sau referințe greșite. ==== Subvolume de test rămase ==== Dacă ai mai făcut experimente cu subvolume, s-ar putea să ai în ''fstab'' linii de genul: UUID=XXXX /home/utilizator/test btrfs subvol=test 0 0 Dacă nu mai ai nevoie de ele, șterge linia ca sistemul să nu mai încerce să le monteze la pornire. Ștergerea liniei nu șterge și subvolumul; dacă vrei să scapi și de el, fă-o separat, după ce te asiguri că nu conține nimic important. ===== 10. Pregătește SELinux (doar Fedora) ===== Fedora folosește SELinux, care controlează accesul proceselor la fișiere pe baza unor etichete (contexte de securitate). Pentru că am creat subvolume noi și am copiat fișiere, etichetele trebuie verificate. Cel mai simplu este să ceri sistemului să le refacă la următoarea pornire: sudo touch /mnt/root/.autorelabel **Prima pornire va dura mai mult decât de obicei**, în funcție de câte fișiere ai pe disc. Nu întrerupe procesul! Nu e nevoie de nimic. Ubuntu și Mint folosesc AppArmor, care lucrează cu căi de fișiere, nu cu etichete, așa că mutarea datelor în subvolume nu îl afectează. Nu e nevoie de nimic. Debian folosește AppArmor, care lucrează cu căi de fișiere, nu cu etichete, așa că mutarea datelor în subvolume nu îl afectează. Nu e nevoie de nimic. Arch nu are SELinux activ în mod implicit. ===== 11. Demontează și repornește ===== Asigură-te că toate modificările au fost scrise pe disc, apoi demontează totul. Opțiunea ''-R'' demontează recursiv ''/mnt/root'' și toate subvolumele montate în interiorul lui: sync sudo umount -R /mnt/root sudo umount /mnt/btrfs-top Dacă apare eroarea //target is busy//, verifică să nu ai un terminal deschis într-unul din acele directoare. Repornește calculatorul și scoate stick-ul USB. ===== 12. Verifică rezultatul ===== După pornire, deschide un terminal în sistemul instalat. ==== Montările ==== findmnt -t btrfs Toate subvolumele trebuie să apară la locul lor. Un exemplu pentru Ubuntu: TARGET SOURCE FSTYPE OPTIONS / /dev/nvme0n1p2[/@] btrfs rw,relatime,ssd,space_cache=v2,subvolid=256,subvol=/@ ├─/home /dev/nvme0n1p2[/@home] btrfs rw,relatime,ssd,space_cache=v2,subvolid=257,subvol=/@home ├─/.snapshots /dev/nvme0n1p2[/@snapshots] btrfs rw,relatime,ssd,space_cache=v2,subvolid=258,subvol=/@snapshots ├─/var/log /dev/nvme0n1p2[/@var_log] btrfs rw,relatime,ssd,space_cache=v2,subvolid=259,subvol=/@var_log ├─/var/cache /dev/nvme0n1p2[/@var_cache] btrfs rw,relatime,ssd,space_cache=v2,subvolid=260,subvol=/@var_cache └─/var/tmp /dev/nvme0n1p2[/@var_tmp] btrfs rw,relatime,ssd,space_cache=v2,subvolid=261,subvol=/@var_tmp Lista completă a subvolumelor: sudo btrfs subvolume list / ID-urile pot fi diferite la tine; important e să apară toate subvolumele. ==== fstab ==== Acum poți verifica ''fstab''-ul direct din sistem: sudo findmnt --verify Comanda nu trebuie să afișeze erori. ==== Rădăcina sistemului ==== Verifică dacă sistemul pornește în continuare din subvolumul corect: findmnt -no SOURCE / /dev/nvme0n1p2[/root] /dev/nvme0n1p2[/@] /dev/nvme0n1p2[/@rootfs] /dev/nvme0n1p2[/@] ==== SELinux (doar Fedora) ==== După reetichetare, refă contextele pentru directoarele noi (dacă sunt deja corecte, comanda nu modifică nimic): sudo restorecon -Rv /.snapshots /var/log /var/cache /var/tmp Verifică dacă SELinux este în continuare activ: getenforce Rezultatul trebuie să fie ''Enforcing''. Nu e cazul. Nu e cazul. Nu e cazul. Verifică în schimb că ''pacman'' își găsește cache-ul: findmnt /var/cache/pacman/pkg Trebuie să apară subvolumul ''@pkg''. ===== 13. Șterge directoarele vechi ===== Dacă sistemul pornește normal, subvolumele sunt montate și aplicațiile merg fără probleme, poți șterge copiile vechi. Asigură-te înainte că nu mai ai nevoie de niciun fișier din ele. sudo ls -ld /var/log.old /var/cache.old /var/tmp.old sudo rm -rf /var/log.old /var/cache.old /var/tmp.old sudo ls -ld /var/log.old /var/cache.old /var/tmp.old sudo rm -rf /var/log.old /var/cache.old /var/tmp.old Verifică mai întâi că datele din ''/home'' sunt toate la locul lor (deschide câteva fișiere, verifică setările aplicațiilor), apoi: sudo ls -ld /home.old /var/log.old /var/cache.old /var/tmp.old sudo rm -rf /home.old /var/log.old /var/cache.old /var/tmp.old sudo ls -ld /var/cache.old /var/tmp.old sudo rm -rf /var/cache.old /var/tmp.old Gata, migrarea s-a încheiat. ===== Note despre programele de snapshot ===== * **Snapper** folosește subvolumul montat pe ''/.snapshots''. La configurare (''snapper -c root create-config /''), Snapper încearcă să creeze el însuși ''/.snapshots'' și dă eroare dacă acesta există deja. Soluția obișnuită este să demontezi ''/.snapshots'', să ștergi directorul gol, să rulezi ''create-config'', apoi să ștergi subvolumul creat de Snapper și să remontezi subvolumul tău cu ''sudo mount -a''. * **Timeshift** (folosit implicit pe Linux Mint) în modul Btrfs are nevoie de structura ''@'' și ''@home'', pe care am păstrat-o. Timeshift nu folosește ''/.snapshots'', dar ignoră automat subvolumele noi, deci jurnalele, cache-ul și fișierele temporare nu vor mai intra în snapshot-urile lui. Pe Debian, Timeshift cere în continuare ca rădăcina să se numească ''@'', așa că ''@rootfs'' nu e compatibil cu el. ===== Concluzie ===== Sistemul folosește acum subvolume separate pentru rădăcină, ''/home'', ''/.snapshots'', ''/var/log'', ''/var/cache'' și ''/var/tmp''. Snapshot-urile sistemului nu vor mai include jurnalele, cache-ul și fișierele temporare, iar sistemul e pregătit pentru Snapper sau pentru alt program de snapshot-uri. **Snapshot-urile nu înlocuiesc backup-ul!** Toate subvolumele stau pe același disc, iar dacă discul se strică le pierzi pe toate deodată. ===== Surse ===== * [[https://elblogdelazaro.org/btrfs-fedora-migrar-layout-subvolumenes/|Migrar el layout Btrfs en Fedora a una estructura limpia]] - El blog de Lázaro (articolul original pentru Fedora, în spaniolă) * [[https://btrfs.readthedocs.io/en/latest/Subvolumes.html|Documentația Btrfs: Subvolumes]] * [[https://wiki.archlinux.org/title/Snapper|ArchWiki: Snapper]] * [[https://github.com/archlinux/archinstall/pull/905|archinstall: structura implicită de subvolume]] * [[http://snapper.io/|Snapper]] {{tag>btrfs fedora ubuntu linux_mint debian arch_linux subvolume snapshot fstab selinux sistem_de_fisiere}}