1% 개발, 99% 유지보수 – 2. Passthrough 자체 구현

이 글이 다루는 시기: 2012년 10월 ~ 12월

= 첫 버전 공개로부터 2개월 ~ 4개월까지


나래온 툴 2.8.1, 겉으로는 달라지지 않았을 지 몰라도, 견실한 토대를 다지고 있었다.

원래 나래온 툴의 HDDInfo를 대체하기 전까지만 해도 나는 별 특색 없는 학생 1이었고, 나래온 툴도 코어는 타인의 라이브러리를 썼을 뿐인 평범한 프로그램이었다. 스토리지 유틸리티 프로그래머라는 입지가 앞으로 얼마나 도움이 될지는 모르겠으나, 나에게 이런 특색을 부여하고 나래온 툴이 나름 시장에서 이름을 알리기 시작한 변곡점은 바로 이 HDDInfo 대체라고 단언할 수 있다.

대체가 일어나지 않았다면 첫 번째로 외장 하드 지원이 불가능했을 것이며, 두 번째로는 수동 트림 지원이 불가능했을 것이고, 마지막으로 세계 최초 NVMe 지원은 불가능했을 것이다(삼성/인텔, 나래온 NVMe 툴 기준, 하드웨어 벤더 제외). 애초에 드라이버로 가는 관문을 내가 온전히 장악하지 못했는데 어떻게 확장이 가능하겠는가?

그러나 당시에는 나 자신을 매우 난감하게 만든 선택이었다. ATA와 SCSI 명령을 배워야 했으나 자료가 없었다. 오직 표준 문서 뿐. 항시 예제와 문서가 넘쳐흐르던 에덴 동산에서 넘어온 터였다. 내가 원하는 키워드로 검색 범위를 좁히면 검색 결과가 0이 되어버리는 상황에 적응을 충분히 하지 못했었다. 그래도 지금 생각해보면 NVMe에 비하면 상황은 훨씬 나았다. 운 좋게도 Windows XP SP2가 나온 후에 시작했으므로 ATA_PASS_THROUGH가 존재했기 때문이다.

문제는 컴퓨터 구조에 대한 지식이 없기 때문에 발생한 게 대부분이다(대학 1학년에게 무엇을 바라랴). 데이터 시트도 제대로 읽어본 건 처음이었다. 고등학교까지 아트멜 임베디드 제품들을 다루어보았으나 예제에 이미 정의되어있는 메모리 공간이나 구조체를 복사&붙여넣기 하는 수준이었다. 이번에는 이미 MSDN에 정의가 있는 타입이라도 언어가 달라졌으므로 처음부터 끝까지 내가 정의해야만 했었다. MSVC 유저들은 미리 정의되어있는 부분이 많으므로 이해를 못할 수 있으나, 델파이에서 이 부분에 대한 지원은 거의 없는 것이나 마찬가지다. 이 때 메모리 정렬 문제나 엔디언에 대해서 처음으로 제대로 공부한 것 같다.

결국 MSDN과 표준 문서의 도움으로 SSDInfo는 완성되었고, SAT를 추가로 적용하여 외장 하드 케이스 지원을 추가한 뒤 자신감이 생겨 수동 트림에 도전한다.

Leave a Reply

Your email address will not be published. Required fields are marked *