신형 SD카드 리더 구입
최근에 드디어 USB 2.0에 A타입 단자를 사용하던 SD 카드 리더를 모두 USB 3.1 규격의 C타입 단자로 모두 대체했다. 읽기/쓰기 속도 문제도 좋아졌지만, 리더 사용한지가 너무 오래되어서 교체하고 싶어졌기 때문에 대체를 결정했다. 구입 후 간단히 파일을 주고 받을 때는 매우 만족스러웠다. ‘이렇게 빨라도 되는건가’라는 생각이 들 정도로 만족스러웠다.
하지만 진짜 이걸 구입한 이유는 따로 있었는데, 코드를 작성할 때 들을 음악을 담아둔 DAP(Digital Audio Player)에서 언젠가 정상적으로 전송되었음에도 I/O 에러가 생기는 파일이 발견되어 플레이어 전체가 I/O 중에 멈추는 문제가 자주 발생되 것이 계기다. 이를 발견하고나서, SD카드를 Quick Format 방식이 아니라 Full Format 방식으로 포맷하여 한번 정리해준 후 새로운 음악을 넣고 싶어진 것이 이유다. 그런데, 구형 SD 카드 리더를 사용하니 USB 2.0 규격이라 정말 며칠이 걸려도 끝나지 않을 것 같았다.
저장소 크키가 128GB 넘어가니 생각보다 오래 걸린다. 그래서 구입하게 되었는데, 무사히 포맷을 마치고 약간 리더가 뜨거운 느낌이 있었는데 무시하고 음악을 전송하기 시작했다. 그런데 어느 정도 전송하고나면 자꾸 I/O 에러가 생기면서 전송이 중단되고, 마지막으로 전송하려고 했던 파일은 깨져서 다음 연결시 디스크 검사 기능이 동작하게 되는 문제가 발생되었다. SD 카드가 문제인지, 리더가 문제인지 애매해지는 순간이 온 것이었다.
‘우리 차는 바닐라 아이스크림에 알러지가 있어요’
Car allergic to vanilla ice cream 글을 몇 주 전에 본 적이 있다.
영문이지만 그리 어렵지 않은 평이한 영어로 작성되어있기 때문에 한번 읽어보길 권한다. 간단히 요약하면, 바닐라 아이스크림만 사면 차에 시동이 안 걸려서 컴플레인하러 온 고객의 문제를 해결하기 위해 엔지니어들이 관찰과 분석을 했는데 나중에 보니 아이스크림 매장 특성과 엔진의 문제 때문이었던 것으로 밝혀진 사건이다.
정말 어떻게 무생물인 차가 바닐라 아이스크림에 대해 알러지 반응을 보이냐고 비웃을 수 있는데, 원인 없는 결과는 없듯 여러가지 요소 중에 시간적 요소를 잘 찾고 가설을 세워 검증하고 맞는지 확인하고 이를 반복하여 원인을 찾아야한다. 결국은 ‘시동이 꺼진 후 다시 시동이 걸리기까지의 시간의 길이’가 중요한 요소가 되었고, 바닐라 아이스크림은 자주 찾기 때문에 별도의 가까운 매대에 놓여있단 점이 다시 시동을 걸기까지의 시간을 짧게 만들었고 엔진이 충분히 식지 못했기 때문에 베이퍼 락 문제를 일으켰다.
내가 SD카드 리더로 겪고 있는 문제도 이와 같은 문제일까, 아니면 정말 단순한 카드 고장일까 고민이 되었다.
추적
결국 번거롭지만, 강제로 분리한 후에 다시 랩탑에 연결했고 디스크 검사 후에 불량한 파일을 삭제한 뒤에 이상이 없다고 나와서 다시 자료 전송을 시작했다. 역시나 또 8GB가량 전송 후에 또 멈춰서 재분리 후 디스크 검사를 실시했다.
SD카드에 문제가 있다면 계속 해당 영역을 기록할 때마다 오류가 생겨야 할 것 같은데 무사히 진행되었다. 카드 문제는 일단 배제하기로 했다. I/O가 잦은 기기에 연결되어있던 카드는 아니었기 때문에 일단 이 카드 자체는 멀쩡하다고 판단했다. 그리고 중요한 건, 며칠 전에도 퀵 포맷 후에 데이터를 완전히 새로 넣은 적이 있고 그 후로는 음악이 끊기는 문제는 생기지 않았기 때문에 이 부분은 확실했다.
두번째 멈추고나서, 정말 열 때문에 문제가 생기는 것 같아 USB 전원으로 충전해서 사용하는 선풍기를 SD카드 리더에 바람이 가도록 두고 전원을 켰다. 그리고 다시 남은 파일들의 전송을 시작했다.
결과
다행스럽게도, 선풍기를 켜놓는 동안에는 속도가 약간 오르내리는 경향이 있긴 했지만 큰 문제 없이 끝까지 전송하는데 성공했다. 약 20GB 분량의 음악을 그 이후로는 끊김 없이 전송할 수 있었다. 그리고 CRC32 돌려본 결과 모든 파일이 일단 안 읽히진 않았고, 체크썸 값도 원본 데이터와 일치했다.
원인 분석
여러가지 원인이 겹쳐서 발생했는데, 사용하는 책상의 환경이 어이없는 문제를 일으켰다. 데스크매트가 가장 큰 원인이었다.
- SD 카드 리더의 성능이 개선되면서 많은 데이터가 오가게 되고, 컨트롤러에서 그만큼 열이 많이 발생된다.
- 현재 사용하고 있는 랩탑의 특성상, 해당 카드 리더를 USB-C 포트에 연결하면 리더와 책상 바닥 사이에 간격이 1mm도 남지 않는다. 거의 바닥면과 바로 붙는다.
- 책상에는 차가운 책상이 손에 닿는 느낌이 싫어서 데스크매트를 깔아두었다. 2번의 경우와 합치면, SD 카드 리더의 열기 중 한 면으로 나오는 열기는 모두 데스크매트에 흡수된다.
- 랩탑과 데스크매트 사이에는 간격을 벌려줄 받침이 없다. 바로 데스크매트 위에 랩탑이 올려져있다.
- 데스크매트는 계속 SD 카드 리더로부터 나오는 열을 품게 되고, 냉각이 잘 안되자 컨트롤러가 죽는다.
- 컨트롤러가 죽은 후에는 파일 전송에 실패하고, 더이상 파일 탐색기를 통해 목록을 읽을 수 없다.
이런 결과를 얻었고, 실제로 냉각 중에는 전혀 문제 없이 데이터가 잘 전송되었다.
SD 카드 리더는 대부분 PC 외부에 연결될 것을 상정하고, 그렇게 연결했을 때 단자 부분을 제외한 모든 면이 공기 중에 노출되어 잘 냉각된다. 그리고 총합 80GB 이상의 데이터를 한번에 복사해야할 경우는 그리 흔치 않다.
이 모든 경우가 겹치면서 냉각이 불량해지고, 데이터 전송량은 늘어나며 컨트롤러가 과열로 멈추는 경우가 생겼던 것이다.
제품 제작과 출고 당시에 데이터 전송 테스트는 해보았겠지만, 이런 환경에서 사용했을 때 문제가 발생하는 건 아마 발견하지 못했을 것 같다. 결국 환불하려다가 잘 되어서 그냥 뒀다.
결론
당연히 큰 문제가 없으리라 생각했던 요소(데스크매트)는 오늘 문제의 원인이 되었다. 그리고 SD 카드 리더가 생각보다 튼튼하지 못한 점도 아쉬운 점이 있는데, 솔직히 손으로 만졌을 때 뜨거워서 손을 못 대는 정도도 아니었고 이 때문에 열이 원인이란 생각을 하는데 시간이 많이 소요되었다.
바닐라 아이스크림에 알러지 있는 차처럼 아주 황당할 정도는 아니었지만, 말이 안되는 상황이 자꾸 생기면 다시 차분히 해당 문제가 발생할 때까지 영향을 주는 모든 요소에 대해 검토를 해볼 필요가 있다. 원인 분석은 데이터로 한다. 이번에는 온도계가 없어서 손으로 느꼈지만, 정확한 데이터를 얻는 것이 좋다.
그리고 원인을 추측했다면, 한번에 다양한 변인을 주지 말고 하나씩 통제해가며 테스트하는 것이 중요하다. 실험군과 대조군을 꾸리는 것, 이러한 문제를 해결하는 것 뿐만 아니라 프로그래밍에 있어서도 많은 도움이 된다.
이 문제 때문에 간단히 끝내고 낮잠 자려고 했던 일요일에 제대로 낮잠도 못 자고 해결하느라 시간을 보냈다. 다음엔 좀 더 좋은 제품을 사든지 그래야겠다는 생각이 든다.