본문 바로가기

IT

하드디스크의 수명을 늘려주는 웨어 레벨링(Wear leveling)기술



웨어 레벨링(Wear leveling)은 하드디스크와 같은 컴퓨터의 기억장치에 사용되는 기술로 덮어쓰기 한도가 존재하는 기억장치의 수명을 늘려주는 기능을 합니다.


컴퓨터 저장장치는 보유하고 데이터가 갱신될때마다 조금씩 성능이 나빠집니다. 전원을 꺼도 데이터가 보존되는 저장 장치에서 이런 현상은 더 현저하며, CD RW, DVD RW, 플래시 메모리등은 재기록 횟수가 수백 내지는 수천회 정도의 것이 많이 사용되고 있습니다.



일반적으로 이런 저장 장치의 데이터 갱신 한도 횟수는 장치 하나당 횟수가 아니라 장치내의 기억소자 하나에 대한 횟수를 말합니다. 이러한 소자들이 최대한 고르게 분산 되는 제어가 되어있다면 저장 장치 전체적으로 덮어쓰기 저장 횟수가 비약적으로 향상 됩니다.


이렇듯 데이터를 다시 덮어쓸때 장치내의 기억 소자에 최대한 고르게 분산 시키는 기술을 웨어 레벨링이라고 부릅니다. 웨어레벨링 기술을 이용함으로써 저장 장치의 저장 횟수 제한은 각 기억 소자 제한 횟수의 수백내지 수천배가 됩니다.


■ 기술의 구체적인 예


웨어 레벨링을 실현하는 기술은 얼마든지 있지만 크게 나누면 기억 장치인 하드웨어 자체를 연구하는 접근법과 기억 장치가 읽고 쓰는 파일 형식을 연구하는 소프트웨어적인 접근법이 있습니다.


ㅁ 하드웨어 


읽고 쓰는 기억 소자를 CPU가 지정한 데로 사용하는 것이 아니라 주소 변환 테이블 등을 이용해 실제로 사용되는 기억소자를 간접 지정하는 장치를 하드웨어적으로 실현하는 것입니다. 기억장치에 저장을 할때 이 주소 변환 테이블이 덮어쓴 횟수가 가장 적은 기억 소자에 작업을 할당하는 방식으로 작동합니다.


하드웨어 웨어 레벨링은 구체적으로는 기억 소자의 각 블록마다 저장한 횟수를 장치에 기록 및 관리해두고 업데이트가 많았던 블록과 변경 횟수가 적거나 비어있는 블록과 스와프하는 것입니다. 즉 , 특정 블록의 저장 횟수가 전체 블록과 비교해서 평균값을 밑돌때 해당 블록으로 데이터를 전송하거나 스와프시킵니다. 이런 과정을 거쳐 기억 장치의 전체 데이터 변경 횟수를 평준화 시키고 변화된 블록의 값을 주소 변환 테이블에 업데이트 합니다. 이렇게 하면 소프트웨어에서 웨어 레벨링을 적극적으로 관여하지 않아도 읽고 쓰는 횟수를 늘릴 수 있습니다.


ㅁ 소프트웨어 

파일 시스템

컴퓨터 시스템이 보조 기억 장치에 데이터를 저장할때 파일 단위로 읽고 쓰기를 하는 경우가 압도적으로 많습니다. 어떤 파일이 기억 장치의 어느 위치에 저장되어 있는가라는 정보를 관리하는 도구를 파일 시스템이라고 부르는데 이 파일 시스템을 구현하는 것으로 웨어 레벨링이 가능합니다.


웨어 레벨링을 지원하는 파일 시스템은 파일이 저장될 기억 소자를 계속 변경하며 다시 같은 소자에 집중하지 않도록 제어합니다.


또한 파일 시스템의 관리 정보, 즉 파일이 기억장치중 어디에 있는 지를 알려주는 데이터와 사용되지 않는 영역이 어디인지를 알려주는 데이터등은 가장 재기록 빈도가 높아지는 데이터이기 때문에 이 데이터가 특정 기억 소자에 집중되지 않도록 제어하는 연구도 필요합니다. 경우에 따라서는 파일 관리 데이터만 덮어쓰기 횟수 제한이 없는 다른 기억 장치에 저장하는 방법을 취하는 경우도 있습니다.


임베디드에서 일반적으로 사용되는 JFFS 또는 파생 버전인 JFFS2는 파일 시스템 웨어 레벨링을 지원하는 대표격이라고 할 수 있습니다.


마이크로소프트의 윈도우7에서는 트림 명령에 대한 대응이 구현되었습니다. 이것은 OS 측의 파일 시스템이 파일의 변경이나 삭제등으로 사용되지 않는 기억 블록의 주소를 웨어 레벨링이 적용된 하드웨어 기억장치에 통지합니다. 이렇게 하면 기억 장치가 웨어 레벨링을 동작할때 불필요한 데이터 블록까지 확인하는 관리 작업을 할 필요가 없어 오버헤드 및 하드웨어의 수명이 향상 될 수 있습니다. 기존에는 기억 장치가 1번이라도 쓸 수 있는 블록은 무조건 데이터를 유지하기 위해 웨어 레벨링 동작 시에도 계속 읽고 쓰기로 인해서 오버 헤드등의 낭비가 발생했었습니다.감사합니다.