PengX3 Cli Tool

uxeus를 통하지 않고, uxen cli tool을 이용하여 관리할 수도 있습니다. 내부적으로 uxenapi를 사용하기때문에 uxen db에도 함께 적용이 됩니다.

사용방법

uxen node에서 root user로 uxencli를 실행할 수 있습니다.

help 사용

command나 해당 command의 인자값들이 많아 다소 복잡할 수 있습니다. help 옵션으로 필요한 정보를 얻을수 있습니다.

uxenci --help 명령이나 인자값없이 uxencli명령으로 command의 기능을 파악할 수 있습니다.

# uxencli
Usage: uxencli [OPTIONS] COMMAND [ARGS]...

  UXEN Cli Tool for UXEN-API 3

Options:
  -h, --host TEXT                Set a host to request  [default: localhost]
  -p, --port INTEGER             Set a port to request  [default: 80]
  -o, --output [json|xml|table]  Set a outut type  [default: table]
  -v, --verbose                  Set a verbose mode
  --version                      Show the version and exit.
  --help                         Show this message and exit.

Commands:
  backup-add          Backup VM images
  backup-del          Delete a backup of VM
  backup-disk-list    List disks about backup
  backup-list         Backup list information about VM
  backup-restore      Restore the VM from the backup
  gvm-add             Create a GVM(template) from pre-built image
  gvm-copyfromvm      Create a GVM(template) from the VM
  gvm-del             Delete a GVM(template)
  gvm-disk-list       List disks about GVM
  gvm-list            List information about all GVM(template)
  gvm-update          Update a GVM info
  pm-info             Get information about a PM
  pm-list             Get all PM info
  pm-stat             Get the performance data of PM
  snapshot-add        Create a snapshot of VM
  snapshot-del        Delete a snapshot of VM
  snapshot-disk-list  List disks about snapshot
  snapshot-list       Snapshot list information about VM
  snapshot-restore    Restore VM to the time of the snapshot
  storlink-add        Create a storlink
  storlink-del        Delete a storlink
  storlink-list       Get all storlink
  storlink-update     Update a storlink
  vm-add              Create a VM
  vm-copy             Copy VM
  vm-del              Delete a VM
  vm-disk-add         Create a VM disk
  vm-disk-del         Delete a VM disk
  vm-disk-list        List disks about VM
  vm-info             Get information about a VM
  vm-list             List information about all VM
  vm-migrate          Migrate the VM to another PM
  vm-poweroff         Shutdown a vm (force-shutdown)
  vm-reboot           Reboot a VM
  vm-resume           Resume the VM (Unpause)
  vm-shutdown         Shutdown a VM
  vm-smigrate         Migrate the VM disks to another storlink
  vm-start            Start a VM
  vm-stat             Get the performace data of VM
  vm-suspend          Suspend the VM (Pause)
  vm-update           Change VM's CPU, Memory spec
  vm-vif-add          Add a vif to a VM
  vm-vif-del          Delete a vif to a VM
  vm-vif-list         List vif about a VM

아래와 같이 각 command들 마다의 인자값들도 확인할 수 있습니다.

# uxencli storlink-add --help
Usage: uxencli storlink-add [OPTIONS] NAME LINK DESC TYPE LEVEL SHARED

  Create a storlink

  type :

  LO (Local disk), FC (Fibre Channel), ISC (iSCSI), NFS (NFS), CEPH (CEPH)

  level :

  FL (File Level), BL (Block Level), OB (Object Level)

  shared :

  True, False

Options:
  --help  Show this message and exit.

bash 자동완성

uxencli는 command와 argument에 대해 bash auto completion을 지원합니다. UUID와 같이 입력하기 어려운 인자값들을 tab키를 눌러 자동완성을 사용할 수 있습니다. 다만, 인자값(argument)에 따라 uxenapi 서버와 통신을 하는 경우가 있어 자동완성이 다소 늦을수 있습니다.

따옴표(Double quotes) 사용

만약 하나의 인자(argument)에 공백이나 특수문자가 포함된다면 따옴표(“)를 사용해야합니다. 예를들어 아래와 같이 desc을 설정할 수 있습니다.

# uxencli storlink-add nas01 /data_nfs "Private nas #1" NFS FL True

