USB 장치에 VMFS를 만들어 ESXi 시스템에서 사용하기
# USB를 호스트에서 사용할 수 있도록 설정 변경
ESXi 시스템에 USB 장치가 연결 되면 ESXi는 이걸 VM에서만 인식할 수 있는 형태로 인식한다. 때문에 호스트인 ESXi에서 사용하기 위해서 약간의 설정 변경이 필요하다.
방법 1 - Disable usbarbitrator service
Navigate to ESX > Configure > System > Advanced System Settings and click "Edit"
Search for USB.arbitratorAutoStartDisabled and set the Value to 1
Reboot the ESXi
방법 2 alternative option
Connect to the ESXi host with SSH
Stop the USB arbitrator service.
/etc/init.d/usbarbitrator stop
Permanently disable the USB arbitrator service after reboot.
chkconfig usbarbitrator off
No reboot is required
# USB 장치에 VMFS 파티션 만들기
USB 장치는 GUI 환경에서는 다룰 수 없기에 콘솔에 접속할 수 있어야 한다.
호스트 -> 관리 -> 서비스 항목으로 이동,
TSM-SSH를 활성화 해준다.
콘솔에 접속해서 vdq -q 명령을 통해 장치를 확인.
[
{
"Name" : "naa.5000cca2b089ea6c",
"VSANUUID" : "",
"State" : "Ineligible for use by VSAN",
"Reason" : "Has partitions",
"StoragePoolState": "Ineligible for use by Storage Pool",
"StoragePoolReason": "Has partitions",
"IsSSD" : "0",
"IsCapacityFlash": "0",
"IsPDL" : "0",
"Size(MB)" : "11444224",
"FormatType" : "512e",
"IsVsanDirectDisk" : "0"
},
{
"Name" : "mpx.vmhba32:C0:T0:L0",
"VSANUUID" : "",
"State" : "Ineligible for use by VSAN",
"Reason" : "Has partitions",
"StoragePoolState": "Ineligible for use by Storage Pool",
"StoragePoolReason": "Has partitions",
"IsSSD" : "0",
"IsCapacityFlash": "0",
"IsPDL" : "0",
"Size(MB)" : "117348",
"FormatType" : "512n",
"IsVsanDirectDisk" : "0"
},
{
"Name" : "t10.NVMe____Samsung_SSD_970_PRO_512GB_______________E93640115C382500",
"VSANUUID" : "",
"State" : "Ineligible for use by VSAN",
"Reason" : "Has partitions",
"StoragePoolState": "Ineligible for use by Storage Pool",
"StoragePoolReason": "Has partitions",
"IsSSD" : "1",
"IsCapacityFlash": "0",
"IsPDL" : "0",
"Size(MB)" : "488386",
"FormatType" : "512e",
"IsVsanDirectDisk" : "0"
}
]
위와 같은 결과 값이 나오는데, USB 장치는 보통 mpx. 으로 시작한다.
# 파티션 작업
먼저 파티션 테이블을 만들어야 한다. VMWare에서는 GPT 형식만 지원한다.
partedUtil mklabel /dev/disks/mpx.vmhba32:C0:T0:L0 gpt
이제 제대로 만들어 졌는지 확인 해 보자.
partedUtil getptbl /dev/disks/mpx.vmhba32:C0:T0:L0
gpt
14959 255 63 240328704
라고 나오면 정상이다. 숫자는 디스크 크기에 따라 다르다.
참고로 위의 숫자의 의미는 다음과 같다.
파티션을 만들기 위해서는 마지막 섹터를 알아야 하는데, 마지막 숫자에서 2048을 뺀 숫자가 된다.
위의 예제에서는 240328704 - 2048 = 240326656 이 마지막 섹터가 된다.
이제 파티션을 만들어 보자.
partedUtil setptbl /dev/disks/mpx.vmhba32:C0:T0:L0 gpt "1 2048 <마지막 섹터> AA31E02A400F11DB9590000C2911D1B8 0"
와 같은 형식이고, AA31E02A400F11DB9590000C2911D1B8의 의미는 파티션 형태가 VMFS라는 뜻이다.
partedUtil showGuids 명령을 통해 VMWare ESXi에서 만들수 있는 파티션 GUID의 목록을 볼수 있다.
위의 예제에서는
partedUtil setptbl /dev/disks/mpx.vmhba32:C0:T0:L0 gpt "1 2048 240326656 AA31E02A400F11DB9590000C2911D1B8 0"
라고 입력한다.
gpt
0 0 0 0
1 2048 240326656 AA31E02A400F11DB9590000C2911D1B8 0
처럼 결과가 나오면 성공한 것이다.
# 데이터스토어를 만들고 이를 시스템에 탑재하기
명령의 형식은 아래와 같다.
vmkfstools -C vmfs6 -S <이름> /dev/disks/<deviceID>:1
이름은 내가 원하는 DataStore의 이름이고, <deviceID>:1에서 :1은 해당 장치의 첫 번째 파티션이라는 의미이다.
vmkfstools -C vmfs6 -S usb_store /dev/disks/mpx.vmhba32:C0:T0:L0:1
실행 해보자.
create fs deviceName:'/dev/disks/mpx.vmhba32:C0:T0:L0:1', fsShortName:'vmfs6', fsName:'usb_store'
deviceFullPath:/dev/disks/mpx.vmhba32:C0:T0:L0:1 deviceFile:mpx.vmhba32:C0:T0:L0:1
ATS on device /dev/disks/mpx.vmhba32:C0:T0:L0:1: not supported.
Checking if remote hosts are using this device as a valid file system. This may take a few seconds...
Creating vmfs6 file system on "mpx.vmhba32:C0:T0:L0:1" with blockSize 1048576, unmapGranularity 1048576, unmapPriority default and volume label "usb_store".
Successfully created new volume: 63bfb975-7328d029-c8f4-2cf05df47a0d
이제 웹콘솔 스토리지로 이동하면 만든 usb store가 보일 것이다.
만약 추가한 USB 장치가 하드디스크라면 더 이상 할 작업은 없지만, 메모리 스틱이나 SSD인 경우에는 드라이브 유형을 비SSD에서 SSD로 바꿔줄 필요가 있다. 이 항목은 다음의 문서를 참고하면 더 자세한 정보를 얻을 수 있다.
https://kb.vmware.com/s/article/2013188
먼저, SSD로 선언이 가능하도록 아래의 명령을 실행한다.
esxcli system settings advanced set -o /Disk/AllowUsbClaimedAsSSD -i 1
그후 USB 장치의 정보를 불러온다.
esxcli storage nmp device list
mpx.vmhba32:C0:T0:L0
Device Display Name: Local USB Direct-Access (mpx.vmhba32:C0:T0:L0)
Storage Array Type: VMW_SATP_LOCAL
Storage Array Type Device Config: SATP VMW_SATP_LOCAL does not support device configuration.
Path Selection Policy: VMW_PSP_FIXED
Path Selection Policy Device Config: {preferred=vmhba32:C0:T0:L0;current=vmhba32:C0:T0:L0}
Path Selection Policy Device Custom Config:
Working Paths: vmhba32:C0:T0:L0
Is USB: true
Storage Array Type을 눈여겨 봐야한다. 다음의 명령을 실행할 때 동일한 타입으로 선언 해 주어야 하기 때문이다.
esxcli storage nmp satp rule add --satp=<SATP_TYPE> --device <장치이름> --option "enable_ssd"
위의 예제의 경우 다음과 같이 입력한다.
esxcli storage nmp satp rule add --satp=VMW_SATP_LOCAL --device mpx.vmhba32:C0:T0:L0 --option "enable_ssd"
명령 수행 후, 아래의 명령을 실행 해 보면
esxcli storage core device list -d mpx.vmhba32:C0:T0:L0 | grep SSD
Is SSD: false
라고 나온다. 실망하지 말고 VMWare ESXi를 리부팅 해보자.
부팅 후에는 Is SSD: true 라는 메시지를 볼 수 있으며, 웹 콘솔에서도 SSD로 표기가 된다.