NCQ와 Flash Drive

NCQ (Native Command Queuing)

수신된 I/O의 실행 순서를 정해 불필요한 헤드 움직임을 줄여 성능을 개선하려는 목적으로 사용되는 기술.

  • 탐색 시간 최적화 알고리즘: 헤드 움직임을 최적화 하는 방향으로 명령 실행
  • 액세스 시간 최적화 알고리즘: 탐색 시간과 회전 지연 시간으로 성능을 최적화

Flash Drive

플래시 드라이브의 일종인 SSD(solid state drive)는 반도체 기반 solid state memory를 사용해 데이터를 저장하고 추출한다.

기업용 플래시 드라이브(EFD, Enterprise Flash Drive)는 기존 디스크 드라이브와 비교해 30배 높은 데이터 처리량과 10분의 1정도의 응답속도를 제공하며, 전력 소모량도 적다.

flash drive component & architecture

기존 디스크 드라이브와 호환을 위해 같은 커넥터를 사용한다.

구성요소

  • 컨트롤러 - 드라이브 동작 관리.
  • I/O 인터페이스 - 전력, 데이터 액세스 제공.
  • Mass Storage - 비휘발성 NAND 메모리 칩 배열. 데이터 저장.
  • Cache - data transaction의 임시 공간 혹은 버퍼.

채널

플래시 드라이브는 컨트롤러와 플래시 메모리 칩 사이에 다중 병렬 I/O 채널을 사용한다. 메모리 칩과 채널을 많이 사용할 수록 드라이브 내부 대역폭이 증가하여 성능이 좋아진다. 보통 8~24 채널을 사용한다.

메모리 칩

논리적 블록과 페이지 단위로 구성된다.

  • page

플래시 드라이브에서 읽거나 쓰는 가장 작은 object이다. 표준 크기는 없지만 일반적으로 4KB, 8KB, 16KB를 사용한다. LBA(logical block address)를 사용하는 디스크 드라이브와 같은 방식을 제공하기 위해 여러 데이터 블록 위에 연속적으로 걸쳐 있게 된다. 8 x 512B = 4KB 이므로, 4KB page는 연속된 주소의 8개의 데이터 블록을 가진다.

  • block

전통적인 하드 디스크 드라이브의 섹터에 있는 블록과 다른 개념이다. 여러 page를 그룹으로 묶어 block을 만든다. 한 block 당 32, 64, 혹은 128개의 page를 갖는다.

주요 특징

NAND Flash Memory

랜덤 데이터 액세스에 유리하다. 잘못된 블록이 탐지되면 ECC(Error Correcting Code)를 사용해서 데이터 무결성을 유지한다.

SLC(Single Level Cell)

MLC(multi-level cell)은 셀당 여러 비트를 저장할 수 있고, single-level cell은 한 비트만 저장할 수 있다. 하지만 SLC가 성능과 지속성 면에서 우수하다. 읽기 속도는 SLC가 MLC보다 두배 정도 빠르고, 쓰기 속도는 4배 정도 빠르다.

쓰기 레벨링

플래시 드라이브의 수명을 최대화 하기 위해 각 메모리 셀을 균일하게 사용하는 것이 좋다. 자주 업데이트 되는 데이터를 각각 다른 위치해 기록해 같은 셀을 계속 사용하는 것을 방지하는 것이 좋다.

728x90
반응형

'OS & Container > Storage' 카테고리의 다른 글

RAID 레벨  (0) 2022.03.15
RAID Array 구성요소, 기술  (0) 2022.03.08
데이터 액세스와 DAS  (0) 2022.02.27
디스크 드라이브 성능  (0) 2022.02.27
논리적 볼륨 매니저(LVM, Logical Volume Manager)  (0) 2022.02.26

호스트에서 데이터 액세스

스토리지 디바이스는 호스트 내부에 있거나 외부에 있을 수 있지만, 어떠한 경우든 호스트 컨트롤라 카드가 IDE/ATA나 SCSI, 파이버 채널같은 정의된 프로토콜을 이용해 스토리지에 접근한다. 파이버 채널과 iSCSI는 외부 스토리지 디바이스의 데이터에 접근하는데 사용된다. 외부 스토리지 디바이스는 호스트에 직접 연결하거나 스토리지 네트워크를 사용해 연결할 수 있다. 호스트에 직접 연결한 스토리지를 DAS(Direct Attached Storage)라고 한다.

일반적으로 애플리케이션이 파일 시스템의 데이터를 요청하면, 파일 시스템은 파일 속성을 논리적 블록 주소(LBA)로 변환해 스토리지 디바이스에 요청한다. 스토리지 디바이스는 LBA를 실린더-헤드-섹터(CHS) 주소로 변환해 데이터를 가져온다.

