FALLOCATE

Section: User Commands (1)
Updated: April 2014
Index Return to Main Contents
 

名前

fallocate - ファイルのスペースを事前割り当てまたは解放する。  

書式

fallocate [-c|-p|-z] [-o offset] -l length [-n] filename

fallocate -d [-o offset] [-l length] filename

fallocate -x [-o offset] -l length filename  

説明

fallocate は割り当てられたファイルのディスクスペースを操作 (解放または事前割り当て) するために使われる。 fallocate システムコールをサポートするファイルシステムにおいて、 ブロックを割り当て、そのブロックが初期化されていないとマークすることで、 データブロックに I/O を必要としないので、事前割り当てが高速に行える。 これは、ファイルを作成して 0 で埋めるより、ずっと高速である。

fallocate の返り値は、成功の場合は 0、失敗の場合は 1 である。  

オプション

lengthoffset 引き数の後には倍数のサフィックス KiB (=1024), MiB (=1024*1024), GiB, TiB, PiB, EiB, ZiB, YiB などを付けることができる ("iB" はオプションであり、例えば "K" は "KiB" と同じ意味である)。 または、サフィックス KB (=1000), MB (=1000*1000), GB, TB, PB, EB, ZB, YB などを付けることができる。

オプション --collapse-range, --dig-holes, --punch-hole, --zero-range は、どれか 1 つしか指定できない。

-c, --collapse-range
指定したバイト範囲をファイルから削除する。 その際、ホールを残さない。 削除されるバイト範囲は offset から始まる length バイトの範囲である。 操作が完了すると、ファイルの offset+length の位置からから始まる内容が offset の位置に見えるようになり、 ファイルのサイズは length バイトだけ小さくなる。 オプション --keep-size は範囲削除操作に指定できない。

Linux 3.15 以降の ext4 (エクステントベースのファイルのみ) と XFS で利用可能である。

効率的に動作する実装にするため、ファイルシステムはこの操作の粒度に 制限を設けることがある。 通常は offset と length はファイルシステムの論理ブロックサイズの倍数でなければならない。 論理ブロックサイズはファイルシステムの種類や設定により様々である。 ファイルシステムにこのような要求条件がある場合、 その要求条件が満たされていなければ、fallocate はエラー EINVAL で失敗する。

-d, --dig-holes
ホールを検知と作成を行う。 このオプションは、追加のディスクスペースを使わずに、 ファイルをスパース (sparse: まばら) にする。 ホールの最小サイズはファイルシステムの I/O ブロックサイズに依存する (通常は 4096 バイトである)。 さらに、このオプションを使うと、 --keep-size が暗黙のうちに指定される。 範囲が --offset--length で指定されない場合、ホールをファイル全体で分析する。

このオプションは、 "cp --sparse" を行って、追加のディスクスペースを必要とせずに、 コピー先ファイルを元のファイルにリネームするのと同じと考えられる。

サポートされるファイルシステムのリストは、--punch-hole を参照すること。

-i, --insert-range
既存のデータをシフトさせ、 offset から length バイトのホールを挿入する。
-l, --length length
範囲の長さをバイト単位で指定する。
-n, --keep-size
ファイルの外見の長さを変更しない。 このオプションは EOF の後に、効率的にブロックを割り当てられる。 このブロックは切り詰めて削除できる。
-o, --offset offset
範囲の開始オフセットを、バイト単位で指定する。
-p, --punch-hole
offset で始まる length バイトの領域の空間を解放する (ホールを作成する)。 指定された範囲のうち、 部分的に使用しているファイルシステムブロックは 0 で埋められ、 全体を使用しているファイルシステムブロックはそのファイルから 削除される。 呼び出しが成功すると、これ以降のこの範囲からの読み出しでは 0 を返す。 このオプションは --zero-range と同時に指定できない。 このオプションを使うと、 --keep-size が暗黙のうちに指定される。

XFS (Linux 2.6.38 以降), ext4 (Linux 3.0 以降), Btrfs (Linux 3.7 以降), tmpfs (Linux 3.5 以降) でサポートされる。

-v, --verbose
詳細表示モードを有効にする。
-x, --posix
POSIX 操作モードを有効にする。 このモードでは割り当て操作は常に完了するが、ファイルが作られる ファイルシステムが高速な割り当てをサポートしていない場合、 長い時間がかかる。
-z, --zero-range
offset で始まる length バイト範囲の空間をゼロ埋めする。 指定された範囲の中では、ブロックは、そのファイル内のホールが広がる 領域にあらかじめ割り当てられたものである。 呼び出しが成功すると、これ以降のこの範囲からの読み出しでは 0 を返す。

ゼロ埋めは、ファイルシステム内部では、指定された範囲を書き込みを 伴わないエクステントに変換する方法をできるだけ使って行われる。 この方法は、指定された範囲について物理的にゼロ埋めしたデータが デバイスに書き込まれるのではないことを意味する (例外は指定された範囲の端の部分的に使用しているブロックである)。 (これ以外で) I/O が必要なのはメタデータの更新だけである。

ファイルの長さを変更しないように、オプション --keep-size が指定できる。

Linux 3.14 以降の ext4 (エクステントベースのファイルのみ) と XFS で利用可能である。

-V, --version
バージョン情報を表示して、終了する。
-h, --help
ヘルプを表示して、終了する。
 

著者

Eric Sandeen
Karel Zak  

関連項目

truncate(1), fallocate(2), posix_fallocate(3)  

入手方法

fallocate コマンドは util-linux パッケージの一部であり、 Linux Kernel Archive から入手できる。


 

Index

名前
書式
説明
オプション
著者
関連項目
入手方法

This document was created by man2html, using the manual pages.
Time: 17:13:47 GMT, April 11, 2020