리눅스 초보자를 위한
대책없는 정전 UPS로 버티기

    신영진 / wonshin@enveng.chungbuk.ac.kr
    wonshin@trut.chungbuk.ac.kr
    HiTEL: rldl

     

 

    저와 같은 많은 초보자 분들이 정전으로 인한 리눅스 파일시스템의 에러를 여러 번 경험하셨을 것입니다. 심지어 리눅스 박스가 날아가 버려서 허무함을 느껴보기도 하셨을 것입니다.
    저도 4년동안 꾸준히 업그레이드를 하면서 애지중지하던 슬랙웨어를 설치한 486 시스템의 리눅스 박스가 어느날 집에 돌아와보니 전원과의 치열한 싸움에서 장렬히 전사... 제 보드는 전원 관리가 안되기 때문에 전원 스위치를 내리기 전까지는 리눅스 박스의 전원이 들어가 있는 상태로 되어 있게 됩니다. 그래서, 집에 전원이 들어갔다 나갔다 여러 번 주기적으로 반복한 결과였습니다. 흑흑... 정말 정든 리눅스 박스이였는데, 하여튼 이런 일을 계기로 전원 시스템에 대한 여러가지 프로그램들을 찾아 보게 되었습니다. 그 결과 UPS를 제대로 설치하여 리눅스의 안정성을 확고하게 할 수가 있었습니다.

    UPS는 uninterrupted Power Supply라고 합니다. 즉, 정전에 대비한 보조 전원 장치입니다.
    갑작스럽게 전원이 차단되는 경우 쉽게 말해서 정전이 되었을 경우 리눅스 박스를 안전하게 유지시켜 주는 역할과 더불어 안전한 shutdown을 할 수 있게 합니다. 옆의 그림과 같이 UPS거 없는 리눅스 박스와 있는 리눅스 박스의 차이입니다. UPS가 전원 장치와 리눅스 박스 사이에 갑작스러운 전원 장치의 이상으로부터 리눅스 박스를 보호하여 줍니다.

    보통 UPS는 두 가지로 나누는데, 그냥 건전지 역할만을 하는 UPS가 있습니다. 보통 Dumb UPS라고 부릅니다. 그냥 전원이 꺼졌을 경우 글자 그대로 보조 전원으로써의 역할만을 수행하는 것입니다. 요사이에는 이런 제품은 거의 판매가 되지 않습니다. 전원이 꺼지면 일정시간 유지해 주다가 보조 전원의 전원이 다 될 때쯤 되면 시스템의 안전하게 shutdown해주는 UPS가 주종을 이루고 있습니다. 이것을 Smart-UPS, Intelligent UPS라고 부릅니다. 저는 그냥 똑똑이 UPS라고 부르도록 하지요.

    [그림 1] 일반 컴퓨터의 전원 연결 구조와 UPS를 사용한 컴퓨터의 전원 연결 구조.

    똑똑이 UPS는 멍청이 UPS와는 다르게 시리얼 포트나 패러럴 포트를 이용하여서 RSC-232에 의한 보조 전원 장치의 신호를 컴퓨터에 알려줄 수 있습니다. 이렇게 함으로써 컴퓨터는 전원의 현재 상태를 감지할 수 있습니다.

 

하드웨어 설치

    * 첫번째로  그림 설치를 해보도록 하겠습니다.

    여기서는 널리 쓰이고 있는 America Power Conversion사의 APC기종을 사용해 보도록 하겠습니다. 옆의 그림은 Smart-UPS Model600 모델입니다. 가격도 저렴하고 기본적으로 컴퓨터의 2대정도는 거뜬히 연결할 수 있습니다.
    UPS설치시 전기적 쇼크에 주의하셔야 하고 한 번에 너무 많은 장치를 연결해서는 안됩니다. 특히, 습기가 있는 장소에는 설치를 하지 마세요.

    [그림.2] UPS의 외형

     

    * 두 번째로 UPS 뒷면을 보시면 아래와 같이 시리얼 케이블, 전원 출력부, 전원 입력부가
       있습니다.

    시리얼 케이블은 서버의 COM1 이나 COM2에 연결이 되어서 똑똑이 UPS의 상태를 알려줍니다. 전원 입력부는 전원 장치로부터 전기는 UPS가 전원을 공급 되어지는 단자입니다. 전원 출력부는 UPS가 전원에 공급해주는 장치의 전원 콘센트를 꼽는 곳입니다.

    [그림.3] APC UPS의 뒷면과 부분 명칭

     

    * 세번째로 시리얼 케이블과 전원 입력부에 전원 콘센트를 꼽아줍니다.

    아래의 그림은 시리얼 케이블과 전원 입력부에 연결한 상태입니다.
    그리고 나머지 전원 출력부에는 리눅스 박스의 전원, 프린트의 전원, 모니터 전원 등을 연결하여 주시면 됩니다. 4개 정도이니까 넉넉하게 연결이 가능합니다.

    [그림.4] 전원이 연결된 UPS

     

    * 네번째로 컴퓨터에 시리얼 케이블을 연결해야 합니다.

    먼저 시리얼 포트의 포트가 남지 않으신다면,,,,
    다음 그림처럼 패러럴로 바꾸어주도록 콘센트를 바꾸어 끼워도 됩니다. 하지만, 보통은 시리얼 포트를 사용합니다.

     [그림.5] 시리얼 케이블을 패러럴로 연결하는 커낵터

    UPS에 연결한 시리얼 포트의 반대쪽을 컴퓨터의 시리얼 포트에 연결하시면 됩니다. 그림은 알파 리눅스 박스에 시리얼 포트를 연결한 장면입니다.

     [그림.6] UPS를 연결한 컴퓨터

     

    * 그리고 나서 UPS의 전원 장치를 켜주시면 됩니다.

    * 이제 그러면 최소한 멍청이 UPS역할까지는 할 수 있는 상태가 되었습니다.

    그러면 이제 리눅스 박스 안에서 UPS의 상태를 점검하고 신호를 받아서 리눅스를 안전하게 shut-down시키는 데몬의 설치와 셋팅을 해보도록 하겠습니다.

 

