Puncte:0

Fișierul .img montat nu eliberează spațiu pe disc atunci când fișierele sunt șterse

drapel cn

Am o cerință de a folosi mai multe inoduri decât cele disponibile în mod normal pe majoritatea sistemelor de fișiere. Prin urmare, creez și montez un sistem de fișiere ext4 cu o setare de inode personalizată:

dd if=/dev/zero of=loop0.img bs=1MB count=5000
losetup --find --show `pwd`/loop0.img
mkfs -t ext4 -i 1024 /dev/loop0
montați /dev/loop0 /mnt

Acest lucru va crea un fișier de 5000 MB pe disc (prin ls /mnt), dar când verific utilizarea df se arată că discul nu este ocupat (spațiul pe disc nu crește cu 5000MB). Bănuiesc pentru că este zero pe disc și arată ca spațiu nefolosit.

Pe măsură ce discul se umple, am un program care încearcă să ștergă fișierele cele mai puțin utilizate recent până când presiunea spațiului pe disc este eliminată. Ei bine, se pare că, în ciuda ștergerii fișierelor în /mnt, încă se înregistrează ca ocupând spațiu pe discul meu, cel puțin conform df și alte apeluri de sistem fără disc.

Deci există o modalitate specială de care am nevoie rm fișierele de pe acest disc virtual pentru a înregistra că spațiul este liber? sau trebuie să mă întreb despre spațiul liber într-un mod non-standard?

Editare: Comanda și ieșirea completă, observați că utilizarea discului pentru /dev/vda1 nu crește 5000MB.

root@localhost:~# df
Sistem de fișiere 1K-blocuri Utilizat Disponibil Utilizare% Montat pe
udev 490064 0 490064 0% /dev
tmpfs 101092 3188 97904 4% /run
/dev/vda1 19343152 2699088 15660656 15% /
tmpfs 505448 0 505448 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 505448 0 505448 0% /sys/fs/cgroup
tmpfs 101088 0 101088 0% /run/user/0
root@localhost:~# dd if=/dev/zero of=loop0.img bs=1MB count=5000
5000+0 înregistrări în
5000+0 înregistrări scoase
5000000000 de octeți (5,0 GB, 4,7 GiB) copiați, 6,20117 s, 806 MB/s
root@localhost:~# losetup --find --show `pwd`/loop0.img
/dev/loop0
root@localhost:~# mkfs -t ext4 -i 1024 /dev/loop0
mke2fs 1.44.5 (15-dec-2018)
Eliminarea blocurilor dispozitivului: gata
Crearea unui sistem de fișiere cu 1220703 blocuri 4k și 4884000 inoduri
UUID sistemului de fișiere: 4f308a54-6ddd-4ef6-b685-c193dfec8b84
Copii de rezervă Superblock stocate pe blocuri:
        8176, 24528, 40880, 57232, 73584, 204400, 220752, 400624, 662256,
        1022000

Alocarea tabelelor de grup: gata
Scrierea tabelelor inode: gata
Creare jurnal (16384 blocuri): gata
Scrierea superblocurilor și a informațiilor de contabilitate a sistemului de fișiere: gata

root@localhost:~# mount /dev/loop0 /mnt
root@localhost:~# df
Sistem de fișiere 1K-blocuri Utilizat Disponibil Utilizare% Montat pe
udev 490064 0 490064 0% /dev
tmpfs 101092 3216 97876 4% /run
/dev/vda1 19343152 2769404 15590340 16% /
tmpfs 505448 0 505448 0% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 505448 0 505448 0% /sys/fs/cgroup
tmpfs 101088 0 101088 0% /run/user/0
/dev/loop0 3594900 45080 3289556 2% /mnt
Tom Yan avatar
drapel in
Rețineți că atunci când utilizați `dd if=/dev/zero` fără `conv=sparse` pentru a crea imaginea, cât de mult va crește utilizarea sistemului de fișiere (a sistemului de fișiere care constă din imagine) este probabil specific sistemului de fișiere. Dacă doriți ca imaginea să fie oricum un fișier rar, puteți utiliza pur și simplu „truncare” pentru ao crea.
Puncte:0
drapel in

Poți să folosești fstrim:

$ rm /tmp/test.img
rm: nu se poate elimina „/tmp/test.img”: nu există un astfel de fișier sau director
$ trunchiați -s 1G /tmp/test.img
$ sudo losetup --show -f /tmp/test.img 
/dev/loop0
$ sudo mkfs.ext4 -E root_owner=1000:1000 /dev/loop0
mke2fs 1.46.2 (28-feb-2021)
Eliminarea blocurilor dispozitivului: gata                            
Crearea unui sistem de fișiere cu 262144 blocuri 4k și 65536 inoduri
UUID sistemului de fișiere: 70f9b205-0ada-43b1-8636-36983ad79394
Copii de rezervă Superblock stocate pe blocuri: 
    32768, 98304, 163840, 229376

Alocarea tabelelor de grup: gata                            
Scrierea tabelelor inode: gata                            
Crearea jurnalului (8192 blocuri): gata
Scrierea superblocurilor și a informațiilor de contabilitate a sistemului de fișiere: gata

$ sudo mount /dev/loop0 /tmp/meh/
$ openssl enc -pbkdf2 -aes-256-ctr -in /dev/zero -pass file:/dev/urandom -nosalt 2>/dev/null | dd of=/tmp/meh/fill iflag=count_bytes count=768M
1572864+0 înregistrări în
1572864+0 înregistrări
805306368 octeți (805 MB, 768 MiB) copiați, 2,15669 s, 373 MB/s
$ sudo umount /tmp/meh/
$ sudo mount /dev/loop0 /tmp/meh/
$ rm /tmp/meh/fill 
$ sudo umount /tmp/meh/
$ sudo mount /dev/loop0 /tmp/meh/
$ du -h /tmp/test.img 
802M /tmp/test.img
$ sudo fstrim -v /tmp/meh/
/tmp/meh/: 973,4 MiB (1020678144 octeți) tăiate
$ du -h /tmp/test.img 
33M /tmp/test.img

Spațiul nefolosit (în ceea ce privește sistemul de fișiere de pe imagine) va fi convertit în „găuri” (în dosar rar sens).

După cum probabil ați ghicit, puteți monta cu -o arunca de asemenea, rețineți că rezultatul ar putea fi ușor întârziat.

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.