블록 레벨 액세스에서는 호스트에 파일 시스템을 생성하고 네트워크를 통해 블록 레벨로 데이터에 접근한다. 이 경우 raw 디스크나 논리적 볼륨이 파일 시스템을 만들기 위해 호스트에 할당된다.

파일 레벨 액세스에서 파일 시스템은 별도의 파일 서버나 스토리지 사이드에 생성되고, 파일 레벨 요청이 네트워크를 통해 전달된다. 파일 레벨에서 데이터를 접근하므로 블록 레벨 접근보다 오버헤드가 크다.

객체 레벨 액세스에서는 고유 식별자를 가진 객체 단위로 데이터에 접근한다.

직접 연결 스토리지(DAS)

DAS는 스토리지가 직접 호스트에 연결된 구성이다. 호스트 관점에서의 스토리지 위치에 따라 내부와 외부로 나뉜다.

내부 DAS

스토리지 디바이스가 직렬 또는 병렬 버스로 호스트에 연결된다. 물리적 버스는 길이에 제한이 있으며, 길이가 짧을수록 높은 연결 속도가 나온다. 대부분의 내부 버스는 제한된 개수의 디바이스만을 지원하고, 공간을 차지한다는 단점이 있다.

외부 DAS

호스트를 외부 스토리지 디바이스에 직접 연결하고, 데이터는 블록 레벨로 접근한다. 통신 프로토콜은 주로 SCSI나 FC를 사용한다. 호스트 외부에서 디바이스를 중앙 집중형식으로 관리할 수 있는 장점이 있다.

DAS의 장점과 한계

DAS는 네트워킹 구성보다 초기 투자 비용이 낮고, 쉽고 빠르다는 장점이 있다. 하지만 확장성이 좋지 않다는 단점이 있으며, 프론트엔드 포트를 공유하기 때문에 리소스를 최적으로 사용하기 어렵다. 사용하지 않는 리소스를 쉽게 재할당 할 수 없으므로 스토리지 풀마다 사용량에 차이가 발생한다.

728x90
반응형

'OS & Container > Storage' 카테고리의 다른 글

RAID 레벨  (0) 2022.03.15
RAID Array 구성요소, 기술  (0) 2022.03.08
NCQ와 Flash Drive  (0) 2022.03.02
디스크 드라이브 성능  (0) 2022.02.27
논리적 볼륨 매니저(LVM, Logical Volume Manager)  (0) 2022.02.26

디스크 드라이브 성능

디스크 서비스 시간

디스크 서비스 시간(disk service time): I/O 요청을 완료하는 데 걸리는 시간. 탐색 시간(seek time)과 회전 지연 시간(rotational latency), 데이터 전송 속도(data transfer rate)에 영향을 받는다.

탐색 시간

탐색 시간(seek time)은 엑세스 시간(access time)이라고도 하며, R/W 헤드를 지름 방향(접선과 수직인 방향)으로 움직여 위치시키는 것을 말한다.

탐색 시간 스펙으로 다음과 같이 있다.

  • 풀 스트로크(full stroke): R/W head를 0번에서 마지막으로 움직이는데 걸리는 시간
  • 평균: 랜덤 트랙으로 R/W head를 움직이는데 걸리는 시간. 보통 풀 스트로크의 1/3이다.
  • 트랙에서 트랙: 인접한 트랙으로 R/W 헤드를 이동하는데 걸리는 시간

각 스펙은 밀리초 단위로 측정하며, 제작사에서 명시한다. 최신 디스크의 경우 평균은 3~15 밀리초이다.

short-stroking

적은 실린더를 사용하여 용량을 줄이고 탐색 시간을 줄이는 방법.

회전 지연 시간

플래터가 회전하여 R/W헤드 아래에 요청한 데이터가 위치하기까지의 시간. 스핀들의 회전 속도에 영향을 받으며 밀리초 단위로 측정된다. 평균 지연 시간은 한 바퀴를 회전하는 시간의 1/2이다.

15,000 rpm(250rps) 드라이브의 평균 회전 시간은 1 / 250 / 2 = 2 밀리초이다.

데이터 전송 속도

단위 시간동안 드라이브가 HBA(Host Bus Adapter)로 전송할 수 있는 데이터의 양

읽기 연산에서는 플래터 -> R/W헤드 -> 드라이브 내부 버퍼 -> 드라이브 인터페이스 -> HBA로 이동한다. 쓰기 연산에서는 HBA -> 드라이브 인터페이스 -> 드라이브 내부 버퍼 -> R/W헤드 -> 플래터로 이동한다.

