Yao L

探索永无止境

  • 主页
所有文章 推荐 关于我

Yao L

探索永无止境

  • 主页

利用KVM虚拟机部署Lustre文件系统一

2020-10-29

Centos7.6安装KVM

通过 yum安装 kvm 基础包和管理工具

KVM 是基于 x86 虚拟化扩展(Intel VT 或者 AMD-V) 技术的虚拟机软件,所以查看 CPU 是否支持 VT 技术,就可以判断是否支持KVM。有返回结果,如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。

1
2
cat /proc/cpuinfo | egrep 'vmx|svm'
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 intel_pt tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts

kvm相关安装包及其作用:

  • qemu-kvm 主要的KVM程序包
  • python-virtinst 创建虚拟机所需要的命令行工具和程序库
  • virt-manager GUI虚拟机管理工具
  • virt-top 虚拟机统计命令
  • virt-viewer GUI连接程序,连接到已配置好的虚拟机
  • libvirt C语言工具包,提供libvirt服务
  • libvirt-client 为虚拟客户机提供的C语言工具包
  • virt-install 基于libvirt服务的虚拟机创建命令
  • bridge-utils 创建和管理桥接设备的工具
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# ------------------------
# yum -y install qemu-kvm python-virtinst libvirt libvirt-python virt-manager libguestfs-tools bridge-utils virt-install

yum -y install qemu-kvm libvirt virt-install bridge-utils

# 重启宿主机,以便加载 kvm 模块
# ------------------------
reboot

# 查看KVM模块是否被正确加载
# ------------------------
[root@gvadmin ~]# lsmod | grep kvm
kvm_intel 170086 24
kvm 566340 1 kvm_intel
irqbypass 13503 9 kvm

开启kvm服务
systemctl start libvirtd
systemctl enable libvirtd

物理机网络配置

  1. KVM虚拟机默认是基于NAT进行网络配置的;
  2. 只有同一宿主机的虚拟机之间可以互相访问,但是跨宿主机是不能访问的;
  3. 虚拟机需要和宿主机配置成网桥模式后,虚拟机可以在局域网内可见。
NAT模式

NAT(Network Address Translation网络地址翻译),NAT方式是kvm安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@gvadmin ~]# virsh net-list 
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是

[root@gvadmin ~]# virsh net-dumpxml default
<network connections='3'>
<name>default</name>
<uuid>fe528385-ace3-4f5c-89ed-2bc8c0741c1b</uuid>
<forward mode='nat'>
<nat>
<port start='1024' end='65535'/>
</nat>
</forward>
<bridge name='virbr0' stp='on' delay='0'/>
<mac address='52:54:00:8a:b3:1c'/>
<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>
###可以看出,目前NAT使用的IP地址池是192.168.122.2-192.168.122.254,网关地址为192.168.122.1,子网掩码为24位。

