传统数据中心面临的问题: 资源使用率低 资源分配不均 自动化能力差 云计算: 云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。 Image(14) Image(15) tomcat提供几个端口? 全虚拟化:直接使用底层的硬件 比如:KVM 半虚拟化:通过一个中间件,来调用底层的硬件 比如:xen 硬件虚拟化: 软件虚拟化: 应用虚拟化: 一个机器跑八个tomcat和跑八个虚拟机跑八个tomcat kvm是一个内核模块 qemu是将网络IO和硬盘IO的虚拟化 安装软件 [root@oldboy-node1 ~]# yum -y install qemu-kvm qemu-kvm-tools virt-manager libvirt virt-install 检查是否支持虚拟化 [root@oldboy-node1 ~]# grep -E "(vmx|svm)" /proc/cpuinfo vmx:inter svm:amd [root@oldboy-node1 ~]# lsmod | grep kvm kvm_intel 148081 0 kvm 461126 1 kvm_intel 创建硬盘 [root@oldboy-node1 ~]# qemu-img create -f raw /opt/CentOS-7.1-x86_64.raw 10G Formatting '/opt/CentOS-7.1-x86_64.raw', fmt=raw size=10737418240 启动libvirtd服务 [root@oldboy-node1 ~]# systemctl enable libvirtd.service [root@oldboy-node1 ~]# systemctl start libvirtd.service [root@oldboy-node1 ~]# systemctl status libvirtd.service 磁盘拷贝 [root@oldboy-node1 ~]# dd if=/dev/cdrom of=/opt/CentOS-7.1.iso 建立虚拟机 [root@oldboy-node1 ~]#virt-install --name CentOS-7.1-x86_64 --virt-type kvm --ram 1024 --cdrom=/opt/CentOS-7.1.iso --disk path=/opt/CentOS-7.1-x86_64.raw --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 修改网卡的名称(使用tab键) net.ifnames=0 biosdevname=0 基本的操作 关闭虚拟机 virsh shudown CentOS-7.1-x86_64(主机名) virsh destroy CentOS-7.1-x86_64(主机名) 打开虚拟机 virsh start CentOS-7.1-x86_64 删除虚拟机 virsh undefine CentOS-7.1-x86_64 查看虚拟机(全部) virsh list --all 编辑虚拟机 virsh edit CentOS-7.1-x86_64 挂起 virsh suspended CentOS-7.1-x86_64 恢复 virsh resume CentOS-7.1-x86_64 查看正在运行的虚拟机: ps -aux |grep kvm kvm虚拟机就是一个KVM进程。 cd /etc/libvirt/qemu CPU热添加 virsh edit 主机名 这里设置的最大是4个 <vcpu placement='auto' current="1">4</vcpu> virsh shutdown 主机名 virsh start 主机名 热添加,添加两个cpu virsh setvcpus 主机名 2 --live 网络配置 只需要将虚拟机的网卡启动就可以,他的KVM机器会启动一个dhcp服务器。 [root@linux-node1 network-scripts]# ps aux|grep dns nobody 2248 0.0 0.0 15524 880 ? S 14:07 0:00 /sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --dhcp-script=/usr/libexec/libvirt_leaseshelper 存在这里面 cat /var/lib/libvirt/dnsmasq/default.conf strict-order pid-file=/var/run/libvirt/network/default.pid except-interface=lo bind-dynamic interface=virbr0 dhcp-range=192.168.122.2,192.168.122.254 dhcp-no-override dhcp-leasefile=/var/lib/libvirt/dnsmasq/default.leases dhcp-lease-max=253 dhcp-hostsfile=/var/lib/libvirt/dnsmasq/default.hostsfile addn-hosts=/var/lib/libvirt/dnsmasq/default.addnhosts 按装 ifconfig工具 yum -y install net-tools CPU热添加(只能是CentOS7) 要实现CPU热添加,就必须首先设置CPU的总数,且热添加的总数不能超过CPU的综合数。 方式一:修改xml文件 [root@linux-node1 network-scripts]# virsh edit CentOS-7.1-1-x86_64 原:<vcpu placement='static'>1</vcpu> 现:<vcpu placement='auto' current='1'>4</vcpu> VCPU匹配方式是自动,当前是1,最大是4 需要重启才能实现 在虚拟机中查看 cat /proc/cpuinfo |grep "processor"|wc -l 1 在kvm中设置cpu virsh setvcpus CentOS-7.1-x86_64 2 --live Image(16) Image(17) 如果没有的话,需要把上面的O置为1 virsh setvcpus CentOS-7.1-x86_64 3 --live 热添加只能加,不能减。(开机状态) 方式二:在安装的时候 [root@linux-node1 network-scripts]# virt-install --help |grep cpu --vcpus VCPUS Number of vcpus to configure for your guest. Ex: --vcpus 5 --vcpus 5,maxcpus=10,cpuset=1-4,6,8 --vcpus sockets=2,cores=4,threads=2, 内存热膨胀和压缩,总数不能超过最大内存 [root@linux-node1 network-scripts]# virsh edit CentOS-7.1-1-x86_64 最大内存<memory unit='KiB'>4048576</memory> 当前内存<currentMemory unit='KiB'>1048576</currentMemory> 查看 virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd info balloon 设置 virsh qemu-monitor-command CentOS-7.1-x86_64 --hmp --cmd balloon 600 #硬盘: 全镜像模式 稀疏模式 raw qcow2 qemu-img [root@oldboy opt]# brctl addbr br0 [root@oldboy opt]# brctl show [root@oldboy ~]# brctl addif br0 eth0 && ip addr del dev eth0 10.0.0.111/24 && ifconfig br0 10.0.0.111/24 up && route add default gw 10.0.0.2 && iptables -F Image(18) Image(19) http://www.unixhot.com/article/4 [root@linux-node1 ~]# brctl addbr br0 [root@linux-node1 ~]# brctl show bridge name bridge id STP enabled interfaces br0 8000.000000000000 no virbr0 8000.525400035327 yes virbr0-nic [root@linux-node1 ~]# brctl addif br0 eth0 [root@linux-node1 ~]# ip addr del dev 10.0.0.100/24 [root@linux-node1 ~]# ifconfig br0 10.0.0.100/24 up 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 查看selinux getsebool 全虚拟化 半虚拟化 原本实现方式: 虚拟机的虚拟内存===>虚拟机的物理内存 宿主机的虚拟内存===>宿主机的物理内存 现在实现方式:EPT(inter) 虚拟机的虚拟内存=====EPT=====宿主机的物理内存 内存的优化 内存寻址:EPT 内存合并:KSM 大页内存: khugepaged 把连续的4K内存合并成为2M 内存的合并 [root@linux-node1 ~]# ps aux |grep ksmd root 280 0.0 0.0 0 0 ? SN 20:37 0:00 [ksmd] 大页内存 [root@linux-node1 ~]# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never [root@linux-node1 ~]# ps aux |grep khugepaged root 281 0.0 0.0 0 0 ? SN 20:37 0:02 [khugepaged] I/O优化: Virtio 半虚拟化 I/O调度算法: CentOS7上默认有三种:noop deadline cfq [root@linux-node1 ~]# dmesg |grep scheduler [ 1.385817] io scheduler noop registered [ 1.385820] io scheduler deadline registered (default) [ 1.385851] io scheduler cfq registered 默认是deadline [root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler noop [deadline] cfq 修改成cfg [root@linux-node1 ~]# echo cfq > /sys/block/sda/queue/scheduler [root@linux-node1 ~]# cat /sys/block/sda/queue/scheduler noop deadline [cfq] 永久的修改:改内核参数 [root@linux-node1 ~]# elevator=noop SSD的话,一定要改成noop,那样性能是最好的。 (责任编辑:IT) |