업무에서 큰 용량의 데이터를 공유할 일이 많이 생겨, 팀 전용 서버를 하나 마련하기로 했다.

작은 팀이어서 서버를 전담할 인력을 붙일 수는 없고, 더군다나 서버와 통신이 많이 일어나는 환경이 아닐 것이었으므로 그냥 내가 초기화 및 세팅하는 방법을 조금 공부하여 설치하고, 틈틈이 모니터링하면서 문제가 생기지 않는 정도로 관리하면 될 것으로 합의하였다.

 

 

  • HW spec
    • 회사에서 기존에 사용하는 것과 같은 Synology DS918+을 NAS로 사용한다.
    • 경제적인 이슈로 HDD는 WD mybook 8T 외장하드에서 적출하기로 했다.

  • 물리적 설치
    • 외장하드를 적출한다.
      • 헤라(플라스틱 주걱)나 안쓰는 신용카드 등을 이용해서 틈새를 벌려 주고, 케이스와 봄 부품이 빠져나올 것 같은 방향으로 조금씩 밀어준다. 잘 모르겠다면 youtube를 적극 활용하자. 물론 그래도 잘 모르겠어서 막 뜯었더니 두 번째부터는 조금 수월해졌다.
      • 케이스를 뜯고 나서 하드를 분리할 때 육각 별모양 드라이버가 필요했다. 렌치로도 가능할 것 같았지만 왠만하면 비트를 갈아끼는 드라이버가 있는 게 좋을 것 같다.
      • 다음에 또 이럴 일이 있다면 mybook보다는 easystore나 elements쪽으로 사는 게 나은 것 같다. mybook케이스는 뭔가 갑옷같다.
      • easystore는 elements의 베스트바이 버전이라고 하는 것 같다. 디자인이 거의 같으나 easystore가 더 싼 편이라고 한다. 물론 한국 쇼핑몰에서 사면 배송비용 등등이 포함되어 거의 비슷하다.
      • 적출 후에는 혹시 모를 수리, 보증, 외장하드로의 재사용 등을 위해 부품을 모아두었다
    • bay에 적출한 하드디스크를 하나씩 마운트한다. 나사를 조으는 곳에 플라스틱 가드가 붙어 있으므로 적절히 제거하고 마운트하면 된다.
      • 서버용 HDD는 소모품*이라고 생각해야 하기 때문에, 마운트한 날짜와, 어떤 베이에 마운트했는지의 번호를 기입하여 붙여둔다.
      • 서버 구축이 처음인 나로서는 문제가 생기면 안그래도 당황스러운데 베이에서 꺼낸 하드가 다 똑같이 생겨 멘붕에 빠질 것만 같기 때문에 라벨을 붙여 둬야 나중에 문제가 생겼을 때 어느 하드에 문제가 생겨서 복구해야 하는지 등에 대해 당황하지 않을 수 있을 것 같다.
        • * HDD의 불량률은, 대부분의 사람들이 보는 Backblaze의 자료를 보면 알 수 있다.
          1년 내에 문제가 생기는 비율을 나타낸 Annual Failure Rate를 보면 되고, 대략 요약하면
          HGST(히타치)의 불량률이 약 1%미만, WD의 불량률이 2%안팎, Seagate는 1~3%정도이다.
          failure가 2%남짓이면, 4bays nas를 사용하면, 1년 내에 하나 이상이 고장날 확률이 8%남짓,
          8년쯤 되면 고장날 확률이 50%쯤 된다.
          (생각보다 튼튼한데? 하지만 서버는 문제 생기면 일이 커진다)

          Toshiba도 사용하지만, 큰 용량은 시게이트나 히타치를 사용한다.
          물론 그럼에도 Backblaze는 Seagate를 사용하는 비율이 월등히 높았다.
          큰 용량에서는 오히려 Seagate의 하드가 더 AFR이 낮기도 했다.
          그럼에도 불구하고 WD를 사용한 이유는(이 시국에 히타치? 도시바?) 
          과거에 Seagate의 불량률이 너무 높았던 데 대한 안좋은 인식이 여전히 있고
          WD를 적출하는 방법에 대해서는 reference가 많았기 때문이다.
  • OS설치 및 기본 세팅
    • NAS를 하루 정도 짱박아둬도 괜찮을 법한 장소에서 작업을 시작하자. 웬만하면 최종 설치할 곳 근처에서.
      • OS를 설치하는 데 드는 시간은 길지 않으나, 설치 직후 RAID설정에 따라 parity check라는 일종의 검사를 하게 된다. Synology NAS는 os가 올라가있고 cup, ram이 있기 때문에 pc와 유사하다고 생각할 수 있고, 안정적으로 종료하기만 한다면, parity check중에도 종료했다 키면 알아서 잘 이어서 검사하긴 하지만, 왠지 찜찜하다면 세팅 후 검사가 끝날때까지 전원을 내리지 않고 둬야 하기 때문,
    • NAS에 전원과 랜선을 연결하자.
      • 일반적으로는 공유기에서 나온 랜선을 연결하고 작업을 위한 컴퓨터는 같은 공유기로부터 유선 또는 무선으로 연결하면 된다.
      • 이후 전원을 키고, 마운트한 hd drive를 모두 인식할때까지 잠시 기다리자. 2분정도 걸린 것 같다.
      • NAS에 연결할 랜포트는 두 개가 있었는데 어디 연결해도 상관없는 듯 하다. 그래도 특별한 이유가 없다면 1번에 연결하는게...
    • NAS에 DSM이라는 Synology전용 OS를 설치한다.
      • find.synology.com에 접속하면 방금 부팅한 NAS가 자동으로 검색된다. (안된다면 역시 구글링)
      • os설치는 금방 되는 편.
    • 기본 계정 및 폴더 설정
      • 관리자 계정 설정에서 NAS 서버 이름과 사용자 계정 및 비밀번호 설정을 하자. 이후에도 수정 항목이 있는 것으로 보아 이후에도 수정할 수 있는 것 같다.
      • 퀵커넥트 설정을 할 지도 처음에 물어본다. DDNS같은 거라고 생각하면 될 듯 하다. 설정했다가 비활성화했다. 외부의 공격에 얼마나 취약할지 등에 대한 지식이 많지 않아서, 외부 접속을 최대한 제한하는 방향으로 설정하기로 해서.
        • 사내 네트워크에서도 포트포워딩할 때 외부접근 포트를 5000번이 아닌 다른 포트로 지정하였다. 시놀로지의 기본 포트가 5000번이고 외부에서 랜덤 공격 시도를 할 때도 5000번을 기본으로 한다는 말이 있어서. 사실 그것보다도 하드에 오류가 생겼을 때 어떻게 대처해야 안전한지를 고민하는 게 더 필요할 것 같긴 하다.
      • 설치한 하드를 적당한 RAID로 초기화한다. 보통은 RAID 0, 1, 5, 6, 10, 01중에 하나를 선택하는 것 같다.
        • 간단히 서술하면
        • RAID0: 오류 검출 기능 없이 디스크를 병렬로 묶는다. 설치한 디스크의 용량 전체를 저장공간으로 사용한다. 자료는 각 디스크에 N등분되어 저장된다. 다만 하나의 실패는 N등분된 모든 어레이의 실패가 되고, 미러링이나 패리티 확인 등의 절처가 없으므로 별도 백업이 없다면 복구할 수 없다.
        • RAID1: 두 개의 디스크를 하나로 묶어 같은 데이터를 저장한다(미러링). 설치한 디스크 전체 용량의 절반만을 저장공간으로 사용할 수 있다(나머지 절반은, 백업용 COPY라고 생각하면 된다).
        • RAID5: 패리티 검사(오류 검사)기능을 추가하여 디스크를 묶는다. 각 디스크의 일정 공간을 나머지 디스크 정보의 오류를 체크하는 공간으로 사용한다. 오류 체크를 해야 하므로 읽기/쓰기 성능에 영향을 주지만, 안정성을 확보하면서 꽤 많은 공간을 저장공간으로 쓸 수 있다는 장점이 있다. N개의 같은 용량 디스크가 있을 때 N-1만큼의 공간을 저장공간으로 사용한다.
          • 조금 설명을 덧붙이면 아래 그림과 같다. 각 _p공간을 _n어레이들의 패리티 검사 공간으로 활용하는 것.

          • (seagate nas os사용설명서 페이지에서 가져옴)
        • RAID6: RAID5에서 패리티 검사 공간을 2배로 사용한다. N개의 디스크 중 N-2개 만큼의 공간을 저장공간으로 사용한다.
        • RAID10: RAID1로 미러링한 디스크를 다시 RAID0으로 묶는다. 
        • RAID01: RAID0으로 묶은 디스크를 RAID1로 미러링한다.
      • 사용자 계정을 설정한다. 이 때 기본 admin과 guest는 외부에서도 누구나 이름을 알 수 있는 계정이므로 비활성화(라고는 하는데 비활성를 찾지 못해서)하거나 접근금지로 설정해주는 게 좋다.(이름을 변경하는 게 안된다.)
      • 필요한 만큼 계정을 생성하고, 관리의 용이성을 위해 같은 권한을 부여할 그룹을 몇 개 만든다. admin, teammates, guest등
      • 폴더도 생성하고, 각 계정에 적당히 오픈하면 된다. 권한이 없는 사람에게는 폴더 자체가 노출되지 않는다.
    • 이 외 공부해야 할 것
      • 디스크의 FAIL이 발생했을 때 안전한 대처 방법
      • DDNS나 quickconnect를 설정했을 때 보안과 관련하여 주의할 사항
      • ftp접속을 허용할지

