前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]

统信服务器操作系统V20 1060e [kvm虚拟机磁盘在线扩容]

作者头像
Kevin song
发布2024-07-04 11:22:54
2310
发布2024-07-04 11:22:54
举报
文章被收录于专栏:运维监控日志分析

kvm虚拟机通过使用`attach-disk`命令在线新增虚拟磁盘,使用`blockresize`命令在线调整现有虚拟磁盘大小,增加存储空间并提升性能。虚拟机内部系统采用lvm逻辑卷管理技术,创建和管理逻辑卷,实现磁盘存储空间的动态管理。

1,查看虚拟机及现有磁盘

代码语言:javascript
复制
[root@localhost ~]# virsh list --all             
 Id   Name           State
-------------------------------
 7    uos20-1060e    running
 -    uosv20-1060a   shut off

[root@localhost ~]# virsh  domblklist uos20-1060e
 Target   Source
----------------------------------------------------------------
 vda      /var/lib/libvirt/images/uos20-1060e_new.qcow2
 hdb      /mnt/cdrom/uos-server-20-1060e-amd64.iso

2,创建qcow2虚拟磁盘

代码语言:javascript
复制
qemu-img create -f qcow2 uos20-1060e_new-disk01.qcow2 5G

3,attach-disk 在线添加虚拟磁盘

代码语言:javascript
复制
virsh attach-disk  uos20-1060e /var/lib/libvirt/images/uos20-1060e_new-disk01.qcow2 vdb --cache=none --subdriver=qcow2
Disk attached successfully
####查看虚拟机虚拟磁盘
[root@localhost ~]# virsh domblklist  uos20-1060e
 Target   Source
----------------------------------------------------------------
 vda      /var/lib/libvirt/images/uos20-1060e_new.qcow2
 vdb      /var/lib/libvirt/images/uos20-1060e_new-disk01.qcow2
 hdb      /mnt/cdrom/uos-server-20-1060e-amd64.iso
  • --subdriver必须使用,否则默认为raw格式
  • --persistent 在线永久添加磁盘

虚拟机文件系统管理

(1)创建lvm逻辑卷

创建pv

代码语言:javascript
复制
pvcreate   /dev/vdb

创建vg(datavg)

代码语言:javascript
复制
vgcreate  datavg  /dev/vdb

创建lv(datalv)

代码语言:javascript
复制
lvcreate  -l 100%FREE -n datalv datavg

查看lv列表

代码语言:javascript
复制
lvs

(2)格式化文件系统

代码语言:javascript
复制
mkfs.xfs /dev/datavg/datalv

(3)挂载文件系统

代码语言:javascript
复制
mkdir /data
mount /dev/datavg/datalv /data

(4)设置开机自动挂载

查看lvm uuid

代码语言:javascript
复制
blkid /dev/datavg/datalv

写入fstab 文件

代码语言:javascript
复制
echo "`blkid |grep datavg |awk -F " " '{print $2}'` /data  xfs defaults 0 0" >> /etc/fstab
#
mount -a

虚拟磁盘热扩容

(1)blockresize 调整虚拟磁盘大小(调整至10G)

代码语言:javascript
复制
[root@localhost ~]# virsh blockresize  uos20-1060e /var/lib/libvirt/images/uos20-1060e_new-disk01.qcow2 10G
Block device '/var/lib/libvirt/images/uos20-1060e_new-disk01.qcow2' is resized

(2)pvresize更新pv容量

代码语言:javascript
复制
pvresize /dev/vdb

(3)扫描系统硬盘并列出物理卷列表

代码语言:javascript
复制
pvscan

(4)扩容lv

代码语言:javascript
复制
lvextend  -l  +100%FREE /dev/datavg/datalv

(5)刷新文件系统容量

xfs文件系统

代码语言:javascript
复制
xfs_growfs  /dev/datavg/datalv

/data目录容量从5G扩容到10G

ext文件系统

代码语言:javascript
复制
resize2fs   /dev/datavg/datalv

虚拟机配置文件更新

将新增的磁盘配置写到虚拟机磁盘配置,避免重启丢失

(1)查看当前虚拟机生效磁盘配置

代码语言:javascript
复制
virsh dumpxml uos20-1060e

(2)编辑虚拟机,将vdb 磁盘的配置,添加到配置文件

virsh edit uos20-1060e

代码语言:javascript
复制
</disk>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2' cache='none'/>
      <source file='/var/lib/libvirt/images/uos20-1060e_new-disk01.qcow2'/>
      <backingStore/>
      <target dev='vdb' bus='virtio'/>
      <alias name='virtio-disk1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
    </disk>

