DDRescue를 이용하여 마이그레이션이 불가능할 정도로 손상된 HDD/SSD 복원

최근 가족이 운영하는 치과병원에서 치아 X-Ray 촬영 장비에 연결되어 있던 약 7년 정도 된 컴퓨터가 고장이 나서 복원을 시도했다. 윈도우즈 운영체제 차원에서 계속하여 하드디스크가 손상되었으니 백업을 해야한다는 메세지가 표시되는 현상이었는데, 아마도 S.M.A.R.T. 검사 통과에 실패한 것으로 보였고 경험적으로 해당 검사에 통과하지 못한다는 것은 조만간 하드디스크 데이터에 접근 조차 불가능해질 수 있는 매우 안좋은 시그널이었기에 신속하게 집으로 가져왔다.

컴퓨터를 열어보니 예상과는 달리(?) HDD가 아닌 SSD가 달려있었는데, 사용하던 데스크탑에서 SSD 가 부족하여 새로운 SSD를 구매 후 운영체제 까지 통째로 영혼까지 복제 해버리는 마이그레이션(migration) 작업을 한두번 해본게 아니었기 때문에 쿠팡에서 WD의 보급형 SSD를 주문하여 마이그레이션 툴을 작동시키면 금방 고칠 것이라 생각했다.

그런데 왠걸, Macrium reflect / Acronis / Clonezilla 등 하드디스크 복제를 위한 마이그레이션 프로그램 중 가장 유명한 3종 세트를 다 동원해봐도 진행률 13% 수준에서 지속적으로 복제에 실패 했다는 메세지를 표시하며 진행이 안되었다. Macrium을 기준으로 오류메세지는 아래와 같았다.

Clone failed – Error 0 – Read failed – 23 – Data error (cyclic redundancy check)
Error Code 23 – Data error (cyclic redundancy check)

Macrium reflect

그래서, 이 글은 Macrium reflect, Acronis true image, Clonezilla 어떤 마이그레이션 프로그램으로도 복제하지 못하던 심각하게 손상된 SSD를 오픈소스 툴 GNU DDRescue를 통해서 복원해낸 이야기이다.

하드디스크 드라이브(HDD)와 솔리드 스테이트 드라이브(SSD)는 컴퓨터 시스템의 중요한 데이터 저장 장치로 사용되지만, 이들의 수명은 무한하지 않다.

HDD의 유한한 수명

  1. 기계적 마모: HDD는 회전하는 디스크, 이동하는 읽기/쓰기 헤드 같은 기계적 부품을 사용하여 데이터를 저장한다. 이런 부품은 지속적인 사용으로 인해 마모되고, 결국 고장날 수 있다.
  2. 물리적 손상 가능성: HDD는 충격이나 떨어뜨림과 같은 물리적인 힘에 취약하다. 이런 충격에 의해 내부 부품이 손상되면 드라이브가 작동을 멈출 수 있다.
  3. 열적 스트레스: 장시간 사용으로 인해 발생하는 열은 HDD의 부품을 약화시키고 수명을 단축시킬 수 있다.

SSD의 유한한 수명

  1. 셀 마모: SSD는 NAND 플래시 메모리를 사용해 데이터를 저장한다. 이 NAND 메모리 셀은 현재 기술에서 제한된 횟수의 쓰기/지우기 사이클만 견딜 수 있으며, 이 한계에 도달하면 더 이상 사용할 수 없게 된다.
  2. 컨트롤러의 수명: SSD의 컨트롤러는 데이터의 읽기 및 쓰기 작업을 관리한다. 이 컨트롤러도 일정시간이 지나면 열적/전자적 손상에 따라 결국 고장날 수 있다.

