今天這篇文章屬于舊知識復習,以前是在別人的基礎之上直接使用定制好的基礎鏡像。
本次在運維平臺建設過程中避免因為DHCP導致IP沖突的問題需要重新構建一個新的KVM鏡像。
知識點
通過這篇文章你將收獲以下知識點:
1、如何修改qcow2鏡像密碼
2、了解KVM虛擬機創建的基礎知識
3、使用 qemu-img 如何創建新的模板和新增數據盤
KVM基礎環境搭建
一般我們是在物理機上安裝部署KVM環境,基于物理機進行虛擬化。
先安裝 相關的依賴包
yum install -y qemu-kvm libvirt virt-install bridge-utils
成功安裝之后,常用的都是 virsh
和 virt-xx
相關的命令
知識點二: 了解KVM虛擬機創建的基礎知識
- virt-install:創建一個新的虛擬機。
- virt-clone:克隆一個現有的虛擬機。
- virt-start:啟動一個虛擬機。
- virt-stop:停止一個虛擬機。
- virt-suspend:掛起一個虛擬機。
- virt-resume:恢復一個掛起的虛擬機。
- virt-reboot:重啟一個虛擬機。
- virt-destroy:銷毀一個虛擬機。
- virt-attach-device:將一個新設備附加到虛擬機。
- virt-detach-device:從虛擬機分離一個設備。
- virt-edit:編輯虛擬機的配置。
- virt-console:連接到虛擬機的控制臺。
類似的 virsh
命令也可以用來管理虛擬機,比如
virsh console 當前服務器連接到虛擬機的控制臺
virsh list 查看當前創建的虛擬機
virsh edit 編輯虛擬機的配置
virsh create 使用XML文件
創建
一個虛擬機virsh define 使用XML文件定義一個虛擬機,但是不啟動
virsh start 啟動一個
defined
的虛擬機
virsh 除了做基本的虛擬機管理,它的功能更加強大,比如可以 監控虛擬機、管理網絡接口、管理設備Device等。
具體可以使用 virsh --help
來查看,這里不做太多細節描述
構建自己的KVM鏡像
構建基礎鏡像也是基于Centos官方基礎鏡像的基礎上,個性化附加自己的一些基礎建設
Centos官方鏡像源下載地址 https://cloud.centos.org/centos/7/images/。本篇文章是基于 CentOS-7-x86_64-GenericCloud-2211.qcow2 來構建自己的基礎鏡像
下載鏡像之后,使用可以使用如下命令創建虛擬機
在創建虛擬機之前,先使用如下命令啟動libvirtd 服務
systemctl enable libvirtd.service
systemctl start libvirtd.service
然后創建虛擬機
virt-install --hvm --virt-type kvm --os-type=linux --os-variant rhel7.4 --name devops-baseimage-vm --vcpus=2 --ram 4096 --disk path=/data/images/devops-baseimage-centos7-br0.qcow2,bus=virtio --network bridge=br0,model=virtio --noautoconsole --import
其中參數說明如下:
- --hvm 完全虛擬化 / --paravirt 半虛擬化 / --container 容器化, 這里選擇 hvm
- --virt-type 有kvm、qemu、xen等,這里選擇 kvm
- --os-variant 指操作類型的特定變體,比如Linux下的centos\ rhel(紅帽)等
- --os-type 一般指 操作類型,比如Linux、windows等
- --name 定義虛擬機的名稱,但是記住不是主機進去之后的 hostname值
- --vcpus 定義CPU核數
- --ram 定義內存大小,單位是MiB
- --disk 定義存儲大小,一般是通過path 路徑指定鏡像文件或者數據文件,bus=virtio 意思是指定磁盤映像文件應連接到虛擬機的哪種總線。
- --network 定義網絡,bridge=br0意思是使用br0作為網橋構建網絡,model=virtio指定虛擬機的網絡接口應使用哪種網絡模型
- --import 使用一個存在的磁盤鏡像來構建虛擬機,和 --disk 配合使用
- --noautoconsole 創建虛擬機之后,不進行自動連接,后面可以使用
virsh console xxx
來連接到xxx 虛擬機
基于centos官方的基礎鏡像創建的主機之后,使用 virsh console xxx
進行連接登錄之后最后會出現如下提示
CentOS Linux 7 (Core)
Kernel 3.10.0-1160.80.1.el7.x86_64 on an x86_64
localhost login:
讓你輸入賬號密碼,但是基礎鏡像,官方沒有提供賬號密碼(網上查,有人說是centos/centos但是不對,實際登錄之后也沒有這個賬號)
知識點一、如何修改qcow2鏡像密碼
1、先使用openssl 加密一個密碼 (注意這里是數字 1
而不是字符l)
[root@192 root]# openssl passwd -1 Ksc123456
$1$eSdqsn.f$MDZv/xxxxxxxxxxxxxxx
2、 然后使用 guestfish 命令加載 qcow2 文件
[root@192 root]# guestfish --rw -a Centos7-baseimage.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.
Type: ‘help’ for help on commands
‘man’ to read the manual
‘quit’ to quit the shell
><fs>
3、 然后在這個交互界面進行如下操作進行密碼修改
><fs> run
100% ????????????????????????????????????????????????????? 00:00
><fs> list-filesystems
/dev/sda1: xfs
><fs> mount /dev/sda1 /
><fs> vi /etc/shadow # 使用上面的密碼進行配置修改
><fs> quit
然后我們再次連接到虛擬機使用root賬號和剛修改的密碼進行登錄,發現成功。
然后我們就可以在改虛擬機內部配置一些個性化的東西
比如
修改SSH配置,禁止ROOT遠程登錄
安裝初始化命令比如常用的 nc lsof dig等命令
也可以初始化安裝基礎軟件。比如yum源、zabbix-agent等
也可以修改一些基礎系統配置。比如 /etc/resolv.conf 和網絡配置等
然后退出虛擬機。
第三個知識點: 使用 qemu-img 如何創建新的模板和新增數據盤
使用如下命令把剛才的虛擬機保存為新的 鏡像模板
qemu-img convert -f qcow2 -O qcow2 Centos7-baseimage.qcow2 centos7-baseimage-br0-vm.qcow2
然后就可以使用新的基礎鏡像centos7-baseimage-br0-vm.qcow2
創建新的虛擬機, 創建的虛擬機中就包括了前面我們所得所有的初始化和定制化的內容
使用如下命令定義數據盤及大小(100GB)
qemu-img create -f qcow2 -o preallocation=metadata test-xxxx-01-100G.qcow 100G
如果是新增虛擬機的同時把數據盤添加進去,使用如下命令
virt-install --hvm ... ... \
--disk path=/data/images/test-zhangjialin-01-vm.qcow,bus=virtio \
--disk path=/data/images/test-zhangjialin-01-100G.qcow,bus=virtio \
... ...
和加載系統鏡像一樣
如果是已經創建虛擬機之后,在額外擴增數據盤,可以使用如下命令把數據盤添加進去
virsh attach-disk test-xxxx-01-vm \
/data/images/test-xxxx-01-100G.qcow vdb \
--subdriver=qcow2 --config --live
好了,關于KVM虛擬機 環境部署、如何創建、如何管理,以及如何添加額外的數據盤等今天就給大家介紹大搜這里。
如果你覺得有所收獲,歡迎關注"菩提老鷹
"進行點贊和喜歡哦~
一起交流,分享知識,快樂生活,我是老鷹,我們下一期見~