qemu-img 介绍

qemu-img是QEMU虚拟化软件的一个工具,它可以用来创建、转换和管理各种虚拟磁盘格式。

qemu-img 功能介绍

代码语言:javascript
复制
check:检查完整性
create:创建镜像
commit:提交更改
compare:比较
convert:转换
info:获取信息
map:映射
snapshot:快照管理
rebase:在已有的的基础上创建新的镜像
resize:调整大小
amend:修订镜像格式选项

qemu-img 命令格式

代码语言:javascript
复制
qemu-img create [-q] [--object objectdef] [-f fmt] [-b backing_file] [-F backing_fmt] [-u] [-o options] filename [size]

qcow2 格式选项:

  • backing_file:指定后端镜像文件
  • backing_fmt:设置后端镜像的镜像格式
  • cluster_size:设置镜像中的簇大小,取值在512到2M之间,默认值为64K
  • preallocation:设置镜像文件空间的预分配模式
  • encryption:设置加密

创建新的磁盘映像文件

命令格式:

代码语言:javascript
复制
qemu-img create -f <format> <filename> <size>
  • `<format>`磁盘映像的格式,支持Raw、Qcow、VMDK、VHD等格式
  • `<filename>`为文件名
  • `<size>`表示磁盘映像文件的大小

创建大小30G qcow2类型磁盘

代码语言:javascript
复制
qemu-img create -f qcow2  /var/lib/libvirt/images/uos20-1060e_new.qcow2 30G

创建大小30G raw类型磁盘

代码语言:javascript
复制
qemu-img create -f raw  /var/lib/libvirt/images/uos20-1060e_new.qcow2 30G

查看磁盘映像信息

代码语言:javascript
复制
qemu-img info  /var/lib/libvirt/images/uos20-1060e_new.qcow2   -U
image: /var/lib/libvirt/images/uos20-1060e_new.qcow2
file format: qcow2
virtual size: 30 GiB (32212254720 bytes)
disk size: 4.63 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false

返回字段:

  • image:info命令中提供的 FILENAME
  • file format:镜像格式
  • virtual size:即虚拟机分配的磁盘大小
  • disk size:系统占用的空间大小
  • cluster_size:镜像格式的 cluster_size
  • encrypted:镜像是否加密,只有当加密时才显示
  • cleanly shut down:如果镜像是脏的,将显示 no,并且必须在 qemu 下次打开它时进行自动修复
  • backing file:镜像有 backing file显示
  • backing file format:backing file 的镜像格式
  • Snapshot list:镜像内部快照
  • Format specific information:该镜像格式的特定信息

转换磁盘映像格式

命令格式:

代码语言:javascript
复制
qemu-img convert -f <source_format> -O <destination_format> <source_file> <destination_file>
  • `<source_format>` 原始格式
  • `<destination_format>` 目标格式
  • `<source_file>` 原始文件路径
  • `<destination_file>` 目标文件路径

qcow2镜像转化为raw镜像文件

代码语言:javascript
复制
qemu-img convert -f qcow2 -O raw uos20-1060e_new.qcow2 uos20-1060e_new.raw

raw镜像转化为qcw2镜像文件

代码语言:javascript
复制
qemu-img convert -f qcow2 -O raw  uos20-1060e_new.raw   uos20-1060e_new.qcow2

调整磁盘映像大小

命令格式:

代码语言:javascript
复制
qemu-img resize <filename> <new_size>
  • `<filename>` 待调整的虚拟磁盘文件路径
  • `<new_size>`调整后的文件大小

磁盘在原来基础上增加10G

代码语言:javascript
复制
sudo qemu-img resize uos20-1060e_new.qcow2  +10G

磁盘扩容至100G

代码语言:javascript
复制
sudo qemu-img resize uos20-1060e_new.qcow2   100G

qemu-img 操作需要关闭虚拟机,在线扩容使用virsh blockresize命令

扩容磁盘至30G

代码语言:javascript
复制
virsh blockresize  uos20-1060e uos20-1060e_new.qcow2.qcow2 30G

虚拟机磁盘信息

代码语言:javascript
复制
virsh domblklist uos20-1060e

磁盘映像快照管理

命令格式:

代码语言:javascript
复制
qemu-img snapshot -c <snapshot_name> <filename>
  • `<snapshot_name>`快照名称
  • `<filename>` 虚拟磁盘文件路径

创建虚拟磁盘快照(虚拟机关闭状态)

