linux空洞ファイル

1516 ワード

  • ファイル空洞と空洞ファイル
  • 空洞のないファイルを作成する
  • 空洞ファイル
  • を作成
  • ファイルサイズ表示コマンド
  • ファイルのディスクブロックサイズ表示コマンド

  • ファイルの空洞と空洞
    システム呼び出しでファイルのオフセット量を変更できることはよく知られていますが、プログラム呼び出しでファイルのオフセット量がファイルの最後を越えてからI/O操作を実行すると、どうなりますか?read()呼び出しは、ファイルの最後を表す0を返します.write()呼び出しは、ファイルの最後の任意の場所でデータを書き込むことができます.この場合、ファイルの次の書き込みはファイルを延長し、ファイルに空洞を構成することが許される.元のファイルの最後から新しい書き込みデータまでの空間をファイル空洞と呼ぶ.ファイル空洞はディスク領域を占有せず、ある時点でファイル空洞にデータが書き込まれていることを知ってこそ、ファイルシステムはディスクブロックを割り当てることができる.空洞の存在は、1つのファイルの名目上のサイズが、ディスクストレージの総量よりも大きくなる可能性があることを意味します(多くの場合).ファイル空洞にバイトを書き込むと、カーネルにストレージユニットを割り当てる必要があります.ファイルサイズが変わらなくても、システムの使用可能なディスク領域が減少します.

    空洞のないファイルを作成
    dd if=/dev/urandom2 bs=4096 seek=999 count=1

    空洞のあるファイルを作成
    dd if=/dev/urandom of=testfile2 bs=4096 seek=999 count=1

    ファイルサイズの表示コマンド
    ls -lh testfile*

    ファイルが占めるディスクブロックサイズの表示コマンド
    du -h testfile*

    結論:1.空洞のないファイルは、ファイルサイズとディスクの占有サイズが同じです.2.空きファイルがあり、ファイルサイズは4 Mであり、占有ブロックサイズは4 Kである.
    実際の空洞ファイルの適用シーンは2つあります:1.电源をダウンロードする时、ちょうど试着ダウンロードを始めることを発见して、ファイルの大きさはおよび数百Mあります.2.仮想マシンのディスクミラーを作成するとき、100 Gのディスクミラーを作成しましたが、システムをインストールしてから、最初は3、4 Gのディスクスペースしか使いませんでした.最初から100 Gを割り当てると、リソースが無駄になります.