www.cnblogs.com/ruiyqinrui

开源、架构、Linux C/C++/python AI BI 运维开发自动化运维。 春风桃李花 秋雨梧桐叶。“力尽不知热 但惜夏日长”。夏不惜,秋不获。@ruiY--秦瑞

python爬虫,C编程,嵌入式开发.hadoop大数据,桉树,onenebula云计算架构.linux运维及驱动开发.

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  2912 随笔 :: 9 文章 :: 51 评论 :: 185万 阅读

KVM中linux虚拟机的硬盘添加方法

 

最近虚拟机中运行的东西比较多,很多。而刚启动的时候虚拟机分配的磁盘比较少,随着日志还有平时的上传文件的积累,磁盘空间报警了。网上查了下资料,自己也做了下实验。总结下给虚拟机增加磁盘的一些硬盘空间的方法。

 

 

 

对于sda/vda等格式的硬盘

 

环境:centos 6.1

 

虚拟机的属性:domainname   test

 

              Disk path       /var/lib/libvirt/images/test.img

 

硬盘分区:

 

[root@localhost ~]# df -hT

 

Filesystem    Type    Size Used Avail Use% Mounted on

 

/dev/vda1     ext4    6.8G 3.2G 3.3G 50% /

 

tmpfs        tmpfs    499M     0 499M   0% /dev/shm

 

需要添加硬盘空间。

 

方法1

 

思路,既然是少一块硬盘,那么我们就直接给虚拟机加一块硬盘就好了,然后直接挂载到根分区的一个目录下面。这样我根分区的硬盘空间就扩展了。

 

 

解决方法1

 

 A,生成一块新的硬盘

 

    使用virt-manager很容易,直接在虚拟的属性中点击“添加硬件”----“storage”选择多大的空间,驱动类型,缓存模式。然后点击完成。注意,有些硬盘是支持热插拔的,有些不支持。除了IDE格式的硬盘外,其他的都支持热插拔,这就意味着,如果添加的是IDE的硬盘的话,需要对虚拟机进行重启,使他识别新添加的硬盘。

 

如果采用virsh命令添加的话。采用命令

 

#qemu-img create -f raw test_add.img 10G

 

//说明,生成一块新的raw格式的空盘

 

#virsh attach-disk test /var/lib/libvirtd/images/test_add.img vdb —cache none

 

或者#virsh edit test 在xml中的disk后面添加如下几行。

 

    <disk type='file' device='disk'>

 

      <driver name='qemu' type='raw' cache='none'/>

 

      <source file='/var/lib/libvirt/images/test_add.img'/>

 

      <target dev='vdb' bus='virtio'/>

 

    </disk>

 

 

 B,在虚拟机中对硬盘进行格式化

 

登录到虚拟机中,首先查看是否能新识别硬盘

 

 #fdisk -l         查看是否回显示新添加的硬盘/dev/vdb

 

然后,对vdb进行格式化,

 

#mkfs.ext4 /dev/vdb

 

接下来,新建一个目录用来挂载新的硬盘

 

#mkdir   /test

 

#mount /dev/vdb /test

 

最后,将该挂载添加到开机启动中

 

#blkid /dev/vdb           //获取硬盘的UUID

 

/dev/vdb: UUID="19fc1d1d-7891-4e22-99ef-ea3e08a61840" TYPE="ext4"

 

#vim /etc/fstab             //添加开机加载,在最后一行加入

 

UUID=19fc1d1d-7891-4e22-99ef-ea3e08a61840 /test ext4 defaults        1 2

 

到此方法一,添加完毕

 

 

方法2,直接拉升分区

 

思 路,采用挂载的方法是而外添加了一块盘,有没有一种方法可以直接对硬盘进行拉伸。qemu-img中提供了一个resize的命令,但是该命令只是单纯的 简单了拉升或者缩小了一个raw的img镜像大小,对于其中的分区却不能进行修改。我需要对其中的的分区进行拓展。很碰巧红帽子提供这种插件可以时间。此方法是采用红帽子自带的插件virt-resize进行拓展。该命令首先是获取原来的分区信息,还 有其他文件信息。然后对新的镜像进行重新分区、格式化。最后拷贝原镜像中的文件到新文件系统中,再用新拓展的镜像替换原有镜像。因为实际采用copy的方 式,所以他花的时间比较长,如果是一个大镜像不建议使用此方法

 

 

具体解决方案。

 

前提安装libguestfs-tools工具包。关闭虚拟机

 

#yum -y install libguestfs-tools

 

 

A,新建一个大镜像

 

 #qemu-img create -f raw test_extend.img 15G 

 

注意,这里的img大小是你需要拓展的总大小

 

B,使用virt-resize进行拉升分区

 

#virt-resize —expand   /dev/vda1 /var/lib/libvirt/images/test.img /var/lib/libvirt/images/test_new.img

 

注意,此时间很长,请耐心等待

 

C.使用新扩展的镜像代替原镜像

 

 #mv /var/lib/libvirt/images/test_new.img /var/lib/libvirt/images/test.img

 

D,启动虚拟机

 

 #virsh start test

 

拓展完成,

 

 

virt-resize的优势:能对虚拟机中的特定的分区进行拓展。并且能够拓展windows镜像。不需要登录到虚拟机里面进行任何操作。

 

缺点:拓展的时候需要关机。对于大的镜像,拓展的时间比较长。

 

 

 

 

 

对于LVM格式的虚拟机

 

如果你的硬盘格式支持LVM。那么你的硬盘拓展将容易许多,LVM支持硬盘的在线扩容。相当方便。

 

方法步骤:

 

 #lvcreate -L 40G -n lv_vm_test1 VolGroup

 

 #virsh attach-disk test /dev/mapper/VolGroup/lv_vm_test vdb

 

 注意,有可能碰到权限问题。请先修改/dev/mapper/VolGroup/lv_vm_test的权限,是虚拟机可以挂载。

 

 进入虚拟机的操作:

 

#pvcreate /dev/vdb

 

#vgextend VolGroup /dev/vdb

 

#vgs 

 

#lvextend -l +100%FREE /dev/VolGroup/lv_root

 

#resize2fs -p /dev/VolGroup/lv_root

 

优势:拓展时间很快,支持动态扩展。

 

缺点,不适合window的拓展。

 

sudo umount /data1/logs/web1logs

umount.nfs: /data1/logs/web1logs: device is busy

umount.nfs: /data1/logs/web1logs: device is busy

 

方法一:

fuser -m -v /data/

          用户  进程号  权限   命令

/data/:   root  2798    ..c..  bash

          root  2996    ..c..  su

如上所示,有两个进程占用了,将其kill掉,再重新取消挂载。

kill -9 2798 2996

umount /data1/logs/web1logs

 

方法二:

umount  -l  /data1/logs/web1logs

 

方法三:

fuser -km /data1/logs/web1logs

posted on   秦瑞It行程实录  阅读(369)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
www.cnblogs.com/ruiyqinrui
点击右上角即可分享
微信分享提示