소프트웨어 설치

    전원 장치를 감시하고 제 역할에 대한 데이터를 받고 보내는 데몬은 보통 /sbin/powerd 데몬을 사용하고 있습니다. 하지만, 지금 우리가 설치한 APC UPS는 APC사의 제품에 맞는 특정한 데몬 프로그램이 3개가 있습니다. apcd, apcupsd, smupsd 프로그램입니다. 그중에 apcd는 아주 작으면서도 효율적인 데몬입니다. apcupsd는 libc5와 libc6용으로 두 가지 있으면서 APC사의 모든 UPS를 지원합니다. smupsd는 자바를 통해서 엑스 윈도우에서 UPS의 상태 등을 전원 상태 등을 체크할 수 있는 프로그램입니다. 여기서 전 apcupsd를 사용하고 합니다. 지원 폭이 넓고, 사용하기도 쉽고, 어느 배포판에서나 설치가 쉽게 됩니다.

    http://www.dyer.vanderbilt.edu/server/apcupsd/에서 구하시면 됩니다.

    현재까지 최신 버전은 apcupsd-3.3.0입니다. 만약 레드헷 사용자라면 RPM이나 SRPM으로 최신 버전보다 약간 낮은 버전이 있으니 그것을 사용하셔도 좋습니다.

      [root@enveng /tmp]# tar - zxvf apcupsd-3.3.0.bin.linux.tar.gz
      [root@enveng /tmp]# cd apcupsd-3.3.0.bin.linux
      [root@enveng apcupsd-3.3.0.bin.linux] ./INSTALL redhat libc6
      You are installing apcupsd for libc6 or glibc2.
      System configurations files for apcupsd (updated).
      /etc/rc.d/init.d/halt have been changed
      and saved as /etc/rc.d/init.d/halt.old
      Make need changes to the new files with respect
      to your original files before you reboot your system.
      DO THIS NOW, AND DON'T HASSLE ME IF YOU DON'T

      Installing "apcupsd-libc6" in "/sbin/apcupsd"
      Installing Manual "apcusd.8" in "/usr/man/man8/apcupsd.8"
      Installing "apcupsd.conf" in "/etc/apcupsd.conf"
      Installing "powersc" in "/sbin/powersc"
      chown: man.man: invalid user
      Done... I hope there were no problems...

    slackware redhat suse unifix debian 어느 배포판이던지 앞의 내용을 써주면 됩니다. 그리고 libc6인지 libc5인지 내용을 써주면 인스톨이 됩니다. 만약에 언인스톨을 원하신다면...

      [root@enveng apcupsd-3.3.0.bin.linux] ./INSTALL remove libc6

    이렇게 remove와 라이브러리를 써주시면 언인스톨도 가능합니다. 보통 설정 파일은 /etc/apcupsd.comf 초기화 스크립터는 /etc/rc.d/init.d/apcups에 설치가 됩니다. 먼저 설정 파일을 조절해 주어야 합니다. 사용자는 보통 시리얼 포트에 연결을 했으므로.... /dev/ttyS1 을 사용하셔야 할 것입니다. 하지만, 간혹 /dev/ttyS1 이 작동하지 않으시면.../dev/cual로 잡으시면 됩니다.

      [root@enveng apcupsd-3.3.0.bin.linux]#vi/etc/apcupsd.conf
      CONTROL /sbin/powersc      <- powersc 데몬의 위치입니다.
      UPSCABLE smart                 <- UPS 케이블의 종류입니다. UPS 매뉴얼을
                                                     참조하시고... 보통 smart로 하세요
      UPSTYPE smartups               <- UPS 종류입니다. 매뉴얼을 보시면 됩니다.
      UPSCLASS standalone          <- 하나의 리눅스 박스만 UPS를 사용할 때...
      UPSMODE disable                <- 넷으로 UPS를 사용할 때 쓰는 옵션입니다.
                                                     보통 하나이므로 disable
      DEVICE /dev/ttyS1                <- 시리얼 포트를 지정해 주어야 합니다.

    참고: 저의 알파에 /dev/ttyS1에서는 작동하지 않아서 /dev/cua1로 연결을 시켰습니다.
            보통 심볼릭 링크를 시켜서 ln -s/dev/ups/dev/cua1 이라고 하고 /dev/ups를 써놓기도
            합니다.

    LOCKFILE /var/lock     <- apcupsd 데몬이 작동했을 때 lock 파일이 생기는 디렉토리 설정
    ANNOY == DELAY 30   <- 리눅스 박스가 shutdown이 되기 전에 logout을 할 시간을 줍니다.
    PROCFS 10                 <- /etc/apcupsd.status에 상태를 다시 기록하는 시간을 설정
    LOGGING 0                 <- /var/log/apcupsd.log 파일의 갱신 시간을 설정해 주는 것입니다.
    TIMEOUT 0                 <- 전원에 이상발생시 몇 초안에 리눅스 박스를 shutdown을 시킬
                                          것인지 써주어야 합니다. 아주 중요한 옵션입니다.
                                          단위로 쓰시면 됩니다. 지금은 0초입니다.
    BATTERYLEVEL 10       <- 배터리의 용량이 10%정도 남았을 때 리눅스 박스를 shutdown
                                          시키게 하는 옵션입니다. 100% 단위 기준입니다.

    나머지 설정은 readmes 디렉토리를 참조하여 주세요! 넷으로 UPS를 공유하는 설정 파일이 예제도 들어 있습니다. UPS 하나만 설치하더라도 UPS의 용량에 따라서 리눅스 박스를 여러 대를 꼽을 수가 있습니다. 그럴 경우 신호를 보낼 수 있는 포트가 하나이기 때문에 시리얼 포트가 꼽아 있는 리눅스 박스가 다른 리눅스 박스에 신호를 보내서 같이 shutdown을 할 수 있게 할 수 있습니다.

    그리고 나서 보통 레드헷에서는 엑스 윈도우에 있는 Runlevel Manager을 사용하시던지 그냥 심볼릭 링크를 하시던지 본인에 취향에 따라서 Sys V Runlevel Manager를 이용하셔서 /etc/rc.d/rc.3d와 /etc/rc.d/rc.5d에 /etc/rc.d/init.d/apcups스크립터를 넣어주시면 됩니다.

    수동으로 실행하려면 /etc/rc.d/init.d/apcups start라고 써주시면 됩니다.
    실행을 중지하려면 /etc/rc.d/init.d/apcups stop라고 써주시면 됩니다.

 