Options

  • -h or --host : uxenapi 요청을 보낼 서버(node)를 설정할 수 있습니다. 설정하지 않을 경우 localhost로 요청하게 됩니다.
  • -p or --port : uxenapi 서비스 포트를 설정합니다. 설정하지 않는다면 기본 web port인 80을 사용합니다.
  • -o or --output : response된 결과로 출력될 data format을 설정할 수 있습니다. json, xml, table중 하나를 선택할 수 있으며, table은 보기 편하게(human-friendly) 필요한 정보만 table 형태로 가공하여 출력됩니다. 기본 default는 table로 설정되어 있습니다.
  • -v or --verbose : Verbose Mode를 켭니다. uxenapi uri와 http status, return raw한 값을 모두 출력할 수 있습니다.
  • --version : uxenapi의 version을 출력합니다.
  • --help : 도움말을 출력합니다. 각 command 마다의 간단한 설명이나 필요한 인자값에 대한 도움을 얻을 수 있습니다.

Commands

PM 관련 Commands

pm-list

uxen에 등록된 pm들의 리스트를 출력합니다.

# uxencli pm-list
UUID                                 NAME         CPU  MEM
00020003-0004-0005-0006-000700080009 gordon       2    1791
00020003-0004-0005-0006-000700080009 dwade        4    4080

pm-info

PM(Physical Machine)의 정보를 출력합니다. PM의 UUID, 이름, CPU 코어수, 메모리, 네트워트등의 정보를 알 수 있습니다. 추가 인자값이 없을 경우 localhost의 정보를 가져오며 [PM_UUID] 입력시 해당 PM의 정보를 가져옵니다.

# uxencli pm-info
UUID            : 00020003-0004-0005-0006-000700080009
Name            : gordon
CPU             : 2
Memory          : 1791
Networks        : [ifname] [ip]            [mac]
                  xenbr0   192.168.0.24    00:e3:3d:e8:00:be
Created         : 2016-04-11T03:29:21.017300Z
Updated         : 2016-04-11T03:29:21.017384Z
  • UUID : PM의 고유 UUID
  • Name : PM의 이름
  • CPU : 해당 PM의 총 CPU core수
  • Memory : uxen에서 사용할 수 있는 총 memory (MB)
  • Networks : Bridge interface의 IP와 Mac address
  • Created : PM이 등록된 시간
  • Updated : uxenapi에서 마지막으로 Update된 시간

pm-stat

PM의 시스템 수치들을 볼수 있습니다.

# uxencli pm-stat
UUID            : 00020003-0004-0005-0006-000700080009
Name            : gordon
Total CPU       : 2
Used CPU        : 2
Hyperthread     : off
CPU Ratio       : 100.0 %
Total Memory    : 1791
Used Memory     : 1533
Running VMs     : 0
Networks        : [ifname] [rx_sum]           [tx_sum]
                  total    389722314          15025152401
                  xenbr0   172733716          7512640396
                  eth0     212900937          7512509527
                  eth1     4087661            2478
Created         : 2016-04-11T03:29:21.017300Z
Updated         : 2016-04-11T03:29:21.017384Z
  • Total CPU, Used CPU : 총 CPU core수와 사용된 Cpu core수
  • Hyperthread : Hyperthread 적용 유무
  • CPU Ratio : Total CPU와 Used CPU의 비율
  • Total Memory, Used Memory : uxen서버에서 사용할수 있는 총 memory와 할당하여 사용중인 memory (MB)
  • Running VMs : 해당 PM에서 구동중인 VM 개수
  • Networks : 각 interface, bridgedmㅣ rx, tx sum값
  • Created : PM이 등록된 시간
  • Updated : uxenapi에서 마지막으로 Update된 시간

GVM 관련 commands

gvm-add

gvm을 등록합니다.

# uxencli gvm-add [NAME] [OS] [ARCH] [DESC] [STORLINK_ID] [DISK_UUID] [DISK_FORMAT]
  • name : gvm 이름
  • os : gvm의 OS (ARCH, CENTOS, DEBIAN, FEDORA, GENTOO, RHEL, UBUNTU, WINDOWS, OTHER)
  • arch : gvm의 architecture (X86, X64)
  • desc : gvm의 설명
  • storlink_id : gvm이 저장되어있는 storlink의 id값
  • disk_uuid : 해당 storlink에 저장되어 있는 파일 이름(uuid)
  • disk_format : qcow2

