menu Chancel's Blog
rss_feed lightbulb_outline

我的笔记

PVE - 关机并休眠PVE的所有虚拟机

关机并休眠所有虚拟机

qm list | grep running | awk -F'[^0-9]*' '$0=$2' | while read -r vm_id; do qm suspend $vm_id --todisk 1; done; shutdown -h now

核心点在于如何休眠单台机器

qm suspend 100 --todisk 1

参考资料

Virtualization Technology Linux 2021-03-26 16:07:30 location_on

Docker - 如何备份已运行的容器(迁移/导出)

在NAS上运行的Docker容器PhotoPrism需要备份以防万一(当然备份原始照片数据更重要)

备份步骤

  1. commit container
  2. save container to tar file

恢复步骤

  1. load container by tar file

全部步骤指令

# 打印当前所有容器
❯ docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED       STATUS       PORTS                     NAMES
a48bc98b4a21   photoprism/photoprism:latest   "/entrypoint.sh phot…"   2 weeks ago   Up 5 hours   0.0.0.0:32342->2342/tcp   chancel_photoprism_1
f1d7d5ac091f   mariadb:10.5                   "docker-entrypoint.s…"   2 weeks ago   Up 5 hours   3306/tcp                  chancel_mariadb_1

# 提交需要备份的容器
❯ docker commit -p a48bc98b4a21 photoprism-container-backup

# 查看镜像列表
❯ docker images
REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
photoprism-container-backup   latest    cc71161fb644   4 minutes ago   14.3GB
hello-world                   latest    d1165f221234   2 weeks ago     13.3kB
mariadb                       10.5      e27cf5bc24fe   2 weeks ago     401MB
photoprism/photoprism         latest    f81f7b1e47a4   3 weeks ago     1.3GB

# 导出已保存的镜像备份为tar压缩文件
❯ docker save -o ~/photoprism-container-backup.tar photoprism-container-backup

# 导入已保存的镜像备份tar文件
❯ docker load -i ~/photoprism-container-backup.tar

# 重新使用镜像运行容器
docker run -d -p 32342:2342 container-backup photoprism-container-backup

Virtualization Technology 2021-03-22 15:53:05 location_on

Proxmox - 物理机Windows10如何虚拟化成虚拟机(P2V)

Windows10重装系统是非常简单的事情,但如何拷贝迁移旧系统数据是个难题,如果你有虚拟化的软件,那么把现有的Windows虚拟化成虚拟机是个保留资料的最佳方案

大意步骤

  1. 使用分区助手DiskGenius(免费版即有这个功能)热迁移当前操作系统成VMDK格式的虚拟机磁盘文件
  2. 创建一个硬件上类似于当前物理机器配置的虚拟机
  3. 将VMDK文件上传至你的PVE中,再转换VMDK磁盘文件成PVE能识别使用的QCOW2磁盘文件
  4. 导入磁盘文件到PVE的存储卷中,新建虚拟机并使用这个磁盘文件

首先,我们下载可以将当前操作系统热迁移成VMware磁盘格式的DiskGenius免费版

随后打开软件,在菜单栏-工具中选中 将当前操作系统迁移至VMware虚拟机中,选好输出格式与输出内容即可,这里假设输出文件名为 Windows10.vmdk

输出文件之后上传至PVE中,此步随意,可以用scp/smb等方式上传,上传成功之后,使用如下方法转换文件格式

qemu-img convert -O qcow2 Windows10.vmdk ../sdd/Windows10.qcow2

创建一个硬件上类似于当前物理机器配置的虚拟机,无需创建虚拟机硬盘(光驱也不需要)

最后,导入已转换完成的文件到存储卷中,102是新创建的虚拟机ID, local-Thin为卷名

qm importdisk 102 Windows10.qcow2 local-Thin

注:部分Windows10是UEFI方式启动,在PVE中要设置好以UEFI方式启动,否则可能识别不到硬盘

Virtualization Technology Windows 2021-01-26 13:04:06 location_on

Hyper-v 导入硬盘文件到指定的虚拟机

在宿主机上使用如下指令,format的格式自选

qm importdisk [你的虚拟机ID(例如100)] [你的硬盘文件] local-Thin --format=qcow2

Virtualization Technology 2020-08-10 13:12:34 location_on

Hyper-v 虚拟机迁移至 Proxmox

  1. 在Hyper-v选出导出你的虚拟机快照(或虚拟机本身或直接拿磁盘文件都可以),这里假设我有一个Windows7虚拟机要转移到Proxmox上,则导出Windows7虚拟机到D盘根目录下

  2. 导出后找到磁盘文件(如果是导出则在导出的文件夹下的Virtual Hard Disks内),文件名往往是 虚拟机名称.VHDX,将这个文件发送到你的Proxmox机器上,放至有权限的任意目录,我的Windows7

    scp d:\\Windows7.VHDX root@10.0.0.1:/tmp/
  3. SSH登录到Proxmox宿主机上,并使用如下命令检查你上传的Hyper-V磁盘文件是否有问题

    qemu-img check -r all Windows7.vhdx
    
  4. 打开Proxmox网页并创建一个虚拟机,按照你原本虚拟机的配置进行选择,只需更改磁盘配置为一个1G大小的磁盘文件,创建完成之后记住这个文件的名字,后面我们直接转换上传的VHDX文件来替换这个1G大小的虚拟机磁盘,创建后如下图所示

  5. 在你的Proxmox找到第4步创建的虚拟机磁盘文件名,命令如下,找到后顺便删了

    root@chancel:/tmp# find / -name '*101-disk-0.qcow2' 
    /var/lib/vz/images/101/vm-101-disk-0.qcow2
    root@chancel:/tmp# rm -f /var/lib/vz/images/101/vm-101-disk-0.qcow2
    
  6. 转换原本的虚拟机磁盘文件(VHDX)成Proxmox的QCOW2格式,并且保证输出到刚才创建

    root@chancel:/tmp# qemu-img convert -O qcow2 Windows7.vhdx /var/lib/vz/images/101/vm-101-disk-0.qcow2
    
  7. 启动你的虚拟机

Virtualization Technology 2020-07-25 21:49:20 location_on

KVM - network 'default' is not active

Linux下尝试启动Windows实例的时候无法正常启动并显示如下错误信息

Error starting domain: Requested operation is not valid: network 'default' is not active

根据提示可以了解到default网络没有启动,可用以下方法启动

# chancel @ chancel-cp in ~ [15:03:33] 
$ sudo virsh net-list --all
[sudo] password for chancel: 
 Name      State      Autostart   Persistent
----------------------------------------------
 default   inactive   no          yes


# chancel @ chancel-cp in ~ [15:03:37] 
$ sudo virsh net-start default
Network default started
$ sudo virsh net-autostart default
Network default as autostart

Virtualization Technology 2019-08-06 15:39:59 location_on

1 of 1 | A total of 6