가상화 기술
- 가상화 기술 상을 통해 컴퓨터는 여러 논리 컴퓨터로 가상화되고 여러 논리 컴퓨터가 동시에 한 컴퓨터에서 실행됩니다. 각 논리 컴퓨터는 서로 다른 운영 체제를 실행할 수 있으며 응용 프로그램은 독립적 인 공간에서 실행할 수 있습니다. 서로 영향을 미치므로 컴퓨터의 효율성이 향상됩니다.
풍모:
1. 운영 체제 (win10)에서 여러 운영 체제 (centos, win10)를 시뮬레이션하고 여러 운영 체제 (centos, w10, suse)를 시뮬레이션합니다. 동시에 각 운영 체제는 서로 다른 서비스를 실행하여 호스트를 구축 할 수 있습니다. 클러스터 (전체에서)
2. 소프트웨어 / 애플리케이션을 통해 물리적 하드웨어의 기능 구현
(소프트웨어 리소스는 하드웨어 리소스만큼 높지 않습니다 (안정적이고 효율적))
가상화 기술 개발
- 원기
1961 년 IBM 7O9 시스템은 CPU 점유를 여러 개의 매우 짧은 시간 조각 (1/100 초)으로 위장한 시간 공유 시스템을 구현했습니다. 각 시간 조각은 서로 다른 작업을 수행했습니다. 이러한 시간 조각을 폴링하여 하나의 CPU가 다중 CPu로 위장했습니다.
1972 년 IBM은 공식적으로 system370 시스템의 시분할 시스템을 가상 시스템으로 명명했습니다.
1990 년에 IBM에서 도입 한 system390 시스템은 논리적 파티셔닝을 지원합니다 (CPU는 서로 독립적 인 여러 복사본으로 분할, 즉 논리적 부서)
Xen은 2003 년에 호스트를 제어하고 여러 클라이언트에 리소스를 할당 할 수있는 외부 하이퍼 바이저 프로그램 (가상 머신 관리 프로그램)으로
출시되었습니다 . KVM : 2007 년에 출시되었으며 현재 커널 커널에 내장되었습니다.
Xen은 가상화 기술을 지원합니다. 전체 가상화, 반 가상화
KVM : 지원되는 가상화 기술 : 전체 가상화
가상화 유형
1. 전체 가상화 : 모든 물리적 하드웨어 리소스는 소프트웨어를 통해 추상화되고 마지막으로
** 사용 방법 : 하이퍼 바이저 (VMM) 소프트웨어 사용, 원칙은 기본 하드웨어와 서버 사이에 추상화 계층을 설정하고 코어 기반 가상 머신은 Linux 시스템 용 오픈 소스 제품 하이퍼 바이저 (VMM)로 CPU 명령을 캡처하고 하드웨어 컨트롤러 및 주변 장치에 액세스하기위한 명령의 중개자 역할을 할 수 있습니다.
2. 반 가상화 : 운영 체제 수정 필요
3. 패스 스루 : 물리적 하드웨어 리소스를 직접 사용 (지원 필요, 아직 완벽하지는 않음)
- 특징 : 장점
① 중앙 집중식 관리 (원격 관리, 유지 관리)
② 하드웨어 활용도 향상 (피크, 가상화 등 물리적 리소스의 낮은 사용률로 "유휴"용량 해결)
③ 기계 / 리소스 구성의 동적 조정 (가상화는 애플리케이션을 변경하고 서비스 하드웨어를 분리하고 유연성을 향상)
④ 높은 신뢰성 (추가 기능 및 솔루션 배치 가능, 투명한로드 밸런싱, 마이그레이션, 복구 복제 등 애플리케이션 환경 개선 가능) '
- 불리
① 높은 초기 단계 비용 (초기 하드웨어 지원)
② 하드웨어 사용률 감소 ((매우 리소스 집약적 인 애플리케이션과 같은 특정 시나리오는 가상화에 적합하지 않을 수 있음)
③ 더 큰 오류 영향 (로컬 물리적 머신 다운 기회로 인해 가상 머신을 사용할 수 없게 됨) 가상 머신의 파일) 손상 될 수 있습니다
④The 구현 구성이 복잡하고 관리가 어려움) 문제 해결, 관리 인력 운영 및 유지 보수 (복잡
⑤ 특정 제한 (가상화 기술이 지원 / 호환 가상화와 호환되어야합니다 여러 가지 제한 사항을 포함한다
( 결합 서버, 애플리케이션 및 공급 업체 사용) ⑥ 보안 (가상화 기술 자체의 보안 위험)
- 가상화 전
① 각 호스트에 운영 체제가 있습니다.
② 소프트웨어와 하드웨어가 밀접하게 통합되어 있습니다.
③ 동일한 호스트에서 여러 응용 프로그램을 실행하면 일반적으로 충돌이 발생합니다.
④ 시스템 리소스 사용률이 낮습니다 (예 : 5 %).
⑤ 하드웨어 비용이 높고 유연하지 않습니다.
- 가상화 후
① 운영체제와 하드웨어의 상호 의존성 해소 ②
가상 머신을 캡슐화하는 기술을 통해 운영체제 와 응용 프로그램을 하나의 개인으로 관리
③ 강력한 보안 및 장애 격리
④ 가상 머신은 하드웨어와 무관하며 어떠한 하드웨어에서도 실행 가능
- 비교 :
운영 체제 (가상화 전) :
LAMP 아키텍처 (호스트에 의해 구현 됨)
LINUX + Apache + MySQL + PHP,
여기서 Apache 및 MySQL 리소스가 공유됩니다.
아키텍처가 서비스간에 높은 보안 격리를 요구하는 경우 Apache 페이지 MySQL 데이터베이스와 MySQL 데이터베이스는 서로 만날 수 없어야합니다. Apache 취약점이 노출되면 공격자는 Apache 프로세스를 통해 MySQL 데이터 디렉토리에 액세스하여 MySQL에서 데이터를 얻을 수 있습니다. 이는 심각한 보안 위험이며 해결하고자합니다. 커널 수준 격리 (가상화 기술 사용)를 통해 잠재적 인 위험을 달성 할 수 있습니다.
- 소프트웨어와 하드웨어의 결합
하드웨어와 운영 체제가 호환되지 않거나 지원하지 않기 때문에 일부 소프트웨어 및 하드웨어 기능을 사용할 수 없으며 (가장 어려운 문제) 일반적인
가상화 사용은 소프트웨어와 하드웨어간에 가상화를 통해 분리 (배포)하도록 유도합니다. 층은
한 가상화 계층은 소프트웨어 / 하드웨어 응용 프로그램을 식별 할 수 있으며, 소프트웨어 및 하드웨어를 결합 할 수 있습니다로
. 동일한 호스트에 여러 응용 프로그램을 실행 일반적으로 충돌이 발생합니다.
아파치와 Nginx에이 같은 위치 (포트 80)를 가지고 있고
단지로 구분 될 수있다 역방향 프록시. 동시에 같은 컴퓨터에서이 방법을 사용하면 Apache와 Nginx의 중요한 데이터 파일이 동시에 유출되면 ... 가상화는 서비스를 격리시킬 수 있습니다.
KVM 소개 :
- KVM-커널 기반 가상 머신
KVM은 가상화 된 확장 X86 하드웨어 (Intel-VT-x 또는 AMD-V를 지원하려면 CPU가 필요함)를 기반으로하는 오픈 소스 Linux 기본 전체 가상화 솔루션입니다. KVM은 커널 모듈에 내장되어 가상 머신 작동을 지원하는 프로세서 및 메모리를 시뮬레이션합니다
. 가상 머신은 표준 Linux 스케줄러에 의해 예약 된
일반 Linux 프로세스로 구현됩니다. 가상 머신의 각 가상 CPU는 일반 Linux 프로세스로 구현됩니다. 이를 통해 KMV는 Linux 커널의 기존 기능을 사용할 수
있지만 KVM 자체는 시뮬레이션을 수행하지 않습니다. 클라이언트 공간 프로그램 (가상 머신)은 / dev / kym (이 가상 장치는 하드웨어 지원 가상화를 켜야 함) 인터페이스를 통해 클라이언트 가상 서버의 주소 공간을 설정하는 데 필요하며 Qemu 시뮬레이션 I에서 수행합니다. / O (ioctl) 리소스 예약 및 유지 관리
Libvirt : KVM 관리 도구는 KVM과 같은 VMM을 관리하는 것 외에도 Xen, VirtualBox를 관리 할 수 있으며 기본 OpenStack Libvirt에는 백그라운드 데몬 프로그램 libvirtd, API 라이브러리 , 명령 줄 도구 virsh
- KVM 아키텍처 및 원리
1. 게스트 모드 (guestOS) : VM의 OS는 GuestOs
클라이언트가 운영 체제에서 실행 되는 모드입니다 . 게스트는 커널 모드와 사용자 모드로 구분됩니다. 기능은 다음과 같습니다. 2. 사용자 모드 :
사용자에게 가상 머신 관리를 제공합니다. 사용자를 대신하여 공간 도구 및 I / O를 수행합니다. Qemu는이 모드 (Qemu의 주요 기능)에서 작동합니다. 3. Linux 커널 모드는
CPU 및 메모리를 시뮬레이션하고 클라이언트 모드 전환을 실현하며 처리합니다. 클라이언트 모드가 시작되고 KVM이이 모드에서 실행됩니다.
kvm 프로젝트
[root@glt7 ~]# cd /etc/yum.repos.d/
[root@glt7 yum.repos.d]# mkdir bak
[root@glt7 yum.repos.d]# mv * bak
mv: 无法将目录"bak" 移动至自身的子目录"bak/bak" 下
[root@glt7 yum.repos.d]# ll
总用量 0
drwxr-xr-x. 3 root root 38 1月 12 08:45 bak
[root@glt7 yum.repos.d]# vim abc.repo
[abc]
name=test
baseurl=file:///mnt
enabled=1
gpgcheck=0
~
~
[root@glt7 yum.repos.d]# yum clean all
[root@glt7 yum.repos.d]# mount /dev/sr0 /mnt
[root@glt7 yum.repos.d]# yum makecache
- 방화벽 끄기
[root@glt7 yum.repos.d]# systemctl stop firewalld
[root@glt7 yum.repos.d]# setenforce 0
[root@glt7 yum.repos.d]# systemctl disable firewalld
[root@glt7 yum.repos.d]# vim /etc/selinux/config
SELINUX=disabled
[root@glt7 yum.repos.d]# init 6
yum 패키지 설치
# yum groupinstall -y "GNOME Desktop" '//安装 GNOME 桌面环境 如果装了图形界面不需要装了'
# yum -y install qemu-kvm '//安装KVM 模块'
# yum -y install qemu-kvm-tools '// KVM 调试工具,可不安装'
# yum -y install virt-install '//构建虚拟机的命令行工具'
# yum -y install qemu-img '//qemu 组件,创建磁盘、 启动虚拟机等'
# yum -y install bridge-utils '//网络支持工具'
# yum -y install libvirt '//虚拟机管理工具'
#yum -y install virt-manager '//图形界面管理虚拟机'
# reboot '//重启'
[root@glt7 ~]# ln -sf /lib/systemd/system/graphical.target /etc/systemd/system/default.target#将 系 统 的 默 认 运 行 target 更 改 为graphical.targe。 重启后系统将进入图形化界面。
[root@glt7 ~]# lsmod | grep kvm '//查看KVM模块是否安装'
kvm_intel 170086 0
kvm 566340 1 kvm_intel
irqbypass 13503 1 kvm
[root@glt7 ~]# cat /proc/cpuinfo | grep vmx # 查看CPU是否支持虚拟化 将会出现包含一串字母 带其中有红色的vmx
[root@glt7 ~]# systemctl start libvirtd #开启libvirtd服务
[root@glt7 ~]# systemctl enable libvirtd #开机启动libvirtd服务
네트워크 카드 수정
[root@glt7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
#IPADDR=20.0.0.16
#NETMASK=255.255.255.0
#GATEWAY=20.0.0.2
#DNS=20.0.0.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=ee1c9b8b-e532-43a6-afb5-fee05d5dea35
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 '//注释掉原本的IP地址,添加此处'
新建桥接网卡
[root@glt7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
OTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=20.0.0.16
NETMASK=255.255.255.0
GATEWAY=20.0.0.2
[root@glt7 ~]# systemctl restart network
[root@glt7 ~]# mkdir -p /data_kvm/iso
[root@glt7 ~]# mkdir -p /data_kvm/stor
[root@glt7 ~]# cd /data_kvm/iso/
[root @ glt7 iso] # virt-manager