nat模式:在nat模式中,KVM虚拟机之间需要配置与nat对应网段的信息,挂载到同一个设备下的kvm虚拟机完全可以通讯,KVM和虚拟机可以通讯,但是如果想要将kvm虚拟机的服务发布出去,则需要宿主机做DNAT端口映射到对应的虚拟机。`nat模式也是KVM默认的模式

我们可以看到NAT方式已经开启。而且default是宿主机安装VM支持模块的时候自动安装的。

我们也可以查看,系统中已经存在的网卡。使用ifconfig命令,如下:

其中virbr0是由宿主机虚拟机支持模块安装时产生的虚拟网络接口,也是一个switch和bridge,负责把内容分发到各虚拟机。几个虚拟机管理模块产生的接口关系如下图:

nat

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[root@gvadmin ~]# ifconfig 
br0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 11.2.100.100 netmask 255.255.255.0 broadcast 11.2.100.255
inet6 fe80::127b:44ff:feb1:27be prefixlen 64 scopeid 0x20<link>
ether 10:7b:44:b1:27:be txqueuelen 1000 (Ethernet)
RX packets 132846 bytes 17364359 (16.5 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 85 bytes 11584 (11.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

virbr0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:8a:b3:1c txqueuelen 1000 (Ethernet)
RX packets 1614 bytes 139848 (136.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 662 bytes 55791 (54.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fec4:aa26 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:c4:aa:26 txqueuelen 1000 (Ethernet)
RX packets 321 bytes 28019 (27.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 119880 bytes 6272065 (5.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe29:5277 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:29:52:77 txqueuelen 1000 (Ethernet)
RX packets 9688 bytes 13474569 (12.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 21191 bytes 3841972 (3.6 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe44:5623 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:44:56:23 txqueuelen 1000 (Ethernet)
RX packets 335 bytes 32681 (31.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 119708 bytes 6252570 (5.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

vnet3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::fc54:ff:fe3a:9641 prefixlen 64 scopeid 0x20<link>
ether fe:54:00:3a:96:41 txqueuelen 1000 (Ethernet)
RX packets 316 bytes 30521 (29.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 119735 bytes 6255224 (5.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

[root@gvadmin ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.107b44b127be no ens5f1
vnet1
virbr0 8000.5254008ab31c yes virbr0-nic
vnet0
vnet2
vnet3
虚拟机配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@gvadmin ~]# ssh 192.168.122.101
Warning: Permanently added '192.168.122.101' (ECDSA) to the list of known hosts.
root@192.168.122.101's password:
Last login: Sun Nov 1 19:12:46 2020
[root@node1 ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.122.101 netmask 255.255.255.0 broadcast 192.168.122.255
inet6 fe80::34fd:9c4d:c7a:d59e prefixlen 64 scopeid 0x20<link>
ether 52:54:00:c4:aa:26 txqueuelen 1000 (Ethernet)
RX packets 120351 bytes 6300182 (6.0 MiB)
RX errors 0 dropped 5 overruns 0 frame 0
TX packets 361 bytes 33704 (32.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 300 bytes 25720 (25.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 300 bytes 25720 (25.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
##通过在网卡上配置和虚拟网桥同一网段的ip,达到虚拟机之间互通,以及虚拟机和宿主机之间的连接
自定义NAT网络

创建名为nat-br1的NAT网络

1
2
3
4
5
6
7
8
9
10
11
12
13
cat /etc/libvirt/qemu/networks/nat-br1.xml
<network>
<name>nat-br1</name>
<uuid>21ace45e-0579-4300-89e0-8cb1ee8d1f0e</uuid>
<forward mode='nat'/>
<bridge name='virbr1' stp='on' delay='0'/>
<mac address='52:54:00:51:ad:6f'/>
<ip address='10.132.10.1' netmask='255.255.255.0'>
<dhcp>
<range start='10.132.10.2' end='10.132.10.254'/>
</dhcp>
</ip>
</network>

启用新建的NAT网络

1
2
3
virsh net-define /etc/libvirt/qemu/networks/nat-br1.xml
virsh net-start nat-br1
virsh net-autostart nat-br1

验证

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@gvadmin ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.107b44b127be no ens5f1
vnet1
virbr0 8000.5254008ab31c yes virbr0-nic
vnet0
vnet2
vnet3
virbr1 8000.52540051ad6f yes virbr1-nic

[root@gvadmin ~]# virsh net-list --all
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是
nat-br1 活动 是 是

bridge模式配置

Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。桥接网络(也叫 物理设备共享)被用作把一个物理设备复制到一台虚拟机。网桥多用作高级设置,特别是主机多个网络接口的情况。

bridge

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@gvadmin ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens5f1
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
NAME=ens5f1
UUID=ee1e24a8-a5fd-44f4-bb7a-159c84da9447
DEVICE=ens5f1
ONBOOT=yes
BRIDGE=br0

[root@gvadmin ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NM_CONTROLLED=no
IPV4_FAILURE_FATAL=no
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=11.2.100.100
NETMASK=255.255.255.0
GATEWAY=11.2.100.254

systemctl restart network

[root@gvadmin ~]# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.107b44b127be no ens5f1
vnet1
virbr0 8000.5254008ab31c yes virbr0-nic
vnet0
vnet2
vnet3
virbr1 8000.52540051ad6f yes virbr1-nic
虚拟机配置
1
2
3
4
5
6
7
8
9
10
11
##此处配置的为unbutu系统
iface eth0 inet manual
auto pnet0
iface pnet0 inet static
address 11.2.100.200
netmask 255.255.0.0
gateway 11.2.100.254
dns-domain example.com
dns-nameservers 11.2.100.254
bridge_ports eth0
bridge_stp off
kvm虚拟机常用命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
常用参数说明
–name指定虚拟机名称
–memory分配内存大小。
–vcpus分配CPU核心数,最大与实体机CPU核心数相同
–disk指定虚拟机镜像,size指定分配大小单位为G。
–network网络类型,此处用的是默认,一般用的应该是bridge桥接。
–accelerate加速
–cdrom指定安装镜像iso
–vnc启用VNC远程管理,一般安装系统都要启用。
–vncport指定VNC监控端口,默认端口为5900,端口不能重复。
–vnclisten指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
–os-type=linux,windows
–os-variant=rhel6

--name 指定虚拟机名称
--ram 虚拟机内存大小,以 MB 为单位
--vcpus 分配CPU核心数,最大与实体机CPU核心数相同
–-vnc 启用VNC远程管理,一般安装系统都要启用。
–-vncport 指定VNC监控端口,默认端口为5900,端口不能重复。
–-vnclisten 指定VNC绑定IP,默认绑定127.0.0.1,这里改为0.0.0.0。
--network 虚拟机网络配置
# 其中子选项,bridge=br0 指定桥接网卡的名称。

–os-type=linux,windows
–os-variant=rhel7.2

--disk 指定虚拟机的磁盘存储位置
# size,初始磁盘大小,以 GB 为单位。

--location 指定安装介质路径,如光盘镜像的文件路径。
--graphics 图形化显示配置
# 全新安装虚拟机过程中可能会有很多交互操作,比如设置语言,初始化 root 密码等等。
# graphics 选项的作用就是配置图形化的交互方式,可以使用 vnc(一种远程桌面软件)进行链接。
# 我们这列使用命令行的方式安装,所以这里要设置为 none,但要通过 --extra-args 选项指定终端信息,
# 这样才能将安装过程中的交互信息输出到当前控制台。
--extra-args 根据不同的安装方式设置不同的额外选项
virsh
基础命令

virsh list --all # 查看所有运行和没有运行的虚拟机
virsh list # 查看在运行的虚拟机
virsh dumpxml vm-name # 查看kvm虚拟机配置文件
virsh start vm-name # 启动kvm虚拟机
virsh shutdown vm-name # 正常关机

virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源)
virsh undefine vm-name # 删除vm的配置文件

ls /etc/libvirt/qemu
# 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除

virsh define file-name.xml # 根据配置文件定义虚拟机
virsh suspend vm-name # 挂起,终止
virsh resumed vm-name # 恢复被挂起的虚拟机
virsh autostart vm-name # 开机自启动vm
virsh console <虚拟机名称> # 连接虚拟机

virsh 常用命令
virsh list --all # 查看所有运行和没有运行的虚拟机
virsh list # 查看在运行的虚拟机
virsh dumpxml vm-name # 查看kvm虚拟机配置文件
virsh start vm-name # 启动kvm虚拟机
virsh shutdown vm-name # 正常关机

virsh destroy vm-name # 非正常关机,强制关闭虚拟机(相当于物理机直接拔掉电源)
virsh undefine vm-name # 删除vm的配置文件

ls /etc/libvirt/qemu
# 查看删除结果,Centos-6.6的配置文件被删除,但磁盘文件不会被删除

virsh define file-name.xml # 根据配置文件定义虚拟机
virsh suspend vm-name # 挂起,终止
virsh resumed vm-name # 恢复被挂起的虚拟机
virsh autostart vm-name # 开机自启动vm
virsh console <虚拟机名称> # 连接虚拟机
  • nat
  • kvm
  • network
  • bridge

扫一扫,分享到微信

微信分享二维码
利用KVM虚拟机部署Lustre文件系统二
利用netdata+grafana进行CAE软件性能分析
© 2021 Yao L
YaoL Blog by Yao L
  • 所有文章
  • 推荐
  • 关于我

tag:

  • CAE
  • benchmark
  • OPENLDAP
  • Centos7.6
  • LSF
  • Linux
  • PAC
  • Arch
  • Config
  • Tools
  • 网络虚拟化
  • SLURM
  • Munge
  • vps
  • shadowsocks
  • iptables
  • nat
  • centos
  • FileSystem
  • kvm
  • network
  • bridge
  • lustre
  • mds
  • mgt
  • ost
  • netdata
  • influxdb
  • grafana
  • Abaqus
  • torque
  • maui
  • scheduler
  • xcat
  • Murderp2p
  • pxe
  • ESXI
  • IB
  • Virtual
  • PXE
  • DHCP
  • kickstart
  • infiniband
  • OPA
  • Cisco
  • CLI
  • perf
  • linux
  • Lustre
  • architecture
  • 2d torus
  • 3d torus
  • Fat-Tree
  • 全线速
  • 阻塞

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 英特尔产品大全
  • 华科开源镜像
  • 朱双印博客
  • 谷歌
  • Shadowsocks分享
硕士毕业于华中科技大学

目前主要从事高性能计算的工作

谢谢大家