결국 HDD/SSD 든 유한한 수명을 가지고 있고, 언젠가는 고장이 난다는 말인데 이번에 고장난 컴퓨터와 같이 쓰기 작업이 빈번한 컴퓨터에서 사용되는 SSD의 경우 그 수명은 생각보다도 훨씬 짧다. 그나마 읽기라도 가능한 상태라면 새로운 SSD를 구매하여 복제를 하면 되겠으나, 이번과 같이 정상적인 읽기 조차 어려운 상황이라면 조금 다른 접근 방법이 필요하다.

DDRescue에 관하여

DDrescue (GNU ddrescue)는 데이터 복구 도구로, 손상되거나 오류가 발생한 드라이브에서 데이터를 복구하는 데 사용된다. 이 프로그램의 핵심 알고리즘은 다음과 같이 정교하게 작동한다. chkdsk 등으로도 복구가 안되는 하드디스크들에 대해서되 최선의 결과를 보장한다.

  1. 선형 복구: DDrescue는 처음에 디스크의 데이터를 선형적으로 읽는다. 즉, 시작 부분부터 순서대로 데이터를 읽어 들인다. 이 단계에서는 오류가 발생하지 않은 영역을 대상 디스크로 빠르게 복사한다.
  2. 오류 처리: 오류가 발생하는 영역을 만나면, DDrescue는 그 위치를 기록하고 건너뛴 후 다음 영역의 복사를 계속한다. 이렇게 함으로써, 복구 과정 자체가 디스크에 추가 손상의 원인으로 작용하는 것을 최소화하고 디스크의 오류가 적은 부분부터 데이터를 복구할 수 있다.
  3. 역방향 접근: 초기 스캔이 완료된 후, DDrescue는 오류가 발생한 영역을 역방향으로 접근하여 다시 시도한다. 이는 더 많은 데이터를 복구할 수 있는 기회를 제공한다.
  4. 분할 및 정복: 오류가 발생한 영역에 대해서는, DDrescue는 ‘분할 및 정복’ 알고리즘을 사용한다. 오류가 발생한 영역을 더 작은 부분으로 나누고, 각 부분을 개별적으로 처리하여 가능한 많은 데이터를 복구하려고 시도한다.
  5. 재시도: DDrescue는 설정에 따라 오류가 발생한 영역을 여러 번 재시도할 수 있다. 이 과정에서 더 많은 데이터가 복구될 수 있다.
  6. 로그 파일 사용: 복구 과정에서 DDrescue는 로그 파일을 사용하여 진행 상황을 기록한다. 이 로그 파일 덕분에 복구 과정을 중단했다가 나중에 다시 시작할 때 처음부터 다시 시작하는게 아니라 이전 작업을 이어갈 수 있다.

결국 DDrescue의 이러한 정교한 알고리즘은 특히 물리적으로 손상된 드라이브 또는 불안정한 드라이브에서 새로운 디스크 드라이브로 데이터를 복제/복구하는 데 유용하다.

DDRescue 사용 방법

1단계: 도구 준비

  • DDRescue: 리눅스 기반의 데이터 복구 도구
  • 새 SSD 또는 다른 저장 장치: 손상된 디스크에서 복구된 데이터를 저장할 장치(원본 손상디스크와 같거나 더 큰 용량 권장)
  • 부팅 가능한 리눅스 라이브 CD 또는 USB: 손상된 디스크에 저장된 운영체제를 통해 부팅 할 경우 해당 운영체제가 디스크를 사용하면서 손상된 디스크의 상태를 악화 시킬 수 있기 때문에, 시스템에 직접적인 영향을 주지 않고 리눅스 환경을 사용할 수 있도록 하는 부팅 가능한 리눅스 미디어가 필요하다.

2단계: 리눅스 라이브 환경 구축

  1. 리눅스 라이브 CD나 USB를 사용하여 컴퓨터를 부팅합니다.(부팅가능한 리눅스를 구축하는 방법은 검색엔진을 활용하면 쉽게 얻을 수 있으므로 패스)
  2. 필요한 경우, 인터넷을 통해 DDRescue를 설치합니다. 대부분의 리눅스 배포판에서는 패키지 관리자를 통해 쉽게 설치할 수 있다.

