SSD와 윈도 7의 궁합은? - 지원 기능 추가되었지만 쓰기 속도 저하는 여전
SSD는 플래시 메모리를 기반으로 하는 저장장치다. 우리가 흔히 쓰는 USB 메모리와 기본적으로 동일한 원리로 작동한다. 전기 공급이 끊기면 데이터가 증발하는 일반 메모리와 달리 비휘발성 메모리인 플래시는 전원 공급이 끊겨도 데이터를 보관한다.
지난달 USB 메모리 벤치마크 기사에서 확인했듯이 USB 메모리에는 플래시 메모리 칩 하나가 들어가는 것이 보통이다. 예전에는 2~4개까지 연결하는 경우도 있었지만 요즘은 메모리 집적도가 높아진 덕에 칩 하나로 원하는 용량을 구현할 수 있기 때문이다.
USB 메모리와 SSD의 속도 비교. 단위는 MB/초.
SSD는 이런 플래시 메모리 칩을 6개에서 10개 정도 연결해 만든다. 하드디스크 RAID 기술과 마찬가지로 다수의 메모리에 데이터를 기록하고 읽어 들여 속도를 높인 것이다. 현재 인텔은 플래시 메모리 10개를 연결해 데이터 전송 속도를 끌어 올린다. 최고 전송 속도는 읽기에서 초당 260MB를 웃돈다. USB 메모리 하나가 초당 27MB 수준이니까 정확히 10배인 셈이다.
USB 메모리에는 플래시 칩 한 개가 들어간다.
10개 안팎의 플래시 칩이 하나의 SSD를 이룬다. 위쪽 기판은 인텔, 아래쪽 기판은 삼성전자의 SSD다.
여러 단계를 거쳐 데이터를 기록하는 SSD
플래시 메모리의 장점은 하드디스크와 달리 데이터를 찾기 위해 디스크를 회전시키고 헤드를 이동하는 과정이 필요 없다는 것이다. 하드디스크가 보통 1분에 7,200번 회전하니까 아주 짧은 시간에 데이터 검색 작업을 마치지만 전기 신호로 데이터를 찾는 반도체와 견주면 상당한 차이가 벌어진다. 보통 원하는 데이터를 찾는 데 하드디스크는 4~15ms가 걸리지만 SSD는 0.1ms가 지나기 전에 작업을 마친다.
PC 업계가 SSD를 동경하는 이유가 여기에 있다. 운영체제와 애플리케이션은 알게 모르게 수없이 많은 데이터를 생성하고 삭제하면서 작동한다. 이렇게 생성된 데이터의 일부는 시스템 디스크 드라이브에 기록되는데 하드디스크는 이런 작업을 해내기에는 속도가 느리다. CPU 점유율이 높지 않은데 PC가 멈칫거린다면 하드디스크가 처리해야 할 데이터가 쌓여 병목현상이 일어난다. SSD는 시스템에 이 같은 요구가 생기는 즉시 처리할 수 있다.
흔히 디스크 드라이브 성능을 잴 때 쓰는 툴은 작은 파일의 입출력 요구를 측정하는 게 아니라 덩치 큰 파일을 읽고 쓰는 속도를 측정한다. 당연히 하드디스크와 SSD의 성능 차이를 정확하게 짚어내지도 못한다.
하지만 SSD를 써 본 많은 이들이 생각보다 빠르지는 않다고 이야기한다. 프로그램을 띄우고 데이터를 불러오는 속도가 조금 개선될 뿐 기대했던 하늘과 땅 수준의 차이는 없다는 것이다. 원인은 여러 가지가 있다. 우선은 SSD의 형편없는 품질을 원인으로 꼽을 수 있다. SSD의 성능은 컨트롤러가 좌우한다. 초기 SSD 중에는 저가형 컨트롤러를 쓴 제품이 많은데 이 제품들은 동시다발적으로 데이터의 입출력 요구가 발생했을 때 이를 신속하게 처리하지 못한다. 백조가 물 위에서 우아하게 떠있기 위해 물속에서 두 발을 쉴 새 없이 허우적거리는 것처럼 SSD는 작은 데이터 입력 명령을 처리하기 위해 여러 가지 작업을 거쳐야 한다.
디스크에서 파일이나 폴더를 삭제하면 실제 데이터는 그대로 남겨둔 채, 데이터 주소 정보만 지운다. 호적에서 이름을 판다고 사람이 없어지지 않듯, 주소 정보를 지워도 실제 데이터는 온전하게 남아있다. 하드디스크는 데이터가 있든 없든 상관없이 주소 정보를 확인해 빈 주소에는 바로 새 데이터를 채워넣는다. 하지만 SSD는 다르다.
USB 메모리와 SSD 등 플래시 메모리를 저장소로 쓰는 기기는 4KB(페이지) 단위로 데이터를 쓰고, 512KB(블록) 단위로 삭제한다. 문제는 비어있는 페이지에만 데이터를 쓸 수 있다는 것이다. 하드디스크는 데이터가 있어도 쓰기 헤드가 자기 배열을 바꿔 새로운 데이터를 덮어씌울 수 있지만 SSD는 남아 있는 데이터를 삭제해야, 즉 셀을 비운 뒤에야 새로운 데이터를 채워 넣을 수 있다. SSD에 비어있는 셀이 충분하다면 이를 찾아 데이터를 채워 넣으면 그만이지만 비어 있는 셀이 모자랄 때는 쓰지 않는 데이터가 남아있는 셀부터 비워야 한다. 512KB 단위로 지워야 하는데 이 가운데 아직 지우면 안 되는 데이터가 포함되어 있다면 이를 캐시 메모리로 복사해두고 블록을 삭제한 뒤 기존 데이터와 새로운 데이터를 채워 넣어야 하는 복잡한 과정이 필요하다. 하지만 초기 SSD 중 상당수가 캐시 용량이 부족했을 뿐 아니라 읽기/쓰기 알고리즘을 정밀하게 제어하지 못하는 컨트롤러를 달아 제 속도를 내지 못했다.
복잡한 데이터 쓰기 과정은 SSD의 태생적인 한계라서 요즘 나온 SSD 역시 문제가 어느 정도 개선되었을 뿐 완전히 해결한 것은 아니다. SSD 속도를 잴 때는 데이터를 100% 채운 뒤 포맷을 하고 측정해야 진정한 속도를 알 수 있다는 주장도 있다. SSD에 데이터를 복사하면 초기 상태에서는 초당 100MB 이상으로 담지만, 데이터를 꽉 채웠다가 삭제하고 다시 복사해 보면 초당 60MB 수준으로 떨어지는 것을 볼 수 있다.
SSD는 데이터를 가득 채우고 속도를 재면 크게 느려진다. 데이터를 삭제해도 속도는 회복되지 않는다.
평균 100MB/초를 웃돌던 쓰기 속도가 데이터 찌꺼기가 가득 찬 상태에서는 70~80MB/초로 떨어진다.
빈 SSD와 데이터가 꽉 찬 SSD의 속도 비교. 단위는 MB/초.
SSD의 데이터 기록 과정
비어 있는 셀이 충분할 때
1) 빈 셀 찾기 --> 2) 데이터 기록
비어 있는 셀이 부족할 때 1
1) 빈 셀 찾기 --> 2) 쓰지 않는 데이터 블록 삭제 --> 3) 데이터 기록
비어 있는 셀이 부족할 때 2
1) 빈 셀 찾기 --> 2) 쓰지 않는 데이터와 쓰는 데이터가 함께 있는 블록을 임시 저장소로 복사 --> 3) 블록 삭제 --> 4) 캐시에서 기존 데이터 기록 --> 5) 새 데이터 기록
SSD를 위한 윈도 7의 작은 배려
불필요한 파일을 미리미리 지우고, 페이지와 블록을 정리해두면 이러한 성능 저하를 걱정할 필요가 없다. 하지만 운영체제는 수십 년 가까이 하드디스크와 호흡을 맞춰온 탓에 SSD의 장점을 활용하지 못한다. 많은 SSD 이용자들이 윈도 7에 기대를 거는 이유가 여기에 있다. 윈도 7은 시스템 드라이브가 SSD인지 전통적인 회전식 디스크인지 파악해 제어 방식을 변경한다. 우선 시스템 드라이브가 SSD라면 슈퍼패치, 레디부스트, 프리패치 같은 부팅과 애플리케이션 수행 속도 향상을 위한 기능을 모두 꺼버린다. 조각모음도 마찬가지다. 윈도는 비스타부터 시스템이 알아서 판단해 하드디스크 조각모음을 수행했지만 윈도 7은 SSD가 연결되면 해당 드라이브의 조각 모음을 실행하지 않는다.
윈도 7이 시스템 디스크가 SSD인지 하드디스크인지 판단하는 방법은 의외로 간단하다. 시스템 디스크의 랜덤 읽기 성능이 8MB/초 이상이면 SSD, 그 이하면 하드디스크라고 판단한다. 마이크로소프트의 SSD 관련 포럼에 따르면 초당 8MB에 근접하는 하드디스크는 존재하지 않았고, SSD는 최소 11MB에서 최대 130MB 수준이라고 한다. MS는 182개의 하드디스크를 테스트했으며 고작 6개만이 랜덤 읽기에서 2MB를 넘었다고 한다. 나머지는 0.8~1.6MB 사이였다.
윈도 7은 ‘갈무리’라는 기능도 지원한다. 흔히 trim 명령이라고 하는데 SSD에 남아있는 불필요한 데이터를 미리미리 삭제해 데이터를 기록할 때 부랴부랴 셀을 복사하고 삭제하느라 속도가 떨어지는 것을 막는 기능이다. 몇몇 SSD 제조사는 자체 툴을 만들어 갈무리 기능을 지원하기도 한다. 갈무리 기능을 쓰면 디스크의 데이터 주소 정보를 확인해 더 이상 필요 없는 데이터가 차 있는 셀을 비워낸다.
하지만 윈도 7의 갈무리 기능은 셀을 비워내는 것이 아니라 불필요한 데이터가 있으니 지워도 좋다는 정보만 SSD에 전달할 뿐이다. 윈도 비스타나 XP도 이런 일을 할 수 있었지만 하드디스크가 시스템 드라이브일 때는 아무짝에도 쓸모없는 정보라서 전달하지 않았던 것이다. 즉 윈도 7의 갈무리 명령은 슈퍼패치와 레디부스트, 조각모음 끄기처럼 새로운 기능이 아니라 이미 있던 기능을 SSD에 맞게 활성화하거나 비활성화한 것에 지나지 않는다. SSD의 성능 향상을 위한 기술이 아니라 성능 저하를 최소화하기 위한 소극적인 조치일 뿐이다.
또 윈도 7로부터 갈무리 정보를 넘겨받았다고 해도 무조건 SSD가 이를 활용해 불필요한 데이터 찌꺼기를 지우는 것은 아니다. SSD을 이루는 플래시 메모리는 쓰기 횟수 제한이 있는데, 일반 소비자용 SSD에 쓰이는 멀티레벨셀(MLC)은 1만 번, 기업용 SSD에 쓰이는 싱글레벨셀(SLC)은 10만 번 넘게 데이터를 삭제하면 셀이 수명을 다하고 죽어버린다. 때문에 OS가 넘겨줄 때마다 셀을 비워버리면 SSD의 수명이 급격하게 줄어들 수도 있다. 윈도 7의 갈무리 정보를 어떻게 활용하느냐는 SSD 제조사의 선택이다.
다른 제조사는 윈도 7의 갈무리 정보를 어떻게 활용할지 아직 밝히지 않았지만 인텔은 이를 이용하는 펌웨어와 유틸리티를 연말에 내놓을 계획이다. 여기에는 운영체제에 관계없이 적용할 수 있는 SSD 성능 최적화 툴도 포함된다. 다른 제조사도 곧 비슷한 툴과 펌웨어를 발표할 것으로 보인다.
윈도 7 재설치로는 쓰기 속도 복구 불가능
윈도 7의 갈무리 정보는 더 이상 필요 없는 데이터의 위치만 알려줄 뿐이다. 이미 불필요한 데이터가 가득 찬 SSD를 포맷을 하고 윈도 7을 설치하면 새로 설치한 윈도 7이 넘겨주는 갈무리 정보로는 운영체제 설치 이전부터 있던 찌꺼기 데이터를 지우지 못한다.
윈도 7을 설치할 때 SSD를 포맷하면 먼저 있던 찌꺼기 정보를 삭제해 쓰기 속도를 회복시키지 않을까 기대했지만 포맷하기 이전과 속도가 전혀 달라지지 않았다. SSD를 초기화하려면 제조사가 공급하는 툴을 이용하는 수밖에 없는데 현재 관련 툴을 내놓은 제조사는 두어 곳에 지나지 않는다. 초기화로 쓰기 속도 회복은 가능하겠지만 SSD 수명에 좋지 않은 영향을 줄 수 있어 적용이 쉽지 않은 탓이다.
하드디스크를 초기화하는 툴을 적용해서 SSD의 속도를 회복시키는 방법이 있지만 SSD가 IDE 호환 모드에서 작동해야 하고, SSD에 따라 이 방법이 전혀 통하지 않을 때도 있다. 쓰기 속도 하락도 없고, 수명 단축의 위험도 없이 SSD를 쓰는 방법은 없는 것일까? 현재로서는 ‘그렇다’가 맞다. SSD를 쓰려면 속도와 수명 둘 중 하나는 포기해야 한다.
윈도 7에서 SSD 속도 변화 테스트
윈도 7에서 데이터를 가득 채웠다 지웠을 때 쓰기 속도도 회복되는지 테스트해 봤다. 운영체제만 깔고 속도를 잰 뒤, 데이터를 95%까지 채웠다가 운영체제와 드라이버 파일만 남기고 모두 삭제하고 PC를 켜둔 채 12시간이 지나 다시 속도를 쟀다. 테스트한 SSD는 삼성전자의 64GB MLC SSD다.
테스트한 삼성전자 SSD는 실제 파일이 존재하지 않더라도 해당 셀을 삭제하거나 데이터를 이동해 쓰기 속도를 최적화하지는 않는 것으로 보인다. 12시간이면 SSD를 갈무리하기에 충분한 시간이었지만 쓰기 속도는 전혀 회복되지 않았다.
데이터를 지우고 12시간 지나 속도를 측정했다. 단위는 MB/초다.
SSD에 데이터를 가득 채웠다가 삭제하고 속도를 쟀고, 윈도 7 설치 과정에서 포맷 한 뒤 다시 속도를 쟀다. 단위는 MB/초다.
SSD를 위한 인터페이스 NVMHCI
지금의 운영체제와 디스크 제어장치들은 하드디스크에 최적화되어 있다. 인텔은 2008년에 SSD의 성능을 최대한 끌어낼 수 있는 비휘발성 메모리 호스트 컨트롤러 인터페이스(NVMHCI)를 발표했다. 현재 OS와 관련 하드웨어 업계가 이를 적용한 기술과 장치를 개발 중이다. 리눅스용으로는 관련 드라이버가 개발되기도 했다.
NVMHCI는 지금의 AHCI나 ATA 컨트롤러 인터페이스와 함께 쓰이거나 단독으로 채택될 것으로 보인다. 하드디스크와 SSD를 함께 쓸 수밖에 없는 데스크톱에는 두 가지 인터페이스가 모두 필요하지만, SSD만으로 충분한 초박형 노트북이나 미니노트북에는 NVMHCI만 적용될 수도 있다. NVMHCI는 응용 프로그램의 임시 데이터를 더 빨리 처리할 수 있고, 비휘발성 메모리 특성에 맞춘 여러 기능을 지원한다.
아쉽게도 윈도 7에는 NVMHCI가 탑재되지 않았는데, MS는 관련 하드웨어의 개발 상황에 따라 윈도 업데이트로 이를 지원할 수 있다는 입장을 밝혔을 뿐 구체적인 일정은 밝히지 않았다. 인텔은 차기 휴대 인터넷 단말기(MID) 칩셋인 랭웰에 SSD 전용 컨트롤러를 추가할 수도 있음을 시사한 바 있다. 하지만 스토리지 업계는 NVMHCI가 정착하려면 최소 5년에서 10년 정도의 기간이 필요하다고 내다보고 있다. 저장장치를 다루는 데 있어 기업은 유독 보수적인 태도를 보이기 때문이다. 그때까지 SSD는 하드디스크 인터페이스에 더부살이할 수밖에 없다.
인텔의 차세대 휴대 인터넷 단말기 플랫폼 무어스타운에는 SSD 전용 컨트롤러 인터페이스가 쓰일 예정이다.
SSD FAQ
SSD의 작동원리나 특성이 잘 알려지지 않아 많은 독자가 SSD에 대해 여러 가지 오해를 하고 있다. SSD를 이해하는 데 도움이 될만한 자주 묻는 질문을 몇 가지 정리했다.
SLC와 MLC, 어떤 것을 골라야 하나?
물론 셀 하나에 1비트를 담는 SLC가 확실히 빠르고 수명도 길다. 하지만 개인 소비자용 SSD는 모두 MLC를 쓴다. 선택의 여지가 없다는 말이다.
한 셀에 4비트를 담는 MLC도 나왔다는데?
한 셀에 3~4비트를 담는 MLC 기반 SSD는 개발 중이다. 현재 판매되는 SSD용 MLC는 셀당 2비트를 저장한다. 플래시 메모리 기술이 발달하면 자연스럽게 셀당 저장 비트가 높아지겠지만 데이터 안정성이 매우 낮아져서 적용이 쉽지는 않을 것이다.
하드디스크 대신 SSD를 쓰려고 하는데 모두 2.5인치뿐이다.
SSD는 진동이 없어 케이스에 단단히 고정할 필요가 없다. 3.5인치 규격 SSD는 따로 없으니까 고정 부품을 구해서 조립하든지, 적당히 고정시켜 이용해도 문제없다.
SSD 수명은 얼마나 되나?
플래시 메모리의 기초 단위인 셀은 전자를 채우고 비우는 것으로 데이터를 기록한다. 일정한 횟수를 넘으면 더 이상 기억장치로서 기능을 잃는데 보통 소비자용 SSD는 셀당 기록 횟수가 1만 번 정도다. 하루 종일 PC를 부지런히 돌려도 10년 이상 이용할 수 있다. 단, 모든 셀을 고르게 이용하는 우수한 알고리즘을 지닌 SSD라야 한다. 이를 웨어레벨링(균등 닳기)이라고 하는데, 모든 SSD에 이 기술이 적용되었지만 완성도는 업체마다 차이가 있다.
하지만 SSD가 쓰이기 시작한 것은 비교적 최근의 일이다.
SSD의 데이터 안정성이 하드디스크보다 우수하다
경우에 따라 맞을 수도 틀릴 수도 있다. 충격에는 SSD가 강할지 몰라도 논리적 오류나 하드웨어 고장에는 더 취약하다. 망가져도 일부 데이터를 살릴 수 있는 하드디스크와 달리 SSD는 데이터 전체가 증발하기 쉽다.