Storage (File, Block, Object)

insukL·2026년 1월 17일

아키텍처 구성 중에 목표 프로젝트가 데이터를 다루는 만큼 데이터를 저장하는 장소에 대한 고려가 필요했다. 다양한 서비스를 활용할 수 있겠지만 결국 클라우드냐 온프레미스냐로 나눠서 고려하게 되었다. 그중에서 특히 시놀리지와 같은 NAS 장비를 홈에서 구축하는 방법에 관심이 생겼다. 비교를 위해서는 기존에 고려한 클라우드(S3) 방식과 어떤 차이가 있는지 공부가 필요하다 느꼈고, 아래와 같이 학습과 정리를 진행했다.

왜 Storage?

기본적으로 저장소라 말하는 스토리지는 컴퓨터 사용자에게 익숙한 용어다. 기본적으로 컴퓨터는 메인 프로세서와 저장 장치를 가지고, 우리는 이를 활용해서 데이터를 생산, 가공하고 저장하게 된다. 여기서 조금 더 확장해서 PC가 아닌 여러 명의 사용자가 접근하는 커다란 시스템으로 바꿔보자.

그림으로 간단하게 표현해봐도 벌써 머리가 아프다. 저장소는 적고 제한적이며, 저장 공간을 늘리겠다고 디바이스 자체를 늘려야 하고, 늘려봤자 기존 디바이스는 추가한 디바이스의 저장소를 참조할 수 없다. 또 동시에 저장소에 접근하는 사람은 여러 명이고 정보가 파편화되고.. 등등 다양한 문제가 야기될 것이 눈에 뻔하다. 그래서 기존에 디바이스에 묶여 있는 구조가 아니라 컴퓨팅과 스토리지를 분리하는 아키텍처가 요구되기 시작한다.

데이터 스토리지 아키텍처 (Data Storage Architecture)

시작은 단순하게 호스트가 되는 디바이스와 저장 장치가 되는 스토리지를 분리하자. 그리고 호스트에서 사용할 스토리지에 직접 연결해 스토리지에 저장, 읽기, 수정 등을 진행한다. 이렇게 호스트와 스토리지를 연결해서 데이터를 저장하는 방식을 DAS(Direct Attached Storage)라고 한다.

어떻게 보면 스토리지 아키텍처에서 가장 단순한 유형의 시스템으로, 사실상 기존 스토리지 아키텍처와 동일한 아키텍처다. 직접 연결되어 있으니 장단점이 크게 변하진 않는다.

앞선 DAS 아키텍처에서 어떤 문제를 해결해야 더 많은 저장 공간을 확보하고, 호스트의 문제가 스토리지에 영향을 주는 것을 막을 수 있을까? 호스트와 스토리지의 연결을 느슨하게 만들면 된다. 직접 연결을 아닌 방법으로 네트워크를 사용할 수 있는데 이런 방법이 NAS (Network Attached Storage)다.

  • 호스트는 네트워크를 통해 데이터를 저장, 접근, 관리한다 (네트워크 지연만큼 성능 저하, 비용 증가 발생)
  • 파일 서버 혹은 파일 게이트웨이는 파일 제공을 전담하는 운영체제를 통해 LAN(Local Area Network)에 연결된다
  • NAS 장치(스토리지)는 주로 고유 IP 주소를 가지는 단일 노드로서 동작한다 (네트워크 병목이 발생할 수 있다)
  • 설치 및 유지보수 관리가 쉽다

확실히 DAS에 비해 유연한 연결이 허용된다. 네트워크를 통해 스토리지를 중앙 집중 방식으로 파편화를 막을 수 있게 된다. 파일 서버가 별도로 요구되지만 이를 기반으로 LAN의 연결에 따라 저장 장치를 좀 더 손쉽게 관리가 가능해진다. 다만 네트워크 상에서 하나의 노드로 동작하면서, 호스트의 접속이 많아지면 성능 저하로 직결되는 문제가 있다. 거기에 파일 시스템으로 공유되기 때문에 단숨에 통째로 쉽게 보안 위협에 노출된다.

여기서 스토리지 장치, 서버 혹은 다른 여러 장치를 LAN이 아닌 전용 네트워크로 묶어서 느슨한 연결을 구성할 수도 있는데, 이런 방식을 SAN (Storage Area Network)라고 한다. SAN의 경우 Fiber Channel Switch를 통해 연결을 진행하고, 이를 통해서 고속 데이터 네트워크를 제공한다.

  • 호스트는 SAN 전용 네트워크를 통해 스토리지에 접근한다
  • 스토리 전용 네트워크 구성으로 네트워크 복잡도가 높고 초기 비용이 높다
  • 광 스위치 뿐만 아니라 광 케이블을 통한 빠른 전송 속도 및 안정적인 시스템을 제공한다

파일은 어떻게 관리하는가?

지금까지 스토리지가 어떻게 구성되는지 아키텍처를 살펴봤다. 여기서 우린 저렇게 다수의 저장 장치를 연결하면서 호스트에서 이를 어떻게 접근하고 관리할지에 대한 의문이 생긴다. 대표적으로 DBMS와 같은 어플리케이션 서버를 사용할 텐데, 이 방법만 있진 않을 텐데 말이다.

