목차
- 정전 한 번에 날아간 데이터, 그 뒤로 UPS는 필수가 됐습니다
- UPS가 뭔지부터 제대로 알고 가자
- UPS의 기본 원리 — 쉽게 말해 '전기 완충제'
- VA와 W — UPS 용량 계산이 생각보다 중요합니다
- UPS 홈서버 연결 실전 가이드
- 제가 쓰는 UPS 세팅
- NUT(Network UPS Tools) 설치 — 리눅스 서버와 UPS 연동의 핵심
- NUT 설정 파일 구성
- 여러 서버를 하나의 UPS로 관리하기 — 네트워크 모드
- Proxmox / TrueNAS와 UPS 홈서버 연동하기
- Proxmox VE에서 UPS 설정
- TrueNAS SCALE에서 UPS 설정
- ⚠️ 실제 삽질 경험 — 이것만 조심하세요
- 트러블슈팅 1: USB 장치 권한 문제
- 트러블슈팅 2: UPS 자동 감지 실패
- 트러블슈팅 3: 셧다운이 안 될 때
- 트러블슈팅 4: 배터리 용량 표시가 이상할 때
- UPS 홈서버 운영 체크리스트
- 마치며
정전 한 번에 날아간 데이터, 그 뒤로 UPS는 필수가 됐습니다
몇 년 전 일이에요. 한여름 밤에 갑자기 정전이 됐는데, 그때 홈서버에서 ZFS 풀(pool)이 마운트 중이었거든요. 전원이 그냥 뚝 끊겨버리면서 파일시스템이 날아갔어요. 복구하는 데 꼬박 하루 걸렸습니다. 그 이후로 저한테 UPS(Uninterruptible Power Supply, 무정전 전원 장치)는 선택이 아니라 필수가 됐어요.
홈랩을 운영하다 보면 처음엔 "설마 정전이 얼마나 되겠어?" 하고 대수롭지 않게 여기는 분들이 많더라고요. 근데 실제로 써보면 달라요. 정전은 예고 없이 오고, 순간적인 전압 강하(Voltage Dip)도 서버한테는 충분히 치명적이거든요. 이 글에서는 제가 직접 구축하고 운영 중인 UPS 홈서버 전원 관리 시스템을 단계별로 공유해 드릴게요. 정전 대비와 데이터 보호까지 한 번에 정리해 봅시다.
UPS를 중심으로 홈서버, NAS, 네트워크 장비가 연결된 전원 관리 전체 아키텍처 개요도입니다.
UPS가 뭔지부터 제대로 알고 가자
UPS의 기본 원리 — 쉽게 말해 '전기 완충제'
UPS를 한 마디로 표현하면 "서버를 위한 보조 배터리"예요. 그냥 배터리랑 뭐가 다르냐고요? UPS는 항상 전력을 감시하고 있다가, 이상이 생기는 순간 배터리로 전환해서 전원을 끊김 없이 공급해줍니다. 그 전환 시간이 수 밀리초(ms) 수준이라 서버는 정전을 눈치채지도 못해요.
UPS에는 크게 세 가지 방식이 있는데, 홈랩 용도로는 어떤 걸 써야 할지 한 번 비교해 볼게요.
| 방식 | 동작 원리 | 전환 시간 | 가격대 | 홈랩 추천도 |
|---|---|---|---|---|
| Standby (오프라인) | 평소엔 상용전원 직접 사용, 정전 시 배터리 전환 | 4~25ms | 저가 | ⭐⭐⭐ |
| Line-Interactive (라인 인터랙티브) | 전압 조정(AVR) 기능 포함, 정전 시 배터리 전환 | 2~4ms | 중가 | ⭐⭐⭐⭐⭐ |
| Online Double Conversion (온라인) | 항상 배터리를 통해 전원 공급, 완전 무전환 | 0ms | 고가 | ⭐⭐⭐⭐ |
홈랩용으로는 Line-Interactive 방식을 강력 추천해요. 가격 대비 성능이 가장 좋고, AVR(Automatic Voltage Regulation, 자동 전압 조정) 기능 덕분에 전압이 불안정한 환경에서도 서버를 안전하게 보호해주거든요. 저도 이 방식 쓰고 있습니다.
VA와 W — UPS 용량 계산이 생각보다 중요합니다
UPS 살 때 가장 많이 헷갈리는 게 용량 표기예요. VA(볼트암페어)와 W(와트)가 같이 적혀 있거든요. 간단하게 설명하면:
- VA: 피상 전력 (UPS가 공급 가능한 최대 전기 용량)
- W: 실효 전력 (실제 기기가 소비하는 전력)
- 보통 W = VA × 0.6~0.8 정도로 생각하시면 돼요
홈서버 구성별 권장 UPS 용량을 정리해 봤어요:
| 홈랩 구성 | 예상 소비전력 | 권장 UPS 용량 | 권장 백업 시간 |
|---|---|---|---|
| 미니 PC 1대 + 스위치 | 50~80W | 600VA / 360W | 15~20분 |
| 타워 서버 1대 + NAS | 150~250W | 1000VA / 600W | 10~15분 |
| 서버 2~3대 + NAS + 네트워크 | 300~500W | 1500VA / 900W | 10분 이상 |
💡 팁: 백업 시간은 서버를 완전히 켜두는 게 목적이 아니에요. 정전 감지 → 자동 셧다운 명령 → 안전하게 종료까지의 시간만 확보하면 됩니다. 보통 5~10분이면 충분해요.
UPS 홈서버 연결 실전 가이드
제가 쓰는 UPS 세팅
저는 현재 APC Back-UPS Pro 1500VA를 메인으로, 소형 APC BE600M1을 네트워크 장비 전용으로 따로 두고 있어요. USB 통신 포트가 있는 모델을 선택한 게 핵심이었는데, 이게 있어야 서버와 UPS가 대화를 할 수 있거든요.
NUT(Network UPS Tools) 설치 — 리눅스 서버와 UPS 연동의 핵심
NUT(Network UPS Tools)는 리눅스에서 UPS를 관리하는 사실상 표준 도구입니다. UPS 상태를 모니터링하고, 배터리 잔량이 일정 수준 이하로 떨어지면 자동으로 서버를 종료시켜 주는 역할을 합니다.
Ubuntu/Debian 기준으로 설치해 볼게요:
# NUT 패키지 설치
sudo apt update
sudo apt install nut nut-client nut-server -y
# USB로 연결된 UPS 장치 확인
lsusb | grep -i ups
# 또는
nut-scanner -U
UPS가 인식되면 이런 식으로 나와요:
Bus 001 Device 003: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
NUT 설정 파일 구성
NUT는 설정 파일이 여러 개라서 처음엔 좀 헷갈릴 수 있어요. 저도 삽질 좀 했습니다. 하나씩 설명해 드릴게요.
1단계: /etc/nut/nut.conf — 운영 모드 설정
# /etc/nut/nut.conf
MODE=standalone
# standalone: UPS 1대, 서버 1대 연결
# netserver: 여러 서버가 이 UPS를 공유할 때
# netclient: 다른 서버의 UPS를 네트워크로 모니터링할 때
2단계: /etc/nut/ups.conf — UPS 장치 정의
# /etc/nut/ups.conf
[myups]
driver = usbhid-ups
port = auto
desc = "APC Back-UPS Pro 1500"
# pollinterval = 2 # 상태 체크 주기 (초)
# 일부 APC 모델은 아래 옵션 필요
# override.battery.charge.low = 20
3단계: /etc/nut/upsd.conf — 데몬 설정
# /etc/nut/upsd.conf
LISTEN 127.0.0.1 3493
# 다른 서버에서도 접근하게 하려면:
# LISTEN 0.0.0.0 3493
4단계: /etc/nut/upsd.users — 접근 계정 설정
# /etc/nut/upsd.users
[admin]
password = your_secure_password
actions = SET
instcmds = ALL
[monitor]
password = monitor_password
upsmon master
5단계: /etc/nut/upsmon.conf — 모니터링 및 자동 셧다운 설정
# /etc/nut/upsmon.conf
MONITOR myups@localhost 1 monitor monitor_password master
# 배터리 잔량 20% 이하 시 셧다운 시작
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
NOTIFYCMD /usr/sbin/upssched
# 배터리로 전환 후 몇 초 뒤 셧다운 시작할지
# FINALDELAY 5
# 알림 설정
NOTIFYFLAG ONLINE SYSLOG+WALL
NOTIFYFLAG ONBATT SYSLOG+WALL+EXEC
NOTIFYFLAG LOWBATT SYSLOG+WALL+EXEC
NOTIFYFLAG FSD SYSLOG+WALL+EXEC
NOTIFYFLAG COMMOK SYSLOG
NOTIFYFLAG COMMBAD SYSLOG+WALL
NOTIFYFLAG SHUTDOWN SYSLOG+WALL+EXEC
NOTIFYFLAG REPLBATT SYSLOG+WALL
NOTIFYFLAG NOCOMM SYSLOG+WALL
NOTIFYFLAG NOPARENT SYSLOG+WALL
설정 완료 후 서비스를 시작해 줍니다:
# 서비스 시작
sudo systemctl start nut-server
sudo systemctl start nut-client
sudo systemctl enable nut-server
sudo systemctl enable nut-client
# UPS 상태 확인
upsc myups@localhost
# 실시간 모니터링
watch -n 2 'upsc myups@localhost 2>/dev/null | grep -E "battery|status|load"'
NUT(Network UPS Tools) 설정 파일 구조와 UPS 상태 모니터링 화면 예시입니다.
여러 서버를 하나의 UPS로 관리하기 — 네트워크 모드
홈랩에 서버가 여러 대 있다면 이 구성이 진짜 유용해요. UPS에 직접 연결된 서버 1대가 마스터(Master) 역할을 하고, 나머지 서버들은 네트워크로 UPS 상태를 받아보는 슬레이브(Slave) 구조입니다.
# 슬레이브 서버의 /etc/nut/nut.conf
MODE=netclient
# 슬레이브 서버의 /etc/nut/upsmon.conf
# 마스터 서버 IP가 192.168.1.10이라면:
MONITOR myups@192.168.1.10 1 monitor monitor_password slave
MINSUPPLIES 1
SHUTDOWNCMD "/sbin/shutdown -h +0"
이렇게 하면 정전 시 마스터가 먼저 슬레이브들에게 셧다운 신호를 보내고, 모든 서버가 안전하게 종료된 뒤에 마스터가 마지막으로 꺼집니다. 순서가 중요해요!
Proxmox / TrueNAS와 UPS 홈서버 연동하기
Proxmox VE에서 UPS 설정
Proxmox를 쓰시는 분들 많죠? Proxmox는 데비안 기반이라 NUT 설정이 거의 동일한데, VM(가상머신)들도 셧다운 순서에 포함시켜야 한다는 게 포인트예요.
# Proxmox에서 NUT 설치
apt install nut -y
# upsmon.conf에 셧다운 명령 수정
# VM들을 먼저 종료하고 호스트를 종료하는 스크립트
SHUTDOWNCMD "/usr/local/bin/ups-shutdown.sh"
#!/bin/bash
# /usr/local/bin/ups-shutdown.sh
# Proxmox VM 자동 셧다운 스크립트
echo "UPS: 정전 감지, VM 셧다운 시작" | logger
# 실행 중인 VM 목록 가져오기
RUNNING_VMS=$(qm list | grep running | awk '{print $1}')
# 각 VM에 ACPI 셧다운 신호 전송
for VMID in $RUNNING_VMS; do
echo "VM $VMID 종료 중..." | logger
qm shutdown $VMID --timeout 60
done
# VM들이 종료될 때까지 대기 (최대 120초)
for i in $(seq 1 24); do
RUNNING=$(qm list | grep running | wc -l)
if [ "$RUNNING" -eq 0 ]; then
break
fi
sleep 5
done
# 호스트 종료
/sbin/shutdown -h now
chmod +x /usr/local/bin/ups-shutdown.sh
TrueNAS SCALE에서 UPS 설정
TrueNAS는 웹 GUI에서 설정할 수 있어서 훨씬 편해요. System → UPS 메뉴로 가면 됩니다.
- UPS Mode: Master (직접 연결) 또는 Slave (네트워크)
- Driver: usbhid-ups (대부분의 USB UPS)
- Port or Hostname: /dev/usb/hiddev0 또는 auto
- Shutdown Mode: UPS reaches low battery (배터리 낮을 때 종료)
- Shutdown Timer: 30 (배터리 전환 후 30초 뒤 셧다운 시작)
- Monitor User/Password: 위에서 설정한 계정 정보
⚠️ 주의: TrueNAS에서 UPS 설정 후 반드시 테스트를 해보세요. 실제 플러그를 뽑아서 셧다운이 잘 되는지 확인하는 게 가장 확실합니다. 저는 이 테스트를 안 했다가 나중에 낭패를 봤어요.
⚠️ 실제 삽질 경험 — 이것만 조심하세요
트러블슈팅 1: USB 장치 권한 문제
NUT 설치 후 upsc 명령어를 실행했을 때 이런 에러가 뜨는 경우가 있어요:
Error: Driver not connected
# 또는
Can't connect to UPS [myups] (usbhid-ups)
십중팔구 USB 권한 문제입니다. 이렇게 해결하세요:
# nut 사용자를 dialout 그룹에 추가
sudo usermod -aG dialout nut
# udev 규칙 확인
ls -la /dev/usb/
# 또는
ls -la /dev/bus/usb/
# udev 규칙 추가 (필요한 경우)
sudo systemctl restart nut-server
권한 설정 후 NUT 서비스를 재시작하면 대부분 해결돼요.
트러블슈팅 2: UPS 자동 감지 실패
nut-scanner로도 못 찾는 경우가 있어요. 이럴 땐 수동으로 설정해야 합니다:
# USB 장치 상세 정보 확인
lsusb -v | grep -A 5 "Power Conversion"
# 드라이버 직접 지정
# /etc/nut/ups.conf에서:
driver = usbhid-ups
port = /dev/usb/hiddev0 # 또는 /dev/hidraw0
트러블슈팅 3: 셧다운이 안 될 때
정전을 시뮬레이션했는데 서버가 안 꺼진다면:
# 1. upsmon 상태 확인
sudo systemctl status nut-client
# 2. 로그 확인
sudo tail -f /var/log/syslog | grep -i nut
# 3. 수동 테스트
sudo /sbin/shutdown -h +1 # 1분 뒤 종료 예약
sudo shutdown -c # 취소
# 4. SHUTDOWNCMD 권한 확인
ls -la /sbin/shutdown
# nut 사용자가 sudo 없이 실행할 수 있어야 함
이 부분은 실제로 가장 자주 문제가 되는 부분이에요. 권한 설정을 꼼꼼히 체크하세요.
트러블슈팅 4: 배터리 용량 표시가 이상할 때
일부 UPS 모델은 배터리 용량을 정확히 보고하지 않아요:
# /etc/nut/ups.conf에 추가
override.battery.charge.low = 20
override.battery.runtime.low = 300 # 5분
이렇게 설정하면 배터리 20% 이하 또는 5분 이하로 떨어지면 셧다운을 시작합니다.
UPS 홈서버 운영 체크리스트
정전 대비를 제대로 했는지 확인하려면 이 체크리스트를 써보세요:
- ☑️ UPS 모델이 Line-Interactive 방식 이상인가?
- ☑️ UPS 용량이 실제 소비전력의 1.5배 이상인가?
- ☑️ NUT가 설치되고 UPS를 인식하는가? (upsc 명령 테스트)
- ☑️ 정전 시뮬레이션을 해봤는가? (플러그 뽑기)
- ☑️ 모든 서버가 안전하게 종료되는가?
- ☑️ UPS 배터리를 최근에 교체했는가? (보통 3~5년)
- ☑️ 월 1회 이상 UPS 상태를 모니터링하는가?
이 중 하나라도 빠졌다면 지금 바로 확인해 보세요. 정전은 언제 올지 모르니까요.
마치며
UPS 홈서버 구축은 처음엔 복잡해 보이지만, 한 번 제대로 설정하면 정말 든든해요. 저도 처음엔 NUT 설정에서 헤맸지만, 지금은 정전이 와도 서버가 자동으로 안전하게 종료되니까 마음이 놓입니다.
혹시 설정 중에 문제가 생기면 로그를 꼼꼼히 읽어보세요. 대부분의 문제는 권한이나 장치 인식 문제거든요. 그리고 반드시 실제 정전 상황을 시뮬레이션해서 테스트하는 걸 잊지 마세요. 종이에만 계획하고 실제로 안 되는 경우가 생각보다 많으니까요.
이 글이 여러분의 홈랩을 더 안전하게 만드는 데 도움이 되길 바랍니다. 질문이나 추가 정보가 필요하면 댓글로 남겨주세요!
'IT > HomeLabs' 카테고리의 다른 글
| [HomeLabs] Matter 프로토콜과 Home Assistant 연동: 스마트홈 기기 통합 완벽 가이드 (0) | 2026.04.16 |
|---|---|
| [HomeLabs] Home Assistant 적외선 제어: 레거시 기기 스마트홈 연동하기 (2026.4) (1) | 2026.04.15 |
| [HomeLabs] WireGuard VPN으로 홈랩 네트워크 보안 강화하기 완벽 가이드 (0) | 2026.04.13 |
| [HomeLabs] Home Assistant 음성 제어 2026.4: 로컬 AI 홈 오토메이션 완벽 가이드 (0) | 2026.04.09 |
| [HomeLabs] Docker Compose 2026 홈랩 멀티컨테이너 완전 가이드: 실전 Compose 설정 (1) | 2026.04.08 |
| [HomeLabs] Home Assistant를 텔레그램으로 제어하기: Gemini AI 자연어 스마트홈 봇 만들기 (0) | 2026.04.05 |