Virtualization
Virtualization(가상화)을 정리 합니다.
가상화 인프라
- CPU 가상화
- VT (Virtualization Technology)를 지원하는 CPU
- Intel-VT, AMD-V
- Windows에서 CPU가 VT를 지원하는지 확인하는 방법
- Windows*용 인텔® 프로세서 식별 유틸리티 다운로드에서 프로그램을 다운로드 합니다.
- 프로그램 실행 후, 아래 붉은 칸으로 표시된 부분을 확인 합니다.
- Linux에서 CPU가 VT를 지원하는지 확인하는 방법
grep --color vmx /proc/cpuinfo grep --color svm /proc/cpuinfo egrep '(vmx|svm)' --color=always /proc/cpuinfo
- CPU가 VT를 지원하는데 활성화 되어 있지 않은 경우
- Windows를 새로 기동하면서 F2 키를 눌러 BIOS 설정 화면을 표시 합니다.
- SysInfo 탭에서
CPU VT (VT-X) Supported
- Advanced 탭에서
Intel vPro Configuration MEBx Entry Hot-Key [Disabled] CPU VT (VT-x) [Enabled] Intel VT-d [Enabled] Intel TxT [Disabled]
가상화 기술의 종류
가상화 기술의 종류
가상화 기술 | 상세 | |
서버 가상화 | Bare-metal Virtualization |
|
- Full Virtualization |
| |
- Para Virtualization (반 가상화) |
| |
Hosted Virtualization |
| |
데스크탑 가상화 |
| |
애플리케이션 가상화 |
| |
리소스 가상화 |
| |
|
Hypervisor별 가상화 방식
Hypervisor | 상세 |
KVM VMware |
|
Xen |
|
Linux Namespace
Linux에서 제공하는 lightweight 가상화 기술로 격리된 환경을 제공 합니다.
Namespace 분류
분류 | 상세 |
UTS | Hostname 분할 |
IPC | Process 분할 |
PID | PID (Process ID) 분할 |
NS | File system의 mount 지점 분할 |
NET | Network resource 분할 사례) Global namespace에 veth0를 zzns namespace에 veth1을 만들어 통신을 합니다. ip netns add zzns #--- zzns Namespace 생성 ip netns list zzna ip link add veth0 type veth peer name veth1 #--- veth0, veth1 Veth (Virtual Ethernet) 생성 ip link list ip link set veth1 netns zzns #--- veth1을 zzns namespace에 추가 ip netns exec zzns ip link list |
USER | User와 Group ID 분할 |
참고 문헌
- http://bluese05.tistory.com/11
- http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/NetworkNamespace
- Docker : LXC (LinuX Container)
Cgroups
Linux Resource의 독점을 방지
CPU, Memory, Block I/O, Network 등을 할당
Subsystem
blkio – control/limit IO from block devices
cpu - uses the kernels scheduler to control access to cpu resource
cpuacct – reporting of cpu usage
cpuset – assignment of cpu and memory nodes
- cpusets.cpus (mandatory)
- cpusets.mems (mandatory)
- others optional
devices – allow or deny device access
freezer – suspend or resume tasks
hugetlb – controls and reporting on hugepages
memory – limit and report on memory usage by tasks
net_cls – tags network packets with class id
net_prio – by network interface set priority of network traffic
ns – namespace subsystem
vi /etc/cgconfig.conf
vi /etc/cgrules.conf
vi /usr/lib/systemd/system/~.service
systemctl daemon-reload
systemctl restart ~.service
service cgconfig start
chkconfig cgconfig on
Sample
yum -y install libcgroup mkdir -p /service_group mount -t cgroup -o cpu,memory,nodev /service_group cd /service_group cgcreate -g cpu,memory /service_group/web #--- cgroup 생성 cgset -r cpuset.cpus='0,2,4,6,8,10,12,14' web #--- cgroup parameter 설정 cgset -r cpuset.mems = '0' httpd cgcreate -g cpu,memory /service_group/db cgset -r cpuset.cpus='1,3,5,7,9,11,13,15' db cgset -r cpuset.mems = '1' db lscgroup -g cpu:/docker #--- Group 조회 lssubsys ~ #--- Sussystem 조회 cgget ~ #--- cgroup parameter 조회 cgexec ~ #--- cgroup 정보를 가지고 process 시작 cgdelete cgclassify #--- process를 cgroup에 할당 systemd-cgls systemd-cgtop
참고 문헌
- http://www.slideshare.net/sprdd/linux-performan-tuning-part-1
- https://share.confex.com/share/125/webprogram/Handout/Session17308/Managing%20Resources%20with%20cgroups.pdf
VDI
VDI (Virtual Desktop Infrastructure)의 display protocol
- RDP, RDP 7/8 for windows
- NX : for linux
- SPICE for linux, windows
- VNC