Ubuntu, Debian 및 Linux Mint에 ddrescue를 설치하려면
$ sudo apt install gddrescue

Fedora, CentOS, AlmaLinux 및 Red Hat에 ddrescue를 설치하려면:
$ sudo dnf install ddrescue

Arch Linux 및 Manjaro에 ddrescue를 설치하려면:
$ sudo pacman -S ddrescue

3단계: 손상된 SSD와 신규 SSD 연결

  1. 부팅 이전에 손상된 SSD와 신규 SSD를 컴퓨터에 연결한다.
  2. 드라이브 식별자 확인 : 리눅스에서는 일반적으로 lsblk 명령어를 통해 드라이브를 확인할 수 있습니다.

4단계: 복구 프로세스 실행

  1. 터미널을 열고 DDRescue 명령어를 실행합니다. 기본 형식은 다음과 같다.
    sudo ddrescue -d -r3 /dev/sdx /dev/sdy /path/to/logfile.log
    여기서 /dev/sdx는 손상된 드라이브, (lsblk 명령어로 확인)
    /dev/sdy는 데이터를 복구할 대상 드라이브, (lsblk 명령어로 확인)
    /path/to/logfile.log는 로그 파일의 경로이다.
  2. -r3 옵션은 DDRescue가 오류를 3번까지 재시도하도록 지시합니다. 이는 복구 가능성을 높이기 위함이다. 3보다 높은 숫자를 입력하면 더 많은 횟수를 시도하지만, 어차피 3회를 넘어서는 횟수를 시도한다고 복구확률이 높아지지 않을 뿐더러 숫자를 올릴 수록 복구를 완료하는데 필요한 시간이 기하급수적으로 증가하기 때문에 3을 추천한다.

5단계: 복구 상황 모니터링

  • DDRescue는 복구 진행 상황을 실시간으로 보여준다. 오류가 많은 영역에서는 속도가 느려질 수 있다.

6단계: 복구 완료 후 확인

  • 복구 프로세스가 완료되면, 손상된 SSD를 대신하여 복구된 SSD 를 해당 위치에 장착 이후 부팅을 시도하거나, 혹은 부팅 드라이브가 아니었다면 복구된 신규 SSD 파일시스템에 접근하여 복구된 데이터를 확인한다.

결론

이 방법을 통해 나는 어떠한 SSD 마이그레이션 프로그램으로도 복제가 불가능하던 SSD을 복제와 함께 데이터 역시 대부분 복원하는 것에 성공하였다. (심지어 복구된 SSD로 부팅 결과 아무런 문제도 없었다는 듯이 윈도우즈 운영체제가 동작) 다만 하드디스크의 손상 정도와 상황에 따라 복원의 수준이 달라질 수 있다보니 모두가 나와 같이 성공한다고 장담하긴 어렵다.

DDRescue는 무료 소프트웨어이지만, 정교하게 작동하고 충분히 시도해볼 가치가 있다. 특히 SSD가 손상되어 새로운 SSD로의 마이그레이션과 함께 데이터 복원도 안전하게 해내고 싶다면. (리눅스를 다룰 수 있는 기본적인 지식은 필요하다. 이게 어렵다면, 전문가의 도움을 받자.)

[싱글몰트 증류소 방문기 2] 전설의 위스키의 언덕 Springbank Distillery

21년-23년 전 세계적인 싱글몰트 열픙 속에서도 가장 높이 떡상하여 이제는 전설이 되어버린 스프링뱅크. 사실 나는 그렇게까지 스프링뱅크의 팬은 아니었지만 이번 스카치 여행을 준비하면서 스프링뱅크 스토리에 매료되어 종국엔 가장 방문을 고대하던 증류소가 스프링뱅크였다.

그렇게 오로지 스프링뱅크만을 위해 시작된 깡시골행

