当前位置:网站首页>KVM virtualization
KVM virtualization
2022-07-05 03:34:00 【xiaotanggao】
KVM virtualization
Virtualization technology
Virtualization technology is The abstraction of resources , Such as virtual machine , Virtual memory, etc
virtualization (Virtualization) Technology first appeared in 20 century 60 s IBM Mainframe systems , stay 70 s System370 It is becoming popular in the series , These machines pass through a kind of machine called ** Virtual machine monitor (Virtual Machine Monitor,VMM)** The program generates many virtual machines that can run independent operating system software on the physical hardware (Virtual Machine) example
VMM The virtual machine monitor is also called Hypervisor, It is a software layer introduced for virtualization . It has downward control over actual physical resources , Show up N Logical resources .
The actual physical environment in which the virtual machine monitor runs , be called The host machine ; The virtual logical host , be called The client .
classification
From the perspective of resource provision
- Platform virtualization : hold CPU, Memory , Peripherals are provided to virtual machines as resources . In the same X86 On the platform , You can virtual multiple X86 platform , Each platform can run its own completely independent operating system . Such as QEMU,KVM,VMware And other virtual machines managed
- Operating system virtualization : If the operating system and the system calls it provides are used as resources , Virtualization is represented by operating system virtualization , for example Linux Container virtualization technology is in the same Linux On the operating system , Virtualize multiple identical operating systems , Each application considers itself running in a separate OS. Such as LXC or Docker And other containers managed
From the implementation of virtualization, it can be divided into
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-evuMv5LW-1644590514274)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224142601421.png)]](/img/43/c8d544a447c2485185ff00b3fde5f8.jpg)
- Type I: The virtual machine runs directly on the system hardware , go by the name of Bare pager type , There is no so-called host operating system . They directly control hardware resources and clients . The performance of this solution is between host virtualization and operating system virtualization . Such as xen and vmware ESX
- Type II: Virtual machines run on traditional operating systems , Also created is a hardware full simulation instance , go by the name of ** trusteeship ( host )** type .Hypervisor Build a complete set of virtual hardware platform , Users install new operating systems and application software as needed , The underlying and upper operating systems can be completely independent . Simply put, this kind of VMM It is usually an application on the host operating system , Like other applications, it is managed by the host operating system , It is usually abstracted as a process . Such as VMware workstation、KVM. In host virtualization VM When calling hardware resources, the application program of :VM kernel ->Hypervisor-> Host kernel , relatively speaking , Performance is the worst of several virtualization technologies
Hypervisor Comparison of management tools
| Tools | manufacturer | Lord CPU | The goal is CPU | Main system | Target system |
|---|---|---|---|---|---|
| qemu | Febrice,Bellard | Inter,AMD,ARM | x86/x86-64/ARM | Windows,Linux,Mac OS | Linux |
| kvm | Red Hat | Inter/AMD | x86/x86-64 | Linux | Windows/Linux |
| Xen | University of Cambridge ,Inter/AMD | Inter/AMD | x86/x86-64 | Windows/Linux/Solaris | Windows/Linux |
| Hyper-V | Microsoft | Inter/AMD | x86/x86-64 | Windows | Windows/Linux |
| VMware ESXi Server | VMware | Inter/AMD | x86/x86-64 | Bare metal installation | Windows/Linux |
| Oracle VM | Oracle | Inter/AMD | x86/x86-64 | Bare metal installation | Windows/Linux |
KVM framework
KVM The kernel module
- It belongs to the standard Linux Part of the kernel , It is a module that provides virtualization function , The main be responsible for CPU And the virtualization of memory
- Essentially ,KVM It is the driver for managing virtual hardware devices , The driver uses a character device **/dev/kvm**( from KVM Create by itself ) As Management interface , Mainly responsible for vCPU The creation of , Virtual memory allocation ,vCPU Register reading and writing and vCPU Operation of
QEMU
QEMU It is a user mode tool , It can provide Device simulation The function of , Including simulation BIOS、 data bus 、 disk 、 network card 、 The graphics card 、 Sound card 、 keyboard 、 Mouse, etc. .
We know KVM Only responsible for CPU And the virtualization of memory , After loading it , Users can further create virtual machines through tools (KVM Provide the interface ), But only KVM It's not enough , Users cannot directly control the kernel to do things (KVM Interface only , How to create a virtual machine , Distribute vCPU Waiting is not on it ), You have to have a tool that runs in user space ,KVM Of the developers chose the more mature open source virtualization software QEMU As a tool , And modified it , At last formed QEMU-KVM.
stay QEMU-KVM in ,KVM Running in kernel space ,QEMU Run in user space , The actual simulation is created , Manage all kinds of virtual hardware ,QEMU take KVM Integrated into , adopt /ioctl call /dev/kvm, So that CPU The part of the instruction is left to the kernel module ,KVM Realized CPU And the virtualization of memory , but kvm You can't virtualize other hardware devices , therefore qemu And simulation IO equipment ( disk , network card , Video card, etc ) The role of ,KVM add QEMU After that is server virtualization in the full sense . however , because qemu simulation io The reason for the low efficiency of the equipment , Now, semi virtualized virtio Way to virtual IO equipment .
KVM Responsible for providing cpu, Virtual memory
QEMU Responsible for removing CPU And out of memory Virtual of other devices And right Creation and call of various virtual devices
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-8kHeoKql-1644590514275)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224154333919.png)]](/img/8e/7254f2e2977261b068670f8ab474a6.jpg)
libvirt
- libvirt It's a free set 、 Open source support Linux Under the mainstream virtualization management program C function library , Its aim is to include KVM Various virtualization hypervisors, including, provide a set of convenience 、 Reliable programming interface . The current mainstream Linux The default virtualization management tool on the platform virt-manager,virsh And so on libvirt Development .
- libvirt It is a virtual machine management system for various virtualization platforms API library . Some common virtual machine management tools, such as virsh( similar vim Editor ),virt-install,virt-manager And cloud computing framework platform ( Such as OpenStack,OpenNebula,Eucalyptus etc. ) Are used at the bottom libvirt Application program interface provided .
- libvirt It mainly consists of three parts :API library , A daemon libvirtd And a default command line management tool virsh.
summary
- QEMU Is a stand-alone virtualization solution , Does not depend on KVM( It can do it by itself CPU And memory simulation , It's just less efficient ). and KVM It's another virtualization solution , Yes CPU It's more efficient to carry out virtual operation ( Hardware assisted virtualization ), But it doesn't provide virtualization for other devices , Borrowed QEMU The code is customized , therefore KVM The solution must depend on QEMU. Even later RedHat It was developed later libvirt, I can only simply think that libvirt It's a virtual machine management tool , Still need to go through user space QEMU Come and KVM Interact .
KVM Virtual machine deployment
Environmental preparation
- Linux The host needs to be installed Graphic desktop
To minimize the ——> graphics
yum groupinstall -y “GNOME desktop ”
restart
startx Temporarily open the terminal ( Not recommended )
systemctl set-default graphical.targer
[[email protected] ~]# systemctl get-default
graphical.target
Pay attention to reasonable distribution CPU, Memory , Disk space, etc
Make sure to turn on hardware assisted virtualization
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-3lHTurEu-1644590514276)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224161856595.png)]](/img/11/72255e9154681d9929a9ac16847a89.jpg)
[[email protected] ~]# lscpu|grep ' virtualization '
virtualization : VT-x
Virtualization type : Completely
- see CPU Supported features (vmx:INTEL Virtualization capabilities |svm:AMD Virtualization capabilities )
[[email protected] ~]# grep -E 'svm|vmx' /proc/cpuinfo
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp ibrs_enhanced tpr_shadow vnmi ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat pku ospke md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities
install kvm
Clean up KVM Related pre installed environment
[[email protected] ~]# yum remove `rpm -qa |egrep 'qemu|virt|kvm'`
[[email protected] ~]# rm -rf /var/lib/libvirt/
[[email protected] ~]# rm -rf /etc/libvirt/
View groups
[[email protected] ~]# yum grouplist
install kvm grouping ( All packages that can be translated into virtualization will be installed )
[[email protected] ~]# yum install *qemu* *virt* librbd1-devel -y
Turn on libvirt
[[email protected] ~]# systemctl start libvirtd
[[email protected] ~]# systemctl enable libvirtd
[[email protected] ~]# systemctl status libvirtd
[[email protected] ~]# virsh list --all
Id name state
----------------------------------------------------
Make sure kvm Module has been loaded
[[email protected] ~]# lsmod |grep kvm
kvm_intel 188740 0
kvm 637515 1 kvm_intel
irqbypass 13503 1 kvm
Set firewall rules
[[email protected] ~]# systemctl start firewalld.service
[[email protected] ~]# systemctl enable firewalld.service
[[email protected] ~]# firewall-cmd --zone=public --add-masquerade --permanent
success
[[email protected] ~]# firewall-cmd --zone=public --add-masquerade
success
[[email protected] ~]# firewall-cmd --zone=public --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: ens33
sources:
services: dhcpv6-client ssh
ports:
protocols:
masquerade: yes
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Guest OS install
Graphical installation
- Call up virtual system manager
[[email protected] ~]# virt-manager
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-udOeBo8i-1644590514277)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224210105806.png)]](/img/3e/7f8107f581db2db0a7bafb305961cf.jpg)
- Upload system image
[[email protected] ~]# rz
[[email protected] ~]# ls
anaconda-ks.cfg public video file music
CentOS-7-x86_64-Minimal-2009.iso Templates picture download desktop
- Use mirror installation
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-zVuhEbwS-1644590514278)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211531099.png)]](/img/f0/e07df924fef1daa7fdcc007139d2a8.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-TfpGvlby-1644590514279)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211605051.png)]](/img/5d/a59583e55bb141ac32b24fd09a783d.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-ZM1rW4nh-1644590514279)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211715726.png)]](/img/db/f28796a5332b145407ea22253a04d4.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-efTIacru-1644590514280)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211806367.png)]](/img/9e/b254062196a010734226aba5d2e53a.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-v7TlaHMy-1644590514280)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211831558.png)]](/img/aa/07b30c04a2a52be358c486ecaed03a.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-e2zY9Ktj-1644590514281)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224211933970.png)]](/img/21/48940412ef923306c70d5e811463fa.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-gA36utF5-1644590514281)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212044427.png)]](/img/3a/1af74322107813477e658b5922b19b.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-nCqmWlFA-1644590514282)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212242379.png)]](/img/71/084c6d8800bca6fe7cf8274648b0e8.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-n6BBH9K5-1644590514283)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224212642808.png)]](/img/1c/a666486170033b6117bf27488f6cfa.jpg)
- Custom configuration ( Click... After configuration : Start installation in the upper left corner )
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-yL0kpWaH-1644590514283)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213650937.png)]](/img/f1/932a4b1db760cc24eac6445f500c53.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-V3XAn4zi-1644590514284)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213916580.png)]](/img/be/2a8a5f42013f78a9fb847d46ef4949.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-73fMGMQ9-1644590514284)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224214524788.png)]](/img/ec/d32ae407fb745f4410ff9768bb330c.jpg)
- You can refer to CentOS7 Installation
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-h283yiRA-1644590514285)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224221338233.png)]](/img/53/1ce757bdcebf4208cf6016ab6f3c79.jpg)
Command line installation
- Help information
[[email protected] ~]# virt-install --help
# Only common models are reserved
usage: virt-install --name NAME --memory MB STORAGE INSTALL [options]
Options :
-h, --help show this help message and exit
-n NAME, --name NAME Client instance name
--memory MEMORY Configure guest memory allocation. Ex:
--memory 1024 (in MiB)
--memory 512,maxmemory=1024
--vcpus VCPUS Number of vcpus to configure for your guest. Ex:
--vcpus 5
--vcpus 5,maxvcpus=10,cpuset=1-4,6,8
--cdrom CDROM Optical drive installation media
--disk DISK Specify various options for storage . for example :
--disk size=10 ( Create... In the default location 10GiB Mirror image )
--disk /my/existing/disk,cache=none
--disk device=cdrom,bus=scsi
--disk=?
-w NETWORK, --network NETWORK
Configure the client network interface . for example :
--network bridge=mybr0
--network network=my_libvirt_virtual_net
--network
--graphics GRAPHICS Configure client display settings . for example :
--graphics vnc
--graphics spice,port=5901,tlsport=5902
--graphics none
--graphics vnc,password=foobar,port=5910,keymap=ja
--arch ARCH simulation CPU framework
--autostart Automatically start the domain when the host starts .
--noautoconsole Do not automatically try to connect to the client console
- Installation example
[[email protected] ~]# virt-install \
--name=centos7.6-1 \
--vcpus=1 \
--ram=1024 \
--arch=x86_64 \
--os-type=linux \
--os-variant=rhel7 \
--graphics vnc,listen=0.0.0.0,port=5901,keymap=en-us \
--disk path=/var/lib/libvirt/images/centos7.6-1.img,size=3,format=qcow2 \
--cdrom=/home/CentOS-7-x86_64-Minimal-2009.iso \
--network bridge=virbr0
| The selection ( Empty indicates that ) | Replaceable |
|---|---|
| –graphics vnc,listen=0.0.0.0, port=5901,keymap=en-us | –nographics |
| –noautoconsole | |
| –network bridge=virbr0 | –bridge=virbr0 |
| –ram=1024 | –memory 512,maxmemory=1024 |
| –vcpus=1 | –vcpus 1,maxvcpus=4 |
| –autostart |
Basic use
- View client
View running virtual machines
[[email protected] ~]# virsh list
Id name state
----------------------------------------------------
View all virtual machines
[[email protected] ~]# virsh list --all
Id name state
----------------------------------------------------
- centos7.6-1 close
View domain information
[[email protected] ~]# virsh dominfo centos7.6-1
Id: 1
name : centos7.6-1
UUID: 92891b9c-37cc-4511-9bf6-59a8170c434c
OS type : hvm
state : running
CPU: 1
CPU Time : 20.5s
Maximum memory : 1048576 KiB
Memory used : 1048576 KiB
persistent : yes
Auto start : Ban
Preservation of Management : no
Security mode : none
Security DOI: 0
Check the virtual machine resource usage
[[email protected] ~]# virt-top
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-WLBNUU9U-1644590514285)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211225171314781.png)]](/img/1c/c84993c759deedd181a43cb0a32f6a.jpg)
- Start the client
Start virtual machine
[[email protected] ~]# virsh start centos7.6-1
Domain centos7.6-1 Started
[[email protected] ~]# virsh list
Id name state
----------------------------------------------------
1 centos7.6-1 running
Set power on self start
[[email protected] ~]# virsh autostart centos7.6-1
Domain centos7.6-1 Mark as auto start
[[email protected] ~]# virsh dominfo centos7.6-1
Id: 1
name : centos7.6-1
UUID: 92891b9c-37cc-4511-9bf6-59a8170c434c
OS type : hvm
state : running
CPU: 1
CPU Time : 20.7s
Maximum memory : 1048576 KiB
Memory used : 1048576 KiB
persistent : yes
Auto start : Enable
Preservation of Management : no
Security mode : none
Security DOI: 0
- Modify the configuration file /etc/libvirt/qemu/centos7.6-1.xml
file location /etc/libvirt/qemu/centos7.6-1.xml
[[email protected] ~]# head -20 /etc/libvirt/qemu/centos7.6-1.xml
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh edit centos7.6-1 Command line modification method or other application using the libvirt API. -->
<domain type='kvm'>
<name>centos7.6-1</name>
<uuid>92891b9c-37cc-4511-9bf6-59a8170c434c</uuid>
<memory unit='KiB'>1048576</memory>
<currentMemory unit='KiB'>1048576</currentMemory>
<vcpu placement='static'>1</vcpu>
<os>
<type arch='x86_64' machine='pc-i440fx-rhel7.0.0'>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
[[email protected] ~]# virsh edit centos7.6-1
- Network profile /etc/libvirt/qemu/networks/
[[email protected] ~]# cd /etc/libvirt/qemu/networks/
[[email protected] networks]# ls
autostart default.xml
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh net-edit default Command line modification method or other application using the libvirt API. -->
<network>
<name>default</name>
<uuid>481578d7-6728-48fa-8569-09eac31a0273</uuid>
<forward mode='nat'/>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:61:66:bb'/>
<ip address='192.168.122.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.122.2' end='192.168.122.254'/>
</dhcp>
</ip>
</network>
- Storage pool Profile /etc/libvirt/storage/
[[email protected] ~]# cd /etc/libvirt/storage/
[[email protected] storage]# ls
autostart home.xml
[[email protected] storage]# vim home.xml
<!-- WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE OVERWRITTEN AND LOST. Changes to this xml configuration should be made using: virsh pool-edit home or other application using the libvirt API. -->
<pool type='dir'>
<name>home</name>
<uuid>74ccd74f-30ea-4462-bc85-ca363520a1cf</uuid>
<capacity unit='bytes'>0</capacity>
<allocation unit='bytes'>0</allocation>
<available unit='bytes'>0</available>
<source>
</source>
<target>
<path>/home</path>
</target>
</pool>
- CPU Hot add
[[email protected] ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Command line add
[[email protected] ~]# virsh setvcpus centos7.6-1 2 --live
[[email protected] ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
- Memory balloon
KVM Memory balloon technology can adjust the memory used by virtual machines on demand , So as to improve the utilization of memory .linux Memory balloons are supported by default
Semi virtualization driven
Full virtualization driven
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-1uLtb7IB-1644590514286)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230224504219.png)]](/img/44/59a51055a0b90c4aba2bcc56493544.jpg)
Semi virtualization driven
The operating system is modified through the driver , namely Virtio technology ,, Virtual machines directly access the virtualization layer , The steps are reduced , High conversion efficiency
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-hwFZidyN-1644590514286)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230224702005.png)]](/img/86/4d5b2ec3d2111c08e37c60c330c03b.jpg)
Configure the semi virtualization driver
Network selection virtio
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-fEBkfDor-1644590514287)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211224213916580.png)]](/img/be/2a8a5f42013f78a9fb847d46ef4949.jpg)
The client checks to see if it supports semi virtualized drivers
[[email protected] ~]# virt-what kvm [[email protected] ~]# ethtool -i eth0 driver: virtio_net version: 1.0.0 firmware-version: expansion-rom-version: bus-info: 0000:00:03.0 supports-statistics: no supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: noSoftware access :http://www.linux-kvm.org/page/WindowsGuestDrivers/Download_Drivers
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-qSvTD3op-1644590514287)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230225401023.png)]](/img/39/87fed7be44fa20664f5a50489d991b.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-4ee9ERcO-1644590514287)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230225446479.png)]](/img/fb/8c4961bf84125e7550f0521443e4d4.jpg)
To configure
Add network card
virt-manager Graphical configuration
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-qOvVG3Sd-1644590514288)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231422646.png)]](/img/36/02dde6374f34d070a727830cafc6dd.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-JtrgtnTd-1644590514288)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231722128.png)]](/img/2f/b7949e41adbfdf0cf9dd96f0dcc916.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-7kAaVii7-1644590514289)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20211230231837941.png)]](/img/9e/22b0aa556bc8c8d3b1c5d9c126d5f2.jpg)
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ls
[[email protected] network-scripts]# cp ifcfg-eth0 ifcfg-ens9
Modify the corresponding configuration file
- virsh Command line add
Make sure the client is running
[[email protected] ~]# virsh list
Id name state
----------------------------------------------------
1 centos7.6-1 running
Check the existing network card
[[email protected] ~]# virsh domiflist centos7.6-1
Interface type Source model MAC
-------------------------------------------------------
vnet0 bridge virbr0 virtio 52:54:00:65:4d:a5
vnet1 network default rtl8139 52:54:00:9a:18:f7
Add network card
[[email protected] ~]# virsh attach-interface centos7.6-1 \
--type network \
--source default \
--model virtio \
--config
Successfully attached interface
[[email protected] ~]# virsh domiflist centos7.6-1
Interface type Source model MAC
-------------------------------------------------------
vnet0 bridge virbr0 virtio 52:54:00:65:4d:a5
vnet1 network default rtl8139 52:54:00:9a:18:f7
restart ( You need to shut down first , Reboot , To take effect )
[[email protected] ~]# virsh domiflist centos7.6-1
Interface type Source model MAC
-------------------------------------------------------
vnet0 bridge virbr0 virtio 52:54:00:65:4d:a5
vnet1 network default rtl8139 52:54:00:9a:18:f7
vnet2 network default virtio 52:54:00:83:7b:f1
- Profile add
Profile address
[[email protected] ~]# cd /etc/libvirt/qemu/
[[email protected] qemu]# vim centos7.6-1.xml
</interface>
<interface type='network'>
<mac address='52:54:00:83:7b:f1'/>
<source network='default'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/>
</interface>
Create a virtual network
virt-manager Add network
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-2yLwOhoH-1644590514289)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220101144515355.png)]](/img/36/ce59378f348a037982f1568bcf6408.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-2IMiSOZT-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220101144635362.png)]](/img/d0/5cd73037b2717027efbf756c6aa35d.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-wL9OUfka-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102084757468.png)]](/img/5a/733ec9c32dad1f0a3b0632b5a5d270.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-QnWLuZeC-1644590514290)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085136236.png)]](/img/38/896bf58587d26372783dd00ef4e73e.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-x29XC4VH-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085500717.png)]](/img/69/7644422bae66e9bdf4f510c1557d4a.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-ib0y4B1s-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085543261.png)]](/img/b8/5e7d41e53d9b048a59b90ec9b7c4a0.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-He5zLtW3-1644590514291)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102085601153.png)]](/img/35/9fc391a4de0dfefa3385973059a114.jpg)
- Verify network availability
[[email protected] ~]# ip a
8: virbr1: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 52:54:00:b6:35:e2 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.1/24 brd 192.168.10.255 scope global virbr1
valid_lft forever preferred_lft forever
- xshell Connect to the newly created network
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-zRN9mrwj-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102090802404.png)]](/img/68/97c3d3e22c80522e52da589cba3c0e.jpg)
- take effect : Forced shutdown , Power on again
see ip Address
[[email protected] ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:80:94:b0 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 52:54:00:da:57:16 brd ff:ff:ff:ff:ff:ff
inet 192.168.10.150/24 brd 192.168.10.255 scope global noprefixroute dynamic eth1
valid_lft 2714sec preferred_lft 2714sec
inet6 fe80::82c0:907:6163:5dd8/64 scope link noprefixroute
valid_lft forever preferred_lft forever
Check out the gateway
[[email protected] ~]# ip route
default via 192.168.10.1 dev eth1 proto dhcp metric 100
192.168.10.0/24 dev eth1 proto kernel scope link src 192.168.10.150 metric 100
ping gateway
[[email protected] ~]# ping 192.168.10.1150
ping The host machine
[[email protected] ~]# ping 192.168.139.50
ping Gateway of host
[[email protected] ~]# ping 192.168.139.2
ping domain name
[[email protected] ~]# ping www.baidu.com
Virtual machine connection
[[email protected] ~]# ssh [email protected]
The authenticity of host '192.168.10.150 (192.168.10.150)' can't be established. ECDSA key fingerprint is SHA256:0j755uJHNYtgaiAvD5muWjnq1Qxtuvo83VBMx2a85Wc. ECDSA key fingerprint is MD5:17:5d:03:0d:b8:f5:6d:86:06:6e:35:1d:51:e7:56:a9. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '192.168.10.150' (ECDSA) to the list of known hosts. [email protected]'s password:
Last login: Sun Jan 2 19:48:52 2022
[[email protected] ~]#
Generate network through configuration file
- Write a network configuration file
Get the template file of Network Writing
[[email protected] ~]# cd /etc/libvirt/qemu/networks/
[[email protected] networks]# cp network1.xml network2.xml
[[email protected] networks]# ls
autostart default.xml network1.xml network2.xml
Generate UUID
[[email protected] networks]# uuidgen
e63b6f45-8c1a-4378-8d46-18c8faab3271
Generate MAC Address
[[email protected] networks]# openssl rand -hex 6 |sed -r 's/(..)/\1:/g;s/.$//'
25:a4:ac:61:62:96
# The device is named 52:54:00:xx:xx:xx, You can only change the latter part
Modify the configuration file
[[email protected] networks]# vim network2.xml
<network>
<name>network2</name> Customize
<uuid>e63b6f45-8c1a-4378-8d46-18c8faab3271</uuid> Self generation
<forward mode='nat'/> Network mode
<bridge name='virbr2' stp='on' delay='0'/> Custom bridge name
<mac address='52:54:00:61:62:96'/> Self generation
<domain name='network2'/> Same as custom name
<ip address='192.168.20.1' netmask='255.255.255.0'>
<dhcp>
<range start='192.168.20.10' end='192.168.20.250'/>
</dhcp>
</ip>
</network>
- Generate network based on profile
[[email protected] networks]# virsh net-define network2.xml
from network2 Defining network network2.xml
Turn on the Internet
[[email protected] networks]# virsh net-start network2
The Internet network2 Started
Boot from boot
[[email protected] networks]# virsh net-autostart network2
The Internet network2 Marked as auto start
see
[[email protected] networks]# virsh net-list --all
name state Automatic start persistent
----------------------------------------------------------
default Activities no no
network1 Activities yes yes
network2 Activities yes yes
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-yLmAXQDQ-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102213729662.png)]](/img/6b/5e845f2d0f80b9f968eb75adaf355c.jpg)
Bridging mode
- Discontinue use NetworkManager And back up the network card file
[[email protected] ~]# systemctl stop NetworkManager
[[email protected] ~]# systemctl disable NetworkManager
[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /root/
- To create a bridge
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-Ykpdio50-1644590514292)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215726735.png)]](/img/a3/c540631a910b0e8a4cf44ba830883c.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-Pyl2AeDf-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215801701.png)]](/img/99/5e12c2abffe8f1bd7c1f2d719f5553.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-kuPX0AWT-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215843209.png)]](/img/bd/62d13c5da944fa20401796c6723835.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-DWyT1doh-1644590514293)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102215937957.png)]](/img/47/0ff03f6cad536d25fa2a7cf03f28bb.jpg)
- see
[[email protected] ~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# ls ifcfg-br1
ifcfg-br1
[[email protected] network-scripts]# cat ifcfg-br1
DEVICE="br1"
ONBOOT="no"
HOTPLUG="yes"
TYPE="Bridge"
BOOTPROTO="none"
IPADDR="192.168.139.50"
NETMASK="255.255.255.0"
GATEWAY="192.168.139.2"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
DHCPV6C="no"
STP="on"
DELAY="0.0"
[[email protected] network-scripts]# cat ifcfg-ens33
DEVICE="ens33"
ONBOOT="no"
HOTPLUG="yes"
BRIDGE="br1"
# The file has been modified , So back up before
- The client uses a bridge
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-Qlbakl9T-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102220558920.png)]](/img/de/b29c30a63ce4e27042856a38cdce88.jpg)
Modify the network card file
[[email protected]~]# cd /etc/sysconfig/network-scripts/
[[email protected] network-scripts]# vim ifcfg-eth0
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-fKsRtmR2-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102221749386.png)]](/img/b1/94bd6185b45d11d1b54fe229c94a63.jpg)
[[email protected] network-scripts]# systemctl restart network
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-CuW0Nl53-1644590514294)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102221945422.png)]](/img/4e/b716b78a28fc7e3f59e35194e34c12.jpg)
Bridge mode changed to net Pattern
- Client interface changes
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-8pCGgkLi-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102222333024.png)]](/img/3d/6976ceacb2be4ede37aa1a5ea347ac.jpg)
- The host stops the bridge interface
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-g5TaRmRO-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220102222432223.png)]](/img/1c/c4a59f8bfd62a5f52018867175adb0.jpg)
- Delete relevant network card files
[[email protected] network-scripts]# rm -rf ifcfg-br1
[[email protected] network-scripts]# rm -rf ifcfg-ens33
- Restore the original network card file
[[email protected] network-scripts]# mv /root/ifcfg-ens33 ./
Restart the network
[[email protected] network-scripts]# systemctl restart network
start-up NetworkManager
[[email protected] network-scripts]# systemctl start NetworkManager
[[email protected] network-scripts]# systemctl enable NetworkManager
Add hard disk ( Hot plug )
virt-manager Graphically add
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-aQwCnYOU-1644590514295)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104091411326.png)]](/img/bd/eab551cbbe06ab773d495abcaf81e5.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-aPvasbjR-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104091503146.png)]](/img/78/22580d90d35928b57735dedaa09581.jpg)
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 5G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 4G 0 part
├─centos-root 253:0 0 3.5G 0 lvm /
└─centos-swap 253:1 0 512M 0 lvm [SWAP]
vdb 252:16 0 2G 0 disk
virsh Command addition
- Create and use
[[email protected] ~]# virsh list
Id name state
----------------------------------------------------
1 my1 running
[[email protected] ~]# virsh domblklist my1
The goal is Source
------------------------------------------------
vda /var/lib/libvirt/images/my1.qcow2
vdb /var/lib/libvirt/images/my1-1.qcow2
hdb -
create disk
[[email protected] ~]# qemu-img create -f qcow2 /root/disk.img 1G
Formatting '/root/disk.img', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off
# Or use dd Command mode dd if=/dev/zero of=/root/disk.img bs=1M count=1024
Additional disks
[[email protected] ~]# virsh attach-disk my1 --source=/root/disk.img --target vdc --cache writeback --subdriver qcow2
Successfully attached disk
see
[[email protected] ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 5G 0 disk
├─vda1 252:1 0 1G 0 part /boot
└─vda2 252:2 0 4G 0 part
├─centos-root 253:0 0 3.5G 0 lvm /
└─centos-swap 253:1 0 512M 0 lvm [SWAP]
vdb 252:16 0 2G 0 disk
vdc 252:32 0 1G 0 disk
- Delete disk
[[email protected] ~]# virsh detach-disk my1 vdc
Successfully detached the disk
- Persistent additional disks
[[email protected] ~]# virsh attach-disk my1 --source=/root/disk.img --target vdc --cache writeback --subdriver qcow2 --persistent
Successfully attached disk
Delete
[[email protected] ~]# virsh detach-disk my1 vdc
Successfully detached the disk
Storage pool management
Look at the storage pool
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-733W4zZX-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104100637716.png)]](/img/5e/57aba9c69e7c44182ed7f94b0ad4de.jpg)
[[email protected] ~]# virsh pool-list --all
name state Automatic start
-------------------------------------------
default Activities yes
root Activities yes
Add local storage pool
- Create directory
[[email protected] ~]# mkdir /home/storage
- add to
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-oOgte4aK-1644590514296)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220104101155744.png)]](/img/fd/110a2a80f97a09510e517f18df84ad.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-cZVwuEVm-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151632281.png)]](/img/ba/e5e3b9d39df91108878f5c116a400d.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-mHrxpPY2-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151655170.png)]](/img/37/a2dbd1f968b9448071fa3c58e0c0ff.jpg)
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-wOVYjizN-1644590514297)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108151707777.png)]](/img/95/850c435476b5cfc4d4f2638a8e6549.jpg)
Add network storage pool
Network storage end
[[email protected] ~]# yum install -y nfs-utils.x86_64
[[email protected] ~]# systemctl start nfs-server
[[email protected] ~]# mkdir /home/nfs-storage
[[email protected] ~]# vim /etc/exports
[[email protected] ~]# cat /etc/exports
/home/nfs-storage 192.168.139.0/24(rw,sync,no_root_squash)
KVM virtual machine
[[email protected] ~]# showmount -e 192.168.139.10
Export list for 192.168.139.10:
/home/nfs-storage 192.168.139.0/24
[[email protected] ~]# mkdir /home/remote-storage
- Add network storage pool
![[ Failed to transfer the external chain picture , The origin station may have anti-theft chain mechanism , It is suggested to save the pictures and upload them directly (img-hBzBd3ZD-1644590514298)(KVM%E8%99%9A%E6%8B%9F%E5%8C%96.assets/image-20220108212920084.png)]](/img/35/3fb115287eced17e33d2e351d9a4d3.jpg)
边栏推荐
- DECLARE_ WAIT_ QUEUE_ HEAD、wake_ up_ Interruptible macro analysis
- 【软件逆向-基础知识】分析方法、汇编指令体系结构
- C file in keil cannot be compiled
- About MySQL database connection exceptions
- 线程基础知识
- Ubantu disk expansion (VMware)
- 1.五层网络模型
- FBO and RBO disappeared in webgpu
- Easy processing of ten-year futures and stock market data -- Application of tdengine in Tongxinyuan fund
- El tree whether leaf node or not, the drop-down button is permanent
猜你喜欢

