Skip to main content

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

라고 나오면 정상이다. 숫자는 디스크 크기에 따라 다르다.
참고로 위의 숫자의 의미는 다음과 같다.

 

rtaImage.jpg

파티션을 만들기 위해서는 마지막 섹터를 알아야 하는데, 마지막 숫자에서 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_store.jpg

 

만약 추가한 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로 표기가 된다.