qcow2鏡像大小壓縮

本文擬對qcow2進行壓縮進行簡單介紹

背景

qcow2鏡像在使用一段時間后,總是會不斷膨脹變大,所以在導出分享時一般都需要進行壓縮以縮減占用空間。

清除空洞

qcow2方式也有稀疏的問題,在磁盤級別上看,鏡像會有大量連續的相同空洞,比如剛創建的鏡像的swap分區,通過virt-sparsify 我們可以消除這些空洞,從而縮小磁盤大小,便于我們傳輸磁盤鏡像。該方法耗時較久

qemu-img create -f qcow2 test2.qcow2 5G   #創建5G的qcow2鏡像
# sudo apt install guestfs-tools # 安裝工具包
virt-sparsify -x /root/test.qcow2 --convert qcow2 /root/test2.qcow2   #除鏡像空洞
# 使用該方法不會降低系統開機速度
virt-sparsify --compress --convert qcow2 centos.img centos.qcow2    #鏡像格式轉換

fstrim方法
具體流程就是將qcow2鏡像掛載出來,隨后對每個分區進行fstrim操作。

在導出鏡像之前,先在虛擬機系統的內部,對所有未使用,以及所有剩余可使用的磁盤空間進行全面置零填充操作,可以簡單理解為將當前所有未存儲有效數據的block(含已刪除的文件block)全都進行寫0覆蓋,然后再進行鏡像壓縮導出,就可以忽略所有這些無用的數據空間了;該方法耗時較久。

#dd if=/dev/zero of=/null.dat   //創建一個全0的大文件,占滿所有的剩余磁盤空間,需要很久時間
#rm -f /null.dat                //刪除這個文件#qemu-img convert -c -p -O qcow2 vm500G.qcow2 vm500G-mini.qcow2

進一步壓縮

qemu-img convert -p -O qcow2 zero_disk.qcow2 new_disk.qcow2
# 沒有使用 -c 選項,單獨使用該方法鏡像文件不會變小,需要先去空洞再convert# 如果需要壓縮,可以加上 -c 選項,文件會變得更小:
qemu-img convert -p -c -O qcow2 zero_disk.qcow2 compress_disk.qcow2
# 使用該方法會降低系統開機速度,原因是每次都到壓縮鏡像上的文件都需要解壓縮,這會影響讀性能

不影響性能

參考壓縮qcow2鏡像帶來的性能損失簡單分析這里的分析,對qcow2鏡像進行壓縮會對虛擬機性能產生影響。

第一種:用virt-sparsify -x uos1060-nogt.qcow2 --convert qcow2 uos-spar.qcow2 --tmp ./tmp/來清除空洞

第二種:

  1. 先用fstrim鏡像
  2. qemu-img convert -p -O qcow2 src.qcow2 dst.qcow2

經過測試,這兩種方法最后縮減鏡像大小的效果基本一樣。

已經被壓縮的鏡像如何恢復

重新轉換成raw格式或者qcow2格式(不帶-c壓縮選項)

qemu-img convert -f qcow2 -p -O qcow2 src-c.qcow2 dst-uc.qcow2

參考

Does converting qcow2 without -c remove compression?

Can qemu-img uncompress qcow2 file?

An Overview of QEMU Storage Features

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63731.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63731.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63731.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

達夢 本地編碼:PG_GBK, 導入文件編碼:PG_UTF8錯誤

問題 達夢 本地編碼:PG_GBK, 導入文件編碼:PG_UTF8錯誤 解決 右鍵管理服務器 查看配置 新建一個數據庫實例,配置跟之前的保持一致 新建一個用戶,跟以前的用戶名一樣 在用戶上,右鍵導入,選擇dmp的位置 導…

深度學習卷積神經網絡CNN之MobileNet模型網絡模型詳解說明(超詳細理論篇)

1.MobileNet背景 2.MobileNet V1論文 3. MobileNett改進史 4. MobileNet模型結構 5. 特點(超詳細創新、優缺點及新知識點) 一、MobileNet背景 隨著移動設備的普及,深度學習模型的應用場景逐漸擴展至移動端和嵌入式設備。然而,傳統…

垂起固定翼無人機大面積森林草原巡檢技術詳解

垂起固定翼無人機大面積森林草原巡檢技術是一種高效、精準的監測手段,以下是對該技術的詳細解析: 一、垂起固定翼無人機技術特點 垂起固定翼無人機結合了多旋翼和固定翼無人機的優點,具備垂直起降、飛行距離長、速度快、高度高等特點。這種無…

kubernates實戰

使用k8s來部署tomcat 1、創建一個部署,并指定鏡像地址 kubectl create deployment tomcat6 --imagetomcat:6.0.53-jre82、查看部署pod狀態 kubectl get pods # 獲取default名稱空間下的pods kubectl get pods --all-namespaces # 獲取所有名稱空間下的pods kubect…

數據挖掘之認識數據

在數據挖掘過程中,數據的認識是非常重要的一步,它為后續的數據分析、建模、特征選擇等工作奠定基礎。以鳶尾花數據集(Iris Dataset)數據集之鳶尾花數據集(Iris Dataset)-CSDN博客為例,下面將介紹…

Java 優化springboot jar 內存 年輕代和老年代的比例 減少垃圾清理耗時 如調整 -XX:NewRatio

-XX:NewRatio 是 Java Virtual Machine (JVM) 的一個選項,用于調整 年輕代(Young Generation)和 老年代(Old Generation)之間的內存比例。 1. 含義 XX:NewRatioN 用于指定 老年代 與 年輕代 的內存比例。 N 的含義&…

