kvm純命令建立虛擬機器

秋天的第一杯奶茶發表於2020-09-28

配置檔案

<domain type='kvm'>
  <name>centos7.0</name>	#虛擬機器的名字 
  <uuid>dd0d199e-1da7-486e-962c-f2899f64ece1</uuid>	#每臺虛擬機器的uuid不能相同
  <memory unit='KiB'>1048576</memory>	#虛擬機器現有記憶體
  <currentMemory unit='KiB'>1048576</currentMemory> #虛擬機器可用最大記憶體
  <vcpu placement='static'>1</vcpu> #cpu的個數
<devices>
    <emulator>/usr/libexec/qemu-kvm</emulator>
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/centos7.0.qcow2'/> #此處為虛擬機器磁碟路徑
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
    </disk>
<interface type='network'>
      <mac address='52:54:00:af:57:14'/>  #虛擬機器的mac地址也不能相同
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

下面為建立虛擬機器的指令碼

read -p "請輸入新建虛擬機器的名字" name
read -p "請輸入新建虛擬機器的記憶體大小(M)" mem
read -p "請輸入新建虛擬機器的cpu個數" cpu
mem=${mem:-1024}	#如果mem未定義則預設值為1024
mem=$((${mem}*1024)) #下方記憶體的單位為kib我們輸入時按照mib輸入所以此處需乘以1024(kb與kib還是有點區別的同理mb與mib也是有區別的,奇怪的知識又增加了,有興趣的可以去看看)
cpu=${cpu:-1} #設定cpu的個數未定義則預設為1
num=`openssl rand -hex 1`:`openssl rand -hex 1`:`openssl rand -hex 1`  #建立16進位制隨機數,下面會用到
newvirtual=/etc/libvirt/qemu/${name}.xml #需要建立的虛擬機器的名字
cp /var/lib/libvirt/images/centos7.0.qcow2 /var/lib/libvirt/images/${name}.qcow2 #以此虛擬機器為模板建立虛擬機器
cp /etc/libvirt/qemu/centos7.0.xml ${newvirtual} #模板虛擬機器的配置檔案
sed -ri "/<name>/c \  <name>${name}</name>" ${newvirtual} #找到配置檔名字所在行進行整行替換以下同理(\空格 是為了讓修改後的格式與原來相同)
sed -ri "/<uuid>/c \  <uuid>`uuidgen`</uuid>" ${newvirtual}
sed -ri "/<memory unit='KiB'>/c \  <memory unit='KiB'>${mem}</memory>" ${newvirtual}
sed -ri "/<currentMemory unit='KiB'>/c \  <currentMemory unit='KiB'>${mem}</currentMemory>" ${newvirtual}
sed -ri "/<vcpu placement='static'>/c \  <vcpu placement='static'>${cpu}</vcpu>" ${newvirtual}
sed -ri "/source file/c \      <source file='/var/lib/libvirt/images/${name}.qcow2'/>" ${newvirtual}
systemctl restart libvirtd
sed -ri "/mac address/c \      <mac address='52:54:00:${num}'/>" ${newvirtual}
cat << eof
虛擬機器${name}建立成功
記憶體$(($mem/1024))M
cpu${cpu}個
eof

建立新的uuid

[root@kvm script]# uuidgen
091ac687-a9ce-40c7-aed3-6866d8a97da6

建立新的mac

方法一

echo `openssl rand -hex 1`:`openssl rand -hex 1`:`openssl rand -hex 1`
ab:68:23

方法二

openssl rand -hex 3 | sed -r 's/(..)(..)(..)/\1:\2:\3/g'
04:d7:31

方法三

openssl rand -hex 3 | sed -r 's/..\B/&:/g'
9e:84:dc

注意

建立的新的虛擬機器與你所選的模板虛擬機器裡的內容一樣

相關文章