gvm-list

등록된 gvm의 list를 출력합니다.

# uxencli gvm-list
UUID                                 NAME         SIZE   OS           ARCH
c7ad3679-e03a-4f38-b943-cdfc8889eb85 jessie       30720  DEBIAN       X86

gvm-disk-list

gvm에서 사용하는 disk image들을 출력합니다.

# uxencli gvm-disk-list c7ad3679-e03a-4f38-b943-cdfc8889eb85
DISK_UUID                            STORLINK SIZE   FORMAT ORDER
b6bf51e8-5833-431b-8d95-b0e21498d566 1        30720  qcow2  1
  • disk_uuid : disk uuid (filename)
  • storlink : 해당 gvm disk가 저장된 storlink id
  • size : 해당 disk image의 size (MB)
  • format : disk image의 foramt
  • order : gvm에 할당된 disk 순서

gvm-del

등록된 gvm을 삭제합니다.

# uxencli gvm-del [GVM_UUID]

gvm-copyfromvm

vm으로부터 image를 복사하여 gvm을 생성합니다.

# uxencli gvm-copyfromvm [VM_UUID] [NAME] [STORLINK_ID] [DESC]

gvm-update

등록된 gvm의 정보를 변경니다. uuid를 제외한 인자값들은 gvm-add의 인가값들과 동일합니다.

# uxencli gvm-update [UUID] [NAME] [OS] [ARCH] [DESC]

VM 관련 commands

vm-add

gvm으로부터 vm을 생성합니다.

# uxencli vm-add [NAME] [GVM_UUID] [STORLINK_ID] [CPU] [MEMORY] [MAXMEM] [DESC] [BRIDE_IF...]
  • name : vm 이름
  • gvm_uuid : gvm의 uuid
  • storlink_id : vm 이미지가 저장될 storlink id
  • cpu : vm에 할당한 cpu core수
  • memory : vm에 할당할 memory (MB)
  • maxmem : 동적(online) 메모리 할당을 위해 설정할 max memory(MB)
  • desc : 설명
  • bridge_if : vm에 할당한 bridge interface 이름

bridge_if의 경우 아래와 같이 여러개를 할당할 수 있습니다.

# uxencli vm-add testvm01 c7ad3679-e03a-4f38-b943-cdfc8889eb85 2 2048 2048 testvm01 xenbr0 xenbr1 xenbr2

vm-copy

다른 vm을 복사하여 새로운 vm을 생성합니다.

# uxencli vm-copy [VM_UUID] [NAME] [STORLINK_ID]
  • vm_uuid : 복사할 대상 VM의 uuid
  • name : 이름
  • storlink_id : 새로운 vm의 이미지를 저장할 storlink id

vm-del

vm을 삭제합니다.

# uxencli vm-del [VM_UUID}

vm-disk-add

vm에 할당할 disk를 생성합니다. vm이 구동 중일 때도 지원합니다.

# uxencli vm-disk-add [VM_UUID] [DISK_SIZE] [STORLINK_ID] [DESC]
  • vm_uuid : 대상 vm uuid
  • disk_size : 추가할 disk의 size (MB)
  • storlink_id : 추가 disk가 저장될 storlink id
  • desc: 설명

예제로 10GB의 추가 디스크를 추가해보겠습니다.

$ sudo uxencli vm-disk-add dbf1bd6b-0d61-4975-a68f-4865bd215fcd 10240 2 MyDisk

추가 디스크(10GB)의 UUID는 c4a4675b-da87-4be6-b3e8-364d43f56ba1입니다.

$ sudo uxencli vm-disk-list dbf1bd6b-0d61-4975-a68f-4865bd215fcd
DISK_UUID                            STORLINK SIZE   FORMAT ORDER
56fd0251-c89f-4880-ad71-7585271a3a77 2        51200  qcow2  1
+ c4a4675b-da87-4be6-b3e8-364d43f56ba1 2        10240  qcow2  2

uxencli vm-disk-add 명령어로 디스크를 추가한 뒤 Windows에서 추가 디스크를 설정해야 합니다. ‘컴퓨터 관리’를 실행합니다.

좌측 하단의 ‘디스크 관리’를 클릭하면 잠시 후 ‘디스크 초기화’ 화면이 나타납니다. ‘확인’ 버튼을 누릅니다.

