클라우드 스토리지의 핵심 기술: 가상화된 스토리지, 가상화는 어떻게 달성되나요?
가상화는 컴퓨터가 스토리지를 사용하는 방식을 변화시킵니다. 물리적 머신이 가상 머신(VM: Virtual Machine)으로 추상화되는 것처럼, 물리적 저장 장치도 가상 디스크(Virtual Disk)로 추상화됩니다. 오늘은 스토리지 가상화(Storage Virtualization) 기술에 대해 이야기하겠습니다. 가상 디스크는 어떻게 구현됩니까?
가상 디스크 구현
서버 확장 스토리지의 주요 방식으로는 DAS(Direct Attached Storage), SAN(Storage Area Network), NAS(Network Attached Storage)가 있는 것으로 알고 있습니다. 유형. 그렇다면 가상 디스크를 구현하는 데 어떤 스토리지 유형을 사용할 수 있습니까?
가상화 환경에서는 VMWare 등의 하이퍼바이저가 동시에 여러 VM에 저장 공간을 할당해야 한다. 이 과정에서 먼저 물리적 스토리지 리소스를 가상 디스크로 다시 나눈 다음 이를 VM에 할당해야 합니다.
분명히 DAS를 사용하여 물리적 디스크를 VM에 직접 연결할 수는 없습니다. 그렇다면 너무 많은 물리적 디스크가 필요합니다. SAN은 논리 유닛(LUN: Logic Units) 형태로 스토리지 자원을 제공하지만, 가상 환경의 VM 수는 매우 많고, 그렇게 많은 가상 디스크를 지원하기에는 LUN 수가 부족합니다.
더 중요한 점은 가상 디스크가 다수의 VM에 공유된다는 점입니다. VM은 언제든지 생성, 삭제, 마이그레이션이 필요하므로 VM 마이그레이션 시에는 저장 공간을 공유해야 하며 원본만 공유해야 합니다. 데이터는 손실되지 않습니다. DAS와 SAN 모두 공유 스토리지에 적합하지 않습니다.
하이퍼바이저는 리소스 할당 및 공유 문제를 고려하여 NAS 형태로 가상 디스크를 구현합니다. VMware는 일반적으로 VMFS(Virtual Machine File System) 또는 NFS 프로토콜을 사용하여 가상 디스크를 구현합니다. VMFS 파일 시스템은 가상 머신 환경을 위한 프로토콜입니다.
각 가상머신의 데이터는 실제로는 파일뭉치인데, 가장 중요한 파일은 가상디스크 파일(VMDK 파일)이고, 스왑 파티션 파일(VSWP 파일, 이에 상응하는 스왑)도 있고, 비휘발성 성 메모리(NVRAM 파일은 BIOS와 동일) 등 가상 디스크에 대한 각 VM의 IO 작업은 실제로 가상 디스크 파일에 대한 읽기 및 쓰기 작업입니다.
가상 서버 환경을 설계, 구축 및 최적화하여 여러 가상 머신이 통합 클러스터 스토리지 풀에 액세스할 수 있도록 하여 리소스 활용도를 크게 향상시킵니다. 리소스 공유를 사용하고 구현함으로써 관리자는 효율성과 스토리지 활용도 향상이라는 직접적인 이점을 누릴 수 있습니다.
그럼 클라우드 컴퓨팅에서는 가상 디스크를 어떻게 사용하나요?
인스턴스 스토리지
가상 디스크를 사용하는 가장 중요한 방법은 인스턴스 스토리지입니다. 각 VM은 가상 머신의 인스턴스이며, 각 인스턴스의 하이퍼바이저는 시뮬레이션된 하드웨어 환경을 제공합니다. 여기에는 CPU, 메모리, 디스크가 포함됩니다. 이러한 방식으로 가상 디스크는 실제 세계와 마찬가지로 가상 머신 인스턴스의 일부입니다. VM이 삭제되면 가상 디스크도 삭제됩니다.
이 인스턴스 스토리지 모델에서 가상 디스크와 가상 머신 간의 스토리지 관계는 실제로 DAS 스토리지입니다. 그러나 가상 디스크의 기본 구현은 NAS 형태로 구현됩니다. 하이퍼바이저의 역할은 프로토콜 분리(VMFS 또는 NFS)를 구현하는 가상 머신의 하위 계층인 VM 계층의 스토리지 모델을 저장하는 것입니다.
VMFS 프로토콜은 스토리지 리소스의 가상화를 구현한 후 각 VM을 할당합니다.
볼륨 스토리지
인스턴스 스토리지에는 한계가 있으며 개발자는 일반적으로 인스턴스를 분리하려고 합니다. , OS 및 일부 설치된 서버 애플리케이션과 사용자 데이터 등 VM이 재구축될 때 사용자 데이터가 유지될 수 있도록 합니다.
이러한 수요는 볼륨 스토리지라는 또 다른 스토리지 모델을 파생시킵니다. 볼륨은 스토리지의 기본 단위이며 가상 디스크 파티션과 동일합니다. 이는 가상 머신 인스턴스의 일부가 아니며 가상 머신에 대한 외부 저장 장치로 간주될 수 있습니다.
볼륨을 하나의 VM에서 마운트 해제한 다음 다른 VM에 연결할 수 있습니다. 이러한 방식으로 인스턴스 데이터와 사용자 데이터를 분리합니다. OpenStack Cinder는 볼륨 스토리지를 구현한 것입니다.
인스턴스 스토리지와 볼륨 스토리지 외에도 마침내 또 다른 특별한 유형의 가상 스토리지인 객체 스토리지에 대해 언급했습니다.
객체 스토리지
많은 클라우드 애플리케이션은 여러 데이터 센터에 걸쳐 있어야 하는 여러 VM 간에 데이터를 공유해야 하며 객체 스토리지는 이 문제를 해결할 수 있습니다. 이전 기사에서 클라우드 컴퓨팅 IaaS 관리 플랫폼의 기본 기능은 무엇입니까? '에서 객체 스토리지에 대해 언급한 바 있습니다.
객체 스토리지 모델에서 데이터는 버킷에 저장되며, 문자 그대로의 의미 때문에 "버킷"이라고도 합니다. 하드 디스크 비유를 사용할 수 있습니다. 객체는 파일과 같고 스토리지 세그먼트는 폴더(또는 디렉터리)와 같습니다. 객체와 버킷은 URI(Uniform Resource Identifier)를 통해 찾을 수 있습니다.
객체 스토리지의 핵심 설계 아이디어는 실제로 볼륨, 디렉터리, 디스크 등 파일의 물리적 저장 위치인 가상화입니다. 가상화는 파일을 객체로 가상화하는 배럴입니다.
애플리케이션 계층의 경우 데이터에 대한 액세스가 단순화되고 기본 스토리지 기술의 이질성과 복잡성이 보호됩니다.
객체 스토리지 모델
NAS와 객체 스토리지는 각각의 장점을 가지고 있습니다.
물론 NAS 스토리지 기술도 데이터 공유 솔루션이냐고 물으실 수도 있습니다. 문제? 많은 클라우드 환경에서는 크기와 비용상의 이점으로 인해 NAS 대신 개체 스토리지를 사용합니다.
객체 저장소는 여러 노드에 분산되므로 항상 최신 데이터를 사용할 수 있는 것은 아닙니다. 따라서 객체 저장소의 데이터 일관성이 강하지 않습니다. 강력한 일관성 요구 사항이 있는 경우 NAS를 사용할 수 있습니다. 현재 클라우드 컴퓨팅 환경에서는 NAS와 오브젝트 스토리지가 유일한 스토리지 옵션이다.
NAS와 마찬가지로 객체 스토리지도 하드웨어 아키텍처가 아닌 소프트웨어 아키텍처입니다. 애플리케이션은 REST API를 통해 직접 객체 스토리지에 액세스합니다. 공용 객체 스토리지에는 Amazon S3 및 OpenStack의 Swift가 포함됩니다.
결론
실제 클라우드 플랫폼 애플리케이션에서는 실제 상황에 따라 다양한 가상화 스토리지 기술을 합리적으로 사용해야 합니다.
오디오, 비디오, 사진 등과 같은 구조화되지 않은 정적 데이터 파일의 경우 일반적으로 객체 스토리지를 사용합니다.
시스템 이미지 및 애플리케이션의 경우 클라우드 호스트 인스턴스 스토리지 또는 볼륨 스토리지를 사용해야 합니다.
애플리케이션에서 생성된 동적 데이터의 경우 일반적으로 클라우드 데이터베이스를 사용하여 데이터를 관리해야 합니다.