スパース ファイルとは
スパース ファイルは、ファイル システム全体を占有することなく、事前に割り当てられた大量の領域を持つファイルです。これらは、ループ ファイルシステムや仮想化ゲスト用の大きなディスク イメージの作成にかかる時間とディスク容量を削減するのに役立ちます。スパース ファイルは、ディスク イメージ、データベース スナップショット、ログ ファイルなどによく使用されます。
スパース ファイルの利点
スパース ファイルの利点は、実際に必要なときにのみストレージが割り当てられることです。ディスク容量が節約され、ファイル システムに十分な空き容量がない場合でも大きなファイルを作成できます。
スパース ファイルの欠点
欠点は、スパース ファイルが断片化する可能性があることです。ファイル システムの空き容量レポートは誤解を招く可能性があり、それらを明示的にサポートしていないプログラムでスパース ファイルをコピーすると、ディスク上にないほとんどゼロのスパース セクションを含むファイルの圧縮されていないサイズ全体がコピーされる可能性があり、利点が失われます。ファイル内のスパース プロパティの。
この動作は /var/log/lastlog ファイルで確認できます。
# ls -lh /var/log/lastlog -rw-r--r--. 1 root root 286K Dec 3 04:50 /var/log/lastlog # du -sh /var/log/lastlog 12K /var/log/lastlog
スパース ファイルの作成
1. 「dd」を使用してスパース ファイルを作成できます ‘ コマンドの ‘seek ‘オプション。
# 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.000213705 s, 0.0 kB/s
# ls -hl sparse_file -rw-r--r--. 1 root root 512M Dec 3 05:51 sparse_file
# du -sh sparse_file 0 sparse_file
2.「ls」コマンドでファイルのディスク使用量を確認するには、「-s」を使用できます ” オプション:
# ls -lhs sparse_file 0 -rw-r--r--. 1 root root 512M Dec 3 05:51 sparse_file
3.「du」を使用してファイルの見かけのサイズを確認するには、「–apparent-size」を使用できます ” オプション:
# du -h --apparent-size sparse_file 512M sparse_file
スパース ファイルをコピーする方法
スパース ファイルを明示的にサポートしていないプログラムを使用してスパース ファイルをコピーすると、スパース ファイルを含む圧縮されていないサイズのファイル全体がコピーされる場合があります。そのため、cp コマンドを使用してスパース ファイルをコピーすると、宛先ファイルは完全に割り当てられたファイルに変更されます。コピー先のコピーをスパース ファイルのままにしてスパース ファイルをコピーするには、以下のいずれかのコマンドを使用します。
# cp --sparse=always source_file new_file # rsync --sparse source_file new_file # cpio --sparse # tar --sparse