드라이브 외관

오늘날 컴퓨팅에서 더 일반적이면서도 더 까다로운 기본 개념 중 하나는 드라이브 외관(drive appearance)의 개념, 즉 하드 드라이브처럼 보이는 무언가입니다. 이는 단순하게 들릴 수 있고, 대부분은 그렇지만, 까다로울 수 있습니다.
먼저, 하드 드라이브란 무엇인가요. 이것은 간단해야 합니다. 우리는 일반적으로 수십 년간 표준 3.5인치 및 2.5인치 폼 팩터로 제조된 전통적인 회전 디스크 Winchester 장치를 의미합니다. 이들은 회전하는 플래터, 앞뒤로 움직이는 드라이브 헤드를 포함하며 ATA 또는 SCSI 커넥터 같은 것을 사용하여 연결됩니다. 우리 대부분은 손으로 하드 드라이브를 들어 그것이 하드 드라이브임을 확신할 수 있습니다. 이것이 우리가 드라이브의 물리적 실체라고 부르는 것입니다.
그러나 컴퓨터에게는 드라이브의 케이싱이나 커넥터가 보이지 않습니다. 컴퓨터는 전자 장치를 통해 드라이브를 디지털 방식으로 “보아야” 합니다. 이는 인간이 물리적 드라이브를 보는 방식과 매우 다릅니다. 컴퓨터에게 하드 드라이브는 가장 기본적인 물리 레벨에서 ATA, SCSI 또는 파이버 채널(Fibre Channel) 장치로 나타나며, 일반적으로 더 높은 레벨에서 블록 디바이스로 추상화됩니다. 이것이 우리가 물리적 외관이 아닌 논리적 외관이라고 부르는 것입니다. 여기서의 목적상, 이러한 모든 드라이브 인터페이스를 블록 디바이스로 생각할 것입니다. 이들은 차이가 있지만, 아주 미미하며 이 논의에서 중요하지 않습니다. 중요한 것은 컴퓨터가 하드 드라이브로 인식하는 표준 인터페이스 또는 밀접하게 관련된 인터페이스 세트가 있다는 것입니다.
여기서 논리적 드라이브 외관에 대해 생각하는 또 다른 방법은, 컴퓨터에게 하드 드라이브처럼 보이는 모든 것이 컴퓨터가 파일시스템으로 포맷할 수 있는 무언가라는 것입니다. 파일시스템은 드라이브 자체가 아니라, 배치될 드라이브를 필요로 합니다.
여기서 가장 중요한 개념은 인터페이스입니다. 컴퓨터에게 진정으로 하드 드라이브로 인식되는 것은 “하드 드라이브 인터페이스를 구현하는 모든 것”입니다. 이것은 단순하면서도 강력한 개념입니다.
표준 인터페이스의 사용 덕분에 플래시 메모리를 가져다가, 표준 프로토콜(오늘날 ATA 및 SCSI의 SATA 및 SAS 구현이 이를 위해 일반적입니다)로 제공하는 디스크 컨트롤러에 연결하여, 컴퓨터에게는 전통적인 Winchester 드라이브와 똑같이 보이고 작동하지만 물리적으로는 아무것도 공통점이 없는 SSD를 만들 수 있었습니다. 익숙한 물리적 폼 팩터로 제공될 수도 있고 그렇지 않을 수도 있지만, 플래터와 드라이브 헤드는 확실히 없습니다. 전통적인 하드 드라이브와 현대 SSD의 작동 방식을 보면 같은 목적을 공유한다고 추측하기 어려울 것입니다.
이 개념은 많은 장치에 적용됩니다. 분명히 SD 카드와 USB 메모리 스틱도 같은 방식으로 작동합니다. 그러나 중요하게도, 이것이 하드 드라이브 위의 파티션이 작동하는 방식입니다. 파티셔닝 시스템은 한쪽에서 드라이브 외관 인터페이스 개념을 사용하여 장치에 적용될 수 있고, 다른 쪽에서는 사용하려는 것(일반적으로 파일시스템)에 드라이브 외관 인터페이스를 제공합니다. 양쪽 모두에서 드라이브 외관 인터페이스를 사용하는 무언가라는 이 아이디어는 매우 중요합니다. 이렇게 함으로써 복잡한 스토리지 시스템을 만들기 위한 균일하고 범용적인 빌딩 블록 시스템을 얻습니다!
이 “드라이브 입력, 드라이브 출력” 개념은 여러 경우에서 볼 수 있습니다. 아마도 가장 잘 알려진 것은 RAID입니다. RAID 시스템은 하드 드라이브 어레이를 가져다가, 드라이브들이 팀으로 작동하도록 여러 알고리즘 중 하나를 적용하고, 그것을 “스택” 의 다음 시스템에 단일 드라이브 외관으로 제공합니다. 이 캡슐화가 RAID에 강력함을 부여합니다. 스택에서 더 위에 있는 시스템들이 RAID 어레이를 보면 문자 그대로 하드 드라이브를 봅니다. 드라이브 어레이를 보지 못하고, RAID 아래에 무엇이 있는지 모릅니다. 그들은 RAID 시스템이 제공하는 결과 드라이브(들)만 봅니다.
RAID 시스템은 임의 수의 드라이브를 가져다가 표준 드라이브로 제공하기 때문에 이론적으로 원하는 만큼 RAID를 겹쳐 쌓을 수 있습니다. 물론 이것을 크게 하는 것은 매우 비현실적입니다. 그러나 중첩 RAID 어레이가 가능한 것은 바로 이 개념을 통해서입니다. 예를 들어, 많은 물리 하드 드라이브를 쌍으로 나누고 각 쌍을 RAID 1 어레이로 구성하면, 각 결과 어레이는 단일 드라이브로 제공됩니다. 그 결과 논리 드라이브 각각을 RAID 0 같은 다른 RAID 어레이로 결합할 수 있습니다. 이것이 RAID 10이 구축되는 방법입니다. 더 나아가 여러 RAID 10 어레이를 가져다가 모두 다른 RAID 시스템에 제공하여 다시 RAID 0으로 구성하면 RAID 100이 되고 이를 무한히 반복할 수 있습니다.
마찬가지로 논리 볼륨 레이어는 RAID와 같은 종류의 캡슐화를 사용하여 마법을 부립니다. Linux의 LVM과 Windows의 동적 디스크(Dynamic Disks) 같은 논리 볼륨 관리자는 논리 디스크 위에 위치하여 디바이스를 유연하게 확장하거나 스냅샷을 활성화하는 것과 같은 강력한 관리 기능을 제공하는 레이어를 제공한 다음, 스택의 다음 레이어에 논리 디스크(드라이브 외관 인터페이스라고도 함)를 제공합니다.
드라이브 외관의 균일한 특성 덕분에 스택은 어떤 순서로도 구성될 수 있습니다. 논리 볼륨 관리자가 RAID 위에 위치할 수도 있고, RAID가 논리 볼륨 관리자 위에 위치할 수도 있으며, 물론 어느 하나 또는 둘 다를 건너뛸 수도 있습니다!
드라이브 외관 또는 논리 하드 드라이브의 개념은 그 단순함에서 강력하며, 필요에 따라 스토리지 시스템을 원하는 방식으로 커스터마이징할 수 있는 큰 잠재력을 제공합니다.
물론 논리 드라이브 개념의 다른 용도도 있습니다. 가장 인기 있으면서도 가장 오해받는 것 중 하나가 SAN입니다. SAN은 하나 이상의 물리 디스크를 가져다가 네트워크를 통해 논리 드라이브(SAN의 이 논리 드라이브 제공을 LUN이라 함)로 제공하는 장치에 불과합니다. 이것이 문자 그대로 SAN의 전부입니다. 대부분의 SAN은 최종 LUN 또는 디스크 외관을 네트워크에 제공하기 전에 RAID 레이어와 논리 볼륨 관리자 레이어를 통합하겠지만, SAN이 되기 위해 이것이 반드시 필요한 것은 아닙니다.
이것은 물론, 여러 SAN LUN이 단일 RAID에서 결합되거나 논리 볼륨 레이어를 통해 제어될 수 있음을 의미합니다. 그리고 물론 SAN LUN, 물리 하드 드라이브, RAID 어레이, 논리 볼륨, 파티션… 모두 파일시스템으로 포맷될 수 있음을 의미합니다. 이들은 모두 같은 결과를 달성하는 서로 다른 방법입니다. 모두 동일하게 작동합니다. 모두 드라이브 외관 인터페이스를 공유합니다.
이 모든 부분이 어떻게 결합되는지에 대한 실제 예를 들자면, 엔터프라이즈 환경에서 가장 일반적으로 볼 수 있는 “스토리지 스택” 중 하나를 살펴보겠습니다. 물론 스토리지 스택을 구축하는 방법은 여러 가지가 있으므로 귀하의 것이 다르더라도 놀라지 마십시오. 스택의 맨 아래에는 거의 항상 솔리드 스테이트 드라이브를 포함할 수 있는 물리 하드 드라이브가 있습니다. 이들은 SAN 내에 물리적으로 위치합니다. SAN을 떠나기 전에 스택은 드라이브의 실제 스토리지 레이어, 해당 드라이브를 단일 엔티티로 결합하는 RAID 레이어를 포함할 가능성이 높습니다. 그런 다음 증가 및 스냅샷 같은 기능을 허용하는 논리 볼륨 레이어가 있습니다. 그런 다음 LUN으로 제공되는 SAN과 서버 사이의 물리적 경계가 있습니다. LUN에는 서버/운영 체제 측 경계점에서 논리 볼륨 관리자가 적용됩니다. 그런 다음 LUN 위에 파일시스템이 있으며, 이것이 최종 단계입니다. 파일시스템은 드라이브 외관 인터페이스가 아닌 파일 인터페이스를 제공하기 때문입니다.
드라이브 외관, 즉 논리 드라이브를 이해하고 이것이 어떻게 컴포넌트들이 서로 인터페이스하여 복잡한 스토리지 서브시스템을 구축하는지 이해하는 것은 IT 이해의 핵심 빌딩 블록이며, 많은 IT 활동에 광범위하게 적용됩니다.
