누구나 플래시 드라이브(USB 메모리)를 하나쯤 가지고 있습니다. 작지만 유용한 이 장치는 데이터를 옮기는 일을 무척 간편하게 만들어 줍니다. 하지만 때때로 플래시 드라이브가 손상되거나 아예 작동을 멈추는 경우도 생기곤 합니다. 다행히 리눅스를 사용 중이라면 문제 해결에 도움이 되는 다양한 도구를 이미 갖추고 있는 셈입니다. 이 튜토리얼에서는 Ubuntu를 기준으로 설명하지만, 대부분의 최신 리눅스 배포판에서도 동일하게 적용할 수 있습니다. 지금부터 리눅스에서 손상된 USB 드라이브를 복구하는 방법을 알아보겠습니다.
이 글에서는 데이터의 안전을 최우선으로 생각합니다. 먼저 플래시 드라이브의 내용을 백업하는 방법을 소개한 뒤, 다양한 복구 방법을 순서대로 살펴봅니다. 이렇게 하면 복구 시도 중 문제가 악화되더라도 현재 상태의 스냅샷으로 되돌릴 수 있습니다.
압축된 전체 백업 이미지 만들기
리눅스에는 저장 장치를 백업할 수 있는 도구가 많지만, 가장 오랫동안 검증된 방법은 dd와 GunZip(흔히 gzip이라 불리는)을 활용하는 것입니다.
1. 플래시 드라이브를 백업하려면 먼저 컴퓨터에 연결하세요. 그다음 즐겨 쓰는 터미널을 열거나 CTRL+Alt+T를 눌러 터미널을 실행합니다.
2. 플래시 드라이브의 위치를 확인합니다:
ls /dev/disk/by-id
3. 다음 명령어 하나로 플래시 드라이브 전체를 ZIP으로 압축된 이미지 파일로 백업할 수 있습니다:
sudo dd if=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress | gzip -c > /home/USERNAME/backups/BACKUP_NAME.img.gz
4. 백업을 복원하려면 두 명령어의 순서를 반대로 바꾸고 출력 장치를 플래시 드라이브로 지정하면 됩니다. 전체 명령어는 다음과 같습니다:
sudo gzip -c /home/USERNAME/backups/BACKUP_NAME.img.gz | sudo dd of=/dev/disk/by-id/YOUR_FLASH_DRIVE status=progress
FSCK로 손상된 파일시스템 복구하기
플래시 드라이브 내용을 백업했다면 이제 복구를 시도해 볼 차례입니다. 이때 활용할 수 있는 것이 fsck입니다. 이 도구는 불량 파일 블록을 제거하는 데 탁월하며, 대부분의 손상과 읽기 오류는 바로 이런 문제에서 비롯됩니다.
이 명령어에는 드라이브 전체가 아닌 파티션을 지정해야 합니다. 다음 명령으로 장치 이름과 비슷한 형태의 파티션을 찾을 수 있습니다:
ls /dev/disk/by-id/usb*
그다음 다음과 같이 fsck를 실행합니다:
sudo fsck -v -a /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION-TO-CHECK
명령어의 각 구성 요소는 다음과 같습니다:
sudo fsck: 관리자 권한으로 복구 도구를 실행합니다.-v: 진행 과정에 대한 자세한 정보를 화면에 표시합니다.-a: 발견된 오류를 자동으로 복구하도록 지정합니다./dev/disk…: 오류 검사를 수행할 파티션 경로입니다.
터미널에서 Fdisk/MKFS로 USB 드라이브 포맷하기
fsck로 파일시스템을 복구하지 못했다면, 드라이브를 포맷해서 새것처럼 사용하는 방법을 시도해 볼 수 있습니다.
1. 첫 번째 단계는 기존 파일시스템 구조를 모두 지우고 처음부터 새로 만드는 것입니다. 이때 fdisk를 사용할 수 있습니다. 다음과 같이 sudo와 함께 실행합니다:
sudo fdisk /dev/disk/by-id/YOUR_FLASH_DRIVE
2. o를 누른 후 Enter를 누르면 새 DOS 파티션 테이블이 생성되어 어떤 환경에서도 USB 드라이브를 읽을 수 있게 됩니다. 최신 컴퓨터와 OS에서만 사용할 계획이라면 o 대신 g를 눌러 GPT 파티션 테이블을 만들어도 좋습니다.
3. n을 누른 후 Enter를 눌러 새 파티션을 만들고, p를 눌러 주 파티션(primary)으로 지정합니다. p 대신 e를 누르면 확장 파티션이 생성되지만, 드라이브에 파티션을 세 개 이상 만들 계획이 없다면 굳이 그럴 필요는 없습니다. 이후 파티션 번호, 시작 섹터, 마지막 섹터를 묻는 질문에는 Enter만 눌러 기본값을 수락하면 파티션이 USB 드라이브 전체를 차지하게 됩니다.
4. p를 누르고 Enter를 누르면 USB 드라이브의 새로운 저장 구조를 확인할 수 있습니다. 그다음 w를 누르고 Enter를 누르면 변경 사항이 USB 드라이브에 기록되고 fdisk가 종료됩니다.
5. 생성된 파티션은 아직 포맷되지 않았고 파일시스템이 없으므로 사용할 수 없는 상태입니다. 파일시스템을 만들려면 모든 최신 리눅스 배포판에 기본 포함된 mkfs 도구를 사용하면 됩니다. 대부분의 장치와 호환되는 FAT32로 포맷하려면 다음 명령어를 사용합니다:
sudo mkfs.fat -F 32 /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
6. 최신 Windows에서 사용할 NTFS로, 또는 리눅스 전용 EXT4로 포맷하려면 다음 명령어를 사용합니다:
sudo mkfs.ntfs /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
또는
sudo mkfs.ext4 /dev/disk/by-id/YOUR_FLASH_DRIVE-PARTITION
GUI 도구 '디스크'로 USB 드라이브 점검 및 복구하기
명령어 입력이 부담스럽다면 디스크(Disk) 도구를 활용해 USB 드라이브를 점검하고 포맷할 수 있습니다. 디스크 도구는 Ubuntu에 기본 설치되어 있습니다.
1. 앱 메뉴를 열고 "디스크(disks)"를 검색한 후 해당 앱을 실행합니다.
2. 왼쪽 목록에서 USB 드라이브를 선택하고 두 개의 톱니바퀴 아이콘을 클릭합니다. "파일시스템 복구(Repair Filesystem)"를 선택하고 마법사의 안내에 따라 파일시스템을 복구합니다.
3. 이번 사례에서는 하드웨어 문제가 아니라 파일시스템 손상이 원인이었습니다. 복구가 불가능한 수준이었지만, USB 드라이브를 재포맷하여 계속 사용할 수 있었습니다. 디스크 도구에서 이를 수행하려면 USB 드라이브를 선택한 상태에서 다시 톱니바퀴 아이콘을 클릭하고 "파티션 포맷(Format Partition…)"을 선택합니다.
4. 볼륨 이름(Volume Name) 필드에 USB 드라이브의 이름을 입력하고, 가장 널리 쓰이는 세 가지 파일시스템 중 하나를 선택합니다:
- Ext4: 리눅스 전용으로 사용
- NTFS: 최신 버전의 Windows에서 사용
- FAT: 리눅스와 Windows 모두, 그리고 스마트폰부터 게임 콘솔까지 다양한 기기와 호환
5. "지우기(Erase)" 옵션에 주목하세요. 빠른 포맷을 원하면 비활성화 상태로 두고, 장치의 내용을 완전히 삭제하는 전체 포맷을 원하면 On으로 전환합니다. 불량 블록이 있을 가능성이 있는 손상된 장치를 다룰 때는 전체 삭제 옵션을 선택하는 것이 좋습니다.
새 생명을 얻은 USB 드라이브
손상된 USB 드라이브를 성공적으로 복구했다면 이제 새 드라이브처럼 다시 사용할 수 있습니다. 나아가 리눅스 라이브 USB 드라이브를 만들고 싶다면 관련 지침을 참고해 진행해 보세요.