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

umount.nfs device busy day virsh extend diskSpace, attachDisk的更多相关文章

  1. umount nfs文件系统 显示 umount.nfs: device is busy

    网上的方法一般都是 fuser -m  /nfs 查出进程号,然后杀死进程号,或者fuser -km /nfs直接杀死,我试了下都不行 解决方法: 对于nfs文件系统来说,umount -l /nfs ...

  2. umount.nfs: device is busy解决办法

    fuser -km /app/nfs/ https://blog.csdn.net/x_i_y_u_e/article/details/42914817

  3. 解决umount.nfs: /data: device is busy 问题

    有时候我们需要umount某个挂载目录时会遇到如下问题: [root@localhost /]# umount /data/ umount.nfs: /data: device is busy 通过这 ...

  4. 解决umount: /home: device is busy

    取消挂载/home时出现umount: /home: device is busy,        原因是因为有程序在使用/home目录,我们可以使用fuser查看那些程序的进程,        然后 ...

  5. umount: /home: device is busy

    转自:umount: /home: device is busy 取消挂载/home时出现umount: /home: device is busy,原因是因为有程序在使用/home目录,我们可以使用 ...

  6. centos重启报错Umounting file systems:umount:/opt:device is busy

    系统重启报错: Umounting file systems:umount:/opt:device is busy 只能硬关机,回想一下最近刚安装了nod32 for linux x64的杀毒软件,开 ...

  7. Linux umount的device is busy问题

    现象: [root@dbserver ~]# df -h文件系统 容量 已用 可用 已用%% 挂载点/dev/vda1 9.9G 3.9G 5.6G 41% /tmpfs 3.9G 100K 3.9G ...

  8. 解决类似umount target is busy挂载盘卸载不掉问题

    问题描述: Linux下挂载后的分区或者磁盘某些时候需要umount的时候出现类似“umount: /mnt: target is busy.”等字样,或者“umount: /xxx: device ...

  9. AIX 环境下遇到Device Busy问题

    IBM AIX v5.3操作系统环境下在对网络或网卡进行操作过程中经常遇到"Device Busy"而终止操作例如:#rmdev -l ent1遇到如下返回信息Method err ...

随机推荐

  1. phpcms 一些bug

    首页禁止使用{php $a = }; 因为phpcms在模板解析中默认用到了$a变量,如再次使用会导致phpcms的get标签return报错

  2. VB6.0 String 用法总结

    问题一 VB 去掉字符串的头尾的空格 使用trim() 如: trim(" hello world ")= "hello world" 问题二 判断一个字符串是 ...

  3. TPen的7种Style和16种Mode

    //TPen 的主要属性有四: Color.Width.Style.Mode {Color: 颜色} {Width: 宽度; 默认是 1; 如果赋予 <= 0 的值, 会使用默认值} {Styl ...

  4. MySQL的用户密码过期功能详解

    MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...

  5. aix lvm_lv_vg

    Aix扩展文件系统,添加新硬盘 Cfgmgr 重新扫描新硬盘 Lspv Chdev –l hdisk3 –a pv=yes Extendvg rootvg hdisk3 note 上面的报错解决 Sm ...

  6. aui

    #encoding:utf-8import wximport wx.auiclass MyFrame(wx.Frame): def __init__(self, *args, **kwargs): w ...

  7. SQL Cast()函数

    sql cast()函数 2010-09-17 13:30:26| 分类: Sql | 标签:sql case() 函数 |字号大中小 订阅 (1).CAST()函数的参数是一个表达式,它包括用AS关 ...

  8. Oracle表管理

    /*-----------------------创建和管理表-----------------------------*/一.Orcale之中的数据类型:1.NUMBER.DATE.VARCAHR. ...

  9. mysql安装常见问题(系统找不到指定的文件、发生系统错误 1067 进程意外终止)

    在安装mysql时总是会遇到这样那样的问题,每次重新安装都会花很多时间来排查.在网上其实有很多相关的文章,但很多都只讲了方法,但没讲具体细节问题,导致无法解决问题.其实有时候知道问题的原因,但总是因为 ...

  10. C++学习笔录3

    1.隐藏:存在于派生类和基类中.只要成员名字相同就叫做隐藏.参数和函数名都相同时,是一种特殊的隐藏,叫做重写,重写只出现在函数中.若需要访问基类中被隐藏的成员,必须访问这种方法:“对象名:类名::隐藏 ...