추가 디스크의 할당되지 않은 공간에 우클릭을 한 후 ‘새 단순 볼륨’을 클릭합니다.

원하는 드라이브 문자를 할당한 후 ‘다음’ 버튼을 클릭합니다.

이제 추가 디스크가 Windows에서 보입니다.

추가한 디스크는 내 컴퓨터에서도 보입니다.

vm-disk-del

vm에 할당된 disk를 삭제합니다. disk 삭제는 vm이 shutdown 상태에서만 가능합니다. (VM 상태가 running일 경우에는 disk 삭제가 불가능합니다.)

# uxencli vm-disk-del [VM_UUID] [DISK_UUID]
  • vm_uuid : 대상 vm uuid
  • disk_uuid : 삭제할 disk의 uuid

vm-disk-del의 사용 예제는 다음과 같습니다.

VM 종료

$ sudo uxencli vm-shutdown dbf1bd6b-0d61-4975-a68f-4865bd215fcd
Success

VM이 사용 중인 디스크 조회

$ sudo uxencli vm-disk-list dbf1bd6b-0d61-4975-a68f-4865bd215fcd
DISK_UUID                            STORLINK SIZE   FORMAT ORDER
56fd0251-c89f-4880-ad71-7585271a3a77 2        51200  qcow2  1
c4a4675b-da87-4be6-b3e8-364d43f56ba1 2        10240  qcow2  2

VM의 추가 디스크 삭제

$ sudo uxencli vm-disk-del dbf1bd6b-0d61-4975-a68f-4865bd215fcd c4a4675b-da87-4be6-b3e8-364d43f56ba1
Success

VM 실행

$ sudo uxencli vm-start dbf1bd6b-0d61-4975-a68f-4865bd215fcd
Success

vm-disk-list

vm에 할당된 disk를 출력합니다.

# uxencli vm-disk-list db2e39de-382e-4f83-881e-68aa2b088f5a
DISK_UUID                            STORLINK SIZE   FORMAT ORDER
b43e6ff4-d34a-4c25-ba6e-5cf96e55c1d8 1        30720  qcow2  1

vm-info

vm의 정보를 출력합니다.

# uxencli vm-info db2e39de-382e-4f83-881e-68aa2b088f5a
UUID            : db2e39de-382e-4f83-881e-68aa2b088f5a
Name            : test01
Cpu             : 1
Maxmem          : 512
Memory          : 512
OS              : DEBIAN
OS Arch         : X86
State           : RUNNING
GVM             : c7ad3679-e03a-4f38-b943-cdfc8889eb85
Created         : 2016-04-11T03:46:11.385264Z
Recent Booted   : 2016-04-11T03:57:42.487754Z
Networks        : [ifname] [mac]
                  xenbr0   00:16:3E:4C:B4:53
VNC Port        : 0
VNC Password    : fzhij0p2hj9u
  • uuid : vm의 uuid
  • name : vm의 이름
  • cpu : vm에 할당된 cpu core수
  • maxmem : 동적(online) 메모리 할당을 위해 설정된 max memory 값(MB)
  • memory : vm에 할당된 현재 memory(MB)
  • os : vm의 os (gvm의 정보를 참조함)
  • os arch : vm의 os architecture (gvm의 정보를 참조함)
  • state : vm의 상태 (RUNNING, SHUTDOWN, CRASH 등)
  • gvm : 해당 gvm의 uuid으로 부터 vm 생성
  • created : vm이 생성된 시간
  • recent booted : 마지막 구동된 시간
  • networks : 할당된 bridge interface와 mac 주소
  • vnc port : vm의 콘솔을 위한 vnc display
  • vnc password : vnc password

vm-list

vm 리스트를 출력합니다.

# uxencli vm-list
UUID                                 NAME         vCPU MEM    STATUS     PM
db2e39de-382e-4f83-881e-68aa2b088f5a test01       1    512    SHUTDOWN   -
  • uuid : vm의 uuid
  • name : vm의 이름
  • vcpu : vm에 할당된 cpu core수
  • mem : vm에 할당된 memory size(MB)
  • status : vm의 상태
  • pm : vm이 구동중인 pm의 uuid

vm-start

vm을 구동시킵니다.

# uxencli vm-start [VM_UUID]