Learning notes of raspberry pie 4B - IO communication (I2C)

Linux安装Redis

Tencent cloud, realize image upload
![[system security] ten thousand words summary system virtualization container bottom layer principle experiment](/img/c6/1bdb29a0acb0739f67b882fa6b3b47.jpg)
[system security] ten thousand words summary system virtualization container bottom layer principle experiment

SQL injection exercise -- sqli Labs

Pat class a 1160 forever (class B 1104 forever)

Single box check box
![[groovy] loop control (number injection function implements loop | times function | upto function | downto function | step function | closure can be written outside as the final parameter)](/img/45/6cb796364efe16d54819ac10fb7d05.jpg)
[groovy] loop control (number injection function implements loop | times function | upto function | downto function | step function | closure can be written outside as the final parameter)

单项框 复选框

2.常见的请求方法
随机推荐
Basic authorization command for Curl
When sqlacodegen generates a model, how to solve the problem that the password contains special characters?
Delphi free memory
El select, El option drop-down selection box
The perfect car for successful people: BMW X7! Superior performance, excellent comfort and safety
How to define a unified response object gracefully
Difference between MotionEvent. getRawX and MotionEvent. getX
Azkaban overview
Devtools的简单使用
[positioning in JS]
SQL injection exercise -- sqli Labs
[system security] ten thousand words summary system virtualization container bottom layer principle experiment
Google Chrome CSS will not update unless the cache is cleared - Google Chrome CSS doesn't update unless clear cache
Voice chip wt2003h4 B008 single chip to realize the quick design of intelligent doorbell scheme
Kubernetes -- cluster expansion principle
Linux Installation redis
Eight days of learning C language - while loop (embedded) (single chip microcomputer)
[Chongqing Guangdong education] 2777t green space planning reference questions of National Open University in autumn 2018
This + closure + scope interview question
el-select,el-option下拉选择框