R/W연산에서 데이터 전송 속도는 드라이브 내부와 외부 전송 속도로 측정된다. 내부 전송 속도는 플래터에서 R/W헤드를 거처 디스크 내부 버퍼(캐시)로 이동하는 속도다. 내부 전송 속도는 탐색 시간과 회전 지연 시간의 영향을 받는다. 외부 전송 속도는 인터페이스에서 HBA로 이동하는 속도다. 보통 ATA의 133MB/s로 볼 수 있다.

디스크 I/O 컨트롤러 사용률

디스크 I/O 컨트롤러의 사용률은 I/O 반응 속도에 영향을 준다.

컨트롤러 평균 응답 시간 = 서비스 시간 / (1 - 컨트롤러 사용률)

컨트롤러 사용률이 100%가 되면, 컨트롤러의 응답 시간은 무한대에 가까워진다. 컨트롤러의 부하가 증가하여 70%가 넘으면 급격히 응답시간이 늘어난다.

728x90
반응형

'OS & Container > Storage' 카테고리의 다른 글

RAID 레벨  (0) 2022.03.15
RAID Array 구성요소, 기술  (0) 2022.03.08
NCQ와 Flash Drive  (0) 2022.03.02
데이터 액세스와 DAS  (0) 2022.02.27
논리적 볼륨 매니저(LVM, Logical Volume Manager)  (0) 2022.02.26

논리적 볼륨 매니저(LVM, Logical VOlume Manager)

파일 시스템 용량을 동적으로 확장하고, 스토리지를 효율적으로 관리하는 LVM은 시스템에서 동작하는 소프트웨어로, 논리적, 물리적 스토리지를 관리한다.

LVM은 파일 시스템과 물리 디스크 사이의 레이어(Layer)다. 디스크를 좀 더 작은 가상 볼륨으로 파티셔닝(partitioning) 하거나 작은 디스크를 합쳐 큰 가상 볼륨을 컨캐터네이션(concatenation) 할 수 있다.

파티셔닝 partitioning

큰 디스크 드라이브를 여러개의 논리적 볼륨(LV, Logical Volume)으로 나눌 수 있다. 디스크 드라이브를 호스트에 처음 설치 할 때, 여러 실린더를 그룹화해 파티션을 만든다. 호스트 파일 시스템은 파티셔닝과 디스크의 구조를 모르는 상태에서 논리적 볼륨에 접근한다.

컨캐터네이션 concatenation

여러 물리 드라이브를 그룹화해 하나의 논리 볼륨으로 만드는 것이다. LVM이 최적화된 스토리지 액세스를 제공하며 리소스 관리를 한다. 사용자는 물리적 디스크 개수나 데이터의 위치를 몰라도 된다.

LVM 구성

물리적 볼륨 PV, physical volume

LVM에서 호스트 시스템에 연결된 각 물리 디스크를 물리적 볼륨이라고 한다. LVM은 물리적 볼륨이 제공하는 물리적 스토리지를 OS나 애플리케이션이 사용하는 논리적 뷰로 변환한다.

볼륨 그룹 volume group

1개 이상의 물리 볼륨을 그룹화해 볼륨 그룹을 만든다. 각 볼륨을 초기화 할 때, LVM이 사용할 고유 물리적 볼륨 아이디(PVID, physical volume identifier)를 할당한다.

볼륨 그룹에 동적으로 물리적 볼륨을 추가하거나 삭제할 수 있지만, 하나의 물리적 볼륨을 여러 볼륨 그룹간에 공유할 수는 없다. 하나의 물리적 볼륨을 나눠 여러 볼륨 그룹이 사용할 수도 없다.

각 볼륨 그룹을 만들 때는 물리적 익스텐트(physical extent) 라고 하는 같은 크기의 데이터 블록 집합으로 파티셔닝한다.

논리적 볼륨 LV, logical volume

볼륨 그룹에서 만들어진다. 논리적 볼륨은 디스크 파티션으로 생각할 수 있으며 볼륨 그룹 자체는 디스크로 볼 수 있다.

728x90
반응형

'OS & Container > Storage' 카테고리의 다른 글

RAID 레벨  (0) 2022.03.15
RAID Array 구성요소, 기술  (0) 2022.03.08
NCQ와 Flash Drive  (0) 2022.03.02
데이터 액세스와 DAS  (0) 2022.02.27
디스크 드라이브 성능  (0) 2022.02.27

+ Recent posts