요즘 관심을 가지는 블럭과 파일 시스템과 관련해서 몇가지 재밌는 것들을 소개하려고 합니다.


storage가 대형화되고 가상화가 진행되고 여러가지 형태의 storage가 나타나면서

이런 시스템에 적합한 형태의 파일시스템이 많이 나오고 있습니다.

그중에서 Log-structured 에 기반한 파일시스템을 살펴봅니다.


Log-structured 파일 시스템에는 최신 컴퓨팅 시스메과 관련된 다양한 이야기가 있다.

첫번째 Log-structured 파일 시스템은 John Ousterhout 와 Fred Douglis 가 1988 년에 제안했으며

그 후 1992년에 Sprite 운영체제에서 구현되었다.

이름에서 알수 있듯이 Log-structured 파일 시스템에서는 파일 시스템을 새 데이타와

파일 시스템 메타데이타를 로그의 헤드에 쓴 순화 로그로 여기며 여유 공간은 끝에서부터 사용된다.


그림 1.Log-structured 파일 시스템의 간단한 구조

figure1[1].gif


이렇게 하면 로그에 데이타가 두번 이상 표시될 수도 있지만 로그는 시간에 따라 정렬되기 때문에

가장 최근의 데이타가 활성 데이타로 표시된다.

로그에 다수의 데이타 사본이 있으면 몇가지 중요한 장점이 생기며 이러한 사항은 아래에서 자세히 설명한다.


Log-structured 방식은 장점이라기보다는 아키텍처적인 개념이라고 할 수 있으며 이러한 방식은 몇 가지 독특한 장점을 제공한다. 한 가지 중요한 장점으로는 시스템이 파손되었을 때 복구하는 기능을 들 수 있으며 Log-structured 방식을 사용하면 

이 기능이 더 단순해진다.

또 다른 장점은 기본 스토리지 시스템을 사용하여 성능을 개선할 수 있다는 점이다. 

순차적으로 디스크에 쓰는 동작은 무작위로 I/O에 쓰는 동작보다 훨씬 더 빠르다. 

쓰기 동작은 모두 순차적으로 행해지기 때문에 찾기에 대한 부담이 제거되고 

결과적으로 디스크 I/O 속도가 빨라져 파일 시스템의 속도가 개선된다. 



오브젝트 기반의 스토리지 시스템

기존의 스토리지 시스템은 디스크 드라이브와 드라이브에 내장된 인터페이스를 기반으로 지속적으로 데이터를 저장한다. 

이러한 인터페이스는 블록 스토리지 시맨틱에 의존하며 여기에서는 작은 고정 크기의 데이터 블록이

맵핑 정보(파일 시스템 메타데이터)와 함께 전달된다. 오브젝트 스토리지 시스템은 매우 다른 접근 방식을 취하며 

고정 크기 블록을 관리하는 대신 가변 크기 오브젝트와 시스템 레벨의 오브젝트 정보를 제공하는 관련 메타데이터를 관리한다.


오브젝트 스토리지 시스템은 멀티 테넌시(Multi-tenancy)와 보안이 통합된 확장 가능한 스토리지를 구현할 수 있는 

유일한 방식이다. 

OSD 표준(아래 설명)은 다양한 방식으로 이용할 수 있다. 

( 오브젝트 소트로지 장치및 표준 

    오브젝트 스토리지 시스템은 T-10 OSD(Object Storage Device) 표준을 따른다. 

    이 스펙에는 오브젝트 레벨 관리를 지원하는 표준 SCSI 명령 세트의 확장 기능이 자세히 기술되어 있다. 

    이 스펙에는 오브젝트 레벨 액세스 메소드가 정의되어 있을 뿐만 아니라 보안과 메타데이터 관리도 다루어져 있다.)


OSD 드라이브 및 개시자와 같은 OSD 호환 구성요소나 상위 레벨 구성요소(기존의 드라이브상에서 

OSD 작동을 이용하는 대상 시스템)를 사용할 수 있다. 

그러나 블록 기반 스토리지와 오브젝트 기반 스토리지 시스템의 기본적인 차이는 블록 기반 스토리지 시스템에서는 

사용자가 블록과 통신하는 프로토콜을 사용하여 데이터와 메타데이터가 포함된 블록의 컬렉션으로 

오브젝트를 작성한다는 점이다. 

반면에 오브젝트 기반 스토리지 시스템에서는 사용자가 오브젝트 및 관련 메타데이터와 통신한다


그림 2 참조 

figure2[1].gif


그러면 오브젝트 스토리지 장치는 오브젝트로 구성된 일반 네임스페이스가 되며 필요한 경우에는 

여기에서 스토리지 시스템 스택 상부에 계층 구조가 세워진다.





Log-structured 파일 시스템과 SSD

Log-structured 파일 시스템은 NAND 플래시로 구성된 SSD(Solid-State Disk)에 적합한 형식이다. 

플래시는 쓰고 지울 수 있는 횟수가 제한되어 있다는 기본적인 문제점이 있다. 

로그는 전체 장치의 여러 위치에 쓰게 되기 때문에 장치에 균일하게 쓰여지며  따라서 지우기 주기가 최소화된다. 

이 때문에 Log-structured 파일 시스템은 SSD에서 매우 잘 수행되며 우수한 Wear-Leveling 기능을 제공한다.



아직까지 embedded 에의 적용여부는 불확실하다.

한번쯤 시간을 내어 이러한 파일 시스템을 사용해 보고, 성능을 측정해 보고싶지만

시간을 내어서 한다는 것은 항상 요원하다.

그냥 질러야...




to be continued...





출처 : https://www.ibm.com/developerworks/kr/library/l-nilfs-exofs/