VMWare
- [서울대병원] wd api 사용 중 "502 Bad Gateway" 에러 발생
- [삼성리서치] wd 개발 서버 rabbitmq pod 재시작 불가 에러
- VM 인스턴스 실행 불가능 ESXi/ESX error: No free space left on device
- 기타
[서울대병원] wd api 사용 중 "502 Bad Gateway" 에러 발생
# 증상
- wd analyzer api 사용 중 "502 Bad Gateway" 에러 발생
# 원인
- 리눅스 named 서비스 종료 됨 (리눅스 로그상 1/19 15시 종료 됨)
- named 서비스 확인 (명령어 : systemctl status named)
# 조치
- named 서비스 시작 (명령어 : systemctl start named)
- pod 상태 확인 및 재시작
# 특이 사항 (사내 서버 테스트 내용)
- bastion named 서비스가 종료되어도 wd api 사용 가능
- cp4d web 접속 및 로그인 가능
- openshift web 접속 불가
<= 원인을 파악 방안에 대해 조사 또는 관련 senior들의 견해나 확인 방법 의논 필요함 (박성진)
[삼성리서치] wd 개발 서버 rabbitmq pod 재시작 불가 에러
# 증상
- wd 개발 서버에 인덱싱 안되어 rabbitmq pod 재시작
- rabbitmq pod 2개중 1개 재시작 불가
# 원인
- wd 개발 서버 리스소 부족으로 해당 워커 노드에 pod 배포 불가
# 조치
1. rabbitmq pod 배포 불가능한 워커노드 확인
- 명령어 : oc get pod -o wide | grep rabbitmq
2. 위 1번에서 확인한 워커노드에 pod 배포 안되도록 설정
- 명령어 : oc adm cordon <worker node name>
3. 배포 안됐던 rabbitmq pod 삭제
- 명령어 : oc delete pod <rabbitmq pod name> --force=true
- pod가 삭제되고 다른 워커노드에 pod 배포 확인
4. 위 2번에서 워커노드 pod 배포 안되록 설정했던 내용 원복
- 명령어 : oc adm uncordon <worker node name>
<= 근본 원인이라고 한 위의 서버리소스 부족인지는 어떻게 확인 가능합니까?
<= 리소스 부족 해소 방법은 무엇인지?
VM 인스턴스 실행 불가능 ESXi/ESX error: No free space left on device
- VMware firmware (OS) Update: 보안 패치 및 안정성, 버그 수정 등 23년 1월 정기 패치 팩
- 각 VM에 sched.swap.vmxSwapEnabled : False 항목 추가
- 각 VM에 할당 된 메모리를 162G -> 160G로 변경 및 인스턴스 시작 시 fixed 100% 메모리 할당이 아닌 1/3만 할당하고, 이용률에 따라 추가 할당하는 것으로 변경
- Memry 512G 중 VMWare 자체와 bastion을 띄우면 488G의 메모리가 남음. 3등분 하여 162G씩 할당한 것으로 보임.
- Storage 4.24TB를 100% VM에 할당 함.
- 이 스왚 파일은 해당 VM이 가진 메모리 총량과 동일한 크기임.
- 이 스왚이 생기는 이유는 메모리 공유 기능을 이용하여 물리 메모리가 10G인데 실제 VM에는 20G를 할당할 수 있기에, 오버 커밋이 발생하여 물리 메모리가 모자란 경우 디스크에 있는 스왚파일을 메모리 처럼 이용하기 위한 기능
- 그러나 일산병원의 시스템은 메모리를 오버커밋 하지 않고 100% VM에 맞게 할당하여 이 기능이 필요 없음
- 이 기능을 끔으로서 메모리 크기와 같은 디스크 공간인 0.5G를 확보 함.
- 현재 전체 공간 4.24TB 중 사용 3.77TB
기타
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로 표기가 된다.