일 년 정도 일을 하면서, 포스팅을 전혀 작성하지 않았다. 그 동안 남겨두면 좋았을 내용들 중 떠오르는 것만 몇 가지나 되는 것으로 보아 그것보다 훨씬 많은, 남겨두면 좋았을 내용들이 있었으리라. 처음 포스팅을 시작할 때의 나는 구직 상태였고 포스팅의 목적은 주로 내가 이 정도 열심히 하고 있다는 것을 누군가에게 보여주기 위함이었다. 그리고 그렇게라도 하지 않으면 어떤 짧은 주기의 목적을 갖기 쉽지 않을 것이라고 생각했다. 단순히 일을 시작해야겠다는 막연한 목표보다 매일, 아니면 적어도 이틀에 하루는 연습문제를 풀어 코드를 남기거나 유명한 알고리즘 하나를 이해하고 설명하는 포스팅을 남기겠다는 작고 많은 목표를 가지는 게 훨씬 나을 거라고 생각했다. 그리고 일을 시작하고 나니, 나란 사람이 으레 그러했듯 긴 주기의 목표를 새로 설정하지 못하면서, 더 이상 어떤 목적을 가지는 행동들을 하나씩 그만두게 되었다. 이제와서 다시 포스팅을 하나 남겨 보는 이유는, 많은 개발자들이 이직하듯 나도 이직하기 위한 목적은 아니다. 최근에 주어진 업무를 해 나가면서, 새로운 것을 배우고 있다는 느낌을 잃어버린 지 너무 오래 되었다는 생각이 떠오르는 주기가 짧아지고 있었다. 그렇게 지쳐가면서도 막연히 쉬는 것에 대한 불안함을 느끼며 업무적으로 더 많은 것을 배워서 성장하고 싶다는 생각과, 일과는 상관없는 무언가를 취미처럼 하고 싶다는 생각이 뒤섞여서, 나도 내가 뭘 원하는지 모르는 상황에 덩그러니 놓여져 있었다. 

그러다가 우연히 간단한 서버 세팅작업을 하면서, 뭔가를 뜯었다 조립하고, 세팅했다가 리셋하고 다시 세팅하다가 실패하고, 이해하지 못했던 것들을 물어물어 해결한 한 과정이 내가 하고 싶었던 무언가가 아니었나 하는 생각이 들어서. 그래서 그 과정을 조금 남겨보고, 앞으로 일을 하면서도 새로운 아이디어가 떠오르면 그것들을 글로 남기고, 지금처럼 매너리즘에 빠져가고 있을 때 나중에 다시 열어보면서 다시 동기부여할 수 있지 않을까 하는 생각이 들었다.

 

+ Recent posts