⫸VMware

VMware 리소스 가상화 - 스토리지 가상화

OSMU-PIPELINE 2022. 10. 5. 02:30
반응형

스토리지 가상화

 

ESXi 서버 내의 가상 머신 안에서 작동되는 게스트 운영체제들은 자신이 인식하고 있는 디스크가 물리적인 디스크 컨트롤러에 연결된 일종의 하드 디스크라고 착각할 뿐이지만 실상은 그렇지 않다. ESXi 서버는 수많은 가상 머신들에게 다양한 크기의 디스크와 함께 또 각각 원하는 개수만큼, 그러면서 동시에 읽고 쓰는 데 있어 전혀 문제가 없게끔 디스크를 인식시켜 주어야 하지만, 그렇다고 해서 VMkernel이 인식하고 있는 물리적인 디스크를 가상 머신의 개수만큼 직접 연결시켜 주어야 한다면 이 역시 진정한 가상화 환경이라고 볼 수가 없을 것이다.

스토리지 가상화
<스토리지 가상화>

ESXi 서버가 제공하는 스토리지 가상화의 가장 큰 핵심은 크게 두 가지이다. 그 하나는 바로 이러한 수많은 가상 머신들에게 어떻게 해서 가상의 하드 디스크를 인식시켜 줄 것인지이며, 다른 하나는 그러한 개별 가상 머신들의 하드디스크 데이터를 어떻게 저장하고 관리할 것인지, 즉 ESX 서버에서 운영하는 파일 시스템의 구조와 운영 방법의 이해이다. 우선 각각의 가상 머신들에게 개별 하드 디스크를 인식시켜 주기 위해서 갖추어야 할 요소는 바로 디스크 컨트롤러와 디스크 자체이다.

ESXi 서버에서는 다양한 가상 디스크 컨트롤러를 가상 머신에게 제공하고 있으며, 사용자는 초기 가상 머신 생성 시에 어떤 디스크 컨트롤러를 사용할 것인지 선택할 수 있다.  한편, 디스크의 경우 개별 가상 머신들에게 마치 자신의 디스크 컨트롤러에 직접 연결된 로컬 하드 디스크인 마냥 인식시켜 주게 되는데, 이를 가상 머신 디스크(VMDK: Virtual Machine Disk) 파일이라고 부른다. 예를 들어, C 드라이브가 100GB인 Windows 서버 가상 머신을 생성하였다면, 실제 ESXi 서버의 스토리지 볼륨에는 100GB 크기의 단일 VMDK 파일이 존재하는 것이다. VMDK 파일을 이해하기 위해서 그리 복잡한 구조를 들여다볼 필요 없이 우리가 주변에서 쉽게 볼 수 있는 ISO 이미지 파일을 떠올려 보면 된다. ISO 이미지 파일들은 단일 파일이면서 동시에 크기도 상당하다. 게다가 그 안에는 수많은 파일과 디렉토리 구조를 그대로 가지고 있다.

마찬가지로 VMDK 파일 역시 ISO 이미지 파일과 매우 유사한 구조이며, 동시에 가상 머신에게는 지오메트리와 파일 시스템 구조를 지니고 있는 일종의 하드 디스크로 인식된다. 다시 말하면, 이러한 VMDK 파일은 엄연히 가상 머신에게 일종의 하드디스크로 인식된다는 것이다. 따라서 만약 VMDK 파일을 삭제하게 된다면 가상 머신의 입장에서는 디스크가 통째로 사라진 것과 같고, VMDK 파일을 복사하게 된다면 마치 노턴 고스트 유틸리티를 이용하여 동일한 디스크 복제본을 생성한 것과 같은 경우에 해당된다.

 

그런데 이러한 VMDK 파일들은 단일 파일이면서 동시에 그 크기가 상당하다. 또한 그 특성상 고속의 접근이 이루어져야 한다. ESXi 서버 운영체제 입장에서는 이러한 파일을 담아두어야 할 특별한 파일 시스템이 필요하지 않을 수 없었다. VMFS(VMware File System)가 개발된 이유가 바로 이것이다. VMFS는 ESXi 서버에서 사용하는 파일 시스템이다. VMDK 파일들은 대부분 VMFS 위에서 작동되는데, 이 파일 시스템은 다음과 같은 두 가지 커다란 특징을 가지고 있다.

 

• 거대한 블록 크기 - VMFS는 기본적으로 블록크기를 최하 1MB부터 최대 8MB까지 설정할 수 있는 고성능 파일 시스템이다. 블록 크기가 이렇게 커다란 이유는 바로 VMFS 위에 저장되는 VMDK 파일들의 기본 크기가 워낙 크기 때문이다. 이렇게 커다란 단일 파일을 고속으로 접근하기 위해서는 블록 크기를 크게 가져갈 수밖에 없다.

 

