얼마 전 저는 Citrix에서 유료 지원을 제공하는 Xen 어플라이언스인 XenServer에 대한 두 번째 리뷰를 다룬 바 있습니다. 이 제품은 XenCenter를 통한 원격 관리 등 상당히 유용하고 편리한 기능들을 갖추고 있습니다. 전반적으로 훌륭한 제품이지만, 감당할 수 있는 기업만을 위한 가격표가 붙어 있다는 점이 특징입니다.
XenServer의 문제점 중 하나는 XenCenter를 통해 로컬 저장소 저장소(repository), 즉 하나 이상의 로컬 디스크를 추가할 수 없다는 것입니다. 물론 중복성과 성능 측면에서 가상 머신을 로컬 디스크에 보관하는 것은 권장되지 않지만, 그럴 필요가 생길 수도 있습니다. 굳이 제한될 이유는 없겠죠. 이번 글에서는 그 제한을 해제하는 방법을 알아보겠습니다.
해결하려는 과제
우리가 달성하고자 하는 목표는 서버와 동일한 리소스(주 저장소 LVM과 root용으로 예약된 작은 표준 공유 영역 포함)를 공유하는 로컬 디스크 위에 로컬 저장소 저장소를 성공적으로 구성하는 것입니다. 어떻게 진행해야 할까요?
이 작업을 수행할 수 있는 방법은 대략 두세 가지가 있습니다. 모두 소개해 드리겠습니다. 단, 여기서 소개하는 모든 해결책은 다소 번거롭고 복잡하며 명령줄 사용을 요구한다는 점에 유의하세요. 아마 별로 마음에 들지 않아서 로컬 저장소를 완전히 제어할 수 있는 자체 Xen 또는 KVM 환경을 선호하게 될 수도 있습니다. 그래도 관심이 있다면 계속 읽어보세요.
옵션 1: 로컬 디렉터리 마운트
가장 간단한 방법입니다. 예를 들어 scp 명령 등으로 채워 넣은 /vm/iso처럼 ISO 이미지가 담긴 로컬 디렉터리가 있다면, 해당 저장소를 XenCenter에서 보이게 하고 싶을 것입니다. 하지만 앞서 언급했듯이 이 프로그램은 GUI 인터페이스를 통한 로컬 저장소 추가를 허용하지 않습니다.
대신 다음 명령을 실행할 수 있습니다:
xe sr-create name-label=<NAME> type=iso
device-config:legacy_mode=true
device-config:location=<ISODIR> content-type=iso실제 값을 넣으면 다음과 같습니다:
xe sr-create name-label=Local type=iso
device-config:legacy_mode=true
device-config:location=/vm/iso content-type=iso명령 실행이 성공하면 생성된 저장소의 UUID가 반환됩니다. 참고로 이 명령은 원하는 만큼 반복 실행할 수 있으며, 실행할 때마다 새로운 저장소가 생성되어 이후 GUI에 별도 항목으로 표시됩니다.
xe sr-create name-label=Local type=iso
device-config:legacy_mode=true
device-config:location=/vm/iso content-type=iso
3476e496-185f-9eba-0f89-bb822db31ebdSSH로 연결한 후 로컬 셸에서 이 작업을 수행할 수 있습니다.
그런 다음 VM 설치를 시도하면 목록에 Local 항목이 나타나는 것을 확인할 수 있습니다. 동일한 명령을 두 번 입력하면 동일한 항목이 두 개 표시되므로 혼동하지 않도록 주의하세요. 버그인지는 확실하지 않지만, 실제로 이렇게 동작합니다.
옵션 2: LVM 활용 (권장하지 않음)
이 방법은 훨씬 더 어렵고 복잡한 설정입니다. 가상 머신 구성 정보와 디스크를 담는 데 사용되는, 로컬 디스크 전체에 걸친 LVM 저장소를 직접 다뤄야 합니다.
하고자 하는 작업은 디스크에 새 LVM을 생성한 후, 이를 운영체제 이미지나 기타 필요한 데이터의 저장소로 추가하는 것입니다. 이를 위해서는 LVM 명령을 사용해야 합니다. 다행히 LVM은 유연해서 시스템을 재부팅하지 않고도 크기 조정, 할당, 볼륨 그룹 및 볼륨의 추가·제거와 같은 상당히 과감한 변경을 즉석에서 수행할 수 있습니다.
구체적인 절차는 Citrix 포럼 게시물 중 하나에 매우 자세히 설명되어 있습니다. 자세한 내용은 아래 '추가 참고 자료' 섹션을 확인하세요. 요약하면, 할당되지 않은 디스크 공간을 찾아 새 볼륨 그룹을 생성해야 합니다. 또는 기존 볼륨 그룹의 크기를 줄인 후 확보된 공간에서 새 그룹을 만들 수도 있습니다. 그다음 볼륨을 생성하고, 포맷하고, 마지막으로 사용할 수 있도록 마운트하면 됩니다.
옵션 3: 기존 기본 ISO 디렉터리 활용
/opt/xensource/packages/iso 디렉터리를 ISO 이미지 저장 용도로 사용할 수도 있습니다. 다만 이 디렉터리는 크기가 작아서 소수의 파일만 수용할 수 있습니다. 꼼수로 이 디렉터리를 심볼릭 링크로 다른 디스크나 파티션에 연결하여 이미지를 보관하는 방법도 있습니다.
새 디스크 추가 절차는 첫 번째 단계에서 설명한 것과 거의 동일합니다. 디스크를 추가하고, 시스템에서 인식되었는지 확인한 뒤, 파티션 테이블을 생성하고 포맷합니다. 그런 다음 시스템의 적절한 마운트 지점에 마운트합니다. 마지막으로 새 저장소를 생성합니다:
xe sr-create type=iso device-config:legacy_mode=true
device-config:location=/path/to/mntpoint그리고 사용 가능한 저장소 목록을 갱신합니다:
xe sr-scan uuid=<SR UUID>이 정도면 해당 작업은 끝입니다.
추가 참고 자료
다음 포럼 게시물에서 더 많은 정보를 찾을 수 있습니다:
- https://forums.citrix.com/message.jspa?messageID=1399366
- https://forums.citrix.com/thread.jspa?threadID=257054
덤으로 관련 없는 팁 하나: Linux Samba 공유를 활용하면 Windows CIFS를 흉내 낼 수 있습니다. 원문 게시물은 스페인어로 작성되어 있지만 설명과 이미지가 워낙 직관적이라 번역이 필요하지 않습니다. 보너스 팁으로 참고해 보세요.
마무리
이러한 방식으로 저장소를 추가하는 일이 상당히 복잡하게 느껴질 수 있습니다. 특히 KVM 저장소 관리를 사용해 봤거나 명령줄에서 Xen을 운영해 본 경험이 있는 분들이라면 더욱 그렇습니다. LVM은 많은 운영 유연성을 제공하지만, 대부분의 사용자에게는 관리 접근성을 떨어뜨립니다. 게다가 파일시스템 투명성이 부족하면 특수한 커스텀 설정을 구성해야 할 때 문제가 됩니다. 새로운 유형의 저장소가 등장하면 어떻게 될까요? 표준 Linux에서는 새 파일시스템을 적절한 위치에 마운트하기만 하면 끝이고, 하부 시스템이 필요한 프로토콜이나 드라이버를 알아서 처리해 줍니다. 반면 XenServer에서는 이러한 구조적 차이 때문에 간단한 작업이 큰 프로젝트로 변해버립니다.
물론 로컬 저장소에 가상 머신을 보관하는 것은 결코 좋은 선택이 아닙니다. 백업, 복구, 데이터센터 전반의 접근성이 번거로워지고, 특히 스케일아웃 시에는 용량과 성능 면에서 손해가 발생하기 때문입니다. 하지만 이는 XenServer의 설계 방식을 잘 보여주는 사례이기도 합니다. 이 튜토리얼이 있다면 작업이 조금은 수월해질 것입니다. 최소한 원격 접속과 명령줄 사용법을 익히고 LVM 관리도 살짝 맛볼 수 있으니, 언젠가 분명 도움이 될 겁니다.
다른 아이디어나 요청 사항이 있다면 언제든 의견을 남겨 주세요.
그럼, 즐거운 하루 되세요!