홈 서버 구축기 – Pikvm 구성
새 서버 구축하면서 했던 삽질들을 까먹지 않도록 써놓음
필요도 없지만, 인터넷에서 Proxmox 커널 업데이트 관련 글을 보고 업데이트를 감행했다. 업데이트 후 reboot 하는 부분이 있었다. 아무 생각없이 sudo reboot. 그런데 Proxmox 콘솔에 접속이 안되는 거다. 뭔가 문제가 생겼다. 당장 집으로 달려가서 서버를 되살리고 싶었다. 그런데 그날 따라 어린이집서 데려나온 아들이 집으로 바로 가지 않고, 청계천에서 과자를 먹고 가겠다고 한다. 결국 저녁까지 먹고 집에는 여덟시쯤 들어왔다.
집에 들어가자마자 서버에 모니터와 키보드를 연결하고 보니 업데이트 후 뭔가 선택(?)하는 게 생겼다. 뭔지 모르지만 걍 첫번째 옵션을 선택하니 서버는 제대로 돌아가기 시작했다. 허탈했다. 여기서 어디선가 주워들었던 IPMI(Intelligent Platform Management Interface)가 머릿속에 떠올랐다. 정확히 그게 뭔진 모르지만, 내가 이해한 바로는 서버 앞에서 모니터와 키보드를 연결해서 동작하는 것처럼 다른 곳에서 ‘하드웨어적으로’ 콘트롤 할 수 있는 기능이다.
윈도우 서버라면 원격데스크톱(RDP), 리눅스 기반 서버라면 SSH 콘솔이나 VNC 등으로 작업을 할 수 있는데 이게 왜 필요하느냐는 의문이 들 수도 있다. 하지만 이들은 OS가 제대로 부팅됐을 때만 쓸 수 있다. 아예 OS 단에서 부팅이 제대로 되지 않으면 쓸 수가 없는 것이다. IPMI는 서버 자체의 OS 구동 여부와 상관없이 하드웨어적으로 접근할 수 있기 때문에 바이오스 셋업까지도 원격에서 설정할 수 있다.
내가 산 제온 D-1581 보드엔 IPMI가 없었다. 뭔가 방법이 없을까 검색하다가 찾아낸 것이 오픈소스 프로젝트 Pikvm이다. 쉽게 말하자면, 싱글보드컴퓨터(SBC)인 라즈베리파이를 이용해서 서버를 하드웨어단에서 제어한다는 컨셉이다. 자세한 사항은 공식홈페이지<바로가기>를 참조하면 된다.
Pikvm 프로젝트에서 제대로 지원하는 것은 라즈베리파이4다. 예전에 HomeAssistant를 돌리기 위해 샀다가 귀찮아서 처박아 둔 라즈베리파이4를 아무리 뒤져봐도 찾을 수 없었다. (중고로 라즈베리파이4 8Gb와 SSD 128GB를 12만원쯤에 샀는데, 그때만해도 비싸다고 생각했지만… 반도체 대란으로 이젠 새것도 저 가격에 구하기 힘들다)
대안으로 역시 할 일없이 굴러다니던 라즈베리파이 3b+를 이용하기로 했다. Pikvm 프로젝트 홈페이지에서는 라즈베리파이4는 이미지까지 지원하지만, 라즈베리파이3은 직접 이미지를 빌드해야했다. 크게 어려운 것은 없었다. Pikvm 페이지에 있는대로 차례차례 ‘복붙’해주면 금방 된다. (다만, 리눅스가 설치돼 있는 PC가 필요한데, Proxmox에 우분투 데스크탑 VM을 하나 생성해서 OS를 빌드했다)
OS 빌드 후 와이파이도 셋팅해주고(역시 Pikvm 페이지에 자세히 나와있다) 하드웨어 셋팅에 들어갔다.
라즈베리파이4는 케이블 등 기타 잡자재를 제외하면 위와 같이 생긴 HDMI USB캡처카드만 준비하면 된다. OTG를 지원하기 때문에 키보드와 마우스를 자체적으로 에뮬레이팅 할 수 있어서다. 하지만, 라즈베리파이3는 키보드와 마우스를 사용하기 위해 추가적인 부품이 필요했다. 아두이노 프로 마이크로, 4채널 로직레벨쉬프터, 저항(390옴)과 npn 트랜지스터(2N2222) 1개를 주문했다. 아두이노도 예전엔 몇 천원 선으로 저렴했는데, 요샌 반도체 대란 때문인지 1만원을 훌쩍 넘어섰다. 뒤져뒤져 미니 usb(마이크로 usb나 type-c 단자를 쓰는 애들은 비쌌다)를 쓰는 6000원짜리 아두이노 프로를 발견해서 주문했다.
Pikvm 페이지에 나와있는 배선도(?)를 따라 빵판에 각종 부품들을 올리고, 점퍼선으로 배선까지 마쳤다. 이후 아두이노 프로 마이크로에 이미지를 올리고 테스트해보았다.
Pikvm을 굴러다니는 노트북에 연결하고, 바이오스로 진입까지 성공했다. 키보드와 마우스도 제대로 동작했다.
바이오스 상에 ‘전원 들어오면 자동 부팅’ 기능을 찾아도 안보였는데, Pikvm에서는 SSR 릴레이를 이용해 전원 버튼과 리셋 버튼도 제어할 수 있어 끌렸다. 하지만 ssr 릴레이 칩(?)을 한국에서 사자니 비싸고, 중국에서 사자니 오래 걸린다. 순간 정전 같은 일이 발생하면 집에 가야만 서버를 켤 수 있겠지만, 아직 이런 문제는 발생한 적이 없다. 굳이 필요하면, ESP8266에 릴레이 달아서 제어하면 되니까 일단 냅두기로 했다.
이제 빵판에 점퍼선으로 복잡하게 올려놓은 것을 만능기판에 실장하는 일만 남았다. PCB를 떠볼까도 고민했지만, 귀찮아서 그냥 만능기판에 하기로 했다. 아들 재워놓고 밤이나 새벽에 납땜 인두를 들어야겠다.