power / knowledge
privileged LXC에 USB를 넘겨 UPS 물리기
UPS는 USB로 서버에 붙는다. NUT을 Proxmox host에 직접 깔지 않고 LXC 안에 넣기로 했다. host를 건드리지 않고 컨테이너 하나만 관리하면 되기 때문이다. 대신 USB 장치를 컨테이너로 넘겨줘야 한다.
privileged LXC는 nesting을 켜야 부팅된다
USB 장치를 넘기려면 privileged LXC여야 한다. 그런데 privileged로 만들고 그냥 시작하면 부팅 자체가 안 된다.
만들 때 Options에서 nesting을 켜야 한다. 이걸 몰라서 컨테이너가 시작되지 않는 이유를 한참 찾았다. (Proxmox 포럼의 같은 사례)
passthrough 설정
컨테이너의 conf 파일에 두 줄을 넣는다.
lxc.mount.entry: /dev/bus/usb dev/bus/usb none bind,optional,create=dir
lxc.cgroup2.devices.allow: c 189:* rwm
첫 줄은 host의 /dev/bus/usb 를 컨테이너 안으로 bind mount한다. create=dir 이 있어야 컨테이너 쪽에 디렉토리가 없어도 만들어준다.
둘째 줄이 실제 권한이다. 189는 USB character device의 major number다. 특정 장치 하나만 열어주려면 minor까지 지정할 수 있지만, UPS를 뽑았다 꽂으면 minor가 바뀌므로 * 로 열어뒀다.
설치
$ apt install nut # UPS가 물린 쪽
$ apt install nut-client # 감시만 하는 쪽
UPS에 직접 연결된 컨테이너에만 nut 을 넣는다. 나머지 서버는 nut-client 만 있으면 된다.