【KVM虚拟化】· 命令行KVM安装linux

news2024/11/14 0:35:43

目录

🍁基础本环境配置

🍁添加lvm卷

🍁qemu-img创建磁盘文件

🍂创建raw格式

🍂创建虚拟机

🍂转换格式为qcow2

🍁virt-install命令参数

🍁案例操作


   🦐博客主页:大虾好吃吗的博客

   🦐专栏地址:KVM虚拟化专栏

最小化安装centos系统,勾选虚拟化功能。

 

基础本环境配置

修改网卡信息,因为最小化安装没有vim,这里先使用vi命令修改网卡信息

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 
BOOTPROTO=static                #修改
ONBOOT=yes                      #修改
IPADDR=192.168.8.10             #下面四行添加
GATEWAY=192.168.8.254
NETMASK=255.255.255.0
DNS1=8.8.8.8
[root@localhost ~]# systemctl restart network

永久关闭防火墙

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

永久关闭selinux

[root@localhost ~]# vi /etc/sysconfig/selinux
SELINUX=disabled        #修改
[root@localhost ~]# setenforce 0

配置yum仓库

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# mkdir backup
[root@localhost yum.repos.d]# mv *.repo backup/
[root@localhost yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
[root@localhost yum.repos.d]# ls
backup  CentOS-Base.repo

安装基本环境、上传下载功能

[root@localhost ~]# yum -y groupinstall base
[root@localhost ~]# yum -y update
[root@localhost ~]# yum -y install lrzsz

安装虚拟化软件

[root@localhost ~]# yum -y install qemu-img qemu-kvm libvirt libvirt-python libguestfs-tools virt-install bridge-utils

查看是否支持kvm

[root@localhost ~]# lsmod | grep kvm
kvm_intel             188740  0 
kvm                   637289  1 kvm_intel
irqbypass              13503  1 kvm

添加lvm卷

        正常情况下,我们是要创建多个虚拟机,但是磁盘却只有20G(创建时默认),这远远不够。这时我们就需要添加硬盘,而lvm正是我们优先考虑的,当空间不够了还可以继续扩容。打开VMware添加一块100G的磁盘空间,使用lsblk命令查看100G的磁盘空间,因为是开机状态添加的磁盘,需要扫描才能查看到。

[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host0/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host1/scan
[root@localhost ~]# echo "- - -" >> /sys/class/scsi_host/host2/scan 
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0  
  
[root@localhost ~]# pvcreate /dev/sdb
  Physical volume "/dev/sdb" successfully created.
[root@localhost ~]# vgcreate vg01 /dev/sdb
  Volume group "vg01" successfully created
[root@localhost ~]# vgdisplay           #查看vg01中PE的数量,指定全部空间给逻辑卷
#省略部分内容
  Total PE              25599
[root@localhost ~]# lvcreate -n lv01 -l 25599 vg01
  Logical volume "lv01" created.
[root@localhost ~]# mkfs.xfs /dev/vg01/lv01
meta-data=/dev/vg01/lv01         isize=512    agcount=4, agsize=6553344 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=26213376, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=12799, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /kvm
[root@localhost ~]# mount /dev/vg01/lv01 /kvm
[root@localhost ~]# vim /etc/fstab
/dev/vg01/lv01 /kvm xfs default 0 0 
​
[root@localhost ~]# cd /kvm
[root@localhost kvm]# df -hT
Filesystem              Type      Size  Used Avail Use% Mounted on
devtmpfs                devtmpfs  3.8G     0  3.8G   0% /dev
tmpfs                   tmpfs     3.9G     0  3.9G   0% /dev/shm
tmpfs                   tmpfs     3.9G   12M  3.8G   1% /run
tmpfs                   tmpfs     3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  2.2G   15G  13% /
/dev/sda1               xfs      1014M  183M  832M  19% /boot
tmpfs                   tmpfs     781M     0  781M   0% /run/user/0
/dev/mapper/vg01-lv01   xfs       100G   33M  100G   1% /kvm

qemu-img创建磁盘文件

        通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。

        raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所有有时候,我们需要将raw格式的磁盘转换成qcow2格式。

创建raw格式

先在kvm目录下创建img(存放系统)、iso(存放系统镜像)

[root@localhost kvm]# mkdir img iso
[root@localhost kvm]# ls
img  iso
[root@localhost kvm]# qemu-img create /kvm/img/centos01.img 8G
Formatting '/kvm/img/centos01.img', fmt=raw size=8589934592 

查看

[root@localhost kvm]# ll -h img
total 0
-rw-r--r--. 1 root root 8.0G Apr 18 09:45 centos01.img
[root@localhost kvm]# qemu-img info img/centos01.img 
image: img/centos01.img
file format: raw
virtual size: 8.0G (8589934592 bytes)
disk size: 0

创建虚拟机

使用dd命令,导入centos7.9的镜像。

[root@localhost kvm]# dd if=/dev/sr0 of=/kvm/iso/centos7.iso
9203712+0 records in
9203712+0 records out
4712300544 bytes (4.7 GB) copied, 129.538 s, 36.4 MB/s

创建虚拟机

[root@localhost kvm]# virt-install --name vm01 --vcpus 1 --ram 1024 --disk /kvm/img/centos01.img,format=raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole --os-type=linux --os-variant=centos7.0 --location=/kvm/iso/centos7.iso 

Starting install...
Retrieving file .treeinfo...                         |  354 B  00:00     
Retrieving file vmlinuz...                           | 6.5 MB  00:00     
Retrieving file initrd.img...                        |  53 MB  00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

错误分析

根据下图可以看到,这时检查口libvirtd服务状态,如果未开启则开启。

[root@localhost kvm]# systemctl status libvirtd
[root@localhost kvm]# systemctl start libvirtd

        因为是最小化安装,没有图形化界面,但是上面创建的虚拟机添加了显示协议vnc,可以连接vnc客户端界面安装。

转换格式为qcow2

[root@localhost kvm]# qemu-img convert -f raw -O qcow2 /kvm/img/centos01.img /kvm/img/centos01.qcow2
[root@localhost kvm]# ll img/centos01.qcow2 
-rw-r--r--. 1 root root 197120 Apr 18 10:15 img/centos01.qcow2
[root@localhost kvm]# qemu-img info img/centos01.qcow2 
image: img/centos01.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

virt-install命令参数

通用选项:

-n NAME,--name=NAME #虚拟机名称

-r MEMORY, --ram=MEMORY #以MB为单位为客户端事件分配的内存

--vcpus=VCPUS #配置虚拟机的虚拟CPU(vcpu)数量,如下所示:

--vcpus 5

--vcpus 5, maxcpus=10

--vcpus socket=2,cores=4,threads=2

--cpuset=CPUSET #Set which physical CPUs domain can use.

--cpu=CPU #CPU型号及功能,如:--cpu coreduo,+x2apic

--description=DESCRIPTION #在生成的XML中保存的可读VM描述。

--security=SECURITY #设定域安全驱动器配置。

--numatune=NUMATUNE #为域进程调整NUMA策略。

安装方法选项:

-c CDROM, --cdrom=CDROM #光驱安装介质

-l LOCATION, --location=LOCATION #安装源(例如:nfs:host:/path、http://host/path、ftp://host/path)

--pxe #使用 PXE 协议从网络引导

--import #在磁盘映像中构建客户机

--livecd #将光驱介质视为 Live CD

-x EXTRA, --extra-args=EXTRA #附加到使用--location引导的内核的参数

--os-type=DISTRO_TYPE #操作系统类型,'linux'、'unix'、'windows'

--os-variant=DISTRO_VARIANT #操作系统版本,如: 'fedora6','rhel5', 'solaris10', 'win2k'

--boot=BOOTOPTS #自选配置后安装引导顺序、菜单、永久kernel引导,等等。

存储配置:

--disk=DISKOPTS #用各种选项指定存储。

--disk path=/my/existing/disk

--disk path=/my/new/disk,size=5 (单位GB)

--disk vol=poolname:volname,device=cdrom,bus=scsi,...

--nodisks #不为该客户端设置任何磁盘。

--filesystem=FILESYSTEMS #将主机目录传递给虚拟机。如下所示:

--filesystem /my/source/dir,/dir/in/guest

--filesystem template_name,/,type=template

联网配置:

-w NETWORK, --network=NETWORK #配置客户网络接口。

--network bridge=mybr0

--network network=my_libvirt_virtual_net

--network network=mynet,model=virtio,mac=00:11...

--nonetworks #不为该客体创建网络接口。

图形配置:

--graphics=GRAPHICS #配置虚拟机显示设置。如下所示:

--graphics vnc

--graphics spice,port=5901,tlsport=5902

--graphics none

--graphics vnc,password=foobar,port=5910,keymap=ja

--noautoconsole #不要自动尝试连接到客户端控制台

设备选项:

--serial=SERIALS #配置虚拟机串口设备

--parallel=PARALLELS #配置虚拟机并口设备

--channel=CHANNELS #配置虚拟机沟通频道

--console=CONSOLES #配置虚拟机与主机之间的文本控制台连接

--host-device=HOSTDEVS #配置与客户相连的物理主机设备

--soundhw=SOUNDHW #配置客户声音设备仿真

--watchdog=WATCHDOG #配置虚拟机 watchdog 设备

--video=VIDEO #配置虚拟机视频硬件。

--smartcard=SMARTCARD #配置虚拟机智能卡设备。如下所示:

--smartcard mode=passthrough

--redirdev=REDIRDEV #Configure a guest redirection device. 如下所示:

--redirdev usb,type=tcp,server=192.168.1.1:4000

虚拟化平台选项:

-v, --hvm #客户端应该是一个全虚拟客户端

-p, --paravirt #这个客户端是一个半虚拟客户端

--container T #his guest should be a container guest

--virt-type=HV_TYPE #要使用的管理程序名称(kvm、qemu、xen)

--arch=ARCH #模拟的 CPU 构架

--machine=MACHINE #The machine type to emulate

--noacpi #为全虚拟客户端禁用 ACPI(在 os-type/os-variant db 中覆盖数值)

-u UUID, --uuid=UUID #客户端 UUID。

其它选项:

--autostart #引导主机时自动启动域。

--print-xml #输出所生成域的XML,而不是定义虚拟机。

--print-step=XMLSTEP #输出具体安装步骤

--noreboot #完成安装后不要引导虚拟机。

--wait=WAIT #要等待的时间(以分钟为单位)

--dry-run #完成安装步骤,但不要创建设备或者定义虚拟机。

--force #对任意应用程序提示强制回答‘yes’,终止其它提示

-q, --quiet #禁止无错误输出

--prompt #要求用户为模糊情况或者需要的选项输入

-d, --debug #输入故障排除信息

案例操作

案例1:使用qemu-img命令创建一个qcow2格式的虚拟机磁盘文件,并使用virt-install命令创建虚拟机。

[root@localhost ~]# qemu-img create -f qcow2 /kvm/img/vm1.qcow2 10G
Formatting '/kvm/img/vm1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 

[root@localhost ~]# virt-install --name myvm1 -r1024 --vcpus 1 --location /kvm/iso/centos7.iso --disk /kvm/img/vm1.qcow2 --nographics -x "console=ttyS0"

        执行创建命令后,等待系统安装完成,进入初始化环境配置设置,修改语言、磁盘分配、安装软件、设置密码等操作。我们这里[x]保持默认,[ ! ]需要修改一下,根据需求修改吧。比如第二个设置语言,在下方输入2,进入后有两个选项分别是设置时间和设置NTP,这里选择1设置时间,选择2 Asia,下面选择不全,让你按回车键显示全部,这里找到shanghai,我这里是65,输入后自动转跳回设置界面,继续选择设置[ ! ]即可。设置完成后,选择b开始安装。

        通过这里的安装界面,我们可以看到,全是英文字符串格式,对我们来说,设置起来无疑是增加了一些难度。下面通过vnc图形化远程安装,和正常装机没有太多区别,给我们省下很多事。

案例2:vnc安装虚拟机,通过qemu-img命令创建一个qcow2格式的虚拟机磁盘文件,并使用virt-install命令创建虚拟机。

首先安装vncserver

[root@localhost ~]# yum -y install tigervnc-server
[root@localhost ~]# cp /usr/lib/systemd/system/vncserver@.service /usr/lib/systemd/system/vncserver@:1.service 
[root@localhost ~]# vim /usr/lib/systemd/system/vncserver@:1.service
#修改下面
ExecStart=/usr/bin/vncserver_wrapper root %i
[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# vncpasswd                           #设置密码(六位)
Password:
Verify:

创建虚拟机

[root@localhost ~]# qemu-img create -f qcow2 /kvm/img/vnc1.qcow2 10G
Formatting '/kvm/img/vnc1.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 lazy_refcounts=off 
​
[root@localhost ~]# virt-install -n myvnc -r 1024 --vcpus 1 -l /kvm/iso/centos7.iso --disk /kvm/img/vnc1.qcow2 --graphics vnc,listen=0.0.0.0,port=6000 --noautoconsole
WARNING  No operating system detected, VM performance may suffer. Specify an OS with --os-variant for optimal results.
​
Starting install...
Retrieving file .treeinfo...                                |  354 B  00:00     
Retrieving file vmlinuz...                                  | 6.5 MB  00:00     
Retrieving file initrd.img...                               |  53 MB  00:00     
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

        使用vnc客户端登录IP加端口号,就进入图形化安装界面了。案例1和案例2的区别在于显示位置,案例1为ttyS0,案例2为vnc。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/480104.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】 小项目---宠物小屋的分析设计与开发实现

目录 需求 分析设计 动物类 笼子类 房子类 人类 小贴士 整体设计图 开发实现 动物类 笼子类 房子类 人类 小贴士 控制台主函数 需求 动物猫(CCat)、狗(CDog)、蛇(CSnake),包含名字&…

对折纸张厚度超过珠峰

对折 0.1 毫米的纸张,循环对折,超过珠峰高度输出对折次数。 【学习的细节是欢悦的历程】 Python 官网:https://www.python.org/ Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单…… 地址&a…

【计算机网络】学习笔记:第六章 应用层【王道考研】

基于本人观看学习b站王道计算机网络课程所做的笔记&#xff0c;不作任何获利 仅进行交流分享 特此鸣谢王道考研 若有侵权请联系&#xff0c;立删 如果本篇笔记帮助到了你&#xff0c;还请点赞 关注 支持一下 ♡>&#x16966;<)!! 主页专栏有更多&#xff0c;如有疑问欢迎…

每天一道算法练习题--Day17 第一章 --算法专题 --- ----------布隆过滤器

场景 假设你现在要处理这样一个问题&#xff0c;你有一个网站并且拥有很多访客&#xff0c;每当有用户访问时&#xff0c;你想知道这个 ip 是不是第一次访问你的网站。 hashtable 可以么 一个显而易见的答案是将所有的 IP 用 hashtable 存起来&#xff0c;每次访问都去 hash…

ARM架构基本理论(1)

ARM架构基本理论 一、ARM的简介 ARM&#xff08;Advanced RISC Machine&#xff09;是一种基于RISC&#xff08;Reduced Instruction Set Computing&#xff09;架构的计算机处理器架构&#xff0c;由ARM Holdings&#xff08;ARM公司&#xff09;开发和授权给其他公司生产和…

【C++开发】基于QT+sqlite3的医疗管理系统

文章目录 前言数据库设计主要实现的功能病人列表页面病人信息页信息录入页面信息修改页面 & 信息查看页面 总结 前言 本次做的这个项目是医疗管理系统&#xff0c;是根据需求所定制的&#xff0c;因此只面向个人本地的使用。 本项目是本人在完全0基础的情况下边学边…

14-2-进程间通信-FIFO

一、命名管道FIFO 1.作用范围 对于命名管道FIFO&#xff0c;它可以在不相关的进程间也能相互通信。 2.命名管道可左右用于不相关进程的原因 因为命令管道&#xff0c;提前创建了一个类型为管道的设备文件&#xff0c;在进程里只要使用这个设备文件&#xff0c;就可以相互通信…

14-1-进程间通信-pipe

一.无名管道pipe 特点&#xff1a; (1)半双工&#xff08;在同一时刻&#xff0c;数据传输的方向只能是接收或发送&#xff09;&#xff1b; 例如&#xff1a;对于主机和从机而言&#xff0c;在某一时刻&#xff0c;只能是主机发送&#xff08;从机接收&#xff09;&#xff0…

CentOS+nginx手动搭建WordPress

文章目录 前提条件php安装安装 EPEL 源及源管理工具&#xff1a;安装 REMI 源&#xff1a;安装 PHP7.3 及扩展&#xff1a;设置开机自动启动其他php命令 wordpress 安装下载WordPress将下载的WordPress移动至网站根目录修改WordPress配置文件配置nginx 创建完成后根据域名访问 …

分析linux中动态库so文件的常用方法

前言 在linux系统中&#xff0c;我们经常会遇到各种各样的动态库文件&#xff0c;常见的是.so后缀&#xff0c;那么我们应该如何分析这些文件的用途和作用呢&#xff1f;毕竟我们不能一知半解的“搞事情”。 正文 查看文件属性 首先&#xff0c;我们从整体上了解一下该文件的基…

maven-gpg-plugin gpg禁用交互式输入密码 免密码输入 设置默认密码 关闭pinentry-qt输入 passphrase

一、问题描述 在使用maven-gpg-plugin打包jar时,默认情况下&#xff0c;每次都会弹出对话框要你输入密码&#xff1a; 这就有点烦&#xff0c;有啥办法可以设置默认方法没&#xff1f;网上找了一圈&#xff0c;通过搜索关键词“passphrase”&#xff0c;找到了一些教程&#x…

无损以太网与网络拥塞管理(PFC、ECN)

无损以太网 无损以太网&#xff08;Lossless Ethernet&#xff09;是一种专门用于数据中心网络的网络技术&#xff0c;旨在提供低延迟、高吞吐量和可靠性的传输服务。它是在传统以太网的基础上进行了扩展&#xff0c;引入了新的拥塞管理机制&#xff0c;以避免数据包丢失和网络…

探索【Stable-Diffusion WEBUI】的插件:ControlNet 1.1

文章目录 &#xff08;零&#xff09;前言&#xff08;二&#xff09;ControlNet&#xff08;v1.1&#xff09;&#xff08;2.1&#xff09;模型&#xff08;2.2&#xff09;新版界面&#xff08;2.3&#xff09;预处理器 &#xff08;三&#xff09;偷懒 &#xff08;零&#…

机器学习与深度学习——通过决策树算法分类鸢尾花数据集iris求出错误率画出决策树并进行可视化

什么是决策树&#xff1f; 决策树是一种常用的机器学习算法&#xff0c;它可以对数据集进行分类或回归分析。决策树的结构类似于一棵树&#xff0c;由节点和边组成。每个节点代表一个特征或属性&#xff0c;每个边代表一个判断或决策。从根节点开始&#xff0c;根据特征的不同…

list的使用介绍---C++

一、list简介 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点中通过指针指向其前一个元素和后一个元素。…

计算机网络第一章(谢希仁第8版学习)

作者&#xff1a;爱塔居 专栏&#xff1a;计算机网络 作者简介&#xff1a;大三学生&#xff0c;希望和大家一起加油 文章目录 目录 文章目录 一、网络、互连网、互联网&#xff08;因特网&#xff09;的概念 二、因特网的组成 三、交换方式 3.1 电路交换 3.2 分组交换 3.3 电路…

详解c++---list介绍

目录标题 list介绍list定义list遍历list数据插入push_backpush_frontinsert list删除pop_backpop_fronterase list排序list去重list合并list转移list其他函数emptysizefrontbackassignswapresizeclear list排序效率问题 list介绍 list是可以在常数范围内在任意位置进行插入和删…

【Java笔试强训 22】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525;小易的升…

【Java笔试强训 21】

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔&#x1f93a;&#x1f93a;&#x1f93a; 目录 一、选择题 二、编程题 &#x1f525; 洗牌 &…

免费搭建Plex家庭影音中心 - 打造超级多媒体中心【公网远程访问】

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1.前言 用手机或者平板电脑看视频&#xff0c;已经算是生活中稀松平常的场景了&#xff0c;特别是各…