縮小された仮想ディスクファイルは、一致しないファイルサイズを報告します。

縮小された仮想ディスクファイルは、一致しないファイルサイズを報告します。

원래는 약 3.5TiB 크기의 단일 가상 디스크 파일(.qcow2)이 있었는데 여러 가지 이유로 유사한 모든 데이터를 자체 가상 디스크 파일에 "그룹화"하기로 결정했습니다. 이는 분명히 원본 디스크 파일을 900GiB로 줄일 수 있음을 의미하지만 ls친구들 stat은 여전히 ​​원본 3.5TiB를 나열합니다.

$ ls -lhks mydisk.qcow2 
722G -rw-r--r-- 1 root root 3.5T Aug  6 18:06 mydisk.qcow2

물론 파일 시스템 자체(ext4)를 축소한 후 파일을 솎아냈기 때문에 현재 722GiB만 할당되어 있습니다. 하지만 내 백업 도구는 여전히 3.5TiB를 감지하므로 전체 데이터를 검색하고 디스크 자체는 900GiB만 저장할 수 있으므로 완료하는 데 거의 4배의 시간이 걸립니다.

보고서의 차원을 어떻게 "새로 고침"합니까? 이것은 HDD가 있는 머신이므로 파일이 너무 조각화되어 있고 3.5TiB 정도의 크기를 가지고 있는 것 같습니다. 하지만 파일을 복사하면 이 문제가 자동으로 해결되지 않을까요? (시도했지만 적어도 해결되지는 않았습니다) 또한 중요한 경우 디스크 파일 자체도 ZFS에 있습니다.

可能であれば、どんな解決策でも良いでしょう。所定の位置に。しばらくの間ディスクを使用して仮想マシンをシャットダウンすることは問題ではありません。

ベストアンサー1

これを内部で行う方法はいくつかあります。

  1. zerofree [-v] /dev/vdXY内部で使用ゲストVM(Linuxなら私のものは両方)を見つけるには0以外の未割り当てブロック(「削除された」もの)を0に置き換えます。fallocate --dig-holes mydisk.qcow2フォロー所有者0を穴に置き換えます。ホストのファイルシステムによっては、後者が不要な場合がありますが、圧縮が有効になっていると、ZFSは自動的にこれを稀に扱うと思います。
  2. ただ使ってもvirt-sparsify --in-place mydisk.qcow2ゼロイングとパンチングともに効果があるようです。私が知る限り、libguestfsでトリム/削除/マッピング解除のサポートが必要です。ただし、バージョンが古すぎない場合は、そのバージョンが必要です。

テストのために10GiBディスクを作成し、いくつかのテキストファイルを追加し、残りを埋め、最後のdd if=/dev/urandomファイルを削除しました。割り当てられていることをdu -h確認してください9.8G。その後、いくつかの仮想ディスクを直接コピーして個別にテストしました。

  1. ZFS圧縮を使用しているため、zerofreeこの圧縮は1173kB(1200640バイト)に減少しました。fallocate何も変わりません(予想)。
  2. さらに一歩進み、875kB(895488バイト)に達します。

zerofreeこの場合、ZFS圧縮がやや非効率的であるかどうかを言うのは難しいです。ところで、virt-sparsifyホストのコマンドであり、速度も速いようで、ただ使用します。

おすすめ記事