전원장치 시험하기

    모든 설치가 끝나면 UPS를 시험해 보아야 합니다. 아래와 같은 순서에 맞게 실행해 보세요.

    1. 먼저 데몬을 알맞은 실행 레벨에 선택했는지 확인합니다.

    2. 시리얼 포트를 알맞게 설치했는지 확인합니다.

    3. 전원을 차단시킵니다. -> UPS 전원으로 전환됩니다.

    4. 설정한 시간 안에 안전한 shutdown이 되는지 시간을 측정합니다.

    5. 오류 발생시
        ① 시리얼 포트와 디바이스가 맞는지 확인
        ② 전원장치 on 스위치 확인

    이렇게 함으로써 여러분은 드디어 UPS 설치를 끝마치고 전원 문제에서 영원한 해방의 기쁨을 맛 볼 수 있을 것입니다. 앞으로 파워 유저가 아니더라도 UPS 구입을 생각해 보셔도 좋을 듯 합니다.
    요사이 개인이 저렴한 가격으로 사용할 수 있는 조그만 Back-UPS를 APC에서 판매하고 있으니 문의를 해보는 것도 좋을 것이라고 생각이 듭니다.
    또한, 국내 기업 중에서는 해성 전자라는 곳에서 UPS를 생산하고 있습니다. IMF 시대에 국산을 애용하셔도 좋을 듯합니다. 다음에는 일반 UPS에 설치에 대해서 알아보기도 하겠습니다.




▲ top

home으로...