2008/12/17

솔라리스의 '라이브 업그레이드' 기능을 활용한 실시간 운영체제 백업

솔라리스 10은 update 6 (2008년 11월) 버젼부터는 root filesystem으로 zfs를 지원하고 있습니다, 강력한 스냅샷 기능으로 가장 안정적인 운영체제 상태를 항상 유지할 수 있게 되면서, 사실 백업이 근본적으로 필요없게 되었다고 볼 수 있습니다. 물론, 단일 디스크로만 사용한다면 다스크 장애시 문제가 발생할 수 있으므로, zfs를 root 화일 시스템으로 사용하는 경우에는 반드시 미러링을 사용해야 합니다.

그런데, zfs가 아닌 이전 화일 시스템(ufs)를 선택했을 경우에는 다른 방법을 이용하여 운영체제 백업본을 디스크 상에 여러개 유지할 수 가 있습니다. 따라서, 디스크 하나에 장애가 났을 경우에 이미 구성된 백업 슬라이스를 이용하여 백업된 운영체제 이미지를 다시 붓거나 하는 일없이 바로 부팅할 수 있습니다.

이렇게 하기 위해서는 다음과 같은 구성을 필요로 합니다.

예를 들어, 160GB가 두개 설치되어 있는 서버가 있다고 합시다. 운영체제 이미지를 위해서는
20GB 이상이면 매우 충분하나, 추후 사용을 위해서 32GB 정도를 운영체제에 할당한다고
할 경우, 160GB의 디스크가 두개 있어서  디스크1에서 s0가 32G 공간으로 솔라리스 root가

설치되어 있고 나머지는 /home 등으로 사용되고 있다고 합시다.


디스크2도 같은 s0가 있어서 DISK1의 s0로 mirror되어 있고 나머지가 비어있다면,

디스크 2의 나머지 공간에 32G를 가지는 슬라이스를 몇개 더 만들어서 이 공간을

라이브 업그레이드용 이미지 공간으로 사용 가능합니다.



root(/) 디스크의 내용을 디스크2의 s3,s4,s5로 lucreate 해놓게 되면

디스크1이 장애가 났을 경우 디스크2의 위 슬라이스로 eeprom에서 바로 부팅할 수 있게 됩니다.

따라서, 별도로 백업했던 이미지를 다시 붓는 과정이 필요없게 되므로 긴급 장애에
빠르게 대응할 수 있습니다.

c0t0d0가 장애가 난 경우, c0t0d0s0와 c0t1d0s0이 미러링이 되어 있으므로, 별 문제없이 두번째
디스크로 유지가 되나, 만약을 위해서 운영체제 백업을 유지하기 위해서 위와 같이 별도의 부팅
가능한 운영체제 이미지본을 가질 수 있게 됩니다.

live upgrade를 이용하여 운영체제 백업 이미지를 구성하는 방법은 다음과 같이 실행하면 됩니다.

# lucreate  -m /:/dev/dsk/c0t1d0s3:ufs -n first_root_backup
이 경우 /, /usr, /var, /opt등이 나누어져 있는 경우에는 새 lu 이미지는 기존의 /usr, /var/를 공유해서

부팅할 수 있게 되나, 대개는 /(root)에 모든 서브 디렉토리가 포함되어 있기 때문에 위의 명령으로

단번에 백업합니다.



이렇게 실행하면 새로이 백업된  부팅 이미지의 이름으로 first_root_disk가 할당되며, 새로운 부팅 이미지

환경이  생성됩니다. 여기에 사용할 수 있는 디바이스로는 물리적인 디스크나 혹은 SVM에 의해서 주어지는

논리적 디스크에서만 생성됩니다. loopback file system이나, zfs의 데이타셋의 raw volume에서는 실행되지

않습니다.



정상적으로 생성이 되면 lustatus로 확인이 가능하며, 향후 부팅을 원하는 경우에는 luactivate로

가능하게 됩니다.



또한, 새로운 패치로 인해 어떤 일이 생길지 알 수 없다고 판단이 되면 위처럼 lucreate로 만들어진 슬라이스에 새로운 패치를 적용한 후에 부팅해 봄으로써 새패치로 인한 문제가 있는 지 없는 지를 파악할 수 있습니다. lu를 사용하는 경우에는 애플리케이션과 사용자 홈이 있는 파티션 영역은 /와 분리해서 독립적인 슬라이스에 구성하는 것이 바람직합니다.