添加cpu、内存怎么加?
添加硬件网卡怎么用命令?
存储池/热添加硬件
网络的3种模式、网络的图形、文本
bridge、NAT、host-only
NAT的话要在全局配置文件里面要声名转发模式为nat
NAT右到左是snat源NAT
NAT左到右是dnat目标NAT
镜像管理:
1.空的镜像
2.后端镜像产生的是差异镜像
3.批量创建虚拟机,没有用图形,没有用virt-install:步骤:准备一个后端镜像,生成一个差异镜像,照着模板修改全局配置文件,virshdumpxml 域 会打印配置文件,思想,重定向到一个文件就变成了配置文件,virsh define 域.xml 生效配置文件,virsh autostart 域 自动启动
virsh list--all
virshnet-list --all
virshpool-list
存储池的图形化和文本化:
存储池是用来存放镜像的
一、本地存储
Director-based目录 例如:/var/lib/libvirt/images下面
storage1第一个存储池,dir基于目录的,disk物理磁盘,gluster集群的文件系统,iscsi,logical逻辑卷LVM卷组,netfs是nfs里面,rbd分布式存储系统Ceph分布式块存储都支持,sheepdog绵羊狗
选dir的,前进-前进-目标路径可以放在/根下面,完成
/storage1不仅是一个普通的目录,是一个存储池,可以存放镜像
文本化:
cd/etc/libvirt/storage
ls
vimstorage1.xml看下刚才创建的存储池
第一行是图形化第一个页面可以选的东西type=’dir’
4、5、6行是能力、空间、配额大小,0是无限制
path是存储池的目录
mkdir/storage2
cpstorage1.xml storage2.xml
vim/storage2/storage2.xml
修改一下
virshpool-define storage2.xml
virshpool-start storage2
virshpool-autostart storage2
virshpool-list出来了,但是virt-manager里面的存储池界面看不到,因为要重启libvirtd才会看的到
存储池,名字叫disk_pool,选disk磁盘,完成,最好不要装在sda,怕将系统覆盖了
还可以装在别的别的分区
fdisk sda
n
p
3
+100M
ll /dev/sda*
partx -a/dev/sda更新分区表
partx -a/dev/sda
ll /dev/sda*
pool-destroystorage2
pool-startstorage2
销毁错了,重开storage2
virshpool-list
发现本来就没有disk_pool
好吧,那就重启libvirtd服务,再去看看存储池出来了没
这个就是
vimdisk_pool.xml
第一行是disk类型的存储池,相当于图形化里的第一个界面
<source>下面是存放的硬盘大位置/dev/sda再下面一行不用管
<target目标>下面的path是挂载到本例目录的哪个位置
vimnetfs.xml
<source>下面一行是远端nfs服务器的ip,下面是远程nsf共享的目录,format格式自动识别不用管
想再来一个就cp nfs_share.xmlnfs.xml
vim nfs.xml
第一行类型不用动,名字要和外面一样nfs,uuid要改
path目标挂载地址images/nfs
virshpool-define nfs.xml
存储资源冲突,定义失败
vim nfs.xml
修改path目标挂载目录改为abc
mkdir /images/nfs_test
vim nfs.cml
修改path目标挂载目录改为/images/nfs_test
改上面的名字为nfs_test
改了之后virsh pool-definenfs.xml发现还是冲突
不需要手动创建nfs_test这个目录,只需要在name那里写了nfs_test就能自动生成了
rm nfs_test
virshpool-define nfs.xml
rm -fnfs.xml
手动去图形界面添加
nfs_test netfs 前进,/kvm,有问题
暂停之前的nfs_share存储池
cpnfs_share.xml nfs.xml
vimnfs_test.xml
name为nfs_test,path为nfs_test
virshpool-define nfs.xml
暂停没有用,需要删掉之前的nfs_share存储池才能成功
virshpool-define nfs.xml
virshpool-start nfs_test
报错不存在挂载点
mkdirimages/nfs_test
再来virsh pool-startnfs_test
virsh pool-autostartnfs_test
pool-list
总结:
挂载点需要手动创建/var/lib/libvirt/images/nfs_test
使用edit直接编辑:
virshpool-edit default可以编辑存储池的配置文件,就不用进入到那个/etc/libvirt/storage目录了
virsh edit 域全局的配置文件
virshnet-edit 网络名配置网络配置文件
LAB存储池
KVM端
四种方法添加存储池:
1.kvm1 kvm2
nfs-server提供共享目录/kvm
kvm1、kvm2创建挂载点
推荐使用方法四:基于xml添加存储池
virshpool-define my-pool2.xml
virshpool--list --all
virshpool-start my-pool2
磁盘-性能选项-缓存模式(none,writethrough直写是不经过内存直接在磁盘里完成,writeback回写是磁盘上有很多io,读找磁盘,加载到内存中,进行修改,写入到磁盘,等不忙的时候磁盘自动写入内存以防断电数据丢失)
I/O是选择单线程还是多线程,如果I/O模式选择native,那么缓存模式必须是none,提高性能就threads,可以优化你的存储
添加cpu、内存怎么加?
图形化:点灯泡,加CPUs数量
文本化:
[cpu]
virsh --help|grep cpu
setvcpus 改变CPU数量
vcpucount 查看CPU数量
vcpuinfo 详细的域 vcpu 信息
virsh --help| grep cpu看到子命令setvcpus
virshsetvcpus --help看子命令的帮助
virshmaxvcpus --help一次性将cpu提升到最大数量帮助
virshsetvcpus 域 数量 报错,没有域,说明这个不能关机
virshsetvcpus 域 --maximum 2--config首先设置最大分配
virshsetvcpus 域 数量 --config 可以在关机的状态下修改报错最大分配给的是1,要去图形化里面增大最大分配,没有图形化怎么办??用--maximum这个是下一次引导的,必须使用--config,不能使用--live
virsh vcpucount域 查看cpu数量
virshdominfo pxe001查看cpu数量(比图形化查看的更敏感)
virshqemu-monitor-command 域 --hmp --cmdinfo balloon 这个命令是查看
virshqemu-monitor-command 域 --hmp--cmd balloon 这个命令是1024
virshqemu-monitor-command 域 --hmp --cmdinfo balloon查看
重启QEMU虚拟机
virshqemu-monitor-command 域 --hmp --cmdinfo balloon查看
[内存][mem]
virsh --help| grep mem
virshdommemstat 域 看出
virshsetmaxmem 域 --help查看帮助
virshsetmaxmem 域 1024(单位默认是kb),报错非得关机
virshsetmaxmem 域 1024加了--live也不行
virshsetmaxmem 域 1024--config离线,重启之后生效,开机也能配置
virsh setmem域 600M 改变内存的分配 这个需要开启的时候有用
离线也有用的话用这个(不管在线还是离线都可以):virsh setmem 域 600M --config
在线的话用--live
添加硬盘网卡怎么用命令?
硬盘:
图形化:
添加硬件-磁盘-管理
文本化:
virshdomblklist 域 查看指定域有多少个硬盘
qemu-imgcreate -f qcow2 /disk1.img 1G首先创建一个空磁盘在根下面叫做/disk1.img
virsh attach--help
硬盘网卡
virshattach-disk 域 --source/disk10.img(路径) --targetvdb(添加进去叫什么) --cachewriteback(图形化里面的写回)--subdriver qcow2
virshdomblklist 域 确认刚刚添加的硬盘
这个是什么virsh attach-diskrhel6-pm-1 --source /disk30.img --target vdc --cache writeback --subdriverqcow2 --persistent(永久) 这个subdriver是指定格式 不指定格式大小不一样
比上面的代码更简单:
qemu-imgcreate -f qcow2 /disk20.img 1G
vim temp.xml
<disktype='file' device='disk'>
<driver name='qemu' type='qcow2'cache='writeback'/>
<source file='/disk20.img'/>
<target dev='vdc' bus='virtio'/>
</disk>
这个是什么virsh attach-devicerhel6-am-3 temp.xml --config 需要关闭系统 可以更换为persistent 修改内存空间和磁盘配置文件
virshdomblklist rhel6-am-3查看同样能生效
--config离线在线都可以,写进配置文件,关机再开机才能看到效果
--alive 在线,临时生效,重启之后失效
--config live=presistent
删除磁盘:
virshdetach-disk 域 vdb 删谁的,哪个磁盘 在线临时删除 追加persistent立即永久有效
查看
virshdomblklist 域 查看在线配置
virshdetach-disk 域 vdb 分离
virshdomblklist 域 查看
virshattach-disk 域 vdb报错需要目标target选项
virshattach-disk 域 --target vdb 报错需要源source
virshattach-disk 域 --source /disk1.img这个源是什么?自己随便起的?还是已经存在的? --target vdb
网卡:
图形化:
添加硬件-网络-NAT
文本化:
virshdomiflist 域 这个域有多少网卡接口,就是有几个网络 dominterface list域接口列表
virshattach-interface 域 --typenetwork --source my-nat或default--model virtio(模式是半虚拟化)--config 添加NAT的网卡
virshdomiflist 域 发现没有生效,下一个生效,需要重启一下QEMU的虚拟机,重启没有用,要关机,再开
kvm学完啦!
SSL安全的套接字层
防火墙:主要用于流量控制
硬件防火墙:华为
[F5]
恶意的流量拒之门外,就像凡哥F5刷我那个监控主页
centos 6叫iptables默认装上了
centos 7叫firewalld
iptables:4表5链(表都是小写,链都是大写)
4表:raw、mangle、nat、filter人买奶粉
5链:INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING输入输出风飘飘
raw:数据包的跟踪/若表,假如....
mangle:对流量打标记,以后可以批量操作/标记表
nat:网络地址转换/翻译表
filter:过滤表
禁止小明上内网不能在raw表里操作,raw表只是跟踪的,体现了每个表的不同功能。
5链是干嘛的:匹配数据包的流向
写了策略还是没用,说明写的策略有问题!
netfilter是什么:网络过滤
netfilter和iptables有什么关系:netfilter是iptables的底层内核,需要先改内核的模块才能使用iptables。
首先入网需要有一个运营商isp,互联网都有两个路由器,每个公司通过路由器来和运营商isp通信的,路由器上不能一次接上千的,路由器上有一个广域网的接口,WAN口,万维网路由器连接交换机,交换机连接电脑,电脑有客户机和服务器,假设客户机是pc1:192.168.1.10,假设服务器是server:192.168.1.100,公司内网有网关(路由网站上可以修改),假设路由器上网关是eth0:192.168.1.254,假设路由器的另一个网卡出口是eth1:1.1.1.1/30;对方与本方是一样的结构,只是ip有些不同,对方eth1:1.1.1.2/30,eth0:172.16.0.254/16,pc2:172.16.0.10,server:172.16.0.100;
假设我是小明是A公司的管理员,小强是B公司的管理员,公司上网都要经过网关的关卡,小强公司的防火墙访问小明公司的防火墙
匹配目标流量是防火墙的是INPUT链(终点)
以防火墙为源地址发起的流量是OUTPUT链(起点)
匹配穿越防火墙的流量是FORWARD链(过路人)
路由之前的流量是PREROUTING链(目标地址翻译DNAT)
路由之后的流量是POSTROUTING链(源地址翻译SNAT)
小强访问小明的网关是INPUT吗?是啊
小明的客户机访问小明的网关是INPUT吗?是啊,因为对象都是网关,对象就都是防火墙,所以都是INPUT。
小强的客户机访问小明的网关是INPUT吗?是啊
那么小明的网关去访问小强的网关是INPUT吗?不是啊,因为我是小明,我要去访问别人,我就是起点,所以属于是OUTPUT。
小明的客户机访问小强的网关是OUTPUT吗?不是啊,因为我是小明,它经过了我的网关路由器,就是过路人,所以属于FORWARD。
小明的服务器访问小强的客户机是FORWARD。
小技巧:OUTPUT是输出嘛,INPUT是输入嘛
流量的转发是输入输出一起的,穿越,是FORWARD。
拉一个/申请固定ip,买电脑,解决上网的问题:
内网上外网属于源地址翻译还是目标地址翻译?是源地址翻译!要翻译自己的源地址为公网才能上网!
外网上内网是目标地址翻译!
源地址翻译是SNAT
目标地址翻译是DNAT:对外发布服务网站的时候,就是外网访问内网
小明的客户机访问小强的网关属于SNAT
sip:192.168.1.10 dip:1.1.1.2
sip:1.1.1.1 dip:1.1.1.2源地址翻译成了1.1.1.1
小强的路由去访问小明的服务器属于DNAT
sip:1.1.1.2 首先要经过小明网关dip:1.1.1.1 dip:192.168.1.100
sip:1.1.1.2 dip:192.168.1.100
sip:192.168.1.254 dip:192.168.1.100
什么时候要用到DNS?
答:内网发布网站到外网必须要DNS才能给别人访问
POSTROUTING有个S英文字母,所以是SNAT;那么PREROUTING就是DNAT了
规则:表名小写,链大写,条件小写,动作的辅助词小写,动作大写
iptables -tnat(4个表) -A/-I/-D(添加策略) INPUT(5个链) -s条件 192.168.1.100 -j DROP 。 nat表是查看的
iptables -tfilter(4个表) -A/-I/-D(添加策略) INPUT(5个链) -s条件 192.168.1.100 -j DROP 。 filter表是过滤的,干掉、控制的
干掉小明的服务器访问
yum list|grep iptables
rpm -qa |grep iptables
iptables是不是防火墙?不是!iptables只是管理防火墙的工具
systemctlstart iptables开启防火墙
第一次用就:
iptables -F清空所有策略;
iptables -X删除自定义的链;
iptables -Z清除计时器、记录
防火墙的脚本、一键防火墙部署
iptables -L列出所有规则,默认是列出过滤表filter表的所有规则
iptables -tnat -L 哈哈,nat是常见的看POSTROUTING和PREROUTING
很慢,加个-n,不解析主机名,加个-x,禁止单位换算,加个-v,详细信息(包,大小)。
加入插入了1000条规则,你看中了第53条规则,你要查询的时候有个编号,
policyACCEPT是链里面没有规则的话就默认放行,先堵后放行
从上往下依次执行,死了一次就死了,放行了就放行了就打不中了
ACCEPT(INPUT)
DROP all -- 192.168.1.100 0.0.0.0/0
ACCEPT all-- 192.168.1.0/24 0.0.0.0/0
DROP all -- 192.168.1.101 0.0.0.0/0
DROP all -- 192.168.1.102 0.0.0.0/0
注意:只要匹配到了就不再管那个ip的人了,依旧会继续往下面的规则匹配下去