서버 복구는 총체적 난국이었다.
전적으로 나의 불찰이다.
앞서도 썼지만 서버 관리에 있어서 백업은 필수이다. 이를 간과했으니 이런 상황이 발생한 것이다.
추후에라도 참고하기 위해 상황을 공유한다.
일단 나의 홈서버 구성은 아래와 같았다.
Main Server
| |- Atom Core 저전력 서버
| |- SSD (128GB)
| |- FreeBSD with ZFS filesystem
|
+– 외장 하드
|- ZFS filesystem (software RAID)
|- Media Storage
|- Backup
이곳 블로그를 포함하여 대부분의 서비스는 Main Server의 스토리지에 저장되어 운영되고 있었고, 모든 데이터와 설정 등은 rsync를 통해 매일 외장 하드에 백업되고 있었다.
문제의 시작은 외장 하드 인식이 안된다는 것을 내가 인식하면서였다.
외장 하드를 다른 컴퓨터에 붙여봐도 전혀 인식을 안하는 것으로 봐서 외장 하드의 USB controller가 고장난 것으로 생각된다.
외장 하드가 고장난 것일 뿐, 하드 디스크 자체는 문제가 없고, 즉 하드 디스크 내의 내용은 온전할테니 일단 마음이 조금 놓였다.
외장 하드 케이스가 고장난 것이 며칠 된 것 같았다. 그 며칠동안 백업이 안된 것이다. Main Server에 본 데이터가 있으니 별 문제가 아니라고 생각했다.
요즘 며칠 홈서버가 자꾸 다운되고 말썽이었던게 생각이 났다. Googling을 해보니 아마도 외장 하드의 ZFS를 운영하기에 memory가 부족하여 생기는 증상인 것 같았다. (ZFS는 다 좋은데 고사양을 요구한다.)
Memory를 증설하거나 교체할 생각도 했지만 그건 일단 나중이고, 우선은 시스템을 최신으로 업데이트 해야겠다고 생각했다. (여기서부터 문제의 시작!!)
FreeBSD를 쓴 것은 아니고 정확히 말하면 TrueOS라고 FreeBSD 기반으로 최적화한 OS를 쓰고 있었다. 어제까지 버전은 TrueOS 10.0 이었다.
홈서버를 운영한 것이 2012년부터이니 5년동안 한번도 속썩이지 않고 운영한 기특한 서버이다. 처음에는 TrueOS 8.x 부터 시작했을 것이다. 그동안 옆 번 메이저 업그레이드(8.x -> 9.x -> 10.0)도 잘 하고 했었는데 최근 약 1년동안 내가 너무 방만했던 것 같다.
최신 FreeBSD가 2016년 10월에 11.0으로 업그레이드 되었고, 항상 갈고 닦고 맨들맨들해야하는 것이 서버 관리자의 소임이거늘 나는 잘 돌아가는 걸 굳이 건드릴 필요가 없다는 안일한 생각과 귀차니즘으로 인해 관리를 손 놓고 있었다. 시스템이 삐걱대서 확인과 조치를 할 필요가 있었는데 제대로 된 확인도 없이 백업도 없이 그냥 시스템 업데이트라는 칼을 대고 만 것이다. (반성반성)
시스템 업데이트는 성공이라고 떴다. 리붓을 했는데 갑자기 부팅이 안된다. 허걱…
가만히 생각해보니 그동안 너무 오랬동안 업그레이드를 안해서 나도 헛갈렸고 나의 실수로 시스템이 꼬인 것 같다. 기존에 TrueOS 10.0이 설치되어있었는데 FreeBSD 11.0으로 업데이트 시도를 했다. 시스템을 헛갈렸다. 근데 사실 이게 문제였는지는 모른다. (심증은 있지만…) MBR에 문제가 있는 것 같다. (근데 시스템 업데이트에서 MBR은 안건드릴텐데…). 음… 골치가 아프다.
5년동안 운영한 블로그와 개인적인 기록들, 자료들을 살리는게 최우선이다. (이 블로그는 아직 1년이 되지 않았지만 소중한 자료와 인연들로 가득하다.)
이런 경우 두가지 선택의 기로에서 고민하게 된다.
- 문제를 제대로 파악해서 해결할 것인가.
- 기술적인 도전이 필요하다.
- 시간이 얼마나 걸릴 지 장담할 수가 없다.
- MBR 문제를 해결해도 시스템이 꼬인 것은 해결 못할 수 있다.
- 데이터를 복구하고 다시 깔끔하게 준비할 것인가?
- 기술보다는 관리적 노하우가 필요하다.
- 시간이 오래걸리겠지만 확실히 된다는 보장이 있다.
- 데이터 복구만 되면 시스템까지 깔끔하게 할수가 있다.
1번 안으로 하고 싶었으나 그러기엔 위험요소가 컸고, 얼마나 시간이 소요되어야 해결될 수 있을지 기약이 없었다. 그리고 복구를 한다해도 어차피 다시 시스템을 깔끔하게 해야하는데 얼마나 꼬였는지 알 수가 없어 다시 2번이 필요할 것이라 생각이 들었다.
그래서 이제 지상과제는 데이터를 살리는 것인데 이게 만만치 않다.
데이터는 두곳에 있다. 하나는 Main Server의 SSD와 외장 하드의 백업본…
SSD에는 최신본이 들어있고, 외장 하드에는 며칠 지난 데이터가 있다. (며칠전에 USB controller가 고장났으니…)
둘다 ZFS filesystem 으로 구성되어있다.
ZFS는 내가 아는 한 이 세상 최고의 filesystem 이다. 문제는 이 ZFS를 인식하기 위한 별도의 OS System이 필요하다는 것이다. (그래야 SSD/HDD 안에 있는 데이터를 복구시키니까…)
기본 아이디어는 SSD나 외장하드를 컴퓨터에 붙여서 데이터를 백업하고, 다시 SSD를 MainServer에 붙여서 OS와 프로그램들을 다시 설치하는 것이다.
갖고 있는 별도의 컴퓨터는 Mac 노트북 뿐이다. 기본으로는 ZFS를 지원하지 않는다. 검색을 해보니 OpenZFS가 Mac OS도 지원한다.최신 Mac OS인 Sierra도 지원한단다. 바로 설치한다.
홈서버의 SSD를 떼서 외장하드 케이스에 붙여 Mac에다 연결해본다. 이상하다 인식하지 못한다.
홈서버 외장 하드를 떼서 외장하드 케이스에 붙여 Mac에다 연결해본다. 이건 인식이 된다. (그나마 다행이다.)
(왜 하나는 되고, 하나는 되지 않았는지 이것도 미스테리다. ZFS filesystem 버전이 달랐나…?)
외장 HDD가 인식이 되니 며칠 전 자료나마 백업해서 복구하면 되겠다고 생각하다가, 퍼뜩 새로운 아이디어가 떠올랐다. (유레카!)
요즘 대부분의 OS Installer는 LIVE 모드 라는 것을 제공해서 설치하지 않고도 미리 대부분의 기능을 사용할 수가 있다.
이렇게 되면 Main Server에서 FreeBSD를 LIVE 모드로 구동시키면 SSD와 외장 하드의 내용을 읽을 수가 있고, 마음 먹은데로 백업도 할 수 있다는 것이다.
USB 메모리에 FreeBSD Install image를 설치해서 Live모드로 홈서버에서 부팅을 한다.
Live 모드에서 SSD가 제대로 인식된다. (만세)
홈서버 외장 하드도 제대로 인식된다. (만만세)
SSD에 있는 최신 데이터와 설정을 외장 하드로 복사한다. 사진과 동영상(턱걸이 영상)이 많아서 시간이 오래걸린다.
복사가 완료된 후 외장 하드를 Mac에 붙여서 2차 백업을 한다. 성공했다. 사실 이건 결과적으로 필요는 없었는데 혹시나 싶어 백업을 했다. (혹사라도 새로 OS 설치한 후에 외장 HDD 인식이 안되면 방법이 없으니…) 이렇게 Mac안으로 데이터 백업이 되니 세상 걱정이 없었다.
이제 FreeBSD 최신 버전(11.0)을 SSD에 깔끔하게 설치한다.
외장 하드에 복사한 데이터를 SSD에 다시 복사한다.
네트웍 설정, 계정, APM, PHP extension module, Data Migration, cron 등을 모두 재설정하니 나의 블로그 화면이 정상적으로 떴다. (흐흑… 반갑다.)
그동안 방과 책상 위는 오방난장이었다. 드라이버, USB memory stick, 외장 HDD, 뚜껑 열린 홈서버, 키보드, 모니터 등 평소에 안쓰는 것들을 죄다 꺼내서 난리를 폈다.
잠도 거의 못자고 (이런 문제가 있으면 해결할 때까지 식음을 전폐하는 스타일이다.) 복구를 했다.
일단 서버를 급하게 복구 시킨 것 뿐이고, 고장한 외장 하드 케이스는 A/S를 맡겨야겠고, 새로 백업 설정 등을 마무리해야한다.
rsync와 ZFS snapshot을 쓰는게 가장 좋을 것 같다. (슈퍼 막강 ZFS snapsnot)
이렇게 한번 푸닥거리를 하고 나니 많은 것을 겪고, 알고, 느끼게 된다.
ZFS snapshot이라는 막강하고 편리한 도구가 있는데도 그걸 제대로 활용안했으니 이런 사단이 생겼을때 해결이 어렵고 오래걸린 것이다.
턱걸이 동영상이 많아서 백업에도 오래걸렸다. 홈서버를 운영해서 용량 제한이 없는게 장점이기는 한데 유투브 등을 쓰는게 용량과 관리에 있어 편할 것 같다.
잃어봐야 평소의 소중함을 안다고 했던가… 어제까지 잘 나오던 블로그 화면이 다시 돌아오니 걱정이 없다. (어제까지는 블로그 화면이 나오는 것은 아주 당연한 것이었다.)
요즘 소홀했던 블로그에도 다시 애정이 더 생기는 것 같다.
다시 초심으로 돌아가 홈서버 구축과 운영기를 써야겠다는 생각이 들었다. 더불어 팁들도…
이제 다시 뚜껑이 닫히고, 키보드, 모니터 연결도 없이 홈서버가 제 자리에 위치해서 묵묵히 할일을 다하는 것은 보니 홈서버도 대견스럽고, 복구시킨 나도 대견스럽다. (누가 문제를 일으켰는데 스스로 대견하다니… 쩝…)
다시 분발하자!!