Skip to content

QEMU 虚拟机安装和使用教程

  1. 安装QEMU和图形话工具
sh
yum install libvirt* qemu* virt-manager -y
  1. 其他命令
sh
启动服务:sudo systemctl start libvirtd       
设置开机开启:sudo systemctl enable libvirtd     
检查运行状态:sudo systemctl status libvirtd     
查看虚拟机列表:virsh list --all
  1. 启动虚拟机
sh
virt-manager &

启动虚拟机

  1. 新建虚拟机

选择安装媒介选择内存和CPU设置创建自定义存储生成新虚拟机配置虚拟机信息

  1. 虚拟机安装

安装字体选择安装信息摘要选择安装目的地设置用户密码开始安装等待安装

  1. 虚拟机快照
sh
创建快照命令
#!/bin/bash


# 配置部分
VM_NAME="ZTGIS_FILE"                              # 虛擬機名稱
DISK_PATH_DATA="/run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/qemu/${VM_NAME}_DATA.qcow2"  # 數據磁盤路徑
DISK_PATH_SYS="/run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/qemu/${VM_NAME}_SYS.qcow2"   # 系統磁盤路徑
TIMESTAMP=$(date +'%Y%m%d%H%M%S')                       # 日期
SNAPSHOT_NAME="${VM_NAME}_${TIMESTAMP}"           # 快照名稱=虛擬機名稱+日期
SNAPSHOT_DIR="/run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/qemu/snapshots"  # 快照存放目錄
LOG_FILE="/run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/qemu/log/qemu_snapshots.log"            # 快照日志文件路徑


# 檢查數據磁盤文件是否存在
if [ ! -f "$DISK_PATH_DATA" ]; then
  echo "´錯誤:數據磁盤文件不存在!" >> "$LOG_FILE"
  exit 1
fi


# 檢查系統磁盤文件是否存在
if [ ! -f "$DISK_PATH_SYS" ]; then
  echo "錯誤:系統磁盤文件不存在!" >> "$LOG_FILE"
  exit 1
fi


# 創建快照文件名
SNAPSHOT_FILENAME_DATA="${SNAPSHOT_NAME}_DATA.qcow2"
SNAPSHOT_FILENAME_SYS="${SNAPSHOT_NAME}_SYS.qcow2"
SNAPSHOT_PATH_DATA="${SNAPSHOT_DIR}/${SNAPSHOT_FILENAME_DATA}"
SNAPSHOT_PATH_SYS="${SNAPSHOT_DIR}/${SNAPSHOT_FILENAME_SYS}"


# 檢查快照存放目錄是否存在,不存在則創建
if [ ! -d "$SNAPSHOT_DIR" ]; then
  mkdir -p "$SNAPSHOT_DIR"
fi


# 暫停虛擬機
#virsh suspend "$VM_NAME"


# 創建數據磁盤
echo "開始創建數據磁盤快照:$SNAPSHOT_FILENAME_DATA for VM $VM_NAME at $(date)" >> "$LOG_FILE"
qemu-img convert -O qcow2 "$DISK_PATH_DATA" "$SNAPSHOT_PATH_DATA"


# 檢查數據磁盤快照創建結果
if [ $? -eq 0 ]; then
  echo "數據磁盤快照'$SNAPSHOT_FILENAME_DATA' 創建成功,存儲在 $SNAPSHOT_PATH_DATA" >> "$LOG_FILE"
else
  echo "錯誤:數據磁盤快照創建失敗!" >> "$LOG_FILE"
  exit 1
fi


# 創建系統磁盤
echo "開始創建系統磁盤快照 :$SNAPSHOT_FILENAME_SYS for VM $VM_NAME at $(date)" >> "$LOG_FILE"
qemu-img convert -O qcow2 "$DISK_PATH_SYS" "$SNAPSHOT_PATH_SYS"


# 檢查系統磁盤快照創建結果
if [ $? -eq 0 ]; then
  echo "系統磁盤快照'$SNAPSHOT_FILENAME_SYS' 創建成功,存儲在 $SNAPSHOT_PATH_SYS" >> "$LOG_FILE"
else
  echo "´錯誤:系統磁盤快照創建失敗!" >> "$LOG_FILE"
  exit 1
fi


# 恢復虛擬機運行
#virsh resume "$VM_NAME"


# 結束
echo "快照創建過程結束 at $(date)" >> "$LOG_FILE"
#!/bin/bash
sh
執行快照腳本:/run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/snapshot/create_snapshot.sh


回復快照:qemu-img snapshot -a "kylin10.0_20250609101819" /var/lib/libvirt/images/kylin10.0.qcow2


檢查快照健康狀態:qemu-img check /var/lib/libvirt/images/snapshots/kylin10.0_20250609101819.qcow2


檢查虛擬機佔用磁盤文件打進程: lsof /run/media/root/92ed153b-6f05-47ea-8289-d30d5b7e6145/qemu/ZTGIS_APP_DATA.qcow2