스토리지에 관한 짧은 설명

스토리지 혹은 저장소(貯藏所)로 외래어 표기하거나 번역하는 Storage는 IT에서 어떤 정보를 수록하고 보관하여 필요할 때 조회할 수 있는 모든 장치를 말합니다. 일반적으로 디스크 Disk와 테이프 Tape로 크게 물리적으로 나누어 생각해 볼 수 있고, MVMe를 포함하는 SSD는 디스크의 범주 내에서 다루는 것이 일반적입니다.

스토리지 서비스는 크게 세가지로 나뉜다

블록 Block, 파일 File, 오프젝트 Object 이렇게 3가지로 나누어 구분합니다. 각 스토리지를 하나의 서버 혹은 서비스라고 바라보고, 내가 그 서비스를 받는 쪽이라고 생각하면, 구분이 매우 쉬워 집니다. 물론 세상에는 이 세 가지로 가두어 설명할 수 없는 스토리지 서비스가 있을 수 있습니다. 대체로 이 범주에 들어간다는 의미입니다.

접근 방식 접근 경로 스토리지 종류
Block level access /dev/dsk/c0t0d0s0
/dev/md0
/dev/sda1
Block
File level access server:/path File
Object level access https://url/path/object Object

그림으로 설명

아래의 그림과 같이 우리가 구분하는 스토리지의 역할을 분별해 낼 수 있습니다. 단일 서버 시스템에서 각기 다른 스토리지 서비스가 동작한다면 아래와 같은 개별성을 가지게 됩니다. (예술적 감성은 부족하지만, 나름 최선을 다해 그려 보았습니다)

storage services in a system

그림 아래에서부터 위로 오르며 설명을 하겠습니다.

디스크 disk

물성이 있는 디스크가 있습니다. 스핀들 디스크(spindle disk) 혹은 자기 디스크(magnetic disk)라고도 불리우는 이 디스크는 여러분께서 손에 쥘 수 있는 물건입니다. 혹은 이제는 널리 사용되고 있는 SSD(NVMe)도 엄밀하게 따지고 들어가면 디스크의 한 종류라고 할 수 있습니다.

이 디스크가 기본적으로 block device(block storage)입니다.

블록 스트로지 block storage

Oracle Database의 경우처럼 이 block device(이 때에는 raw disk, 혹은 raw device라고 부리기도 합니다)를 직접 접근(access)하여 운영체제의 간섭을 최소화하고 스스로 모든 것을 책임지는 서비스를 구성하기도 합니다. 하지만, 대부분의 경우는 파일 시스템(filesystem)을 작성하여 운영체제에서 마운트해서 사용하게 됩니다. 이 과정은 end-user에게 설명할 때 ‘포멧한다’라고 말하는 것이 가장 쉽게 전달하는 방식이 됩니다.

파일 시스템이 작성되면 block storage로서의 필요한 모습은 모두 갖추었습니다. 그리고 block storage는 기본적으로 운영체제가 동작하는 기계에 종속됩니다.

파일 스토리지 file storage

작성된 파일 시스템을 기반으로 특정 TCP/UDP 서비스를 동작시키는 데몬(daemon)을 띄워 원격의 클라이언트들(clients)이 약속된 프로토콜(protocol)로 데몬이 동작하는 서버의 파일 시스템에 접근하여 그 공간을 사용할 수 있게 하는 것이 file storage의 가장 간략한 설명일 수 있겠습니다.

소위 언급되는 공유 스토리지가 이 범주 내에 있습니다. 약속된 프로토콜은 대표적으로 NFSCIFS/SMB가 있습니다.

엔터프라이즈 환경에서는 NFS(network file system)이 일반적입니다. 1984년 Sun Microsystems에 의하여 설계되었고, 널리 사용되어 업계 표준이 되었습니다. Sun Microsystems는 ‘the Network is the Computer‘라는 슬로건을 사명(使命)처럼 여기며 많은 유산을 우리 일상에 배풀고 사라졌습니다.

사무를 위한 로칼 네트워크에서는 CIFS/SMB가 주로 쓰일 것입니다. 윈도의 ‘공유’도 여기에 해당되며 응용과 활용의 범위가 상당히 넓습니다.

어떤 서비스를 설계할 때 복잡한 파일의 교환 문제도 file storage를 채택하고 인증체계만 정리하면 간단히 해결할 수 있습니다.

오브젝트 스토리지 object storage

여러 디스크를 가지고 있는 서버 목적의 기계가 있고 그 서버가 HTTPD(웹 데몬)를 동작시키고 서로 약속된 REST API를 지원해 주면 object storage가 됩니다. 기본적으로 웹 서비스입니다.

물론, 현대적인 대규모 object storage 설계는 무척 복잡합니디만, 간략히 하면 위와 같습니다.

  • 그래서 object에 접근하는 경로가 웹 주소과 같습니다. https://address.url/path/to/object
  • 그래서 POST/GET과 같은 정의가 따릅니다. 그래서 서비스 설게에 제약이 상당히 낮습니다.
  • 그래서 클라우드 네이티브한 환경에서 상당히 어울립니다.

Google Cloud의 GCS(Google Cloud Storage), Microsoft Azure의 Blob Storage, 그리고 AWS의 Amazon S3(Simple Storage Service)가 여기에 해당됩니다.