우선 각 아키텍처별로 정리하자면 어플리케이션 서버 내지 파일 서버를 통해 저장되어 있는 데이터를 관리하게 된다. 각 서버는 다양한 서비스를 통해 사용할 수 있을 것이니 패스하도록 하겠다. 결과적으로 우리가 알 수 있는 것은 앞선 아키텍처들처럼 각 물리적으로 스토리지를 구성하더라도, 이를 관리하기 위해 별도의 서버 구성이 필요하다는 점이다.

데이터 스토리지 유형

별도의 서버 구성이 필요하다면 그 서버들은 어떤 유형으로 나뉠지 한번 알아보자. 데이터를 어떤 형태로 저장하는지에 따라 분류하게 되는데, File Storage / Block Storage / Object Storage로 구분할 수 있다.

파일 스토리지 (File Storage)

파일 스토리지는 우리가 흔히 볼 수 있는 데이터 스토리지 유형으로 폴더가 있고, 폴더 내 파일이 있는 형태로 관리된다. 흔히 우리가 사용하는 PC에서 활용되는 방식으로 가장 익숙한 방식이라고 할 수 있다. 다만 디렉토리의 Depth가 깊을수록 파일의 경로가 길어지고, 디렉토리나 폴더의 계층 구조를 지키는 과정에서 데이터 관리가 어려워질 수 있다.

  • 사용자 친화적인 인터페이스를 제공
  • 확장하기 쉬운 아카이브
  • 데이터 보호에 강한 면모 (사용 기간이 길어 그에 따른 표준화 기술 및 프로토콜이 많다)
  • 파일별로 날짜, 시간 등 메타 데이터가 존재함
  • 주로 NAS (Network Attached Storage)에서 활용

블록 스토리지 (Block Storage)

블록 스토리지는 데이터를 고정된 크기의 블록으로 구분하여 단위별로 저장하는 방식이다. 블록 크기는 설정에 따라 킬로 바이트 단위에서 메가바이트까지도 이른다(일반적으로 256KB ~ 4MB 정도). 블록에 각각 고유한 주소 내지 번호를 부여하며, 이를 기반으로 테이블에 로깅해서 추적하게 된다. 이를 통해 낭비되는 공간 없이 저장할 수 있고, 테이블을 통해 신속하게 검색이 가능하다.

  • 테이블을 통해 빠른 검색을 제공하고, 블럭 기반의 다중 경로를 통해 성능 향상을 꾀할 수 있다
  • 블록 단위를 사용해 현재 데이터를 모두 제거하지 않고, 일부에 대해서만 변경이 가능하다
  • 장애 발생에 따라 빠르게 백업 데이터를 찾고 복구할 수 있다
  • 다른 형태의 스토리지에 비해 복잡한 구조를 가진다
  • 유지 보수 및 관리가 어려워 외부 서비스에서 더 높은 비용이 발생할 수 있다
  • 블럭 식별자를 사용하므로 최대한 적은 양의 메타 데이터를 저장하며, 이를 통해 전송 중 오버헤드를 최소화한다

오브젝트 스토리지 (Object Storage)

오브젝트 스토리지는 오브젝트라 하는 단위로 데이터를 각각 나누고 저장소에 저장하는 방식이다. 오브젝트는 키와 문서, 이미지 또는 데이터, 관련된 메타 데이터로 구성된다. 계층 구조가 아닌 Flat한 구조를 가지며, 고유 식별자를 통해 스토리지 내에서 객체의 주소를 찾아낼 수 있다. 구조상 데이터 검색 및 읽기 속도가 빠르나, 메타 데이터로 인해 입출력 오버헤드를 가지게 된다.

  • 각 오브젝트는 하나의 모듈처럼 동작하며, 인가 / 보안 등 정보가 담긴 메타 데이터를 통해 독립 저장소 역할을 같이 수행한다
  • 대부분 HTTP와 REST API를 지원한다
  • 비정형 데이터를 관리하기 용이하다
  • Flat한 구조를 통해 거의 무한한 확장성을 가진다
  • 각 오브젝트가 독립적인 모듈로 동작하는 점과 고유 식별자를 기반으로 여러 위치 분산하여 저장소를 운영할 수 있다
  • 데이터 수정이 불가능하며, 필요시 오브젝트 전체를 수정해야 한다
  • 전통적인 데이터베이스(RDB)와 잘 연동되지 않는다

마무리

NAS라던가 오브젝트 스토리지라던가 이름은 많이 들어봤지만 정확히 어떤 용도로 사용되는지 몰랐는데, 이번 기회를 통해 공부해 보게 되었다. NAS에서 오브젝트 스토리지가 가능할까? 하는 궁금증이 있었는데, 공부하면서 결국 NAS는 스토리지 아키텍처의 한 방법이고 오브젝트 스토리지는 데이터 스토리지의 한 유형으로 불가능한 방법은 아니었다. 다만 데이터의 유형이나 사용 방식에 따라 좀 더 적합한 방법이 나뉘게 될 테니 좀 더 고민을 하게 될 것 같다.

참고한 사이트

https://www.purestorage.com/kr/knowledge/what-is-data-storage.html
https://blog.naver.com/suin2_91/223030481792
https://developers-haven.tistory.com/82
https://aws.amazon.com/ko/compare/the-difference-between-block-file-object-storage/

블로그 이전을 위해 Tistory와 병행하여 작성을 진행하고 있습니다.
https://is42.tistory.com/

profile
데이터를 소중히 여기는 개발자가 되고 싶습니다

0개의 댓글