mke2fs/fallocateを使用してシックプロビジョニングされた仮想ディスクファイルを作成する方法は?

mke2fs/fallocateを使用してシックプロビジョニングされた仮想ディスクファイルを作成する方法は?

現在、ストレージサイズクォータ用に特別に仮想ディスクを作成しています。次のように10GBのディスクを作成できます。

touch myShare-10G
truncate -s 10G myShare-10G
mke2fs -t ext4 -F myShare-10G
fallocate -l 10G myShare-10G
ls -s myShare-10G --block-size=G

11GBが使用されていると表示されます。

5 GBのデータをコピーした後でも、ファイルサイズはまだ11 GBのままになります。

問題は、5 GBのデータを削除した後、ファイルサイズが11 GBのサイズを維持せずに6 GBに縮小されることです。

仮想ディスクを「thick」構成(つまり、内部コンテンツに関係なくファイルサイズが固定されたまま)にするにはどうすればよいですか?

ベストアンサー1

これを行う簡単な方法の1つは、サポートデバイスを使い捨てではないものにすることです。 HDD対応LVMボリュームを使用すると、この機能を無料で入手でき、VM用の仮想ディスクドライブとして使用できます。最高のパフォーマンスを得るには、rawブロックデバイスを使用することが一般的な推奨事項です。

https://www.linux-kvm.org/page/Tuning_KVM

QEMUはさまざまなストレージフォーマットとバックエンドをサポートしています。最も簡単なのは、生とqcow2の形式ですが、最高のパフォーマンスを得るためには、生のパーティションを使用するのが最善です。論理ボリュームまたはパーティションを作成できます[...]

しかし、SSDストレージに移動すると、自然に再び落ちます。 HDD(man lvmthin)の場合でも、LVMシンプロビジョニングボリュームでも同じ現象が発生します。

この場合、仮想マシンに許可されていないことを通知します。 qemu / KVMの場合は、discard=ignoreこのパラメーターを使用してこれを実行できます。他の仮想化ソリューションにも同様の設定があるとします。

qemuのマンページから:

           "discard=discard"
               discard is one of "ignore" (or "off") or "unmap" (or "on")
               and controls whether "discard" (also known as "trim" or
               "unmap") requests are ignored or passed to the filesystem.
               Some machine types may not support discard requests.

意図を明確にするために現在の構成で削除が不可能であっても指定するのが悪いことはありません。


ちなみに、設定コマンドが短くなることがあります。

# create a new allocated file
fallocate -l 10G myShare-10G
# format it without discarding it
mke2fs -t ext4 -E nodiscard myShare-10G

これは上記の4つのコマンドチェーンと同じ結果を提供する必要があります。

-Fは、既存のファイルシステムを上書きしてプロンプトを表示したくない場合にのみ必要です。新しいファイルの場合、これは必要ありません。

おすすめ記事