스프링뱅크는 캠벨타운이라는 아일라섬 건너편 바닷가마을에 위치하고 있는데, 글래스고에서 정-말 멀고(운전으로 4시간 정도) 관광과는 거리가 먼 작은 마을이었다.

플로어 몰팅의 현장, 각기 다른 기둥 색깔은 스프링뱅크 정규 라인업들을 상징한다

5대째 가족 경영 하고 있고, 몰트를 발아 시키는 플로어 몰팅(floor malting) 부터 병입까지 위스키 제작의 전 과정을 스프링뱅크 증류소 안에서 100% 직접 컨트롤 하는 것으로 유명하다. 사실 전 세계적인 수요를 생각하면 현실과 타협하고 몰트 정도는 받아 쓸 만도 할텐데 끝까지 지고지순한 원칙을 지키는 것이 스프링뱅크를 더욱 위대하게 만든다.

몰트를 건조 할 때 사용하는 피트(Peat, 이탄) 실물
몰팅을 위한 화로, 여기서 태운 피트의 향이 몰트에 스며든다.

투어 과정은 어느 증류소 보다도 개방적으로 운영된다. 증류기 등 일부 영역에서의 촬영을 금지하거나, 디테일을 설명하지 않고 넘어가 버리는 다른 증류소들과는 달리 모든 공정을 공개하고 심지어 표지판으로 구체적인 수치를 안내하고 있다. 뭘 그렇게 대단한 비밀이라고 숨기냐? “제대로된 위스키는 이렇게 만드는거야..” 라는 자부심이 느껴지는 대목이랄까.

당화조
상대적으로 앙증맞은 목을 가진 스프링뱅크 증류기

한 시간 남짓의 증류소 투어 이후 이어지는 시음 시간. 스프링뱅크 10yrs, 롱로우, 킬커런 중 각자 취향에 맞는 걸 한잔 골라서 마셔 볼 수 있고 전용잔과 증류소 한정판 미니어쳐 보틀을 선물로 준다.

숙성 전의 영 스피릿. 한잔 마셔보고 싶은..
시음 가보자고.

시음 장소와 바로 연결된 the washback bar에서는 스프링뱅크와 롱로우, 킬커런, 헤즐번의 라인업 위스키를 시음 해볼 수 있는데 국내 기준으론 전부 말도 안되게 저렴한 가격에 마셔볼 수 있다.(스프링뱅크 10, 12CS, 15, 18 flight 4잔이 25파운드= 4만원!!)

다시 봐도 아름다운 가격
호사도 이런 호사가 없지요 ㅋㅋㅋ

현장에서 기념품과 바틀도 판매하는데, 스프링뱅크 정규 라인업도 국내 시장가에 비해 저렴한편이지만 증류소 한정으로 싱글 캐스크에서 직접 추출한 바틀을 판매 한다는 점(캐스크에서 직접 샘플링된 것들이라 모든 병이 라인업, 캐스크, 숙성년도가 다르고 시중에 유통되는 어떠한 스프링뱅크 보틀과도 다르다)이 정말 팬들 눈돌아가게 하는 포인트 다. 구매하면 이력관리를 위해 구매자 명부에 기록되고 보틀에도 이름을 적어준다.

매일 리필이 되는 것 같긴하지만, 좋은 보틀을 챙기려면 오픈런을 추천한다.

비록 private cask는 못사도 나만의 스프링뱅크 private bottle은 한병씩 마련 할 수 있자나? 우리가 돈이 없지 가오가 없냐?!?!

두병이나 사게 해준 고마운 와이푸

재판매 방지를 위해 1인 1주 1병만 구매 가능하다는데, 우리도 정신 차려보니 인당 한병씩 사버렸다는.(한국가서 팔면 여행경비 충당 가능?ㅋㅋ)

한줄평. 위스키 덕후라면 꼭 가봐야할 그 곳. 전 세계 덕후들이 열광하는 것엔 이유가 있다. 진짜루.