代码语言:javascript
复制
qemu-img snapshot  -c  uos20-1060e_new_20240627 /var/lib/libvirt/images/uos20-1060e_new.qcow2

删除磁盘快照

代码语言:javascript
复制
qemu-img snapshot  -d  uos20-1060e_new_20240627 /var/lib/libvirt/images/uos20-1060e_new.qcow2

回滚快照

命令格式:

代码语言:javascript
复制
qemu-img snapshot -a <snapshot_name> <filename>
  • `<snapshot_name>` 需要回滚的快照名称

回滚虚拟磁盘快照

代码语言:javascript
复制
qemu-img snapshot  -a  uos20-1060e_new_20240627 /var/lib/libvirt/images/uos20-1060e_new.qcow2

虚拟机运行时快照

创建虚拟机运行快照

代码语言:javascript
复制
virsh snapshot-create-as  uos20-1060e uos20-1060e-20240627

查看虚拟机镜像快照列表

代码语言:javascript
复制
virsh snapshot-list  uos20-1060e

虚拟机回滚快照

代码语言:javascript
复制
virsh snapshot-revert  uos20-1060e uos20-1060e-20240627

虚拟机删除快照

代码语言:javascript
复制
virsh snapshot-delete uos20-1060e uos20-1060e-20240627

生成链接克隆磁盘文件

链接克隆是基于源虚拟机的增量拷贝,其中基础时源虚拟机,克隆后的变化存放在新创建的链接磁盘文件中

代码语言:javascript
复制
qemu-img create -f qcow2 -F qcow2  -b uos20-1060e_new.qcow2 uos20-1060e_linkclone03.qcow2
  • - `-f qcow2` 指定新创建的磁盘镜像格式为qcow2
  • - `-F qcow2` 指定输入文件镜像格式qcow2
  • - `-b uos20-1060e_new.qcow2` 指定基础镜像文件,即新创建的镜像将基于此镜像文件
  • - `uos20-1060e_linkclone03.qcow2` 新创建的镜像文件的名称

磁盘完整性检查

对镜像执行一致性检查,只支持 qcow2、 qed 、 vdi 格式。

  • --output:可选值为human(默认)、json。
  • -r [leaks | all]:尝试修复在检查期间发现的任何不一致。-r leaks只修复cluster leaks。-r all 修复所有类型的错误,可能导致选择错误的修复或隐藏已经发生的损坏的风险更高。
代码语言:javascript
复制
qemu-img check /var/lib/libvirt/images/uos20-1060e_new.qcow2
qemu-img check /var/lib/libvirt/images/uos20-1060e_new.qcow2 --output=json

虚拟机磁盘格式转换,raw转qcow2

1.关机

代码语言:javascript
复制
virsh shutdown rke01
virsh destroy rke01

2.转换磁盘文件格式

代码语言:javascript
复制
qemu-img convert -f raw -O qcow2 /data/images/rke01.img /data/images/rke01.qcow2
  • -f 源格式 -O 转换目标格式 源文件镜像 目标文件镜像

修改虚拟磁盘文件属性

代码语言:javascript
复制
chown -R qemu:qemu /data/images/rke01.qcow2

3.修改配置文件的磁盘类型和磁盘路径

代码语言:javascript
复制
virsh edit rke01

5.修改配置重新定义虚拟机配置

代码语言:javascript
复制
virsh define /etc/libvirt/qemu/rke01.xml
Domain rke01 defined from /etc/libvirt/qemu/rke01.xml

6.开启虚拟机

代码语言:javascript
复制
virsh start rke01

qcow2 虚拟磁盘精简导出

虚拟机内删除⽂件,实际只是在分区表中把⽂件的索引给删除,删除的⽂件的物理数据还是依然占⽤着磁盘上对应的block块;通过虚拟磁盘⽂件转换,宿主机存储占用空间与客户机虚拟机使用的磁盘空间基本是一致的。使用新的磁盘镜像文件uos20-1060e_new.qcow2启动客户机即可(注意修改虚拟机的xml更改硬盘名称)。

转换虚拟磁盘文件

代码语言:javascript
复制
cd /var/lib/libvirt/images/
qemu-img convert -O qcow2 uos20-1060e.qcow2  uos20-1060e_new.qcow2

qemu-img查看虚拟磁盘

代码语言:javascript
复制
qemu-img  info uos20-1060e_new.qcow2 -U
image: uos20-1060e_new.qcow2
file format: qcow2
virtual size: 30 GiB (32212254720 bytes)
disk size: 4.63 GiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开源搬运工宋师傅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档