며칠 전 커널 기반 가상 머신(Kernel-based Virtual Machine, KVM) 기술을 소개해 드렸습니다. KVM은 무료 오픈소스 가상화 솔루션으로, VirtualBox나 VMware 제품의 대안으로 사용하거나 함께 활용할 수도 있습니다. 지난 시간에는 기본적인 관리 방법을 다뤘고, 스토리지와 네트워크는 별도의 튜토리얼로 남겨두었습니다.
오늘은 KVM에서 스토리지를 관리하는 방법을 좀 더 깊이 있게 안내해 드리겠습니다. VirtualBox로 진행했던 내용과 비슷한 부분이 많습니다. 가상 디스크의 추가, 축소, 확장 등이 그 예입니다. 스토리지 풀과 볼륨을 생성하는 방법을 배우고, NFS 스토리지나 NTFS로 포맷된 USB 외장 디스크 활용 같은 고급 옵션도 함께 살펴보겠습니다.

스토리지 관리
가상 머신 관리자(Virtual Machine Manager, VMM)를 실행한 뒤, 편집(Edit) > 호스트 세부 정보(Host Details) > 스토리지(Storage) 탭을 클릭합니다.

스토리지 섹션이 열립니다. 왼쪽 열에는 등록된 모든 스토리지 풀이 표시됩니다. 기본적으로 /var 아래에 위치한 'default'라는 스토리지 풀 하나만 존재합니다. 아래 스크린샷에서는 스토리지 풀의 18%가 사용 중이며, 아직 생성된 볼륨은 없습니다.

오른쪽 창에서는 선택한 풀에 대한 개요를 확인할 수 있습니다. 첫째, 유형입니다(곧 자세히 설명하겠습니다). 둘째, 위치입니다. 상태(State)는 해당 풀이 활성화되어 사용 중인지, 아니면 일시 중단되었는지를 알려줍니다. 자동 시작(Autostart)은 KVM이 시작될 때 이 풀을 가상 머신에서 바로 사용할 수 있는지 여부를 나타냅니다. 볼륨(Volumes) 하위 섹션에는 풀에 존재하는 모든 가상 디스크가 이름, 크기, 형식과 함께 나열됩니다. KVM은 다양한 종류의 이미지를 지원하므로 잠시 후 자세히 살펴보겠습니다.
스토리지 풀 추가
이제 스토리지를 추가해 보겠습니다. 왼쪽 열 하단의 버튼들을 살펴보세요. 플러스(+) 버튼은 스토리지 풀을 추가합니다. 재생과 정지 버튼은 각각 풀을 삭제하지 않고 활성화하거나 비활성화할 때 사용합니다. 마지막 버튼은 실제로 풀을 삭제합니다. 그럼 디스크 공간을 추가해 보겠습니다.

기억해 두세요. 스토리지 풀이란 하나 이상의 볼륨, 즉 다양한 형식의 가상 디스크를 담을 수 있는 논리적 스토리지 그룹입니다. 생성은 두 단계로 진행됩니다.
첫 번째 단계에서는 이름과 유형을 선택합니다. 디렉터리(마운트 지점)는 물론 NFS, SCSI, iSCSI 스토리지, LVM, 심지어 물리 디스크까지 사용할 수 있습니다. 필자는 USB로 연결한 NTFS 포맷 외장 디스크를 사용해 보았는데, 문제없이 잘 작동했습니다.

두 번째 단계는 앞서 선택한 유형에 따라 달라집니다. 파일시스템 디렉터리의 경우 대부분의 입력란이 회색으로 비활성화되어 있으며, 대상 경로(Target Path)만 입력하면 끝납니다.

하지만 NFS를 선택했다면 호스트명, 내보내기(export) 디렉터리, 마운트 지점, 파일시스템 유형 등 추가 정보를 입력해야 합니다.


새 볼륨 생성
이제 새 볼륨(디스크)을 만들 차례입니다. 볼륨 파일에는 .img 확장자가 붙지만, 원하는 어떤 형식으로든 포맷할 수 있습니다. 예를 들어 raw나 vmdk를 사용할 수 있습니다. 형식 선택에 따라 해당 가상 디스크를 다른 가상화 솔루션에서도 사용할 수 있는지 여부가 결정됩니다.


지원되는 스토리지 형식에는 raw, bochs, loopback, dmg, iso, qcow2(QEMU copy on write), vmdk, vpc 등이 있습니다. 이론상 이를 통해 Bochs, Parallels, QEMU, VMware, Hyper-V 등 다양한 플랫폼에서 가상 디스크를 활용할 수 있습니다. 루프백 장치나 ISO 이미지를 생성하는 것도 가능합니다.

최대 용량(Max. capacity)은 볼륨이 가질 수 있는 최대 크기이고, 할당(Allocation)은 지금 당장 할당할 크기입니다. 기본적으로 크기를 0으로 지정하면 실제 공간을 차지하지 않는 0바이트 스파스(sparse) 파일이 생성됩니다. 0부터 최대 용량 사이의 임의 값을 할당할 수 있습니다.
작업 완료
모든 과정을 마치면 최종적으로 다음과 같은 화면을 보게 됩니다.

이것으로 끝입니다. 튜토리얼이 성공적으로 완성되었네요.
결론
이 튜토리얼은 특별히 어려운 내용은 아니지만, 스토리지 관리에 대해 KVM 초보 사용자들이 흔히 겪는 궁금증을 폭넓게 다룹니다. 여기서는 그래픽 인터페이스만 사용했기 때문에 '명령줄에서는 어떻게 할까?'라는 질문이 자연스럽게 생길 수 있습니다. 명령줄 활용법도 언젠가 다룰 예정이니, 우선은 기본기를 탄탄히 익혔다고 생각하면 됩니다. 이제 스토리지 풀과 볼륨이 무엇인지, 그리고 이를 어떻게 활용하는지 알게 되었습니다.
앞으로 더 많은 튜토리얼이 준비되어 있습니다. VirtualBox와 KVM 연동하기, 브리지 네트워킹 설정하기, 그리고 다른 멋진 오픈소스 가상화 솔루션들 살펴보기 등을 계획하고 있습니다. 많은 기대 부탁드립니다.
그럼, 즐거운 가상화 되세요!