• 클러스터 파일 시스템 구조 -  가장 잘 알려진 OCFS(오라클 파일 시스템)이나 Veritas CFS(베리타스 클러스터 파일 시스템)처럼 VMFS 역시 클러스터 파일 시스템 구조를 가지고 있는데, 최대 32대의 ESXi 서버들이 동시에 단일 VMFS 볼륨에 대하여 읽고 쓸 수가 있다. 이러한 클러스터 파일 시스템 구조의 특징으로 인해 하나의 VMFS 볼륨에 여러 대의 ESXi 서버 호스트들이 동시에 읽고 쓸 수 있지만, VMDK 파일은 오직 한 대의 ESXi 서버 호스트만 열어볼 수 있다.

 

위의 클러스터 파일 시스템 구조에서 살펴본 바와 같이, VMFS 파일 시스템을 언급하면서 항상 대두되는 중요한 개념이 바로 공유 스토리지(Shared Storage)라는 것이다. 여기서 언급하는 공유라 함은 개념적으로는 기존의 물리적 서버들이 각자 따로 보유하고 있던 DAS(Direct Attach Storage) 형태의 디스크들이 하나의 거대한 스토리지로 통합되는 것을 의미한다.

그리고, 기술적으로는 VMware 서버 가상화에서 제공하는 핵심 기능들, 이를 테면 HA, VMotion, DRS, DPM 기능들이 구현되기 위해서는 ESXi 서버들이 스토리지 시스템에 접근하여 동일한 VMFS 볼륨을 동시에 액세스해야 하는 것을 의미한다. 

이상으로, VMkernel이 어떻게 해서 네 가지 하드웨어 구성요소를 가상화하여 운영하는지 그 방법과 구조에 대하여 설명해 보았다. 사실 냉정하게 말하자면, 그동안 x86 시스템에서의 가상화 기술 구현은 VMware 또는 Open Source 측에서 독자적으로 소프트웨어적인 기법을 통해 그 한계점을 벗어나고자 하는 몸부림 그 자체였으며, 뒤늦게 이에 대한 하드웨어적인 기술 지원과 같은 발판을 인텔과 AMD가 만들어 주고 있는 양상이다. 특히 CPU와 메모리의 가상화 기술 지원에 있어 인텔과 AMD 하드웨어 제조업체의 지원이 눈에 띄게 증가하고 있다.

 

이러한 지원과 기술의 발전에 힘입어 다가올 미래에 어떤 모습으로 가상화 진화하게 될지 너무나 기대가 된다.

 

ESXi 서버 내의 가상 머신 안에서 작동되는 게스트 운영체제들은 자신이 인식하고 있는 디스크가 물리적인 디스크 컨트롤러에 연결된 일종의 하드 디스크라고 착각할 뿐이지만 실상은 그렇지 않다. ESXi 서버는 수많은 가상 머신들에게 다양한 크기의 디스크와 함께 또 각각 원하는 개수만큼, 그러면서 동시에 읽고 쓰는 데 있어 전혀 문제가 없게끔 디스크를 인식시켜 주어야 하지만, 그렇다고 해서 VMkernel이 인식하고 있는 물리적인 디스크를 가상 머신의 개수만큼 직접 연결시켜 주어야 한다면 이 역시 진정한 가상화 환경이라고 볼 수가 없을 것이다.

ESXi 서버가 제공하는 스토리지 가상화의 가장 큰 핵심은 크게 두 가지이다. 그 하나는 바로 이러한 수많은 가상 머신들에게 어떻게 해서 가상의 하드 디스크를 인식시켜 줄 것인지이며, 다른 하나는 그러한 개별 가상 머신들의 하드디스크 데이터를 어떻게 저장하고 관리할 것인지, 즉 ESX 서버에서 운영하는 파일 시스템의 구조와 운영 방법의 이해이다. 우선 각각의 가상 머신들에게 개별 하드 디스크를 인식시켜 주기 위해서 갖추어야 할 요소는 바로 디스크 컨트롤러와 디스크 자체이다.

ESXi 서버에서는 다양한 가상 디스크 컨트롤러를 가상 머신에게 제공하고 있으며, 사용자는 초기 가상 머신 생성 시에 어떤 디스크 컨트롤러를 사용할 것인지 선택할 수 있다.  한편, 디스크의 경우 개별 가상 머신들에게 마치 자신의 디스크 컨트롤러에 직접 연결된 로컬 하드 디스크인 마냥 인식시켜 주게 되는데, 이를 가상 머신 디스크(VMDK: Virtual Machine Disk) 파일이라고 부른다. 예를 들어, C 드라이브가 100GB인 Windows 서버 가상 머신을 생성하였다면, 실제 ESXi 서버의 스토리지 볼륨에는 100GB 크기의 단일 VMDK 파일이 존재하는 것이다. VMDK 파일을 이해하기 위해서 그리 복잡한 구조를 들여다볼 필요 없이 우리가 주변에서 쉽게 볼 수 있는 ISO 이미지 파일을 떠올려 보면 된다. ISO 이미지 파일들은 단일 파일이면서 동시에 크기도 상당하다. 게다가 그 안에는 수많은 파일과 디렉토리 구조를 그대로 가지고 있다.

