Submitted by micmic on
點樣喺 XCP 裏面 remove virtual disk?係有啲麻煩,要啲手續。而加一隻 virtual disk,仲煩!
刪除 virtual disk
首先,搵出要刪除嘅 virtual disk。用呢個 command:
xe vbd-list vm-name-label=[VM Name]
跟著就係 unplug 佢,先要保證VM裏面無mount起隻disk!如果係 OS disk,代表你要刪除埋個 VM,遲啲至講。能成功unplug,就可以刪除VBD,用vbd-destroy。
xe vbd-unplug uuid=[vbd uuid]
xe vbd-destroy uuid=[vbd uuid]
如果你以為已經完事,咁就大獲。皆因儲存空間仲未釋放。大家記住儲存設備係VDI,VBD只係同VM嘅一個關係。咁點刪除 VDI呀?喺你第一個 command就有vdi-uuid。用佢嚟刪除 VDI就OK。
xe vdi-destroy uuid=[vdi uuid]
好啦,點睇都釋放嗮儲存空間啦。
添加 virtual disk
先比個script大家睇睇再慢慢解釋:
xeadddisk {vm_name} {disk_size_gb} {storage_repos}
#!/bin/bash
[[ $# -lt 2 ]] && { echo "usage $0 {vm_host} {size_inGB} [{storage_repos_name}] "; exit 1; }
storage="StorageData"
host="$1"
size=$2
VMID=$(xe vm-list name-label="$host" --minimal)
[[ -z "$VMID" ]] && exit 2
[[ $# -ge 3 ]] && storage="$3"
echo Add data disk to vm $host
SID=$(xe sr-list name-label="$storage" --minimal)
[[ -z "$SID" ]] && exit 3
VDIID=$(xe vdi-create sr-uuid=$SID type=user name-label="${host}.data" name-description="${host} data disk" virtual-size=${size}GiB)
LASTDEV=$(xe vm-param-get uuid=$VMID param-name=allowed-VBD-devices | gawk -F '(; )' '{print $1}')
VBDID=$(xe vbd-create device=$LASTDEV vm-uuid=$VMID vdi-uuid=$VDIID bootable=false mode=RW type=Disk)
xe vbd-plug uuid=$VBDID 2>/dev/null
echo $VDIID
應用起嚟就好便利啦,只要VM Name同disk size就可以加隻disk,唔洗boot機就可以訪問啦。裏面核心係兩個command,vdi-create建立一個virtual disk。而vbd-create建立virtual disk同VM嘅關係。最後vbd-plug踢起隻disk,搞掂用得。
好啦,建立咗virtual disk後,喺VM裏面點用都好有哲學,我強力建議你用LVM,即係:
建立partition(唔好成隻disk用,避免OS問長問短)
- pvcreate /dev/xvdb1 建立PV
- vgcreate vg_data /dev/xvdb1 建立VG
- lvcreate -n lv_data -l 100%FREE vg_data
- mkfs.ext4 /dev/vg_data/lv_data
- blkid /dev/vg_data/lv_data 獲取EXT4 filesystem 嘅 UUID
- 加到 /etc/fstab,如果唔需要auto就用noauto options,通過fstab統一管理係好習慣
除非你誓神劈願打死唔會加大disk size可以用過世,如果唔係請你通過LVM嚟用。因為當再加大你個file system時就可以全程online,連application都唔洗停。
- 3391 reads