$ uname -r
5.0.9-301.fc30.x86_64
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/vda3 ext4 rw,relatime,seclabel
$ Sudo fstrim -v /
fstrim: /: the discard operation is not supported
同じVMですが、ディスクをVirtIOからSATAに切り替えた後:
$ findmnt /
TARGET SOURCE FSTYPE OPTIONS
/ /dev/sda3 ext4 rw,relatime,seclabel
$ Sudo fstrim -v /
/: 5.3 GiB (5699264512 bytes) trimmed
仮想ディスクはQCOW2ファイルによってバッキングされています。私はvirt-manager/libvirtを使用しています。 libvirt-daemonはバージョン4.7.0-2.fc29.x86_64です。私のホストは現在、Vanillaカーネルビルド5.1(ish)を実行しているため、現時点では少し「カスタマイズ」されていますが、私はストックのFedoraカーネル構成から始めてビルドしました。
VirtIOで破棄サポートを有効にする方法はありますか?または、コードはまだそれをサポートしていませんか?私は必ずしもそれを有効にする方法の正確な指示を必要としないが、私は驚いて好奇心が強く、確実な答えが欲しい:-)。
その設定では破棄はサポートされていなかったようです。ただし、ディスクを「VirtIO」から「SCSI」に変更し、SCSIコントローラーを「VirtIO」に変更すると機能します。 ウォークスルー が見つかりました。いくつかのウォークスルーがあります。それは最初の検索結果でした。この新しいオプションはvirtio-scsi
と呼ばれます。もう1つの古いシステムはvirtio-block
またはvirtio-blk
と呼ばれます。
buntuバグ追跡システム にも素晴らしいスレッドがありました。 Linux 5.0でvirtio-blk
が破棄要求のサポートを開始することが指摘されています。これには、2019年2月22日にコミットされたQEMUでのサポートも必要であると述べています。したがって、将来のバージョンでは、VirtIOと破棄の両方のサポートを自動的に取得すると思います。
現在、私のvirt-manager
は、Fedora 29をインストールしていることがわかっていても、デフォルトではvirtio-scsi
ディスクを作成しません。基本的な「VirtIO」ディスクを作成するだけです。 virtio-scsi
に切り替えることの欠点があるかどうかはわかりません。
エミュレートされたSATAと比較した場合、virtio-scsi
はvirtio-blk
と同じ種類のパフォーマンス上の利点を提供すると思います。 (VirtIOの有無にかかわらず、virt-manager
:-PのどこかにNVMEプロトコルを使用するオプションが表示されません)。
OVirtウェブサイトにはいくつかの Nice propaganda があり、
virtio-blk
の制限事項virtio-scsi
は、SCSI LUNへのパススルーモードで使用でき、virtio-scsi
を変更することなく、さまざまな新しいSCSIコマンド機能を使用できます。特にSCSIパススルーを使用していない場合、新しいコマンドにはQEMUでの新しいサポートが必要ですが、virtio-scsi
コードでは必要ありません。virtio-scsi
には、複数のキューのサポートが含まれています。 (これがシングルキューハードウェアの効率にも役立つかどうかはわかりません)。