Thursday, June 24, 2010

SD card issue with my android phone - HTC desire - resolved

하루에도 몇 번 SD card에 문제가 있다는 error message가 화면에 나타났다. backup時 camera 구동시에 가장 많이 나타났으며(당연, 이 모든 작업은 SD card에 data를 쓰기는 것이다), SD card에 접근하는 동작에서 많이 빈번히 나타났다. (유사 issue에 대한 google code의 posts)

android phone(난 HTC desire를 사용한다)의 SD card는 vfat 형식의 filesystem을 사용하고 있으며, android platform에서는 핵심적인 component이다. vfat은 그 기반이 매우 빈약하여 현재 통용되는 filesystem 중에 가장 문제를 만들어낼 가능성이 크다할 수 있다.

data storage의 문제는 여러가지가 있겠지만, 내가 겪은 문제는 SD card를 umount하고 phone을 shutdown/bringup해 버리면 일시적인 해결이 가능한 것으로 미루어 보아, SD card 자체의 결함이거나 filesystem의 논리적인 오류일 가능성이 컸다고 판단했다.

SD card 자체 결함, 즉 hardware적인 문제라면 SD card를 새 것으로 교체하는 것으로 해결할 수 있다. filesystem, vfat의 논리적인 오류라면 filesystem을 새로 작성하면 해결될 것으로 기대했다.

우선 당장할 수 있는 것부터 해 보는 것이 맞는 선택.

HTC desire에서 SD card를 축출한 다음, 나의 laptop에 삽입했다. 나의 laptop은 ubuntu가 동작하고 있다. 일단 directory를 살펴보니, /LOST.DIR 에 여든개 이상의 파일들이 숫자를 이름으로 하여 있었다. unix filesystem 혹은 이와 유사한 filesystem(ext3 等)에서 볼 수 있는 'lost+found'의 vfat 버전으로 간략 설명할 수 있다. 이름에서도 알 수 있듯이 '유실물 보관소' 즉, files가 제 자리를 잃고 있어야 할 곳에서의 chine이 끊어진 것들이라 볼 수 있다. 이들은 대부분 data 유실과 관계가 있다. 파일의 성격은 대부분 web browser의 cache라고 의심했고, 성격을 알 수 없는 files도 다수 있었다 - 도체 난 어떤 data를 잃어버린 것일까?

난 tar 명령으로 SD card 內의 모든 files를 backup하고, 'mkfs -t vfat'으로 filesytem을 다시 작성했다. ext3 filesystem도 시도해 봤지만, android 2.1에서는 인식하지 못하였다(booting이 끝나자 인식할 수 없는 SD card를 format하겠냐고 물어오는 대화상자가 떴다). mobile phone과 같이 작은 전자기기에서 내부경계를 고려하지 않는 것이 어쩌면, 더 나은 결과(활용성 용이성 단순함)를 낳을 수 있고 FAT 계열의 채용은 관련된 platform 설계시 보다 diet하게 만들 수 있는 이점이 분명있다. 하지만, (기본값은 아니더라도) kernel에 ext3 정도를 인식할 수 있게 만들면 android platform이 비대해질까? kernel 뿐만 아니라, apps 등 많은 부분에서 복잡성이 더해질 수 있겠다는 생각을 해 본다. 하지만, 분명 사용자의 불편은 비켜갈 수 있다는 생각이다.

filesystem을 새로 작성한 (물론 vfat이다) SD card를 mount한 다음, tar로 묶어 놓았던 것을 restore했다.

새로 작성된 filesystem을 가진 SD card는 더이상 같은 문제를 (지금까지는) 일으키지 않고 있다. 그간 발생 빈도를 비추어보면 동일 문제는 해결되었다 - 라고 생각하고 있다. 역시 filesystem의 논리적인 오류였다.

android platform의 문제도 HTC desire의 문제도 물론 아니었다. (현재까지의 결과에 비추어 보면)


jhin@jhin-laptop:~$ mount
//---------------- snip -------------------//
/dev/mmcblk0p1 on /media/6362-6464 type vfat
(rw,nosuid,nodev,uhelper=udisks,uid=202100,gid=202100,shortname=mixed,dmask=0077,utf8=1,flush)




이 문제는 종국에, Micro SD Card를 새로 구매하는 수준에서 일단락되었다. 번들되었던 8GB Micro SD Card의 국지적인 문제였다. 현재 SanDisk에서 제작된 32GB의 그것으로 교체하였다.

No comments:

Post a Comment