우분투에서는 USB 메모리가 상당히 잘 읽힙니다. 2014년 현재 구동 되는 모든 OS는 당연하겠지만 USB 메모리가 안 읽히면 불편함이 이만저만 아니겠지요. 그러니 잘 읽히는 것은 당연 할 것입니다. 이는 우분투와 그 계열의 모든 OS도 마찬가지입니다.
그런데 여러분 USB메모리 쓰실 때 안전제거 꼭 하시나요? 급한 사람들은 안전제거 안 하고 그냥 쑥쑥 뽑던 것 같은데 이거 상당히 위험한 행동입니다.
이걸 굳이 하라는 이유가 있으니까 하라는 것입니다.
우분투에서도 안전제거란 이름외에도 "꺼내기","빼기","안전 제거" 등의 이름으로 이를 지원하고 있습니다. 그런데 사실 이를 찾기가 어려워서 그런지 아니면 윈도 쓸 떄의 습관이 남아서 그런것인지 까먹고 쑥쑥 뽑기 일 수입니다. 그리고 10중 9은 USB쓰기 에러창을 보게 됩니다. 그런데 우분투는 윈도와 다른 한가지 맹점이 있습니다. 윈도에서 복사는 실제 복사 작업이 끝난뒤에 창이 사라지지만 우분투는 복사 작업이 끝나기 전에 창이 사라집니다. 사실 이는 노틸러스의 문제지만, 우분투의 기본 탐색기가 노틸러스이니 우분투의 문제라고 할 수도 있습니다.(Konqeurer는 어떤지 잘 모르겠습니다. 써 본적이 없어서)
우분투도 이런식으로 꺼내기,뺴기,안전제거 등의 이름으로 이러한 기능이 들어있다.
괜히 이런 기능 있는 것 아니다. 꼭 이 기능을 이용하자.
그래서일까요? 우분투 초보자 분들께서는 저 안전제거 기능을 이용하지 않고 복사 창이 닫히자 마자 메모리를 쑥쑥 뽑아버리는 경우가 잦습니다. 애초에 윈도에서도 하면 안 되는 일이지만, 우분투는 안정성을 중요시 여기는 리눅스계열이라서 이를 더 증오합니다.
우선 안전제거를 이용하지 않으면 안 되는 이유를 말씀드리자면
1. 파일을 읽고 쓸 때 뽑으면 당연히 파일시스템에 에러가 난다.
2. 주로 FAT포맷을 이용하므로 파일이 깨질 수 있다. (NTFS나 EXT3,4에 있는 저널링 기능이 없습니다.)
3. 그냥 메모리가 사망할 수도 있다. (반도체는 전기적 충격에 약합니다.)
그런데 이 중 1,2 항목에 의해 에러가 발견되면 우분투는 시스템 안정성을 위해 파일 쓰기를 금지 해버리고 문제가 생긴 파일을 보이지 않게 처리합니다. 이 문제가 생긴 폴더, 파일을 다시 덮어쓰려고 하면 당연히 안 됩니다. 메모리에 쓰기가 안 되게끔 처리가 되어있으니까요.
그런데 윈도에서는 잘 될 것 입니다. 원래부터 윈도는 이런 문제는 사소한 것이라 생각하고 넘어가는 경향이 많습니다. 그러다 결국 지금과 같은 바이러스 천국, 좀비PC 양산이 생기게 되었다고 해도 과언은 아니지요. (그래서인지 서버용 윈도는 유닉스계열보다 더 빡센 권한 분리를 시도하더군요. 그런데 파일 시스템관리에서 또 한번 점수가 깎이네요.) 윈도는 이러한 사소해보이는 문제를 신경 안 쓰는 것 뿐입니다. 하지만 이 사소한 오류가 서서히 번지면 파일 전체로 퍼질지도 모릅니다. 하지만 우분투는 이를 막기 위해서 우선 오류를 잡거나 백업하라는 의미에서 쓰기금지를 해버립니다.
이를 해결하는 방법은 하나입니다. 오류가 난 파일과 폴더를 처리하는 것입니다.
오류를 처리하는 방법은 뭐가 있을까요?
우선 논리적 오류와 물리적 오류 두 가지에 대해 이야기 해야겠습니다. 우선 한 두 번의 실수로 인해 생긴 오류는 논리적 오류로 충분히 고칠 수 있습니다. 하지만 지속적으로 안전 제거 없이 생긴 오류는 고치기 어렵습니다. 이 경우에는 그냥 새 메모리에 백업 한 후에 포맷을 해서 대충 고쳐 써보는 방법이 있습니다. 하지만 포맷으로도 고쳐지지 않을 수준으로 반도체가 맛이 갔다면....삼가 메모리의 명복을 빕니다.
우분투는 위의 논리적 오류로도 쓰기 금지를 먹입니다. 혹시나 모를 문제에 대비 하는 것입니다. 그럼 이 논리적 오류만 해결하면 되겠네요? 네, 간단히 한 두번의 실수로 생긴 오류는 충분히 고칠 수 있습니다. 우분투에서도 가능하고 윈도에서도 가능합니다.
윈도에서는 간단하게 디스크검사 프로그램으로 검사하면 고쳐집니다.사실 도스시절부터 써오던 유서깊은 Chkdsk의 GUI버전이니 믿고 쓰시면 됩니다.
리눅스에서는 Chkdsk 따위 소리가 나오는 훌륭한 도구인 FSCK가 있습니다. 이 녀석을 이용하면 왠만한 오류는 다 고칠 수 있습니다. 리눅스나 유닉스 서버를 쓴다면 당연히 쓰게되는 물건이니 fsck라는 명령은 잘 알아두세요.
방법은 아쉽게도 GUI가 아닙니다. 혹시나 하고 찾아봤는데 fsck를 제대로 쓰는 GUI프로그램은 없더군요. Python같은 것으로 만들어진 프로그램들이 있을 줄 알았는데 의외로 없네요?
하는 수 없습니다. 그냥 터미널을 씁시다.
우선 USB메모리의 위치를 확인합시다. 메뉴-기본설정-디스크를 선택하면 디스크유틸리티가 실행되면서 USB의 장치 주소를 확인 할 수 있습니다.
여기서는 /dev/sdb1이군요. 물론 /dev/sdb는 디스크의 주소이고 /dev/sdb1은 해당 파티션의 주소입니다. 보통 USB메모리는 단일 파티션으로 쓰곤 하니까 어떻게 써도 상관은 없을 것입니다.
이제 터미널을 열고 fsck 명령을 쓰기전에 꺼내기 버튼을 눌러서 미연의 오류를 방지합시다. (꺼내기를 하지 않으면 fsck가 어차피 막을 것입니다.) 디스크 유틸리티에서도 꺼내기 버튼은 있습니다. 그리고 USB를 아직 뽑지는 마세요.
터미널을 열고 다음과 같이 명령을 칩시다.
sudo fsck -p /dev/sdb1
'
여기서 /dev/sdb1은 디스크 유틸리티에서 찾은 USB 메모리의 장치주소입니다. 여러분은 다르게 나올 수 있습니다.
그러면 오류가 난 폴더와 파일이 사라집니다.(!!!!) 복구 가능 하냐구요? 안 됩니다. 이는 복구 안 됩니다. 그러니까 백업은 필수입니다. 어쨌건 오류가 있었던 파일이 사라졌으므로 다시 USB를 뺐다가 꼽으면 쓰기 금지가 풀려있을 것입니다.
그런데 이런 복잡한 짓거리를 하기 전에 예방이 중요합니다. 그러니까 꼭 USB를 뺴기전에는 하드웨어 안전제거!!!! 꺼내기!!!! 뺴기!!!!! 이 기능을 꼭 이용하세요!!!!!!