スパースファイルは、ファイルシステムをより効率的に使用する特別なファイルであり、パーティションがいっぱいでない場合、ファイルシステムがメディア上の空きディスク領域を占有することを許可しません。つまり、「空きスペース」は必要な場合にのみ使用されます。ゼロの形式の空の情報は、FSメタデータブロックに保存されます。したがって、スパースファイルは、最初は実際のサイズよりも少ないメディアスペースを使用します。
このタイプは、ほとんどのファイルシステムをサポートします:BTRFS、NILFS、ZFS、NTFS、ext2、ext3、ext4、XFS、JFS、ReiserFS、Reiser4、UFS、Rock Ridge、UDF、ReFS、APFS、F2FS。
このタイプは、ほとんどのファイルシステムをサポートします:BTRFS、NILFS、ZFS、NTFS、ext2、ext3、ext4、XFS、JFS、ReiserFS、Reiser4、UFS、Rock Ridge、UDF、ReFS、APFS、F2FS。
これらのFSはすべてこのタイプを完全にサポートしていますが、同時に、標準インターフェイスを介して機能に直接アクセスすることはできません。それらのプロパティは、コマンドラインコマンドを介してのみ制御できます。
圧縮ファイルとスパースファイルの違い
上記で名前を付けたすべてのファイルシステムは、標準の圧縮機能もサポートしています。これらのツールはどちらもディスクスペースを節約できるという利点がありますが、さまざまな方法でこの目標を達成します。圧縮を使用する主な欠点は、システムの読み取り/書き込みパフォーマンスが低下する可能性があることです。追加のリソースがデータの解凍または圧縮に使用されるため。ただし、一部のソフトウェア製品は圧縮をサポートしていません。
長所と短所
スパースファイルの最大の利点は、ユーザーがストレージスペースをほとんど使用しない大きなファイルを作成できることです。データが書き込まれると、ストレージスペースが自動的に割り当てられます。ファイルシステムがゼロを書き込むためにディスクスペースを事前に割り当てる必要がないため、大きなスパースファイルは比較的短時間で作成されます。
利点は、それらをサポートするアプリケーションによってのみ制限されます。プログラムにそれらを認識または使用する機能がない場合、プログラムはそれらを元の非圧縮状態に保ちます。これは何のメリットもありません。サポートされていないアプリケーションがコピー先にコピーすると、サイズが数メガバイトしかないスパースファイルが突然数ギガバイトに拡大する可能性があるため、これらにも注意する必要があります。
もう1つの欠点は、その公称サイズが使用可能な空き領域(またはユーザーアカウントに課せられたクォータ制限)を超えている場合、そのようなファイルをコピーまたは作成できないことです。たとえば、元のサイズ(すべてゼロバイト)が500 MBであり、それを作成するために使用されるユーザーアカウントに400MBのクォータ制限がある場合です。これにより、実際に占有するディスク容量が50 MBのディスク容量しかない場合でも、エラーがスローされます。
このようなデータを格納するドライブについては、ファイルシステムが必要に応じてスパースファイルにデータを書き込むため、断片化する傾向もあります。時間の経過とともに、これはパフォーマンスの低下につながる可能性があります。さらに、一部のディスク管理ユーティリティは、使用可能な空き領域の量を正確に表示しない場合があります。ファイルシステムがほぼいっぱいになると、予期しない結果が生じる可能性があります。たとえば、スパースとしてマークされた既存の部分にデータがコピーされると、ディスクフルエラーが発生する可能性があります。
Windowsでスパースファイルを作成する方法
これを行うには、WindowsOSでコマンドラインを使用します。検索では、cmdを記述し、管理者として実行します。
Windowsは、fsutilプログラム(ファイルシステムユーティリティ)を使用してこのデータを管理します。 createを実行すると、デフォルトでファイルは通常どおり作成されます。作成する必要のあるフォルダーに移動し、次のように入力します。
fsutil file createnew sparse-file 1000000000
ここで、sparse-fileは名前であり、最後にそのサイズがバイト単位で示されます。
ファイルに値「sparse」を割り当てるには
fsutil sparse setflag sparse-file
、次のように入力します。このフラグを削除するには、次のコマンドを実行します。
fsutil sparse setflag sparse-file 0
属性を再度割り当てるには、次の ようにします。
fsutil sparse setflag sparse-file
チェック:
fsutil sparse queryflag sparse-file
この属性自体は、まだディスク領域を節約していません。これを行うには、内部で解放される空の領域をマークアップする必要があります。
空白領域をマークするには、次のように入力
fsutil sparse setrange sparse-file 0 1000000000
します。最後に、オフセットと長さをバイト単位で指定します。私の場合、0から1GBまで。
完全にスパースファイルをインストールするには、フルサイズを指定します。必要に応じて、ここでより大きな値を指定してファイルを展開できます。
指定された属性がファイルに割り当てられていることを確認するために、レイアウトを実行してみましょう
fsutil file layout sparse-file
。このような属性は任意のファイルに設定できます。このコマンドをその名前で実行し、必要なサイズを設定するだけです。
以前に作成されたファイルのプロパティで、1GBのサイズでそれを見ることができます。ファイルはディスク上で0バイトを占めます。
このコマンドセットは、このデータ型(NTFS、ReFSなど)をサポートするすべてのWindowsファイルシステムに適しています。
Linuxでスパースファイルを作成する方法
Linuxでは、これらのデータ型を作成するためのコマンドがいくつかあるため、これらのデータ型を作成するプロセスは少し簡単です。このセットは、すべてのLinuxファイルシステムに適合します。
ここでは、ddまたはtruncateコマンドを使用できます。
最初のコマンドは次のようになり
dd if=/dev/zero of=file-sparse bs=1 count=0 seek=2G
ます。file-sparseが名前で、そのサイズが最後に示されている場合、バイト、メガバイトなどで指定できます。
2番目のコマンドはより単純で、次のようになります。s
truncate -s2G file-sparse
値はサイズを示し、その後に名前が続きます。
Windowsと比較して、Linuxでは、そのようなファイルがコマンドの1つによって作成されると、デフォルトで「スパース」になります。
通常をスパースに変換するには、別のコマンドがあります。
cp --sparse=always ./025.jpg ./0251.jpg
ここで、025.jpgは最初の通常の名前です。
0251.jpg-およびスパースのミドルネーム。
増やす方法
既存のファイルを拡大する必要がある場合は、最初のコマンドを使用します。ここで名前を置き換えて、目的のサイズを指定します。
dd if=/dev/zero of=025.jpg bs=1 count=0 seek=2G
これにより、サイズが2GBに増加します。
サイズを確認するには、次のコマンドを実行します。
du -h --apparent-size 025.jpg
ApFSスパースファイル
実際、このコマンドセットはアップルファイルシステム(ApFS)にも適しています。LinuxとMacOSはUnixカーネルアーキテクチャに基づいているため、どちらもUnixコマンドとBashシェルへのアクセスを提供します。
ターミナルを起動し、Linuxで使用したコマンドのいずれかを実行します。
macOS Catalinaでは、最初のコマンドのみが機能し、サイズはバイト単位で指定する必要があります。そうしないと、コマンドでエラーが発生します。
sudo dd if=/dev/zero of=sparse_APFS bs=1 count=0 seek=1000000000
ApFSファイルシステムは、特定の条件に従って、デフォルトでスパースファイルを作成するため、ファイルを増やすには、次のコマンドを使用できます。MacOSで
dd if=/dev/zero of=187.jpg bs=1 count=0 seek=500000000
サイズを設定します(たとえば、500MB)。サイズはバイト単位で指定する必要があります。
プロパティでは、そのサイズが500Mbに増加していることがわかります。
結論
この機能をOSで使用する前に、それらのすべての長所と短所を理解することが非常に重要です。これらの機能を知っていると、将来の潜在的な問題を回避するのに役立つことが保証されます。
すべての追加のビデオチュートリアルを含む完全な記事のソースを参照してください 。また、YouTubeチャンネルにもアクセスしてください 。400以上のトレーニングビデオがあります。