統信UOS 1071 AI客戶端接入本地大模型配置手冊

文章來源:統信UOS 1071本地大模型配置手冊 | 統信軟件-知識分享平臺 1. OS版本確認 1.1. 版本查看 要求:計算機,屬性,查看版本(1070,構建號> 101.100) 2. UOS AI版本確認 UOS AI,設置&am…

定時任務——定時任務技術選型

摘要 本文深入探討了定時任務調度系統的核心問題、技術選型,并對Quartz、Elastic-Job、XXL-Job、Spring Task/ScheduledExecutor、Apache Airflow和Kubernetes CronJob等開源定時任務框架進行了比較分析,包括它們的特點、適用場景和技術棧。文章還討論了…

【ArcGIS Pro微課1000例】0064:柵格目錄、柵格數據集、鑲嵌數據集

一、柵格目錄與柵格數據集 1. 定義 柵格目錄:是一個用于管理和組織柵格數據集的結構,通常包含多個柵格數據集的元數據和索引信息。它相當于一個文件夾,里面可以存放多個柵格文件。可以將工作空間轉柵格目錄。 柵格數據集:是指單個的柵格數據文件,包含了具體的空間數據,…

Java基礎 | 數據庫的命名規范

數據庫的命名規范 1. 基本原則2. 命名規范詳解2.1 命名禁止項2.2 命名規范3. 通用字段規范4. 特殊表命名建議 1. 基本原則 統一性:全庫采用一致的命名規范簡潔性:在表達清晰的前提下盡量簡短規范性:遵循數據庫標準規范可讀性:命名…

麒麟操作系統服務架構保姆級教程(二)sersync、lsync備份和NFS持久化存儲

如果你想擁有你從未擁有過的東西,那么你必須去做你從未做過的事情 上篇文章我們說到rsync雖好,但是缺乏實時性,在實際應用中,咱們可以將rsync寫進腳本,然后寫進定時任務去備份,如果每天凌晨1:00…

青少年編程與數學 02-004 Go語言Web編程 16課題、并發編程

青少年編程與數學 02-004 Go語言Web編程 16課題、并發編程 一、并發編程并發編程的關鍵概念包括: 二、并發與并行并發編程(Concurrency)并行計算(Parallelism)區別 三、Go語言并發編程1. 協程(Goroutine&am…

均值聚類算法

K-均值聚類算法是一種常用的無監督學習算法,用于將數據集劃分為K個簇或聚類。它的基本思想是通過迭代將數據點分配到簇中,使得每個數據點都屬于最近的簇中心,并且使得簇內的數據點之間的距離最小化。 算法步驟如下: 1. 初始化K個…

wtforms+flask_sqlalchemy在flask-admin視圖下實現日期的修改與更新

背景: 在flask-admin 的modelview視圖下實現自定義視圖的表單修改/編輯是件不太那么容易的事情,特別是想不自定義前端view的情況下。 材料: wtformsflask_sqlalchemy 制作: 上代碼 1、模型代碼 from .exts import db from …

【AIGC-ChatGPT進階副業提示詞】末日生存指南 2.0:瘋狂科學家的荒誕智慧

引言 在這個不斷變化的世界中,末日似乎總是lurking在角落。但是,親愛的幸存者們,不要害怕!因為我,瘋狂科學家2099,正在這里為你們帶來最新版本的末日生存指南。這不是你祖母的應急手冊,而是一本…

BiLSTM:深度學習中的雙向長短期記憶網絡

目錄 ?編輯 1. BiLSTM原理 2. BiLSTM的應用案例 3. BiLSTM研究進展 4. BiLSTM技術挑戰 5. BiLSTM未來趨勢 6. BiLSTM的實際應用示例 6.1 數據準備 6.2 構建BiLSTM模型 6.3 訓練模型 6.4 評估模型 6.5 可視化訓練過程 7. 結論 在深度學習的浪潮中,BiLS…

Socket 收發內部拆包封包函數

在socket通信的時候,有時候數據比較大,內部緩存會溢出,導致發送或接收數據不正確。 針對這個情況,封裝了一個接收和發送的底層函數,根據緩存大小批次發送和接收,內部有自己的緩沖區,測試情況良…

RK3588 , mpp硬編碼yuv, 保存MP4視頻文件.

RK3588 , mpp硬編碼yuv, 保存MP4視頻文件. ?? 傳送 ?? Ubuntu x64 架構, 交叉編譯aarch64 FFmpeg mppRK3588, FFmpeg 拉流 RTSP, mpp 硬解碼轉RGBRk3588 FFmpeg 拉流 RTSP, 硬解碼轉RGBRK3588 , mpp硬編碼yuv, 保存MP4視頻文件.

powershell美化

powershell美化 寫在前面 除了安裝命令,其他都是測試命令,后續再寫進配置文件 安裝主題控件 安裝主題oh-my-posh,powershell中執行 winget install JanDeDobbeleer.OhMyPosh -s winget oh-my-posh init pwsh | Invoke-Expression # 查看…

2024/12/22周報

文章目錄 摘要Abstract深度學習文獻閱讀1. 背景與問題2. 發明目的3. 方法與實現3.1 數據采集與變量選取3.2 BP神經網絡建立穩態預測模型3.3 構建多目標優化函數3.4 多目標差分進化算法求解優化3.5 最優決策變量篩選3.6 實時控制 4. 系統實現5. 實際效果與驗證5.1 仿真驗證5.2 神…