vm-reboot

구동중인 vm을 리부팅합니다.

# uxencli vm-reboot [VM_UUID]

vm-shutdown

구동중인 vm을 shutdown 시킵니다.

# uxencli vm-shutdown [VM_UUID]

vm-poweroff

구동중인 vm을 강제 종료시킵니다.

# uxencli vm-poweroff [VM_UUID]

vm-suspend

vm을 pause시킵니다.

# uxencli vm-suspend [VM_UUID]

vm-resume

supend된 vm을 구동시킵니다.

# uxencli vm-resume [VM_UUID]

vm-migrate

구동중인 vm을 다른 pm으로 이전합니다.

# uxencli vm-migrate [VM_UUID] [PM_UUID]

vm-stat

vm의 시스템 수치들을 출력합니다.

# uxencli vm-stat db2e39de-382e-4f83-881e-68aa2b088f5a
UUID            : db2e39de-382e-4f83-881e-68aa2b088f5a
Name            : test01
CPU cores       : 1
CPU util.       : 100.0 %
Memory          : 512
Networks        : [ifname] [rx_sum]           [tx_sum]
                  total    0                  0

vm-update

vm의 cpu, memory, maxmem을 재설정합니다. maxmem을 제외하고는 구동중인 vm에도 online 적용됩니다.

# uxencli vm-update [VM_UUID] [CPU] [MEMORY] [MAXMEM]
orchard@cms-p-pm02:~$ sudo uxencli vm-info 059a1f2e-27d0-42e7-8653-539c514ba528
UUID            : 059a1f2e-27d0-42e7-8653-539c514ba528
Name            : iorchard_westporch_centos7
Cpu             : 8
Maxmem          : 4096
Memory          : 2048
OS              : CENTOS
OS Arch         : X64
State           : SHUTDOWN
GVM             : 85e2580b-fa0a-4e54-8d2f-7b07a52ea863
Created         : 2016-10-26T08:28:10.741337Z
Recent Booted   : 2016-11-22T05:03:41.705475Z
Networks        : [ifname] [mac]
                  xenbr0   00:16:3E:5E:0F:D2
VNC Port        : 0
VNC Password    : (생략)
orchard@cms-p-pm02:~$
orchard@cms-p-pm02:~$ sudo uxencli vm-update 059a1f2e-27d0-42e7-8653-539c514ba528 8 8192 8192
Success
orchard@cms-p-pm02:~$
orchard@cms-p-pm02:~$ sudo uxencli vm-info 059a1f2e-27d0-42e7-8653-539c514ba528
UUID            : 059a1f2e-27d0-42e7-8653-539c514ba528
Name            : iorchard_westporch_centos7
Cpu             : 8
Maxmem          : 8192
Memory          : 8192
OS              : CENTOS
OS Arch         : X64
State           : SHUTDOWN
GVM             : 85e2580b-fa0a-4e54-8d2f-7b07a52ea863
Created         : 2016-10-26T08:28:10.741337Z
Recent Booted   : 2016-11-22T05:03:41.705475Z
Networks        : [ifname] [mac]
                  xenbr0   00:16:3E:5E:0F:D2
VNC Port        : 0
VNC Password    : (생략)

vm-smigrate

VM의 disk 이미지들을 다른 storlink로 이전합니다.

# uxencli vm-smigrate [VM_UUID] [STORLINK_ID]

vm-vif-add

vm에 vif를 추가합니다. 구동중 vm에도 online 적용됩니다.

# uxencli vm-vif-add [VM_UUID] [BRIDGE_IF]

예를 들어 vm에 xenbr1의 bridge interface을 추가하려면 아래와 같습니다.

# uxencli vm-vif-add db2e39de-382e-4f83-881e-68aa2b088f5a xenbr1

vm-vif-list

vm에 할당된 network interface 리스트를 출력합니다.

# uxencli vm-vif-list db2e39de-382e-4f83-881e-68aa2b088f5a
ID   VIF_NAME   BRIDGE  MAC
2    mplz9iwhp  xenbr1  00:16:3E:4C:B4:53
1    uwwvzw1pz  xenbr0  00:16:3E:08:31:11
  • id : 순차적으로 부여된 vif의 id
  • vif_name : 랜덤으로 생성된 vif의 name
  • bridge : vif가 사용하는 bridge interface
  • mac : vif에 할당되는 랜덤 생성 mac

