GNU/Linux >> Znalost Linux >  >> Linux

Co jsou řídké soubory v Linuxu

Pozorovali jste někdy rozdíl ve využití disku u některého souboru při použití příkazu du a ls. Například:

$ du -sh /u02/ticoprd/redo/*
515M redo1a.rdo
524M redo3b.rdo
518M redo4a.rdo
$ ls -ltrh /u02/ticoprd/redo/*
-rw-r----- 1 oticoprd dba 1.1G Aug 4 01:09 redo1a.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 02:32 redo3b.rdo
-rw-r----- 1 oticoprd dba 1.1G Aug 4 03:51 redo4a.rdo

Vidíme, že příkaz „ls“ zobrazuje velikost souboru 1,1 GB, zatímco velikost souboru příkazu „du“ je pouze 515 MB. Tyto soubory jsou řídké soubory. „ls“ zobrazuje zdánlivou velikost souboru a „du“ zobrazuje skutečnou velikost souboru umístěného na disku.

Řídký soubor je typ počítačového souboru, který se pokouší efektivněji využívat prostor souborového systému, když jsou bloky přidělené souboru většinou prázdné. Toho je dosaženo zapsáním stručné informace (metadata) představující prázdné bloky na disk namísto skutečného „prázdného“ prostoru, který blok tvoří, za použití menšího místa na disku (tj. řídké soubory obsahují bloky nul, jejichž existence je zaznamenána, ale nemají místo přidělené na disku). Úplná velikost bloku je zapsána na disk jako skutečná velikost pouze tehdy, když blok obsahuje „skutečná“ (neprázdná) data.

Při čtení řídkých souborů systém souborů za běhu transparentně převádí metadata představující prázdné bloky na „skutečné“ bloky naplněné nulou bajtů. Aplikace o této konverzi neví. Řídké soubory se běžně používají pro obrazy disků, snímky databáze, soubory protokolu atd.

Výhodou řídkých souborů je, že úložiště je alokováno pouze tehdy, když je to skutečně potřeba:šetří se místo na disku a lze vytvářet velké soubory, i když v systému souborů není dostatek volného místa.

Nevýhody jsou, že řídké soubory se mohou fragmentovat. Hlášení volného místa v souborovém systému mohou být zavádějící a kopírování řídkého souboru programem, který je výslovně nepodporuje, může zkopírovat celou, nekomprimovanou velikost souboru, včetně řídkých, většinou nulových částí, které nejsou na disku – ztráta výhod vlastnosti sparse v souboru.

Toto chování můžeme vidět u souboru /var/log/lastlog.

# ls -lh /var/log/lastlog
-rw-r--r--. 1 root root 144K Sep 8 22:45 /var/log/lastlog
# du -sh /var/log/lastlog
40K /var/log/lastlog 

Vytvoření řídkého souboru

Řídký soubor můžeme vytvořit pomocí příkazu dd:

# dd if=/dev/zero of=sparse_file bs=1 count=0 seek=512M
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0.000381714 s, 0.0 kB/s
# ls -hl sparse_file
-rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file
# du -sh sparse_file
0 sparse_file

Pro zobrazení využití disku souborem pomocí příkazu „ls“ můžeme použít volbu „-s“:

# ls -lhs sparse_file
0 -rw-r--r--. 1 root root 512M Sep 9 00:13 sparse_file

Pro zobrazení zdánlivé velikosti souboru pomocí „du“ můžeme použít volbu –apparent-size:

# du -h --apparent-size sparse_file
512M sparse_file 

Zkopírujte řídký soubor pomocí příkazu „cp“

‚cp‘ podporuje řídký soubor a umí to dobře detekovat, takže stačí spustit „cp“. Ale cp má volbu –sparse=WHEN.

# cp --sparse=always sparse_file sparse_file.2


Linux
  1. Přesouvání souborů na Linuxu bez mv

  2. Jak vytvořit řídké soubory v Linuxu pomocí příkazu „dd“.

  3. Co přesně jsou hlavičky linuxového jádra?

  1. Zkopírujte soubory v terminálu Linux

  2. Přesunout soubory v terminálu Linux

  3. Jaké jsou různé způsoby nastavení oprávnění k souborům atd. na gnu/linux

  1. Co je číslo inodu v Linuxu?

  2. Linux – Jaké jsou různé způsoby nastavení oprávnění k souborům atd. na Gnu/linux?

  3. Co jsou soubory .run?