1. 차세대 스토리지라며? 그런데....... | |
---|---|
우리네 삶에는 우리가 느끼는, 또는 그렇지 못한 채 부지불식 중에 따가 가게 되는 어떤 흐름이 존재하기 마련이다. 그것이 우리네 마음의 변화일 수도, 또는 우리가 도저히 거부할 수 없는 세상의 흐름일 수도 있겠지만 말이다. 이런 이야기를 하고자 長江後浪推前浪(장강후랑추전랑), 一代新人換舊人(일대신인환구인)이란 한자어를 한 번 사용했다가 어줍지 않은 한자까지 사용한다고 독자분들께 핀잔을 들은 예도 있지만, 어쨌든 그렇게 세상은 흘러가고 있고, 우리는 그 흐름에 몸을 맡기고 있다.
최근 들어 SSD의 용량, 가격, 성능이 급격히 향상되고 있고, 이에 발 맞추어 상당히 다양한 제품군이 동시다발적으로 출시되고 있는 것을 감안하면 이 시장은 이제 본격적으로 성장할 채비를 모두 갖추어 가고 있는 것으로 보인다. 과거엔 단지 관심에서 그치던 상당 수의 유저들이 이제는 SSD를 실제로 구매하고 있다는 점에서도 분명 달라지고 있는 흐름을 느낄 수 있다. |
2. 하늘을 거스른(?) 플래시 메모리의 천형? | ||||||||
---|---|---|---|---|---|---|---|---|
사실 프리징 현상을 일반적 용어로 규정하기 힘들고, 어떤 '성향'에 관련된 특징을 규정하는 용어라 본다면 SLC 방식의 SSD에서도 비슷한 예를 찾아볼 수 있다. 단지 정도의 차이라 할 수 있겠지만 말이다.
물론 이같은 현상의 주범은 다름 아닌 '컨트롤러'. 따라서 이를 채용하지 않은 제품이나, 또는 이러한 문제가 개선된 새로운 컨트롤러를 채용한 제품들에서는 알려진 것과 같은 '프리징 현상'이 발생하지는 않는다고 볼 수 있다.
SSD의 쓰기 문제를 정확히 이해하려면 먼저 셀, 페이지, 블럭에 대한 명확한 개념이 선행되어야 한다. 하지만 역시 들어도 어렵고 이해하기 힘든 이야기. 이런 어려운 부분들은 가급겆 생략하고 이미지를 통해 이를 조금 쉽게 이해해보자.
그런데, 위 이미지와 같이 사용자가 명령을 내렸다면? 즉 세 번째 페이지에 저장된 데이터를 삭제하는 명령을 내린다면 SSD는 이에 대해 어떻게 반응하게 될까? 이는 많은 유저들이 알고 있겠지만, OS 차원에서 해당 데이터가 삭제된 것으로 사용자에게 보고하며, 이런 까닭에 사용자는 해당 공간이 비어있는 용량으로 인식하게 된다.
이런 경우 바로 위와 같은 복잡한 시퀀스가 SSD 내부에서 발생하게 된다. 플래시 메모리가 가지는 천형과도 같은 단점들이 이 과정에서 한 순간에 발생하게 된다. |
3. SSD에게 도대체 무슨 일이? | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
이전 페이지에서 설명했던 것처럼 사용자가 기존 데이터를 삭제하게 되면 OS는 이에 대해 해당 저장 공간을 비운 것처럼 표시하지만, 이에 대한 실질적인 삭제 명령을 스토리지 기기에 넘기지 않는다. 이는 필요 시 다른 데이터로 덮어 쓰면(Overwrite) 그만이기 때문에 굳이 그럴 필요가 없었던 셈. 이런 전통적인 데이터의 관리 방식이 SSD에 이르러 Overwrite가 불가능한 특성과 맞물리면 아주 간단한 데이터 기록 명령 하나에 매우 복잡하고 힘든 단계의 읽기-> 복사-> 삭제->쓰기라는 일련의 작업으로 이어지고, 이때문에 작은 파일 하나를 기록 하는 데 커다란 파일 여러 개를 기록하는 것과 맞먹는 시간이 소요된다.
안타깝게도 현재 이 문제에서 완전히 자유로운 SSD는 없다고 보는 편이 속 편하다. 물론 SSD의 제조사들 역시 애초부터 이런 특징을 몰랐을 리 없고, 이를 최대한 효과적으로 극복해 보고자 의도했겠지만, 그렇다 해서 그리 쉽게 극복될 수 있던 문제도 아니었던 셈.
X-25M의 읽기, 쓰기 그래프를 보면 최근 출시되고 있는 SSD에 비해 오히려 부족해 보이기까지 한다. 그도 그럴 것이 저렴한 가격을 우선시하는 제품이 아닌 이상 최근의 컨트롤러들은 쓰기 성능이 적어도 150MB/s 이상을 계속 유지하는 것이 일반적 특징이고 보면 250MB/s에 육박하는 엄청난 읽기 능력 외에 쓰기 성능은 다소 부족한 것이 아닌가 하는 의구심을 품을 수 밖에 없게 된다. 물론 인텔의 X25-M을 사용하는 유저라면 아마도 이런 생각엔 죽어도 동의하지 못하겠지만 말이다.
인텔 SSD의 강점은 바로 이런 류의 테스트에서 찾아볼 수 있다. 순차적인 쓰기 성능은 여타 드라이브의 절반에도 미치지 못하지만, 정작 OS 등에 사용하는 경우 가장 빈번하게 만나는 작은 파일의 무작위 쓰기에서는 이를 압도적인 차이로 뒤집어 버리는 괴력을 발휘한다. 4KB Write의 경우 빠르다는 HDD들도 불과 2 ~ 3MB/s 수준이며, 150MB/s를 훌쩍 뛰어 넘는 순차 쓰기 능력을 가진 최근의 SSD들도 고작 10MB/s 남짓의 결과를 내놓는데 비해 X25-M은 무려 57MB/s라는 경이로운 속도를 보인다. 작은 파일의 무작위 쓰기 시에도 순차적인 쓰기와 속도의 차이가 거의 없는 셈.
하지만 이런 X25-M 조차도 전체 공간을 데이터로 채운 후 다시 랜덤 쓰기 테스트를 시행하자 속도가 떨어지기 시작하고 있다. 그래프 자체가 조금 지저분해지긴 했어도 동일한 수준을 유지하고 있는 읽기와 달리 쓰기 그래프는 확연히 눈에 띄는 하락을 보이고 있다. 정확히 어느 수준까지 빈 공간을 제거했는지 확인할 방법이 없어 - 컨트롤러가 이를 최대한 억제하는 기능을 가지고 있으므로 - 보다 면밀한 비율의 계산과 결과를 도출해 내긴 어렵지만, 계속적으로 사용하는 경우 위와 같은 쓰기 성능의 하락이 발생하는 것은 분명하다.
저장공간이 데이터로 가득 찬 경우 성능의 하락은 확연히 눈에 띈다. CrystalDiskMark의 결과를 살펴보면, 읽기 속도는 테스트 시의 오차 정도로 감안할 수 있는 차이를 보이고 있지만 쓰기 부분에 있어서는 확연히 도드라지는 하락이 발생하는 것을 볼 수 있다. Sequential Write는 약 50%, 4KB Random Write 역시 약 33% 가량 하락한 수치를 보이는 것을 볼 수 있다. 파티션까지 모두 삭제한 후 다시 파티션을 나누고 포맷을 진행했음에도 내부적으로 기록된 데이터는 전혀 삭제되지 않았다는 방증인 셈. |
4.성능 떨어진 SSD, 이걸 버려? | ||||||||
---|---|---|---|---|---|---|---|---|
SSD들이 가진 쓰기 성능 저하 문제는 현재로서는 완벽하게 극복할 수 있는 방법이 없는 셈. 인텔의 컨트롤러는 컨트롤러 차원에서 이에 대응하고 있지만, 그것만으로는 언젠가 한계에 부딪칠 수 밖에 없다는 사실을 확인했고, 여타 컨트롤러들은 이만큼의 적극적인 대응이 없기 때문에 이런 문제가 보다 빨리 발생하고 있다.
그런데 잠깐, SSD의 쓰기 속도 저하가 사용하지 않는 공간을 불필요하게 차지하고 있는 데이터 때문이라면, 이를 비워버리면 그만이 아닐까? 이런 기능을 제공하는 툴은 예전부터 있어왔기도 했고 말이다. 가령 들어, 과거 Norton의 Wipe Information 이라던가, HDDErase, 또는 Zerofill 방식의 포맷 등등등............
HDDErase는 많이 알려져 있는 툴이고, 일부 SSD 사용자들 사이에서는 이미 가장 많이 사용되고 있는 툴. Zero fill은 모든 저장영역을 0으로 채우지만, HDDErase는 모든 저장 영역에 아무 가치가 없는 Garbage Data를 써 넣은 후 이를 삭제하는 방식으로 초기화가 이루어진다. 플래시 메모리에 따라 초기 값을 0으로, 또는 1로 갖는 경우가 있을 수 있겠지만, 이 방식을 사용하면 컨트롤러에 의해 항상 그 초기가 되는 값으로 되돌리게 되기 때문에 SSD에는 오히려 적중률이 높은 툴인 셈.
하지만 애초에 SSD를 위해 만들어진 툴이 아닌 탓에 호환성이 높지 않은 것이 문제. 현재 출시되어 있는 모든 SSD의 컨트롤러가 이를 수용하는 것도 아니며, 메인보드에서 SSD를 호환성 모드, 즉 IDE 방식으로 변환, 인식시킬 수 있어야 한다. 이런 일련의 조건에 충족되는 환경이라면 이를 이용할 수 있게 된다. 이미지는 인텔 X25-M이 첫 번째 포트에 연결된 것으로 인식하고 있다.
Secure Erase를 선택하면 해당 드라이브의 데이터를 삭제하기 시작한다. 용량이나 방식에 따라 약간의 차이는 있지만, 이렇게 모든 데이터를 삭제하면 SSD는 초기의 빠른 속도를 되찾게 된다. |
5. 그래서 대안은 TRIM Command | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
이전 페이지에서 살펴보았던 SSD의 쓰기 성능 하락의 원인은 기실 HDD 시절에는 매우 요긴하게 사용되어 오던 일종의 '기능'이라 할 수 있다. 하지만 이것이 SSD의 특성과 맞물리기 시작하며 결정적인 단점으로 작용하게 된 것.
하지만 이런 기능은 HDD를 주로 사용하던 시절에는 특정한 영역에서나 사용의 필요성이 제기되었던 부분. 때문에 현재 주로 사용되고 있는 WindowsXP나 Windows Vista에는 포함되어 있지 않다. 다행스럽게도 Windows 7에서 바로 이 기능을 지원하게 될 것으로 보인다. 그렇다 해서 기존 OS에서 해당 기능을 아예 사용하지 못하는 것만은 아니다. OS가 이를 지원하지 못하므로 별도로 이 명령을 드라이브에 전달할 어플리케이션이 필요하며, 또 이를 받아 작업을 수행할 SSD의 펌웨어만 지원된다면 기존의 OS에서도 이 기능을 이용할 수 있게 된다.
인텔이 발표한 MLC 기반의 SSD용 신형 펌웨어는 엄밀히 말하면 TRIM과는 별다른 연관성이 없는 것이 사실이다. 인텔의 자료에 따르면 이 펌웨어는 각종 호환성 이슈의 해결과, 인텔 특유의 쓰기 알고리즘, 즉 Write Combining 기능의 적용 시에 발생할 수 있는 쓰기 성능의 하락을 개선한 것이라 하며, 순차적인 쓰기가 발생하는 경우 이에 따르는 단편화를 제거하지 못하는 최악의 상황을 미연에 방지하기 위한 새로운 알고리즘이 적용되었다고 한다. 해당 기능은 분명 TRIM과는 관계 없지만, 어쨌든 이 새로운 펌웨어가 어떤 결과를 가져왔는지 지켜 보면 자못 흥미로운 부분을 발견할 수 있다.
내부에 충분한 데이터를 보유하도록 만들어 고의로 쓰기 속도를 떨어트린 X25-M이건만, 그래프와 같이 펌웨어 업데이트 후 단 몇 번의 테스트로 드라이브의 쓰기 속도가 다시 회복되는 것을 볼 수 있다. 한 번 떨어져버린 쓰기 속도는 HDDErase를 통해 비워내지 않는 한 포맷이나 파티션을 삭제하는 등의 조치로는 절대 회복되지 않았음에도 말이다.
다양한 블럭 사이즈를 직접 디스크에 쓰거나 읽는 방식으로 테스트가 진행되는 HD Tune File Benchmark에서도 이같은 추세는 그대로 드러난다. 초기 상태에서는 128KB 이상의 읽기에 대해 250MB/s 가량의 높은 속도를 보이고 있으며, 16KB 수준에서 쓰기 속도는 이미 80MB/s 근처에서 안정되는 것을 볼 수 있다.
간단한 방식의 테스트를 지원하지만 비교적 정확한 결과를 도출해 내 최근 급격히 사용 층을 넓혀 가고 있는 CrystalDiskMark의 결과에서도 이러한 차이들이 그대로 반영되는 것을 볼 수 있다. 읽기 성능에는 별다른 차이점이 없는 반면, 쓰기 부분에 있어서는 눈에 띄는 성능 하락이 발생하고 있고, 새로운 펌웨어는 이를 효과적으로 극복하고 있는 것 역시 함께 확인할 수 있다. |
6.역시 대안은 HDD? 천만의 말씀 | |
---|---|
SLC 기반의 SSD와 MLC 방식의 그것은 이제 정확히 양분화되고 있다. SLC 타입의 제품들은 거의 모든 제조사들이 엔터프라이즈 시장에 투입하는 것을 기본으로, 반면 MLC 방식의 제품은 노트북, 넷북, PC 등 개인 사용자 차원에서 사용되는 시스템을 위한 스토리지로 영역을 구분하고 있다. 이런 차이는 MLC 방식의 SSD도 HDD를 월등히 넘어서는 성능을 확보하게 되었기 때문이고, 두 번째는 SLC 타입의 비싼 SSD를 개인용 시장에 밀어 넣기 부담스럽기 때문일 것이다.
SSD는 마약과도 같다. 사용해보지 않은 유저들은 아직까지 HDD가 낫다거나, 비싸고 문제도 발견된 스토리지를, 거기에 비교적 용량도 작은 제품을 왜 쓰는지 이해하지 못할 지도 모르지만, 제대로 만들어진 SSD를 한 번이라도 사용해 본 유저라면 그 미칠듯한 반응속도의 마력에서 벗어나는 것이 불가능할 지경이다. SSD는 눈에 보이는 그래프보다 먼저 체감할 수 있는 반응으로 사용자를 사로잡으니까 말이다. |