마찬가지로 VMDK 파일 역시 ISO 이미지 파일과 매우 유사한 구조이며, 동시에 가상 머신에게는 지오메트리와 파일 시스템 구조를 지니고 있는 일종의 하드 디스크로 인식된다. 다시 말하면, 이러한 VMDK 파일은 엄연히 가상 머신에게 일종의 하드디스크로 인식된다는 것이다. 따라서 만약 VMDK 파일을 삭제하게 된다면 가상 머신의 입장에서는 디스크가 통째로 사라진 것과 같고, VMDK 파일을 복사하게 된다면 마치 노턴 고스트 유틸리티를 이용하여 동일한 디스크 복제본을 생성한 것과 같은 경우에 해당된다.

 

그런데 이러한 VMDK 파일들은 단일 파일이면서 동시에 그 크기가 상당하다. 또한 그 특성상 고속의 접근이 이루어져야 한다. ESXi 서버 운영체제 입장에서는 이러한 파일을 담아두어야 할 특별한 파일 시스템이 필요하지 않을 수 없었다. VMFS(VMware File System)가 개발된 이유가 바로 이것이다. VMFS는 ESXi 서버에서 사용하는 파일 시스템이다. VMDK 파일들은 대부분 VMFS 위에서 작동되는데, 이 파일 시스템은 다음과 같은 두 가지 커다란 특징을 가지고 있다.

• 거대한 블록 크기 - VMFS는 기본적으로 블록크기를 최하 1MB부터 최대 8MB까지 설정할 수 있는 고성능 파일 시스템이다. 블록 크기가 이렇게 커다란 이유는 바로 VMFS 위에 저장되는 VMDK 파일들의 기본 크기가 워낙 크기 때문이다. 이렇게 커다란 단일 파일을 고속으로 접근하기 위해서는 블록 크기를 크게 가져갈 수밖에 없다.

 

• 클러스터 파일 시스템 구조 -  가장 잘 알려진 OCFS(오라클 파일 시스템)이나 Veritas CFS(베리타스 클러스터 파일 시스템)처럼 VMFS 역시 클러스터 파일 시스템 구조를 가지고 있는데, 최대 32대의 ESXi 서버들이 동시에 단일 VMFS 볼륨에 대하여 읽고 쓸 수가 있다. 이러한 클러스터 파일 시스템 구조의 특징으로 인해 하나의 VMFS 볼륨에 여러 대의 ESXi 서버 호스트들이 동시에 읽고 쓸 수 있지만, VMDK 파일은 오직 한 대의 ESXi 서버 호스트만 열어볼 수 있다.

 

위의 클러스터 파일 시스템 구조에서 살펴본 바와 같이, VMFS 파일 시스템을 언급하면서 항상 대두되는 중요한 개념이 바로 공유 스토리지(Shared Storage)라는 것이다. 여기서 언급하는 공유라 함은 개념적으로는 기존의 물리적 서버들이 각자 따로 보유하고 있던 DAS(Direct Attach Storage) 형태의 디스크들이 하나의 거대한 스토리지로 통합되는 것을 의미한다.

그리고, 기술적으로는 VMware 서버 가상화에서 제공하는 핵심 기능들, 이를 테면 HA, VMotion, DRS, DPM 기능들이 구현되기 위해서는 ESXi 서버들이 스토리지 시스템에 접근하여 동일한 VMFS 볼륨을 동시에 액세스해야 하는 것을 의미한다. 

 

이상으로, VMkernel이 어떻게 해서 네 가지 하드웨어 구성요소를 가상화하여 운영하는지 그 방법과 구조에 대하여 설명해 보았다. 사실 냉정하게 말하자면, 그동안 x86 시스템에서의 가상화 기술 구현은 VMware 또는 Open Source 측에서 독자적으로 소프트웨어적인 기법을 통해 그 한계점을 벗어나고자 하는 몸부림 그 자체였으며, 뒤늦게 이에 대한 하드웨어적인 기술 지원과 같은 발판을 인텔과 AMD가 만들어 주고 있는 양상이다. 특히 CPU와 메모리의 가상화 기술 지원에 있어 인텔과 AMD 하드웨어 제조업체의 지원이 눈에 띄게 증가하고 있다.

이러한 지원과 기술의 발전에 힘입어 다가올 미래에 어떤 모습으로 가상화가 진화하게 될지 너무나 기대가 된다.

 

 

반응형