zoukankan      html  css  js  c++  java
  • kvm磁盘管理

    kvm磁盘管理

    kvm虚拟机虚拟磁盘格式转换

    各种格式说明介绍

    row:裸格式,占用空间较大,不支持快照功能,性能较好,不方便传输(顺序读写) 50G 2G 传输50G
    qcow2:cow   占用空间小,支持快照,性能比raw差一点,方便传输(随机读写)  50G 2G 传输2G
    
    qemu-img
    info 查看虚拟磁盘信息
    create 创建虚拟磁盘文件
    	qemu-img create test.raw 5G
    	qemu-img create -f qcow2 test.qcow2  5G
    resize 调整虚拟磁盘容量大小
    	qemu-img resize test.raw  +5G
    	qemu-img resize test.qcow2  5G
    	不管是什么格式的虚拟磁盘,不能缩容 
    convert 转换磁盘格式
    
    1.#创建一块qcow2的虚拟硬盘(仅测试使用,无实际意义)
    
    
    [root@qiudao /opt]# mkdir /data
    [root@qiudao /opt]# cd /data/
    [root@qiudao /data]# qemu-img create -f qcow2 centos7.qcow2 2G
    Formatting 'centos7.qcow2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off
    [root@qiudao /data]# ll -h
    total 196K
    -rw-r--r-- 1 root root 193K 2019-07-23 10:58 centos7.qcow2
    
    
    #查看当前虚拟机硬盘信息
    
    
    [root@qiudao /data]# qemu-img info /data/centos7.qcow2
    image: /data/centos7.qcow2
    file format: qcow2
    virtual size: 2.0G (2147483648 bytes)
    disk size: 196K
    cluster_size: 65536
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    
    
    #转换格式,语法说明
    
    
    [root@qiudao /data]# qemu-img --help |grep convert
    convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename
    
    
    2.#转换原有磁盘格式
    
    
    [root@qiudao /opt]# qemu-img convert -f raw -O qcow2 centos7.raw centos7.qcow2
    
    
    #转化之后,要想使用,要修改kvm虚拟机的主配置文件
    
    [root@qiudao /opt]# virsh edit centos7
    
    
    32 <disk type='file' device='disk'>
    33 <driver name='qemu' type='qcow2'/>        #将原来的raw改成qcow2
    34 <source file='/opt/centos7.qcow2'/>        #将原来的raw改成qcow2
    35 <target dev='vda' bus='virtio'/>
    36 <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    37 </disk>
    
    
    3.#删除原磁盘文件
    [root@qiudao /opt]# rm -f centos7.raw
    
    
    4.#启动kvm虚拟机
    [root@qiudao /opt]# virsh start centos7
    
    
    5.#连接测试
    [root@qiudao /opt]# virsh console centos7
    

    kvm在线热添加硬盘

    #进入/opt目录下,添加一块硬盘
    
    [root@qiudao ~]# cd /opt/
    [root@qiudao /opt]# ll
    total 10003908
    -rw-r--r-- 1 qemu qemu 3916431360 2019-07-22 22:03 CentOS-6.8-x86_64-bin-DVD1.iso
    -rw-r--r-- 1 qemu qemu 1752956928 2019-07-24 01:04 centos7.qcow2
    -rw-r--r-- 1 qemu qemu 4588568576 2019-07-22 17:58 CentOS-7-x86_64-DVD-1810.iso
    
    #添加5G硬盘
    [root@qiudao /opt]# qemu-img create -f qcow2 /opt/centos7-add01.qcow2 5G
    Formatting '/opt/centos7-add01.qcow2', fmt=qcow2 size=5368709120 encryption=off cluster_size=65536 lazy_refcounts=off
    
    #查看信息
    [root@qiudao /opt]# qemu-img info centos7-add01.qcow2
    image: centos7-add01.qcow2
    file format: qcow2
    virtual size: 5.0G (5368709120 bytes)
    disk size: 196K
    cluster_size: 65536
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    
    
    #给kvm虚拟机centos7热添加硬盘
    [root@qiudao /opt]# virsh attach-disk centos7 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2  #临时生效
    Disk attached successfully
    
    [root@qiudao /opt]# virsh attach-disk centos7 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2 --config #永久生效,最好写绝对路径
    vdb             #第二块硬盘
    
    --live            #热添加
    
    --cache=none    #宿主机对客户机的镜像的读写cache开启,off表示关闭
    
    --subdriver        #驱动类型
    
    #vnc查看添加结果
     [root@kvm01 opt]# virsh  console   centos7 
     
     [root@centos7 ~]# lsblk
    
    
    #剥离磁盘 
    
    [root@kvm01 opt]# virsh   detach-disk  centos7  vdb
    Disk detached successfully
    
    [root@kvm01 opt]# virsh  console   centos7 
    Connected to domain centos7
    Escape character is ^]
    
    [root@centos7 ~]# lsblk
    
    

    在线扩容磁盘的大小

    #增加硬盘大小,生产环境中,只加不减
    
    [root@qiudao /opt]# qemu-img resize /opt/centos7-add01.qcow2 +5G
    Image resized.
    [root@qiudao /opt]# qemu-img info /opt/centos7-add01.qcow2
    image: /opt/centos7-add01.qcow2
    file format: qcow2
    virtual size: 10G (10737418240 bytes)
    disk size: 260K
    cluster_size: 65536
    Format specific information:
    compat: 1.1
    lazy refcounts: false
    
    
    #再重新给centos7热添加硬盘
    [root@qiudao /opt]# virsh attach-disk centos7 /opt/centos7-add01.qcow2 vdb --live --cache=none --subdriver=qcow2  #最好写绝对路径
    Disk attached successfully
    
    
    #控制台登录
    
    [root@kvm01 opt]# virsh  console   centos7 
    Connected to domain centos7
    Escape character is ^]
    
    
    [root@centos7 ~]# lsblk
    NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sr0              11:0    1 1024M  0 rom  
    vda             252:0    0   10G  0 disk 
    ├─vda1          252:1    0    1G  0 part /boot
    └─vda2          252:2    0    9G  0 part 
      ├─centos-root 253:0    0    8G  0 lvm  /
      └─centos-swap 253:1    0    1G  0 lvm  [SWAP]
    vdb             252:16   0   10G  0 disk 
    
    #格式化操作,创建文件系统
    
    [root@centos7 ~]# mkfs.xfs   /dev/vdb  
    meta-data=/dev/vdb               isize=512    agcount=4, agsize=655360 blks
             =                       sectsz=512   attr=2, projid32bit=1
             =                       crc=1        finobt=0, sparse=0
    data     =                       bsize=4096   blocks=2621440, imaxpct=25
             =                       sunit=0      swidth=0 blks
    naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
    log      =internal log           bsize=4096   blocks=2560, version=2
             =                       sectsz=512   sunit=0 blks, lazy-count=1
    realtime =none                   extsz=4096   blocks=0, rtextents=0
    
    #挂载使用
    [root@centos7 ~]# mount  /dev/vdb  /opt/
    [root@centos7 ~]# df -h
    Filesystem               Size  Used Avail Use% Mounted on
    /dev/mapper/centos-root  8.0G 1007M  7.1G  13% /
    devtmpfs                 988M     0  988M   0% /dev
    tmpfs                   1000M     0 1000M   0% /dev/shm
    tmpfs                   1000M  8.5M  992M   1% /run
    tmpfs                   1000M     0 1000M   0% /sys/fs/cgroup
    /dev/vda1               1014M  133M  882M  14% /boot
    tmpfs                    200M     0  200M   0% /run/user/0
    /dev/vdb                  10G   33M   10G   1% /opt
    
    

    普通分区的扩容

    1检查是否挂载,有卸载,剥离出来
    2.外面添加
    qemu-img resize web02.add.qcow2  15G
    3.挂载
    virsh  console   centos7 
    mount  /dev/vdb  /opt/
    4.跟新文件系统,调整元数据
    xfs_growfs  /opt
    

    根分区扩容

    #根分区扩容 
    1.先关机,存在快照,删除快照
    
    2.扩容根分区
    
    [root@kvm01 opt]# qemu-img  resize  /opt/centos7.qcow2   +10G
    Image resized.
    
    3.登录进行从新分区
    virsh  console   centos7 
    [root@qiudao /opt]# fdisk /dev/vda
    删除原有的分区,重新创建分区
    partprobe		#通知内核系统分区发生变化
    4.重启
    reboot
    5.跟新文件系统
    [root@centos7 ~]# xfs_growfs   /dev/centos/root		#更新文件系统  
    具体详见:RAID&LVM有关磁盘的故障
    

    kvm快照管理(写实复制,相当于创建分支)

    基本命令

    #创建
    virsh snapshot-create centos7
    #查看
    virsh snapshot-list centos7
    #恢复
    virsh snapshot-revert centos7 --snapshotnanme  +时间戳
    #删除
    virsh snapshot-delete centos7 --snapshotname   +时间戳
    
    #注意:raw格式的磁盘无法创建快照,qcow2支持快照,并且快照就保存在qcow2的磁盘文件中
    
    1.#创建快照
    [root@qiudao ~]# virsh snapshot-create centos7
    Domain snapshot 1563866292 created
    
     #开机状态下的快照
    [root@kvm01 opt]# virsh   snapshot-create   centos7 
    Domain snapshot 1575391158 created
    [root@kvm01 opt]# ll /var/lib/libvirt/qemu/snapshot/centos7/
    total 16
    -rw------- 1 root root 4951 Dec  4 00:39 1575390933.xml
    -rw------- 1 root root 4973 Dec  4 00:39 1575391158.xml
    
    
    
    #查看主机快照列表
    [root@qiudao ~]# virsh snapshot-list centos7
    Name Creation Time State
    ------------------------------------------------------------
    1563866292 2019-07-23 15:18:12 +0800 running
    
    
    #查看快照信息
    [root@qiudao ~]# virsh snapshot-info centos7 --snapshotname 1563866292
    Name: 1563866292
    Domain: centos7
    Current: yes
    State: running
    Location: internal
    Parent: -
    Children: 0
    Descendants: 0
    Metadata: yes
    
    
    #模拟虚拟机故障,登陆虚拟机,进行删除操作。
    [root@qiudao ~]# virsh console centos7
    [root@centos7 ~]# rm -rf /*
    
    
    #登录测试
    [root@qiudao ~]# virsh console centos7
    Connected to domain centos7
    Escape character is ^]
    
    
    -bash: /bin/rm: No such file or directory
    [root@centos7 ~]# ll
    -bash: /bin/ls: No such file or directory
    [root@centos7 ~]# ls
    -bash: /bin/ls: No such file or directory
    
    
    #还原快照
    [root@qiudao ~]# virsh snapshot-revert centos7 1563866292
    
    #登录测试
    [root@qiudao ~]# virsh console centos7
    Connected to domain centos7
    Escape character is ^]
    
    
    CentOS Linux 7 (Core)
    Kernel 3.10.0-957.el7.x86_64 on an x86_64
    
    
    centos7 login: root
    Password:
    Last login: Tue Jul 23 11:33:15 on ttyS0
    [root@centos7 ~]# ll
    total 4
    -rw-------. 1 root root 1161 Jul 22 20:52 anaconda-ks.cfg
    
    
    #快照配置文件位置
    [root@qiudao ~]# tree /var/lib/libvirt/qemu/snapshot/
    /var/lib/libvirt/qemu/snapshot/
    └── centos7
    └── 1563866292.xml
    
    
    #删除快照
    [root@qiudao ~]# virsh snapshot-delete centos7 1563866292
    Domain snapshot 1563866292 deleted
    

    克隆

    手动克隆

    1.关机
    [root@kvm01 opt]# virsh shutdown centos7-clone
    2.到户配置信息
    [root@kvm01 opt]# virsh dumpxml centos7 >centos7.3bak
    3.拷贝
    cp 磁盘(注意快照也会)
    [root@kvm01 opt]# cp centos7.qcow2 web02.qcow2
    4.修改路径
    [root@kvm01 opt]# vim centos7.3bak 
    编辑如下几个配置文件
    vi /etc/libvirt/qemu/centos7.xml 
    <name>centos7</name>
    <uuid>ec29ba5d-863f-4317-b4dd-c7e1f23260d9</uuid> #删掉
    <source file='/opt/centos7.qcow2'/>
    <mac address='52:54:00:6a:e9:e4'/> #删掉
    5.导入配置
    [root@kvm01 opt]# virsh define centos7.3bak
    6.启动kvm
    [root@kvm01 opt]# virsh start web02
    7.进入kvm
    [root@kvm01 opt]# virsh console web02
    8.测试 连接
    ifup eth0   #启动网卡
    

    完整克隆

    [root@qiudao /opt]# virsh shutdown centos7        #只有关机状态才能克隆
    
    Domain centos7 is being shutdown
    
    [root@qiudao /opt]# virsh list --all
    
    ## Id Name State
    
    - centos6 shut off
    - centos7 shut off
    
    --auto-clone     #从原始客户机配置中自动生成克隆名称和存储路径。
    
    -o                #原始客户机名称;必须为关闭或者暂停状态。
    
    
    
    [root@qiudao /opt]# virt-clone --auto-clone -o centos7 -n centos7-v1
    
    Allocating 'centos72-clone.qcow2' | 10 GB 00:01:01
    
    Clone 'centos7-v1' created successfully.
    
    [root@qiudao /opt]# virsh list --all
    
    ## Id Name State
    
    - centos6 shut off
    - centos7 shut off
    - centos7-v1 shut off        #克隆主机名称
    
    [root@qiudao /opt]# ll
    total 11851148
    -rw-r--r-- 1 qemu qemu 3916431360 2019-07-22 22:03 CentOS-6.8-x86_64-bin-DVD1.iso
    -rw------- 1 root root 1468268544 2019-08-30 21:07 centos7-clone.qcow2     #克隆机的镜像文件
    
    -rw-r--r-- 1 root root 1752956928 2019-08-30 21:05 centos7.qcow2
    -rw-r--r-- 1 root root 11534336 2019-08-30 21:05 centos7-add01.qcow2
    -rw-r--r-- 1 qemu qemu 4588568576 2019-07-22 17:58 CentOS-7-x86_64-DVD-1810.iso
    
    [root@qiudao /opt]# ll /etc/libvirt/qemu/
    total 20
    drwxr-xr-x 2 root root 6 2019-07-23 10:28 autostart
    -rw------- 1 root root 3906 2019-07-22 22:11 centos6.xml
    -rw------- 1 root root 4377 2019-08-30 21:06 centos7-v1.xml        #克隆机的配置文件
    
    -rw------- 1 root root 4365 2019-07-23 16:23 centos7.xml
    drwx------ 3 root root 42 2019-07-22 17:03 networks
    
    

    连接克隆

    #Kvm手动克隆虚拟机:
    前提:关机状态下
    1:创建基于链接克隆的虚拟磁盘文件
    qemu-img create -f qcow2 -b old_disk new_disk
        
    2:备份centos7的虚拟机配置文件,另存为centos7-v2
    
    3:修改centos7-v2的虚拟机配置文件
    
        a:<name>centos7-v2</name>
        b:删除uuid
        c:删除mac address
        d:修改虚拟机磁盘路径
    
    4:导入centos7-v2
    
    5:检查是否正常启动
    
    
    6:编写自动化脚本
    [root@kvm01 opt]# cat link_clone.sh 
    #!/bin/bash
    Old_name=$1
    New_name=$2
    #1.关闭宿主机
    virsh  shutdown  $Old_name &>/dev/null
    sleep 3
    #2.导出宿主机配置信息
    virsh  dumpxml	$Old_name > /opt/${New_name}.xml
    #3.创建基于宿主机的磁盘文件
    qemu-img create  -f  qcow2 -b /opt/${Old_name}.qcow2   /opt/${New_name}.qcow2 &>/dev/null
    #4.编辑配置文件
    sed  -i   "s#$Old_name#$New_name#g"   /opt/${New_name}.xml
    sed  -i  '/uuid/d'  /opt/${New_name}.xml
    sed  -i  '/mac address/d'  /opt/${New_name}.xml
    #5.导入配置
    virsh  define  /opt/${New_name}.xml  &>/dev/null
    
    #6.启动测试
    virsh  start  $New_name  &>/dev/null 
    
    
    #执行测试
    [root@kvm01 opt]# sh link_clone.sh centos7 lb01
    
    #7.console登录
    
    virsh  console $New_name
    
    #一键创建连接克隆
    [root@qiudao /opt]# virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web05 --memory 1024 --vcpus 1 --disk /opt/web05.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    本地硬盘 web05.qcow2
    --boot  #指定启动路径
    hd   磁盘
    

    kvm虚拟机的桥接网络

    NAT连接

    问题:用户访问跟我们的业务的ip地址不一样

    前期测试

    #查看交换机
    [root@kvm01 opt]# brctl show
    bridge name	bridge id		STP enabled	interfaces
    virbr0		8000.5254004f87a6	yes		virbr0-nic
    							vnet0
    #查看内核转换参数
    [root@kvm01 opt]# sysctl -a|grep ipv4|grep forward
    net.ipv4.ip_forward = 1    #开启
    sysctl net.ipv4.ip_forward = 1 可以手动控制
    

    新创建的kvm-NAT

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web05 --memory 1024 --vcpus 1 --disk /opt/web05.qcow2 --boot hd --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole
    

    前期准备

    #创建一个桥接网络,执行命令
    
    [root@qiudao ~]# virsh iface-bridge eth0 br0
    Created bridge br0 with attached device eth0
    Bridge interface br0 started
    
    #查看
    [root@qiudao ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
    DEVICE="br0"
    ONBOOT="yes"
    TYPE="Bridge"
    BOOTPROTO="none"
    IPADDR="10.0.0.100"
    NETMASK="255.255.255.0"
    GATEWAY="10.0.0.254"
    IPV6INIT="yes"
    IPV6_AUTOCONF="yes"
    DHCPV6C="no"
    STP="on"
    DELAY="0"
    [root@qiudao ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    DEVICE=eth0
    ONBOOT=yes
    BRIDGE="br0"
    
    
    #查看桥接网络信息
    
    [root@qiudao ~]# brctl show
    bridge name    bridge id        STP enabled    interfaces
    br0        8000.000c2990428b    yes        eth0
    virbr0        8000.5254007cc337    yes        virbr0-nic
    

    桥接模式

    新创建的,走桥接模式

    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web05 --memory 1024 --vcpus 1 --disk /opt/web05.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    

    修改桥接模式

    #关闭主机centos7
    
    
    [root@qiudao ~]# virsh shutdown centos7
    Domain centos7 is being shutdown
    
    
    [root@qiudao ~]# virsh list --all
    Id Name State
    ----------------------------------------------------
    - centos6 shut off
    - centos7 shut off
    - centos7-v1 shut off
    
    
    #修改配置文件
    
    [root@qiudao ~]# virsh edit centos7
    
    
    74 <interface type='bridge'>        #类型修改为bridge
    75 <mac address='52:54:00:59:9d:20'/>
    76 <source bridge='br0'/>        #类型和名称
    
    77 <model type='virtio'/>
    78 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    79 </interface>
    
    
    #启动主机
    
    [root@qiudao ~]# virsh start centos7
    Domain centos7 started
    
    
    [root@qiudao ~]# virsh list --all
    Id Name State
    ----------------------------------------------------
    2 centos7 running
    - centos6 shut off
    - centos7-v1 shut off
    
    
    #连接修改网卡信息
    
    [root@qiudao ~]# virsh console centos7
    
    
    [root@centos7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
    TYPE="Ethernet"
    BOOTPROTO="none"
    NAME="eth0"
    DEVICE="eth0"
    ONBOOT="yes"
    IPADDR="10.0.0.101"
    NETMASK="255.255.255.0"
    GATEWAY="10.0.0.254"
    DNS1="223.5.5.5"
    
    
    #重启网络
    
    [root@centos7 ~]# systemctl restart network
    [root@centos7 ~]# systemctl stop NetworkManager
    [root@centos7 ~]# systemctl disable NetworkManager
    systemctl start libvirtd
    #配置dns解析
    [root@webvirtmgr ~]# cat /etc/resolv.conf
    # Generated by NetworkManager
    nameserver 223.5.5.5
    nameserver 223.6.6.6
    
    
    #测试上网
    
    [root@centos7 ~]# ping baidu.com
    PING baidu.com (39.156.69.79) 56(84) bytes of data.
    64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=29.5 ms
    64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=30.5 ms
    
    
    #本地直接连接kvm虚拟机
    
    [C:~]$ ssh root@10.0.0.101
    
    Connecting to 10.0.0.101:22...
    Connection established.
    To escape to local shell, press 'Ctrl+Alt+]'.
    
    
    Last failed login: Fri Aug 30 23:46:16 CST 2019 from 10.0.0.1 on ssh:notty
    There was 1 failed login attempt since the last successful login.
    Last login: Fri Aug 30 23:26:26 2019
    [root@centos7 ~]#
    

    热添加网卡,内存,cpu

    1.kvm添加网卡
    virsh attach-interface web04 --type bridge --source br0 --model virtio  #临时
    virsh attach-interface web04 --type bridge --source br0 --model virtio --config #永久
    #剥离网卡
    detach-interface web04 --type bridge --mac +地址
    
    #查看挂载硬盘
    virsh # domblklist web02
    Target     Source
    ------------------------------------------------
    vda        /opt/web02.qcow2
    hda        -
    #查看mac地址
    virsh # domiflist web02
    Interface  Type       Source     Model       MAC
    -------------------------------------------------------
    vnet0      bridge     br0        virtio      52:54:00:9e:c8:b7
    vnet3      bridge     br0        virtio      52:54:00:f4:f3:9a
    
    2.热添加内存
    #连接克隆
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 512,maxmemory=2048 --vcpus 1 --disk /opt/web01.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    #添加内存
    virsh setmem  web02 1024M --live
    #登录kvm,查看
    free -m
    
    3.添加cpu
    virt-install --virt-type kvm --os-type=linux --os-variant rhel7 --name web01 --memory 512,maxmemory=2048 --vcpus 1,maxvcpus=10 --disk /opt/web01.qcow2 --boot hd --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
    #进入kvm查看cpu核数
    lscpu
    #添加核数
    virsh setvcpus  web02  2
    
  • 相关阅读:
    vue中局部过滤器的使用
    elementui中switch开关的回调的使用
    css居中的一些方法
    elementui默认样式修改的几种方法
    git查看远程分支,并且切换到远程的分支
    elementui form resetFields方法 无法重置表单
    vue组件使用vuex中的方法报错,报unknown mutation type的错误
    offSet和client和scroll
    842. Split Array into Fibonacci Sequence能否把数列返回成斐波那契数列
    662. Maximum Width of Binary Tree二叉树的最大宽度
  • 原文地址:https://www.cnblogs.com/1naonao/p/12009025.html
Copyright © 2011-2022 走看看