13년차의 서버실

서버, 인프라, 홈랩 기술 블로그

[태그:] UPS

  • [HomeLabs] 홈랩·서버 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    [HomeLabs] 홈랩·서버 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    [인프라 엔지니어의 홈랩 일기] 랙 구성 초보자를 위한 필수 체크리스트: 10가지 점검 사항

    안녕하세요, 13년차 서버실 지킴이입니다! 👨‍💻 오늘은 홈랩이나 작은 서버실을 꾸리려는 분들을 위해 랙 구성 시 제가 직접 겪었던 삽질 경험과 함께 꼭 확인해야 할 10가지 필수 체크리스트를 공유하려고 해요.

    처음엔 그냥 랙 하나 사서 장비 넣으면 되는 줄 알았거든요? 근데 막상 해보니 고려할 게 한두 가지가 아니더라고요. 특히 랙은 한번 설치하면 위치나 종류를 바꾸기가 어렵잖아요. 그래서 첫 단추를 잘 꿰는 게 정말 중요합니다. 저도 처음엔 멋모르고 샀다가 나중에 후회했던 기억이 새록새록 떠오르네요. 😅

    이 글을 통해 여러분은 랙 구성 체크리스트를 완벽하게 파악하고, 저처럼 시행착오를 겪지 않기를 바랍니다. 자, 그럼 시작해볼까요?

    랙 구성 체크리스트를 위한 서버 랙의 주요 구성 요소 개요

    안정적인 서버 랙 구성을 위한 필수 구성 요소 개요

    랙(Rack)이 뭔가요? 왜 필요한가요?

    랙(Rack)은 서버, 네트워크 스위치, 스토리지 등 IT 장비들을 표준화된 규격에 맞춰 효율적으로 수납하고 관리하기 위한 구조물이에요. 쉽게 말해, IT 장비들을 위한 아파트라고 생각하시면 됩니다. 층별로 장비를 배치하고, 전원과 네트워크 케이블을 깔끔하게 정리할 수 있도록 도와주죠.

    랙을 사용하면 장비의 물리적 보호는 물론, 냉각(Cooling), 전원 공급(Power Delivery), 케이블 관리(Cable Management)를 훨씬 용이하게 할 수 있어요. 특히 제한된 공간에서 많은 장비를 운영해야 할 때 그 진가가 발휘됩니다. 홈랩에서도 깔끔하고 안정적인 환경을 구축하는 데 필수적이죠.

    ✅ 랙 구성 초보자를 위한 10가지 필수 체크리스트

    제가 13년 동안 수많은 랙을 만지면서 얻은 노하우를 바탕으로, 여러분이 랙을 선택하고 구성할 때 반드시 점검해야 할 10가지 사항을 정리해봤습니다. 하나씩 꼼꼼히 살펴볼게요!

    1. 랙 사이즈 및 종류 (Rack Size and Type)

    • U (Unit) 단위: 랙의 높이를 나타내는 표준 단위로, 1U는 약 44.45mm(1.75인치)입니다. 서버나 스위치 등 대부분의 장비는 1U, 2U, 4U 등으로 표기돼요.
    • 랙 너비 및 깊이: 대부분의 랙은 19인치 표준 너비를 따르지만, 깊이는 다양합니다. 사용하는 서버의 깊이(특히 레일 길이)를 고려해서 선택해야 해요. 저도 처음엔 무조건 큰 게 좋은 줄 알았는데, 공간 제약이 있더라고요. 😅
    • 랙 종류:
      • 4-Post Rack (4주형 랙): 가장 일반적인 형태로, 앞뒤 기둥 4개가 장비를 안정적으로 지지합니다. 서버, 스토리지 등 무거운 장비에 적합해요.
      • 2-Post Rack (2주형 랙): 주로 네트워크 스위치나 패치 패널처럼 가벼운 장비를 설치할 때 사용합니다.
      • Wall-mount Rack (벽걸이 랙): 공간이 협소할 때 벽에 걸어 사용합니다. 홈랩에 고려해볼 만해요.
      • Open-frame Rack (오픈형 랙): 문과 측면 패널이 없어 접근성이 좋지만, 보안과 먼지에 취약합니다.
      • Enclosed Rack (밀폐형 랙): 문과 측면 패널이 있어 보안과 냉각 관리에 유리하며, 가장 많이 사용되는 형태입니다.

    💡 팁: 홈랩이라면 12U~24U 정도의 4-Post Enclosed Rack이 적당할 수 있습니다. 미래에 추가될 장비들을 위해 조금 여유 있는 U를 선택하는 것이 좋습니다.

    2. 장비 무게 및 하중 (Equipment Weight and Load Capacity)

    서버는 생각보다 무겁습니다. 특히 랙에 여러 대의 서버와 UPS(Uninterruptible Power Supply)까지 설치하면 총 무게가 상당해져요. 랙이 이 무게를 안전하게 견딜 수 있는지 하중 지지 능력(Load Capacity)을 반드시 확인해야 합니다.

    • 랙 자체의 최대 하중
    • 랙 레일(Rail Kit)의 하중 지지 능력

    저도 예전에 랙 레일 없이 서버를 혼자 올리다가 허리 나갈 뻔했어요. 😥 꼭 장비 제조사에서 제공하는 순정 랙 레일 키트를 사용하시거나, 호환되는 레일을 구해서 안전하게 설치하세요.

    3. 전원 요구 사항 (Power Requirements)

    IT 장비는 전기를 먹고 살죠! 랙 구성에서 전원 계획은 정말 중요합니다.

    • 총 전력 소모량 계산: 랙에 들어갈 모든 장비의 정격 전력(Rated Power)을 합산하여 총 전력 소모량을 계산해야 합니다.
    • PDU (Power Distribution Unit, 전원 분배 장치): 랙 내 장비에 안정적으로 전원을 공급하고 관리하는 장치입니다. PDU의 총 용량과 콘센트 타입(C13, C19, NEMA 등)이 장비와 호환되는지 확인하세요.
    • UPS (Uninterruptible Power Supply, 무정전 전원 공급 장치): 정전 시에도 일정 시간 동안 전원을 공급하여 장비를 안전하게 종료하거나 계속 운영할 수 있게 해줍니다.
    • 회로 구성: 랙의 총 전력 소모량이 너무 높으면 별도의 전용 회로(Dedicated Circuit)를 구성해야 할 수도 있습니다. 이거 계산 잘못해서 차단기(Circuit Breaker) 내려간 적도 많아요. ⚠️
    랙 전원 공급을 위한 PDU와 UPS 연결 및 다양한 콘센트 타입 다이어그램

    랙 전원 공급을 위한 PDU와 UPS 연결 및 다양한 콘센트 타입

    4. 냉각 및 공기 흐름 (Cooling and Airflow)

    서버는 열을 많이 발생시켜요. 이 열을 제대로 식혀주지 않으면 장비의 성능 저하와 수명 단축으로 이어집니다. 여름에 서버 룸이 아니라 사우나 되는 줄 알았죠. 🥵

    • 공기 흐름 방향: 대부분의 서버는 앞(Front)에서 찬 공기를 흡입하고 뒤(Rear)로 뜨거운 공기를 배출합니다. 랙 안에서 공기가 효율적으로 순환되도록 장비를 배치해야 합니다.
    • 블랭킹 패널 (Blanking Panel): 비어 있는 U 공간을 막아주는 패널입니다. 찬 공기가 비어 있는 공간으로 새는 것을 막아, 장비를 통과하는 공기의 효율을 높여줍니다.
    • 랙 팬 (Rack Fan): 랙 내부의 공기 순환을 돕기 위해 상단 또는 하단에 설치하는 팬입니다.
    • 서버실/홈랩 환경: 랙 주변의 실내 온도와 습도도 중요합니다. 에어컨이나 제습기 등의 설치도 고려해야 합니다.

    5. 네트워크 케이블링 (Network Cabling)

    아름다운 랙은 아름다운 케이블링에서 시작됩니다! 엉망인 케이블은 나중에 장애 발생 시 문제 해결을 어렵게 하고, 공기 흐름까지 방해할 수 있어요. 😱

    • 패치 패널 (Patch Panel): 랙 외부에서 들어오는 네트워크 케이블을 한곳에 모아 관리하기 쉽게 해줍니다.
    • 케이블 타이 (Cable Tie): 벨크로 타이(Velcro Tie)를 사용하는 것이 좋습니다. 플라스틱 타이는 너무 강하게 조이면 케이블 손상을 유발할 수 있거든요.
    • 케이블 트레이 (Cable Tray): 랙 내에서 케이블을 깔끔하게 정리하고 지지하는 데 사용됩니다.
    • 케이블 길이: 너무 길거나 짧지 않게, 적절한 길이의 케이블을 사용하는 것이 중요합니다.

    💡 팁: 케이블은 색상별로 용도를 구분하거나, 라벨링(Labeling)을 해두면 나중에 정말 편합니다. 지저분하면 나중에 진짜 피눈물 흘려요. 😭

    랙 구성에서 잘 정리된 케이블링과 복잡한 케이블링 비교

    잘 정리된 랙 케이블링(좌)과 복잡한 케이블링(우) 비교

    6. 접지 (Grounding)

    안전은 아무리 강조해도 지나치지 않습니다. 접지(Grounding)는 전기 안전의 기본이에요. 장비를 정전기나 낙뢰로부터 보호하고, 누전 시 인명 피해를 방지합니다.

    • 랙 자체의 접지 단자를 건물 접지 시스템에 연결해야 합니다.
    • 모든 장비의 전원 케이블이 접지된 콘센트에 연결되었는지 확인하세요.

    설마 하는 순간 사고가 터지죠. ⚡️ 꼭 확인해주세요.

    7. 보안 (Security)

    물리적 보안도 중요합니다. 특히 중요한 데이터나 장비가 있는 경우 랙에 대한 접근을 제한해야 합니다.

    • 잠금장치: 랙 도어에 잠금장치가 있는지 확인하세요.
    • 접근 제어: 홈랩에서는 덜하겠지만, 상업용 환경에서는 랙이 있는 공간 자체에 대한 접근 제어가 필요합니다.

    누군가 내 서버 만지는 거 싫잖아요? 🔒

    8. 유지보수 공간 (Maintenance Space)

    랙 설치 시 앞뒤 공간을 충분히 확보하는 것이 중요해요. 장비 교체, 케이블 작업, 문제 해결 등 유지보수 작업을 할 때 정말 필요하거든요.

    • 랙 앞뒤로 최소 1m 정도의 여유 공간을 확보하는 것을 권장합니다.
    • 측면 패널을 열어야 하는 경우를 대비해 측면 공간도 고려해야 합니다.

    등 뒤에 벽 있으면 진짜 고생합니다. 낑낑대면서 장비 빼는 거 해봤는데, 정말 힘들더라고요. 😩

    9. 예산 (Budget)

    랙 구성에는 생각보다 많은 비용이 들어갑니다. 랙 자체뿐만 아니라 부대비용도 고려해야 하거든요.

    • 랙 본체
    • PDU, UPS
    • 랙 레일 키트 (장비별로 구매해야 할 수도 있습니다)
    • 케이블, 패치 패널, 케이블 정리 용품
    • 블랭킹 패널, 랙 팬
    • 배송 및 설치 비용 (랙이 워낙 크고 무거워서 배송비도 만만치 않습니다)

    생각보다 돈 많이 들어가요. 랙만 사는 게 아니거든요. 💸 예산을 넉넉하게 잡는 것이 좋습니다.

    10. 확장성 (Scalability)

    미래를 보고 계획하는 것이 중요합니다. 지금 당장 필요한 것보다 조금 더 여유 있게 랙을 구성하는 것이 좋아요.

    • 나중에 서버나 스위치를 추가할 계획이 있다면, 넉넉한 U 공간을 가진 랙을 선택하세요.
    • PDU의 포트 수와 용량, UPS의 백업 시간 등도 미래를 고려하여 선택합니다.

    나중에 장비 추가하고 싶은데 랙이 꽉 차 있으면 얼마나 서글픈데요. 😢

    랙 구성 초보자를 위한 10가지 필수 체크리스트 요약 인포그래픽

    랙 구성 체크리스트 요약 인포그래픽

    마무리하며: 랙 구성, 어렵지만 한번 잘 해두면 두고두고 편합니다!

    오늘은 랙 구성 초보자분들을 위해 제가 13년 동안 겪은 경험을 바탕으로 10가지 필수 체크리스트를 공유해드렸습니다. 처음에는 복잡하게 느껴질 수 있지만, 이 체크리스트를 하나씩 따라가다 보면 훨씬 안정적이고 효율적인 랙 환경을 구축할 수 있을 거예요.

    저도 처음엔 이게 뭔가 싶었는데, 한번 제대로 세팅해두면 장비 관리와 유지보수가 정말 편해지더라고요. 여러분의 멋진 홈랩 랙이나 서버 랙 구성을 응원합니다! 🎉

    다음번에는 PDU와 UPS 선정 가이드를 좀 더 자세히 다뤄볼 예정이니, 기대해주세요! 궁금한 점이 있다면 언제든지 댓글로 남겨주세요. 제가 아는 선에서 최대한 도와드리겠습니다.

  • [HomeLabs] UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    [HomeLabs] UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    UPS와 홈서버 연동: Proxmox/TrueNAS 자동 종료 설정 완벽 가이드

    안녕하세요, 13년차의 서버실 주인장입니다. 홈랩을 운영하면서 가장 신경 쓰이는 부분이 뭘까요? 저는 주저 없이 전원 문제라고 말할 수 있어요. 특히 갑작스러운 정전은 애지중지 키워온 홈서버의 하드웨어뿐만 아니라, 그 안에 담긴 소중한 데이터까지 한순간에 날려버릴 수 있는 무서운 재앙이거든요.

    제가 처음 홈랩을 구성하고 몇 달 뒤였을 겁니다. 한창 드라마를 보는데 갑자기 집 전체가 퍽! 하고 암전되더라고요. 순간 ‘아, 망했다!’ 싶었죠. 다행히 서버는 무사했지만, 그날 이후로 UPS(무정전 전원 장치)의 필요성을 뼈저리게 느꼈습니다. 단순히 전원을 공급해주는 것을 넘어, 정전 시 서버를 안전하게 종료시키는 자동화가 정말 중요하다는 걸 깨달았죠.

    오늘은 저처럼 홈랩을 운영하시는 분들을 위해, UPS와 홈서버(특히 Proxmox VE와 TrueNAS)를 연동해서 정전 시 자동으로 시스템이 종료되도록 설정하는 방법을 차근차근 알려드릴게요. 13년 동안 이런저런 삽질을 하면서 터득한 경험을 바탕으로, 여러분은 좀 더 쉽게 성공하시길 바랍니다! 💡

    홈랩 UPS 연동 아키텍처: 정전 시 서버들을 안전하게 지키는 핵심 구성입니다.

    UPS와 NUT(Network UPS Tools)는 뭐 하는 건가요?

    먼저 핵심 개념부터 짚고 넘어갈게요. ‘UPS’는 다들 아실 겁니다. 쉽게 말해 보조 배터리 같은 역할을 하면서, 정전이 되면 일정 시간 동안 서버에 전원을 공급해주는 장치죠. 하지만 UPS의 진짜 가치는 단순히 전원을 유지하는 것을 넘어, 서버에게 “야, 지금 전기가 나갔어! 얼른 마무리하고 꺼져야 해!”라고 알려줄 수 있을 때 빛을 발합니다.

    이때 필요한 게 바로 NUT(Network UPS Tools)예요. NUT는 UPS와 서버 간의 통신을 담당하는 오픈소스 소프트웨어 스위트(Software Suite)입니다. UPS의 상태(배터리 잔량, 전원 상태 등)를 모니터링하고, 특정 조건(예: 배터리 잔량 20% 미만)이 되면 연결된 서버들에게 종료 신호를 보내는 역할을 하죠.

    • UPS 서버 (Server): 물리적인 UPS 장치에 직접 연결되어 UPS 상태를 읽어오는 역할을 해요. 보통 USB 케이블로 연결하죠. 이 서버에 upsd (UPS Daemon)가 실행되면서 다른 클라이언트들에게 UPS 정보를 제공합니다.
    • UPS 클라이언트 (Client): UPS 서버로부터 UPS 상태 정보를 받아, 특정 조건이 되면 스스로 종료하거나 미리 설정된 작업을 수행합니다. Proxmox VE나 TrueNAS 같은 홈서버들이 여기에 해당해요. upsmon (UPS Monitor)이 이 역할을 담당합니다.

    저는 보통 라즈베리 파이 같은 저전력 장치나, 최소한의 리소스를 할당한 가상 머신에 NUT 서버를 구성합니다. 아무래도 UPS가 서버 전체를 위한 장치이니, 그 정보를 관리하는 서버는 가급적 안정적이고 전력을 덜 먹는 게 좋더라고요.

    실전 구현: NUT 서버와 클라이언트 설정

    자, 이제 실전입니다. 저는 제가 직접 구성한 환경을 기준으로 설명해 드릴게요. UPS는 APC BR1500MS 같은 모델을 많이 쓰시는데, USB로 연결되는 대부분의 UPS는 NUT와 호환되니 크게 걱정하지 않으셔도 돼요. 제가 사용했던 UPS도 USB로 연결되는 모델이었거든요.

    1. NUT 서버 설정 (Debian/Ubuntu 기반 VM 또는 Raspberry Pi)

    먼저, UPS에 USB로 직접 연결될 NUT 서버를 설정해봅시다. 저는 Proxmox 위에 데비안(Debian) 가상 머신을 하나 띄워서 사용했어요.

    패키지 설치:

    sudo apt update
    sudo apt install nut

    /etc/nut/ups.conf 설정:
    이 파일은 UPS 장치의 종류와 연결 방식을 NUT에게 알려줍니다. UPS 모델에 따라 드라이버(driver)가 달라질 수 있으니, NUT 공식 문서를 참고해서 맞는 드라이버를 찾아주세요. 저는 usbhid-ups 드라이버를 사용했어요.

    [myups]
      driver = usbhid-ups
      port = auto
      desc = "My HomeLab UPS"
      # mincharge = 80  # 배터리 최소 충전량 (예: 80% 미만이면 경고)
      # override.battery.charge.low = 20 # 배터리 잔량 20% 미만 시 저전압 경고

    /etc/nut/nut.conf 설정:
    NUT의 동작 모드를 설정합니다. 여기서는 STANDALONE 대신 SERVER로 설정해야 다른 서버들이 이 UPS 정보를 가져갈 수 있어요.

    MODE=SERVER

    /etc/nut/upsd.users 설정:
    클라이언트들이 UPS 정보를 모니터링할 때 사용할 사용자 계정을 정의합니다. 보안을 위해 강력한 비밀번호를 사용하는 것이 좋겠죠.

    [upsmon]
      password = YourStrongPasswordHere
      actions = SET
      instcmds = ALL
      upsmon master

    /etc/nut/upsd.conf 설정:
    NUT 데몬이 어떤 IP 주소와 포트(기본 3493)에서 클라이언트의 연결을 받을지 설정합니다. 저는 홈랩 내부에서만 사용할 것이므로 내부 IP를 바인딩했어요.

    LISTEN 0.0.0.0 3493 # 모든 인터페이스에서 수신 (혹은 특정 내부 IP)

    NUT 서비스 재시작 및 확인:

    sudo systemctl restart nut-server nut-client
    sudo systemctl enable nut-server nut-client
    sudo upsc myups@localhost # UPS 정보 확인. 'myups'는 ups.conf에 설정한 이름입니다.

    upsc myups@localhost 명령어를 실행했을 때, UPS의 다양한 정보(배터리 잔량, 전압 등)가 잘 출력된다면 NUT 서버 설정은 성공입니다! 🎉

    NUT 서버 설정의 핵심, ups.conf 파일입니다. UPS 모델에 맞는 드라이버를 찾는 것이 정말 중요해요.

    2. Proxmox VE 클라이언트 설정

    이제 Proxmox VE 서버가 NUT 서버로부터 UPS 정보를 받아 정전 시 자동으로 종료되도록 설정해볼까요? Proxmox는 Debian 기반이라 NUT 클라이언트 설정이 비교적 간단해요.

    패키지 설치:

    apt update
    apt install nut

    /etc/nut/nut.conf 설정:
    Proxmox는 NUT 서버가 아닌 클라이언트 역할을 하므로 MODE=NETCLIENT로 설정합니다.

    MODE=NETCLIENT

    /etc/nut/upsmon.conf 설정:
    이 파일에서 어떤 UPS 서버를 모니터링할지, 그리고 어떤 조건에서 종료할지 정의합니다. MONITOR 라인에 NUT 서버의 IP 주소, UPS 이름, 사용자 이름, 비밀번호를 입력하세요.

    MONITOR [email protected] 1 upsmon YourStrongPasswordHere master
    # (192.168.1.100은 NUT 서버의 IP 주소로 바꿔주세요)
    
    MINWARNTIME 300   # UPS 경고 발생 후 최소 5분 대기
    FINALDELAY 5      # 시스템 종료까지 추가 대기 시간 (초)
    SHUTDOWNCMD "/sbin/shutdown -h now" # 종료 명령
    NOTIFYCMD "/usr/sbin/upssched-cmd" # 알림 스크립트 (선택 사항)
    
    NOTIFYFLAG ONLINE SYSLOG+WALL
    NOTIFYFLAG ONBATT SYSLOG+WALL
    NOTIFYFLAG LOWBATT SYSLOG+WALL
    NOTIFYFLAG FSD SYSLOG+WALL
    
    # Proxmox의 경우, 가상머신 및 컨테이너를 먼저 종료해야 합니다.
    # 저는 아래와 같이 별도 스크립트를 만들어서 사용했어요.
    # /etc/nut/upsmon.conf 에 직접 넣기보다는, SHUTDOWNCMD가 실행할 스크립트 안에 넣는 것이 좋습니다.
    # (예시: /etc/nut/ups_shutdown.sh)
    # SCRIPT: /etc/nut/ups_shutdown.sh
    # (스크립트 예시는 뒤에서 설명합니다)

    Proxmox 특화: 가상 머신/컨테이너(VM/CT) 종료 스크립트
    Proxmox는 단순히 shutdown -h now만 실행하면 호스트만 꺼지고 VM/CT는 강제 종료될 수 있어요. 이를 방지하려면 VM/CT를 먼저 안전하게 종료하는 스크립트를 작성하여 SHUTDOWNCMD에 연결해야 합니다. 저는 다음과 같은 스크립트를 사용했습니다.

    #!/bin/bash
    
    logger -t ups_shutdown "UPS shutting down Proxmox and VMs/CTs..."
    
    # 모든 VM 및 CT 목록 가져오기
    vms=$(qm list | awk 'NR>1 {print $1}')
    cts=$(pct list | awk 'NR>1 {print $1}')
    
    # VM 종료
    for vmid in $vms
    do
      status=$(qm status $vmid | awk '{print $2}')
      if [ "$status" = "running" ]; then
        logger -t ups_shutdown "Shutting down VM $vmid..."
        qm shutdown $vmid --timeout 30
        sleep 5
        if [ "$(qm status $vmid | awk '{print $2}')" = "running" ]; then
          logger -t ups_shutdown "VM $vmid did not shut down gracefully, stopping..."
          qm stop $vmid
        fi
      fi
    done
    
    # CT 종료
    for ctid in $cts
    do
      status=$(pct status $ctid | awk '{print $2}')
      if [ "$status" = "running" ]; then
        logger -t ups_shutdown "Shutting down CT $ctid..."
        pct shutdown $ctid --timeout 30
        sleep 5
        if [ "$(pct status $ctid | awk '{print $2}')" = "running" ]; then
          logger -t ups_shutdown "CT $ctid did not shut down gracefully, stopping..."
          pct stop $ctid
        fi
      fi
    done
    
    logger -t ups_shutdown "All VMs/CTs processed. Shutting down Proxmox host."
    sleep 10 # VM/CT 종료 대기 시간을 충분히 줍니다.
    /sbin/shutdown -h now

    이 스크립트를 /etc/nut/ups_shutdown.sh 로 저장하고 실행 권한을 부여한 뒤,

    sudo chmod +x /etc/nut/ups_shutdown.sh

    /etc/nut/upsmon.conf 파일의 SHUTDOWNCMD를 다음과 같이 수정하세요.

    SHUTDOWNCMD "/etc/nut/ups_shutdown.sh"

    NUT 클라이언트 서비스 재시작 및 확인:

    systemctl restart nut-client
    systemctl enable nut-client
    upsc [email protected] # NUT 서버의 UPS 정보 확인

    3. TrueNAS 클라이언트 설정

    TrueNAS는 NUT 클라이언트 기능이 웹 인터페이스에 통합되어 있어 설정이 훨씬 간편합니다. 제가 써보니 이 부분이 정말 편하더라고요!

    1. TrueNAS 웹 UI에 접속하세요.
    2. 좌측 메뉴에서 Services (서비스)를 클릭합니다.
    3. 서비스 목록에서 UPS를 찾아 Configure (설정) 버튼을 클릭하세요.
    4. 설정 창에서 다음 정보를 입력합니다:
      • UPS Type (UPS 유형): Slave (클라이언트 역할을 하므로)
      • Remote Host (원격 호스트): NUT 서버의 IP 주소 (예: 192.168.1.100)
      • Remote Port (원격 포트): 3493 (기본값)
      • Identifier (식별자): NUT 서버의 ups.conf에 설정한 UPS 이름 (예: myups)
      • Monitor User (모니터 사용자): upsmon (upsd.users에 설정한 사용자)
      • Monitor Password (모니터 비밀번호): YourStrongPasswordHere (upsd.users에 설정한 비밀번호)
      • Shutdown Mode (종료 모드): UPS reaches low battery (UPS 배터리가 부족할 때)
      • Shutdown Timer (종료 타이머): 120 (배터리 부족 감지 후 120초 뒤 종료)
    5. Save (저장) 버튼을 클릭하세요.
    6. 서비스 목록으로 돌아가서 UPS 서비스를 Enabled (활성화)로 설정하고 Start (시작) 버튼을 클릭합니다.

    TrueNAS 로그를 확인하여 UPS 서비스가 정상적으로 시작되었는지, NUT 서버와 통신하는지 확인해 보세요. /var/log/messages나 웹 UI의 시스템 로그에서 관련 메시지를 찾을 수 있어요.

    TrueNAS의 UPS 설정 화면입니다. 웹 UI 덕분에 직관적으로 설정할 수 있어요.

    ⚠️ 주의사항 및 트러블슈팅 (제 삽질 경험 공유)

    제가 이 설정을 하면서 겪었던 몇 가지 삽질 경험과 주의사항을 알려드릴게요. 여러분은 저처럼 고생하지 마시길!

    1. 방화벽 문제: NUT 서버와 클라이언트 간에 3493번 포트 통신이 제대로 되는지 꼭 확인하세요. 특히 NUT 서버로 설정한 VM이나 물리 장치에 ufw나 firewalld 같은 방화벽이 있다면 3493번 포트를 열어줘야 해요. sudo ufw allow 3493/tcp 같은 명령어로 열 수 있습니다. 저는 처음에 이걸 놓쳐서 ‘왜 연결이 안 되지?’ 하고 한참을 헤맸습니다. ㅠㅠ
    2. USB 드라이버 문제: UPS가 USB로 NUT 서버에 제대로 인식되지 않는 경우가 간혹 있어요. lsusb 명령어로 UPS 장치가 목록에 뜨는지 확인하고, dmesg | grep -i usb 명령어로 커널 로그를 확인해서 드라이버 로딩에 문제가 없는지 봐야 합니다. 간혹 특정 UPS 모델은 추가적인 드라이버나 커널 모듈이 필요할 수 있거든요.
    3. ups.conf 드라이버 오설정: 가장 흔한 실수 중 하나예요. UPS 모델에 맞는 정확한 드라이버를 사용해야 합니다. nut-drivers 패키지 설치 후 man ups.conf나 NUT 공식 문서를 참고하는 게 가장 정확합니다.
    4. 종료 스크립트 테스트: 실제 정전 상황을 흉내 내기 어렵다면, 강제로 lowbatt 신호를 보내는 방식으로 테스트할 수 있어요. sudo upsmon -c fsd (Force Shutdown) 같은 명령어를 사용하거나, upsmon.conf에서 SHUTDOWNCMD를 테스트용 스크립트로 바꿔서 실행해 보는 것도 좋은 방법입니다. 절대 운영 중인 서버에서 바로 테스트하지 마세요! 중요한 데이터가 날아갈 수 있습니다. 테스트는 항상 충분히 백업된 환경이나 테스트용 서버에서 진행하시고, 스크립트 실행 권한(chmod +x)도 잊지 마세요!
    5. Proxmox VM/CT 종료 순서: 위에서 설명했듯이 Proxmox는 호스트만 종료하면 VM/CT가 강제 종료돼요. 반드시 qm shutdown, pct shutdown 명령어를 사용하여 순차적으로 종료하는 스크립트를 사용해야 합니다.

    검증 및 결과: 이제 안심하고 홈랩을!

    모든 설정이 끝났다면, 이제 정말 잘 작동하는지 확인해야겠죠? 저는 조심스럽게 UPS의 전원 코드를 뽑아서 실제 정전 상황을 시뮬레이션해봤습니다. (물론 중요한 작업은 모두 백업해두고, 아주 짧게 시도했어요.)

    결과는? 🎉 대성공이었습니다!

    UPS가 배터리 모드로 전환되고, 설정해둔 MINWARNTIME이 지나자 Proxmox와 TrueNAS가 순차적으로 종료되기 시작했어요. Proxmox의 경우, 제가 만들어둔 스크립트 덕분에 VM과 CT들이 먼저 안전하게 꺼진 후 호스트가 종료되는 것을 로그로 확인할 수 있었습니다. TrueNAS도 깔끔하게 종료되었고요.

    로그 확인은 journalctl -u nut-client.service (Proxmox/Debian)나 /var/log/messages (TrueNAS)를 통해 할 수 있습니다. 여기에 UPS 상태 변화와 종료 명령이 정상적으로 기록되어 있다면 안심해도 좋아요.

    시스템 로그에서 확인하는 자동 종료 과정. 이 메시지를 보면 정말 뿌듯하더라고요!

    마무리하며: 홈랩의 든든한 보험, UPS 연동

    오늘은 홈랩의 안정성을 한 단계 끌어올리는 UPS 홈서버 연동, 특히 Proxmox UPS와 TrueNAS UPS 자동 종료 설정에 대해 알아봤습니다. 처음에는 NUT 설정이 조금 복잡하게 느껴질 수도 있지만, 한 번 제대로 설정해두면 갑작스러운 정전에도 소중한 장비와 데이터를 안전하게 지킬 수 있어요. 이건 마치 홈랩을 위한 든든한 보험 같은 존재랄까요?

    저도 처음엔 ‘이거까지 해야 하나?’ 싶었는데, 한번 정전을 겪고 나니 이제는 홈랩의 필수 요소라고 생각합니다. 여러분도 이 가이드를 통해 성공적으로 UPS 연동을 마치시고, 마음 편히 홈랩을 즐기시길 바랍니다. 다음번에는 또 다른 흥미로운 홈랩 이야기로 찾아올게요! 그때까지 즐거운 삽질(?) 되세요! 😉

    UPS 연동의 핵심 가치: 안전한 홈랩, 데이터 보호, 그리고 마음의 평화!