ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • FTL (Flash Translation Layer, 플래시 변환 계층) 구조
    스토리지 지식 2021. 2. 18. 03:02

    SSD에 데이터를 어떻게 저장할까?

     

    일반적인 운영체제의 파일 시스템을 기반으로 하는 프로그램들은 디스크를 섹터 기반으로 인식하지만, SSD는 페이지와 블록을 기반으로 저장 단위가 구현되어 있다. 이것은 섹터를 기반으로 인식하는 프로그램은 SSD에 데이터를 직접 기록할 수 없다는 의미이다. 따라서, 섹터 기반의 프로그램이 SSD를 인식할 수 있도록 도와주는 무언가가 필요한데, 이것을 FTL (Flash Translation Layer), 즉, 플래시 변환 계층이라고 한다.

     

    Why FTL is required

     

    FTL은 SSD의 컨트롤러 내에서 동작하며 가상의 논리적 섹터를 생성하여, 섹터 기반의 프로그램들이 이를 통해 실제 SSD의 물리적 페이지에 데이터를 기록하도록 도와준다. FTL이 논리적 섹터를 물리적 페이지에 저장하기 위해서는 논리적 주소를 물리적 주소 값으로 변환해야 하는데, 이에 대한 정보는 Mapping table을 참조하여 변환하게 된다.

    I/O concept with FTL

     

    애플리케이션에서 사용하는 논리 블록 주소는 FTL의 매핑 테이블을 통해, 물리 주소를 찾아 SSD의 어느 블록의 어느 페이지를 참조하게 된다. 아래 그림과 같이 3번 섹터를 Write 할 경우, 그 3번 섹터에 매핑된 물리 주소를 토대로 NAND Flash의 0번 블록의 3번 페이지에 기록된다.

     

    Address mapping on write

     

    이렇게 FTL은 파일 시스템과 SSD의 NAND Flash 사이에서 데이터를 읽고 쓸 수 있도록 논리 주소와 물리 영역의 주소를 Mapping 하는 역할을 수행하며, 내부적으로 STL, BML, LLD의 세 가지 요소로 구성되어 있다.

     

    STL (Sector Translation Layer)은 앞서 설명했듯, 파일 시스템으로부터의 논리적 주소를 NAND Flash의 물리적 주소로 매핑하는 Address Mapping 기능과, 무효화된 페이지가 많은 블록을 선택하여 남은 유효한 페이지들을 다른 블록에 복사한 후 해당 블록을 삭제하는 Garbage Collection 기능, 그리고 페이지당 Write 횟수를 모니터 하여 특정 페이지에 Write 증가 시 그 블록의 페이지는 Invalid 마크하고 매핑 테이블의 내용을 변경하여 새로운 블록의 페이지에 기록하도록 하여 궁극적으로는 여러 블록에 균등하게 저장하게 하는 Wear Leveling 기능을 수행한다.

     

    Address mapping at wear leveling

     

    BML (Block Management Layer)은 NAND Flash의 불량 블록을 관리하고 오류 처리를 담당한다.

    LLD (Low Level Driver)는 NAND Flash를 사용하기 위한 드라이버로 Flash Interface를 제공한다.

     

    댓글

Designed by Tistory.