実際にはディスクを消費していないファイル(スパースファイル)を作る方法 †本資料は、サイズは大きいが、実際にはディスクを消費していないファイル(スパースファイル)を作る操作手順を記しています。 スパースファイルとは †Linuxのファイルシステムには、スパースファイルというファイルサイズと実際のディスク消費量が異なるファイルを作成する機能があります。 実際に作成したスパースファイルと通常のファイルを比較します。 % ls -l 合計 1048580 -rw-rw-r-- 1 user01 user01 1073741824 8月 22 23:41 file_no_sparse -rw-rw-r-- 1 user01 user01 1073741824 8月 22 23:44 file_sparse t% しかし、ls に -sオプションを付けて、ディスク上の割り当てられているブロック数を表示すると、 % ls -l --size 合計 1048580 1048580 -rw-rw-r-- 1 user01 user01 1073741824 8月 22 23:41 file_no_sparse 0 -rw-rw-r-- 1 user01 user01 1073741824 8月 22 23:44 file_sparse % file_sparseはディスク上のブロックを何も使っていません。 スパースファイルの用途 †以下にスパースファイルの使用用途について記述します。 プログラムが作成するスパースファイル †スパースファイルは、コアダンプファイルなどで利用されています。 また、kvmやxenなどの仮想マシンのマシンイメージにも利用されることがあります。 ユーザが作成するスパースファイル †ユーザが自分でスパースファイルを作るのは、 また、ネットワークのスループットやサーバ性能を計測するときの送受信のファイルを作るのにも使えます。 スパースファイルの作成方法 †スパースファイルを作成するには、ddコマンドを利用します。 % dd if=/dev/zero of=file_sparse bs=1M seek=1024 count=0 0+0 レコード入力 0+0 レコード出力 0 バイト (0 B) コピーされました、 1.788e-05 秒、 0.0 kB/秒 % ls -l --size 合計 0 0 -rw-rw-r-- 1 user01 user01 1073741824 8月 23 00:09 file_sparse % ifの指定で/dev/zeroを読み込み元とします。 この組合せでddの作成するファイルがスパースファイルになります。 なお、スパースファイルは実際のディスク容量を越えたサイズも作成できます。 % df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/ubuntu-root 7.3G 3.8G 3.1G 55% / udev 489M 4.0K 489M 1% /dev tmpfs 200M 512K 199M 1% /run none 5.0M 0 5.0M 0% /run/lock none 498M 0 498M 0% /run/shm cgroup 498M 0 498M 0% /sys/fs/cgroup % ls -lh 合計 0 -rw-rw-r-- 1 user01 user01 9.8T 8月 22 23:59 file_sparse % もちろん、実際のディスク容量を越えて、これだけのデータを書き込むことはできません。 以上、サイズは大きいが、実際にはディスクを消費していないファイル(スパースファイル)を作る方法についてでした。 |