애플리케이션은 기저의 인프라스트럭처를 이용해 데이터를 액세스하고 저장한다. 이 인프라스트럭처의 주요 컴포넌트로는 운영체제(또는 파일 시스템)와 연결, 스토리지 가 있다. 스토리지 디바이스는 호스트 내부에 있거나 외부에 있을 수 있다. 어떤 경우이든 호스트 컨트롤러 카드가 IDE/ATA나 SCSI, 파이버 채널(FC) 같은 미리 정의된 프로토콜을 이용해 스토리지에 액세스한다. IDE/ATA와 SCSI는 개인 컴퓨팅 환경의 내부 스토리지에 많이 사용된다. FC와 iSCSI 프로토콜은 외부 스토리지 디바이스의 데이터를 액세스하는 데 사용한다. 외부 스토리지 디바이스는 호스트에 직접 연결하거나 스토리지 네트워크를 통해 연결할 수 있다. 호스트에 직접 연결된 스토리지를 직접 연결 스토리지(DAS, direct-attached storage)라 한다.
네트워크를 통한 데이터 액세스가 스토리지 네트워킹 기술의 기본을 이루기 때문에, 이 기술을 이해하는 것이 중요하다. 네트워크를 통한 데이터 액세스 방법은 블록 레벨, 파일 레벨, 객체 레벨의 세 가지가 있다.
일반적으로 애플리케이션(또는 운영체제)은 파일 이름과 위치를 지정해 파일 시스템의 데이터를 요청한다. 파일 시스템은 파일 속성을 데이터의 논리적 블록 주소로 매핑한 후 이를 스토리지 디바이스에 요청한다. 스토리지 디바이스는 논리적 블록 주소(LBA)를 실린더-헤드-섹터(CHS) 주소로 변환해 데이터를 추출한다.
블록 레벨 액세스에서는 호스트에 파일 시스템을 생성하고 네트워크를 통해 블록 레벨로 데이터를 액세스한다. 이 경우 로(raw) 디스크나 논리적 볼륨이 파일 시스템을 만들기 위해 호스트에 할당된다.
파일 레벨 액세스에서는 파일 시스템은 별도의 파일 서버나 스토리지 사이드에 생성되고, 파일 레벨 요청이 네트워크를 통해 전달된다. 파일 레벨에서 데이터를 액세스하기 때문에 블록 레벨과 비교해 이 방법의 오버헤드가 더 크다. 객체 레벨 액세스에서는 고유 객체 식별자를 가진 자립적인 객체 단위로 데이터를 액세스한다.
DAS는 스토리지가 직접 호스트에 연결된 구성이다. 호스트의 내부 디스크 드라이브와 직접 연결된 외부 스토리지 어레이가 DAS의 예다. 스토리지 네트워킹 기술이 인기를 얻고 있지만, DAS는 여전히 개인 컴퓨팅과 워크그룹 같은 작은 환경에서 지역화된 데이터 액세스에 적합하다. DAS는 호스트 관점에서의 스토리지 위치에 따라 내부와 외부로 나뉜다.
내부 DAS 구성에서는 스토리지 디바이스가 직렬 또는 병렬 버스로 호스트에 연결된다. 물리적 버스는 길이에 제한이 있으며 높은 연결 속도가 나오려면 거리가 짧아야 한다. 또한 대부분의 내부 버스는 제한된 개수의 디바이스만 지원하며 호스트의 공간을 많이 차지해, 다른 컴포넌트를 유지하기가 어렵다.
반면 외부 DAS 구성에서 호스트는 외부 스토리지 디바이스에 직접 연결되고 데이터는 블록 레벨로 액세스된다. 호스트와 스토리지 디바이스 간의 통신은 주로 SCSI나 FC 프로토콜을 사용한다. 내부 DAS와 비교해 외부 DAS는 디바이스 거리와 개수의 한계를 극복하며 스토리지 디바이스를 중앙 집중적으로 관리할 수 있게 해준다.
DAS는 스토리지 네트워킹 구성보다 초기 투자 비용이 낮다. DAS 구성은 간단하며 쉽고 빠르게 배치할 수 있다. 호스트 OS 같은 호스트 기반 툴을 사용해 설정을 관리할 수 있으며, 이는 스토리지 관리를 간편하게 해준다. DAS는 간단한 아키텍처이기 때문에 관리 작업이 적고 설정할 하드웨어와 소프트웨어가 적다.
그러나 DAS는 확장성이 좋지 않다. 스토리지 어레이는 제한된 개수의 포트만 갖기 때문에 스토리지에 연결할 수 있는 호스트의 개수가 제한된다. 저장 용량을 모두 사용하면 서비스 가용성에 문제를 일으킬 수 있다. DAS는 프론트엔드 포트를 공유하기 때문에 리소스를 최적으로 사용하기 어렵다. DAS 환경에서는 사용하지 않는 리소스를 쉽게 재할당할 수 없기 때문에 많이 사용되는 스토리지 풀과 적게 사용되는 스토리지 풀이 나뉜다.
애플리케이션에 대한 스토리지의 요구사항을 결정하기 위해서는 스토리지 용량부터 결정해야 한다. 스토리지 용량은 애플리케이션이 사용하는 파일 시스템과 데이터베이스의 개수와 크기로 추정할 수 있다. 피크 워크로드(peak workload) 시 발생하는 I/O 크기와 I/O 특징, I/O 개수 역시 디스크 성능과 I/O 응답 시간, 스토리지 시스템의 디자인 결정에 영향을 미치는 요소다. I/O 블록 크기는 애플리케이션을 구축하는 파일 시스템과 데이터베이스에 따라 결정된다. 데이터베이스 환경에서 블록 크기는 사용하는 데이터베이스 엔진과 환경 변수로 조정한다.
I/O에 대한 디스크 서비스 시간(Ts)은 디스크 성능의 중요 지표다. Ts와 디스크 이용률 속도(U)를 사용해 애플리케이션의 I/O 응답 시간을 결정할 수 있다. 앞에서 언급했듯이 총 디스크 서비스 시간(Ts)은 탐색 시간(T)과 회전 지연 시간(L), 내부 전송 시간(X)의 합이다.
Ts = T + L + X
다음과 같은 스펙을 지닌 디스크의 예이다.
- 랜덤 I/O 환경에서 평균 탐색 시간이 5ms이다. 따라서 T = 5ms이다.
- 디스크 회전 속도는 15,000rpm(또는 250rps)이다. 여기서 회전 지연 시간(L)을 결정할 수 있는데, 이는 한 번 회전하는 시간의 1/2로 L = (0.5/250rps)이다.
- 내부 데이터 전송 속도는 40MB/s로 내부 전송 시간(X)은 I/O의 블록 크기로부터 유추할 수 있다. 예를 들어 블록 크기가 32KB인 경우 X = 32KB/40MB이다.