Backup 관련 commands

backup-add

vm의 disk 이미지들을 원하는 storlink로 backup합니다. vm에 할당된 모든 disk가 backup됩니다. vm이 실행 중인 상태에서 backup-add 명령을 실행할 수 있습니다.

# uxencli backup-add [VM_UUID] [NAME] [STORLINK_ID] [DESC]

backup-list

백업 리스트를 출력합니다.

# uxencli backup-list db2e39de-382e-4f83-881e-68aa2b088f5a
UUID                                 NAME                     SIZE     CREATED
05e5e2f3-2f44-45d5-a802-31cd6263d37e -                        30720    2016-04-12T06:01:57.252055Z

backup-del

백업된 disk 이미지들을 삭제합니다.

# uxencli backup-del [VM_UUID] [BACKUP_UUID]

backup-disk-list

backup에 사용된 disk 리스트 출력합니다.

# uxencli backup-disk-list db2e39de-382e-4f83-881e-68aa2b088f5a 05e5e2f3-2f44-45d5-a802-31cd6263d37e
DISK_UUID                            STORLINK SIZE   FORMAT ORDER
557191b5-6aa6-4288-b019-618326bf85c7 1        30720  qcow2  1

backup-restore

백업된 vm을 복원합니다. backup-restore 명령어를 사용하려면 해당 VM을 종료해야 합니다.

# uxencli backup-restore [VM_UUID] [BACKUP_UUID]
orchard@cms-p-pm02:~$ sudo uxencli vm-shutdown dbf1bd6b-0d61-4975-a68f-4865bd215fcd
Success
orchard@cms-p-pm02:~$
orchard@cms-p-pm02:~$ sudo uxencli backup-list dbf1bd6b-0d61-4975-a68f-4865bd215fcd
UUID                                 NAME                     SIZE     CREATED
02e8d568-ed9d-4789-bbbd-c61f4a333215 -                        51200    2016-11-22T06:17:49.844869Z
orchard@cms-p-pm02:~$ sudo uxencli backup-restore dbf1bd6b-0d61-4975-a68f-4865bd215fcd 02e8d568-ed9d-4789-bbbd-c61f4a333215
Success
orchard@cms-p-pm02:~$ sudo uxencli vm-start dbf1bd6b-0d61-4975-a68f-4865bd215fcd
Success

Snapshot 관련 commands

snapshot-add

vm에 snapshot을 찍습니다.

# uxencli snapshot-add [VM_UUID] [NAME] [STORLINK_ID] [DESC]

snapshot-list

vm의 snapshot 리스트를 출력합니다.

# uxencli snapshot-list db2e39de-382e-4f83-881e-68aa2b088f5a
UUID                                 NAME                             PARENT
f1f213ea-2526-4ccb-9e4e-d6046ae8c591 snapshot01                       db2e39de-382e-4f83-881e-68aa2b088f5a
  • uuid : snapshot uuid
  • name : snapshot name
  • parent : 해당 snapshot의 parent snapshot uuid

snapshot-del

snapshot을 삭제합니다.

# uxencli snapshot-add [VM_UUID] [SNAPSHOT_UUID]

snapshot-disk-list

snapshot을 찍은 disk 리스트를 출력합니다. 각 snapshot disk당 2개씩 disk image가 보일것입니다.

# uxencli snapshot-disk-list db2e39de-382e-4f83-881e-68aa2b088f5a f1f213ea-2526-4ccb-9e4e-d6046ae8c591
DISK_UUID                            STORLINK SIZE   FORMAT TYPE ORDER
964f057c-7038-4159-8c29-d7fcb53f7578 1        30720  qcow2  SS   1
edc16d5c-11b0-4039-bad7-525047ed17f7 1        30720  qcow2  RS   1
  • disk_uuid : disk uuid(filename)
  • storlink : 저장된 storlink id
  • size : snapshot된 disk의 size
  • format : snapshot disk format
  • type
  • RS : running snapshot
  • SS : save snapshot
  • order : vm에 할당된 disk 순서

snapshot-restore

vm을 snapshot으로 복구를 합니다. 해당 vm이 shutdown일때만 가능합니다.

# uxencli snapshot-restore [VM_UUID] [SNAPSHOT_UUID]