ストーリー

ストーリー

私は仮想マシンで動作するAlpine Linux(v3.13.2)を始めました。 (Hyper-Vではそれは重要ではないと思います。)なぜインストール後にAlpine Linuxしか見えないのだろうか。使用予想される「0-700MB」ですが、インストール中に.vhdxファイルがほぼ4GiBまで大きくなるほど十分に書き込みます。

ストーリー

「仮想」.isoを使用して、新しい空の仮想マシンにダウンロードしてインストールしました。いつものように、ドライブに対して動的にvhdxを拡張する127GiBを作成しました。これは4MiB .vhdxファイルで始まります。仮想マシンには1GiB RAM、4つのvCPU、およびNICがあります。その間、setup-alpine私はほとんどデフォルトを選択しましたが(キーボードとタイムゾーン、IIRCを除く)、「sys」モードで「sda」にインストールしました。

実際にファイルシステムを作成したとき、.vhdxファイルは、ある時点で4MiBから約1.7GiBに増え、再起動するように求められたら、再び約3.5GiBに増えました。

.isoを削除し、再起動してログインした後、ついに3.72GiB .vhdxファイルを見ました。しかし、df私はそうではないことを示しています。使用ほぼ次のとおりです。

# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs           10240        0     10240   0% /dev
shm               505164        0    505164   0% /dev/shm
/dev/sda3      128048328   189800 121310972   0% /
tmpfs             101036      108    100928   0% /run
/dev/sda1         523248      272    522976   0% /boot/efi

Optimize-Vhd通常のルーチン(Powershell)を実行しようとしましたが、.vhdxのサイズが縮小されていないため、連続した「0」はすべてありません。Optimize-Vhd.vhdxファイルを縮小する前に、Alpine Linuxインスタンスを最適化する方法を理解する必要がありました。

アイデア?

答え1

これは Alpine Linux に限定されません。これは、ファイルシステム(ext4)オプション/動作とWindowsがスパースファイルを処理する方法の違いによるものです。

Linuxはまれなファイルに依存しますが、Windowsはそうではありません。つまり、ほぼ完全に空のブロックが大量に拡張されることが多いのです。読んだ内容を見ると、32MBのデフォルトブロックサイズを使用していることがわかります。これは、Linuxで使用される一般的なファイルシステムにしばしば膨らみを引き起こします。すべてのLinuxファイルシステムがこれを行うわけではないため、ディスクが自然に拡張される可能性があります。

Eric SironがTechnetスレッドに投稿しました(2019年1月22日火曜日午後5時46分)彼は持っています追加 記事これについていつ心配したいのか、心配したくないのか、そして気になったらどうするのか話してください。

@Stewartの提案を受け入れてみましたが、〜122GiBが切り捨てられたと報告されましたが、実際には.vhdxファイルのサイズを〜50MiB以上減らすfstrim -v /内容は変更されませんでした。Optimize-Vhd

に基づいて別の提案そしてDebian Wikiのメモ、一つあります。たくさんdiscardこのオプションが実際に行うことと、それが良いのか悪いのかについて意見の違い/混乱があります。この部分は仮想ディスクと物理ディスクの違いに関連しているようです。fstrimそれでも役に立たなかったので、discard新しくインストールし、/ etc / fstabを変更してそのオプションを使用する(そして再起動)試みましたfstrim。この場合、違いはありません。

この質問から

... fsは仮想マシン用であり、ホストマシンのまれなネイティブイメージファイルに含まれています。新しいブロックが割り当てられると、時間が経つにつれてファイルが作成/削除/変更されるにつれて、イメージファイルは仮想マシンで使用されるストレージ全体が基本的に同じままであるにもかかわらず、徐々にスパースを失い、「スパース」サイズに変わります。

実際、問題は、削除されたブロックを再利用したくないファイルシステムに関するようです。これが真であれば、これらの増加はドライブ全体/ vhdxサイズの特定の割合で停止すると予想されます。これは私が見ている動作に対して意味があります(.vhdxファイルのサイズは起動するたびに〜30MiBずつ増加します。つまり、起動、ログイン、poweroffバブル、リンス、繰り返し、起動ごとに+〜30MiBを意味します)。最後に、私はこれがこの行動の組み合わせであることを望みますそしてVhdxドライバがスパースファイルを処理するのではなく、ext4がスパースファイルを処理する方法です。

ついに私は見つけたHyper-VベースのLinuxに関するMicrosoftのベストプラクティス。ブロックサイズが1MBのvhdxを使用すると、〜286MiB .vhdxが新しくインストールされます。flex_bg=4096/ etc / fstabにマウントオプションを追加しても、追加の違いがないかどうかは確認されませんでした。

関連情報