기본 콘텐츠로 건너뛰기

Am I VM?(imvirt)

Cloud를 운영하다보면 VM에서 특정 애플리케이션을 실행할 때 실행되는 호스트가 VM인지 아닌지에 따라 다른 루틴을 작성해야 한다. 이때 간단히 사용할 수 있는 툴이 perl 스크립트로 작성된 imvirt이다. 이름을 보면 이 글의 제목이 왜 Am I VM인지 알 수 있을 것이다. imvirt는 옵션 지정 없이 사용 가능하며 dmidecode를 통해 가상화 기술을 검출한다. 0.9.6이상의 버전에서 검출되는 가상화 기술은 다음과 같다.

계열검출된 컨테이너
Physical일반적인 서버이거나 검출된 컨테이너가 없는 경우
Virtual검출되지 않은 컨테이너에서 실행되고 있는 가상 머신
HVM: <signature>알려지지 않은 하이퍼바이저의 시그니처
VirtualBox버추얼박스
Microsoft식별할 수 없는 마이크로소프트 기반 가상화
Microsoft Hyper-V마이크로소프트 Hyper-V/Virtual Server
Microsoft VirtualPC마이크로소프트 Virtual PC
VMwareVMware Virtual Platform
VMware (Express|ESX Server | GSX Server|Workstation)VMware Virtual Platform
OpenVZOpenVZ/Virtuosso
QEMUQEMU/KVM 
UML사용자 모드 리눅스
XenXen hypervisor
Xen (PV|HVM)Xen hypervisor
lguestLguest (x86 하이퍼바이저)
ARAnyMAtari Running on Any Machine
LXCLinux Containers
ParallelsParallels Workstation

imvirt는 기본 설치 프로그래임이 아니기 때문에 별도로 설치해주어야한다.
설치방법은 ubuntu인 경우 다음과 같이 명령어를 실행하면 된다.

sudo apt-get install imvirt

설치가 되었다면 단순히 imvirt를 입력하면 실행가능하다. 필자가  Macbook pro에서 Virtualbox로 우분투 머신을 띄워 테스트한 결과는 다음과 같다.
imvirt

[결과]
Uknown

원인 분석은 나중에 하기로 하고 imvirt와 비슷한 기능을하는 virt-what의 결과는 정상적으로 virtualbox / kvm으로 나오는거봐서는 virt-what이 좀더 신뢰가 간다. ^^

댓글

이 블로그의 인기 게시물

virsh 설치 및 VM 상태 조회

VM을 모니터링하기 위해서는 다양한 방법을 사용할 수 있지만 간편한 방법중 하나는 virsh를 통해 VM을 모니터링하는 것이다. vrish를 사용하기 위해서 관련 패키지를 설치해야하며 설치 방법은 다음과 같다. Redhat 계열 yum install qemu libvirt-client virt-manager \ virt-viewer guestfish libguestfs-tools virt-top Ubuntu sudo apt-get install ubuntu-virt virt-top virt-what virsh가 정상적으로 설치되었다면 virsh를 통해 가상 머신의 상태를 확인해 볼 수 있다. virsh를 사용하기 위해서는 root 권한을 가지거나 관련 권한을 설정해주어야 한다. 권한 설정에 대해서는 다음 posting에서 다룰 것이다. virsh의 기본적인 사용방법은 다음과 같다. virsh [option] ... <command> <domain> [arg] ... 지정 가능한 옵션은 다음과 같다. h, --help 도움말 출력 -v, --version[=short] 버전 정보 출력 -V, --version=long 컴파일된 드라이버와 옵션들을 포함한 버전 정보 출력 -c, --connect URI 지정된 URI에 연결 -d, --debug LEVEL 디버그 (레벨은 0~4까지 지정 가능) -l, --log FILE FILE로 로그 저장 . -q, --quiet 종료(?) -r, --readonly 읽기 전용으로 실행 -t, --timing 각 명령어에 대한 실행 시간 출력 -e, --escape string 콘솔 명령어에 대한 탈출 문자 지정. 기본으로 텔넷과 동일한 ^]로 지정됨 virsh 명령어들에서 대해서는 다음 posting에서 살펴보기로 하고 간단한 사용 예들은 다음과 같다. 로...

Mac에서 Wireshark 설치

맥 (OS X El Capitan)에서 Wireshark를 사용하고 싶다면 CLI를 통한 간단한 방법은 brew를 통해 설치하는 것이다. 단순히 다음과 같은 명령을 실행해 주면 된다. brew install wireshark  --with-qt --with-qt는  GUI 모드를 포함하여 설치하는 것으로 GUI 모드를 원치않는다면 해당 옵션을 삭제하면 된다. 정상적으로 설치가 완료되면 CLI를 통해 tshark 명령을 실행할 수 있다. --with-qt 옵션을 주지 않았다면 thsark만을 실행할 수 있을 것이다. tshark -i eth0 [thsark 실행화면] GUI로 실행하고 싶다면 프롬프트에서 다음과 같이 실행하면 된다. wireshark-qt [wireshark-qt 실행화면] GUI를 통해 패킷을 수집하고자 한다면 Capture 버튼 옆에 인터페이스를 선택한 후 Capture 버튼을 선택하고 상단의 왼쪽에 있는 Start capturing packets라고 툴팁이 나오는 버튼을 클릭하면 패킷 수집이 시작된다. 수집 옵션을 설정하고자 한다면 Capture Filter에 옵션을 설정하면 된다. [wireshark-qt 패킷 수집화면]

서버설정시 물리적인 포트 찾기 (ethtool 활용 팁)

네트워크 인터페이스가 10여개 이상인 서버에서 작업을 하다보면 많은 삽질이 인터페이스 찾는데서 발생한다. 모니터를 통해 서버 네트워크 인터페이스를 설정한 후 랙 뒤로 가게되면 10여개나 되는 인터페이스 중 어떤 인터페이스에 설정 했는지 알 수 없어 초보자들이 하는 삽질은 1번 인터페이스 부터 네트워크케이블을 연결한 후 다시 랙 앞으로가 명령어를 통해 해당 인터페이스가 연결 되었는지 확인 하는 것이다. for ( i=0; i<N; i++ )    if(i = 0) 네트워크 설정;    i port에 네트워크 케이블 연결    네트워크 연결 상태 검사    if (설정된 NIC가 살았는가? == alive)       작업 종료 최대 N번까지 실행되는 이 삽질은 서버가 하나라면 운동삼아 하겠지만 많은 서버를 설정해야 하는 경우 여간 귀찮은 작업이 아닐 수 없다. 이러한 삽질은 ethtool을 사용하면 줄일 수 있다. 방법은 간단하다.   네트워크 인터페이스 설정   ethtool -p eth0 time   time 미 설정시 무한 반복됨   랙뒤로 가서 반짝거리는 포트에 네트워크 케이블 연결 ethtool을 지원하지 않는 하드웨어가 있을 수 있지만 대부분 사용하는데 문제는 없을 것으로 본다.