一、制作鏡像介紹
通過KVM安裝虛Centos 和Windwos 2008 R2_x86_64操作系統步驟並將磁盤文件作為鏡像上傳到openstack glance,作為批量創建虛擬機的鏡像文件,其中windowsn 2008安裝virtio 半虛擬化驅動,以實現網絡IO和磁盤IO的半虛擬化提升速度,Centos 7默認即支持半虛擬化,不需要安裝驅動,Virtio最初由澳大利亞的一個天才級程序員Rusty Russell編寫,是一個在hypervisor之上的抽象API接口,讓客戶機知道自己運行在虛擬化環境中,從而與hypervisor根據 virtio 標准協作,從而在客戶機中達到更好的性能(特別是I/O性能),目前,有不少虛擬機都采用了virtio半虛擬化驅動來提高性能。具體過程如下:
二、網絡環境准備:
在一台linux服務器上修改網卡配置,做一個br0的網卡橋接,但是不更改也不影響安裝虛擬機與制作模板,但是虛擬機要連接外網需要通過橋接或者nat,當虛擬機數量較多的時候nat就會出現瓶頸,所以使用橋接比較穩定:
網卡綁定案例,先做綁定,然后再把綁定后的網卡配置成橋接:
#因鏡像虛擬機需要連接外網安裝rpm包,需要網絡橋接,因此將bondX橋接到brX:
[root@linux-image ~]# hostname linux-image.exmaple.com [root@linux-host5 ~]# yum install bridge-utils –y #安裝網卡橋接工具
單網卡綁定方法:
eth0的配置:
# cd /etc/sysconfig/network-scripts/ # cp ifcfg-eth0 ifcfg-br0 # vim ifcfg-eth0 BOOTPROTO=static DEVICE=eth0 ONBOOT=yes BRIDGE=br0 #刪除其他的IP/MAC/網關信息,增加一行橋接的配置 NM_CONTROLLED=no #不使用NetworkManager管理服務
br0的配置:
# vim ifcfg-br0 #編輯橋接網卡配置 TYPE=Bridge #類型為橋接 BOOTPROTO=static #靜態獲取IP IPV4_FAILURE_FATAL=no NAME=br0 #網卡名稱 DEVICE=br0 #設備名稱 ONBOOT=yes IPADDR=192.168.10.128 NETMASK=255.255.255.0 GATEWAY=192.168.10.2 DNS1=192.168.10.2
雙網卡綁定方法:
1.1:第一組配置,將eth1和eth5綁定為bond0:
1.1.1:先創建bond0配置那文件步驟及內容如下:
[root@linux-host1 ~]# cd /etc/sysconfig/network-scripts/ [root@linux-host1 network-scripts]# cp ifcfg-eth0 ifcfg-bond0 [root@linux-host1 network-scripts]# cat ifcfg-bond0 #內容如下: BOOTPROTO=static NAME=bond0 DEVICE=bond0 ONBOOT=yes BONDING_MASTER=yes BONDING_OPTS="mode=1 miimon=100" #指定綁定類型為1及鏈路狀態監測間隔時間 BRIDGE=br0 #橋接到br0
1.1.2:配置br0:
TYPE=Bridge BOOTPROTO=static IPV4_FAILURE_FATAL=no NAME=br0 DEVICE=br0 ONBOOT=yes IPADDR=X.X.X.X NETMASK=255.255.255.0 GATEWAY=X.X.X.X
1.1.3:eth1配置:
[root@linux-host1 network-scripts]# vim ifcfg-eth1 BOOTPROTO=static NAME=eth1 DEVICE=eth1 ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 USERCTL=no SLAVE=yes
1.1.4:eth5的配置:
[root@linux-host1 network-scripts]# cp ifcfg-eth1 ifcfg-eth5 [root@linux-host1 network-scripts]# vim ifcfg-eth5 BOOTPROTO=static NAME=eth5 DEVICE=eth5 ONBOOT=yes NM_CONTROLLED=no MASTER=bond0 USERCTL=no SLAVE=yes
1.1.5:重啟網絡服務:
[root@linux-host1 network-scripts]# systemctl restart network
三、Windows Server 2008 R2鏡像制作:
windows鏡像下載官網:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
1:安裝基礎環境:
[root@linux-host1 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
2、創建系統磁盤:
[root@linux-image ~]# qemu-img create -f qcow2 /os/images/Windows-2008-r2-x86_64.qcow2 100G
3、使用命令安裝windows 2008:
# virt-install --virt-type kvm --name Win_2008_r2-x86_64 --ram 3072 --vcpus=2 --os-type=windows \ --cdrom=/usr/local/src/windows_server_2008_r2.iso --disk path=/var/lib/libvirt/images/Windows-2008_r2-x86_64.qcow2,format=qcow2,bus=virtio \ --disk path=/usr/local/src/virtio-win-0.1.141_amd64.vfd,device=floppy --network bridge=br0,model=virtio \ --graphics vnc,listen=0.0.0.0 --noautoconsole
4、用命令進行安裝操作
# virt-manager
5、開始加載中:
6、安裝界面:
7、開始安裝:
8、選擇安裝版本:
9、創建分區:
10、安裝過程中:
11、安裝完成:
#首次登陸提示必須更改密碼:
12、新添加網卡:
#建議先把虛擬機關機再添加網卡
13、驗證網絡通信:
14、開啟遠程連接:
15、關閉防火牆:
16、重新封裝虛擬機:
# 系統自帶封裝工具:
開始封裝:
將磁盤鏡像scp至openstack控制端:
# openstack image create "windows_server_2008_r2" --file Windows-2008-r2-linux36.qcow2 --disk-format qcow2 --container-format bare --public
在openstack的web界面進行創建鏡像,並在openstack安全組打開RDP規則,就可以遠程連接windows界面。
四、基於手動安裝Centos 7.x 鏡像制作:
#做鏡像就是在宿主機最小化安裝系統並配置優化,做完配置之后將虛擬機關機,然后將虛擬機磁盤文件上傳至glance即可啟動虛擬機。
也可以在centos官網下載制作好的鏡像:http://cloud.centos.org/centos/7/images/
1:安裝基礎環境:
[root@linux-host1 ~]# yum install -y qemu-kvm qemu-kvm-tools libvirt virt-manager virt-install
2、創建磁盤:
類型為qcow2,跟使用量動態增長,也可以是raw格式,openstack 支持很多類型的磁盤格式。
[root@linux-image ~]# qemu-img create -f qcow2 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 10G
3、驗證磁盤文件:
[root@linux-image ~]# file /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2: QEMU QCOW Image (v3), 10737418240 bytes [root@linux-image ~]# ll -h /var/lib/libvirt/images/CentOS-7-x86_64.qcow2 -rw-r--r-- 1 root root 193K Sep 28 09:21 /var/lib/libvirt/images/CentOS-7-x86_64.qcow2
4、下載ISO鏡像並安裝:
[root@linux-image ~]# virt-install --virt-type kvm --name CentOS7-x86_64 --ram 1024 --cdrom=/opt/CentOS-7-x86_64-Minimal-1511.iso \
--disk path=/var/lib/libvirt/images/CentOS7-x86_64.qcow2 \ --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole
5、驗證端口:
6、使用VNC 客戶端連接虛擬機端口:
7、連接后狀態如下:
8、傳遞內核參數重命名網卡:
9、磁盤分區
10、安裝過程
11、添加一個網卡:
虛擬機安裝完成系統重啟之后給虛擬機新添加一塊網卡,最終實現鏡像虛擬機有兩塊網卡以實現內外雙網通信。
12、打開控制台:
[root@linux-image images]# virt-manager
進入虛擬機控制界面:
點擊添加硬件:
添加網卡:
最終狀態:
更改yum源:
1、安裝下載軟件
[root@bogon ~]# yum install wget –y
2、配置yum 源
[root@bogon ~]# cd /etc/yum.repos.d/ [root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo [root@bogon yum.repos.d]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3、安裝常用命令
[root@bogon yum.repos.d]# yum install -y net-tools vim lrzsz tree screen lsof ntpdate telnet acpid
4、關閉防火牆及selinux
[root@bogon yum.repos.d]# systemctl disable NetworkManager [root@bogon yum.repos.d]# systemctl disable firewalld [root@bogon yum.repos.d]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
五、官方GenericCloud 7.2.X鏡像制作
# 鏡像下載地址:http://cloud.centos.org/centos/7/images/
下載官方鏡像
[root@linux-image iso]# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1511.qcow2.xz [root@linux-image iso]# xz -d CentOS-7-x86_64-GenericCloud-1511.qcow2.xz [root@linux-image iso]# mv CentOS-7-x86_64-GenericCloud-1511.qcow2 /var/lib/libvirt/images/
安裝修改密碼工具:
[root@linux-image iso]# yum install libguestfs-tools -y
使用命令開始安裝鏡像:
virt-install --virt-type kvm --name CentOS-GenericCloud --ram 1024 \ --cdrom=/usr/local/src/CentOS-7-x86_64-Minimal-1511.iso \ --disk path=/var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1905.qcow2 \ --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole \
控制台打開控制端
# virt-manager
強制關機:
修改密碼:
# virt-customize -a /var/lib/libvirt/images/CentOS-7-x86_64-GenericCloud-1905.qcow2 --root-password password:123456
修改完密碼后啟動虛擬機
# virt-manager
使用root遠程ssh登錄,默認ssh服務沒有打開密碼登陸,需要打開
# vim /etc/ssh/sshd_config PasswordAuthentication yes #打開密碼登陸
重啟sshd服務
# systemctl restart sshd
此時就可以ssh遠程登錄root用戶
關閉防護牆和selinux:
[root@localhost ~]# systemctl disable firewalld [root@localhost ~]# vim /etc/selinux/config SELINUX=disabled [root@localhost ~]#systemctl stop NetworkManager [root@localhost ~]#systemctl disable NetworkManager
安裝常用命令
# yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre \ pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools \ lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel \ bc systemd-devel bash-completion traceroute -y
將啟動服務關閉,避免開機啟動慢
# systemctl disable cloud-init
修改文件,將不需要的文件注釋掉
# vim /etc/cloud/cloud.conf
打開宿主機控制台
進入詳情界面:
點擊添加硬件:
添加網卡:
創建免秘鑰登錄:
1、在控制端創建公鑰
[root@computer-1 ~]# ssh-gen -bash: ssh-gen: command not found [root@computer-1 ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:vPOCUyQ9Xhf4bxx60G9SxULOjdhrPsY2f+o6USSdm/o root@computer-1 The key's randomart image is: +---[RSA 2048]----+ | . o.o | | . o==oo| | . ..==+o| | ..+ . + *..| | +So . Bo+ | | o. ++* o| | oo =Bo | | o .o .oE+.| | . .. .+o.o| +----[SHA256]-----+
2、將控制端的公鑰復制到制作鏡像的系統中
ssh-copy-id 192.168.7.100 #IP地址為制作鏡像后獲取的IP地址
將制作好的鏡像關機,然后將制作好的centos鏡像傳到openstack上
# openstack image create "centos7.2" --file CentOS-7-x86_64-GenericCloud-1905.qcow2 \ --disk-format qcow2 --container-format bare --public
創建Cenots 虛擬機:
定義名稱:
選擇鏡像源:
選擇類型:
虛擬機創建過程中:
創建完成:
驗證虛擬機可以訪問外網:
磁盤使用情況:
從鏡像創建windows 2008雲主機:
創建雲主機:
選擇鏡像源:
選擇類型:
調度中:
創建中:
創建完成,驗證是否激活:
驗證外網連接:
磁盤使用情況: