Cloning Disk


  1. 문서 정보
    작성자: 조여름 (solaris@mesani.net)
    작성일: 2003.5.1
    수정일: 2003.5.1
    저작권: 이 문서는 GPL(Gnu Public License)을 따릅니다.
    
  2. 소개

    디스크의 복제

    솔라리스를 설치하고 필요한 소프트웨어와 관련 설정을 모두 마치고 나면 당연히 관리와 백업의 문제가 남아있다. 테이프나 네트웍 백업의 단점은 시스템에 문제가 발생할 때에 즉각 조치하기 어렵다는 것이다. 디스크의 결함이나 당장 원인을 알수없는 문제로 서버가 정상동작하지 않는다면 빠른 복구가 필요하고, 추후에 원인을 분석 처리하는 것이 순서이다.
    따라서 중소규모 서버의 경우, OS 디스크를 복제해두고 빠른 대응을 요구하는 경우 복제한 디스크를 이용하여 복구를 처리하면 좋을 것이다.

    여기에서는 OS 디스크를 그대로 복제하는 방법을 설명하고자 한다. 우선 복제할 여유 디스크를 해당 시스템에 장착한다. 내장형이던 외장형이던 상관없다. 다음과 같은 방법을 생각해 볼 수 있다. 모두 설치 CD-ROM으로 싱글유저 모드로 부팅하여 작업하거나 부득이 할 경우 부트 디스크의 single user mode에서 작업해야 한다. 정상 운영중인 OS를 복제하는 방법은 snapshot이 있다.

    dd명령을 이용한 디스크 복제
    이 경우 디스크 이미지를 그대로 복제하기 때문에 OS의 파일 시스템을 이용하지 않으며 간단히 복제가 가능하다. 디스크와 시스템의 지원 속도에 따라 블럭사이즈를 정해 주면 좀 더 나은 속도로 복제가 가능하지만 대체로 시간이 길게 소요된다. 주의할 것은 같은 제품의 똑같은 사이즈의 디스크로 해야 한다는 것이다.

    tar또는 ufsdump를 이용한 복제
    이 경우는 파일시스템으로 처리하므로 훨씬 빠르게 복제할 수 있으나 VTOC(Disk Lable) 의 처리 및 부트블럭 복구(bootblk)를 해 주어야 한다. 하지만 여러 경험자들에 의해 정리된 스크립트들이 있으므로 이를 활용하면 된다. 우선 순서대로 처리해 보고 본질을 파악한 다음 스크립트를 이용해보자. 솔라리스 OS의 복제는 ufsdump가 가장 안전하고 문제가 없다. tar의 경우에는 gnu tar를 쓰는 것이 훨씬 빠르고 강력하다. 그러나 많은 엔지니어들은 tar보다는 ufsdump를 권장한다.

    Mirroring
    썬에서 기본제공하는 Solstice DiskSuite (SDS)를 이용하여 OS 디스크를 미러링할 수 있다. 이것은 디스크복제와는 엄밀히 다르나 OS 디스크가 문제가 있다면 미러링에 의해 복구처리를 자동으로 해 줄 수 있을 것이다. 또한 Veritas의 Volume Replicator를 이용하면 OS디스크 이상의 미러링이 가능하며 동일하지 않는 디스크(heterogeneous)에도 적용할 수 있는 장점이 있다.

    snapshot
    솔라리스에서 제공하는 것으로 현재 운영중인 OS의 모든 파일시스템을 일기가능한 스냅샷 이미지를 만들고 이를 가상 디바이스에 연결하여 백업하는 방법이다. 시스템을 중지해서는 안되는 시스템에 적용할 수 있다. Solaris8 부터 지원되며 CD-ROM 이나 Single User 모드에서 작업할 수 없는 시스템에서 유용하다.

  3. dd 명령을 이용한 디스크 복제

    1. 복제용 디스크를 새로 장착한다.
    2. CD-Rom 또는 OS디스크를 이용하여 Single User mode로 부팅한 다음 root로 로그인한다.
      CD-Rom의 경우 install CD 또는 software 1/2 CD를 이용하고 PROM에서 다음과 같이 수행한다.

      OK boot cdrom -s

      OS 디스크의 경우는 다음과 같다.

      # init S

    3. dd명령을 수행한다.
      OS 디스크는 /dev/rdsk/c0t3d0s2, 복제 디스크는 /dev/rdsk/c1t0d0s2라 가정한다. 여기에서 s2는 디스크 전체를 의미한다.

      # dd if=/dev/rdsk/c0t3d0s2 of=/dev/rdsk/c1t0d0s2 bs=521k

      if: 입력 디바이스 (OS 원본 디스크의 장치명)
      of: 출력 디바이스 (복제 디스크의 장치명)
      bs: 블럭 사이즈 ( 128k, 512k등 : 블럭단위가 클수록 복제 속도가 빠르나 이는 디스크의 IO에 달렸다. 참고로 512K로 수행시 SCSI 9G 10k rpm의 경우 약 1시간 20여분 소요)

    4. 복제 디스크의 파일 시스템을 검사한다.
      s#은 복제 디스크 각각의 ufs 파일시스템을 말한다.

      # fsck /dev/rdsk/c1t0d0s#

    5. 복제 디스크의 root(/) 파일시스템을 마운트한다.
      # mount /dev/dsk/c1t0d0s0 /a

    6. vfstab파일의 장치명을 적당한 이름으로 수정한다.
      # TERM=sun
      # export TERM
      # vi /a/etc/vfstab ( => c0t3d0s0 를 c1t0d0s0 로 모두 변경)

      참고) 보통은 복제 디스크가 장애처리시 OS디스크와 대체될 것이므로 수정하지 않아도 된다. 그러나 복제디스크를 시스템에 장착해 두었다가 문제가 발생하면 이 디스크로 바로 부팅하려면 수정이 필요하다. 이 경우 PROM에서 nvalias로 복제디시크의 별명을 설정해두면 PROM에서 부팅시 편리하다.

    7. 복제 디스크의 root(/) 파일 시스템을 언마운트한다.
      # cd /
      # umount /a

    8. 복제 디스크로 부팅한다.
      # init 0
      OK boot disk2 ( => 복제디스크가 disk2로 가정, PROM명령 devalias로 확인한다.)

      참고1) 위에서 언급했듯이 시스템에 장착해 두려는 경우 PROM명령 nvalias로 설정해 두면 편리하다.

    - 복제 디스크를 똑같은 타 시스템에 적용하려면
    복제 디스크를 똑같은 타 시스템에 적용하려면 다음과 같다.
    1) DISK를 시스템에 장착한다.
    2) 파워를 켜고 바로 stop + a 키를 동시에 누른다.
    3) PROM 모드에서 디스크 연결을 확인한다.
    OK probe-sci (IDE disk의 경우 probe-ide)
    4) 복제 디스크로 부팅한다.
    OK boot disk# -s (#은 복제 디스크의 번호, -s는 싱글유저 모드)
    5) 루트로 로긴한다.
    6) 복제 디스크의 시스템 기본 정보 설정을 다시한다.
    # sys-unconfig ( OS가 재부팅되고 관련 설정을 수행한다.)

    주의) 이 때도 마찬가지로 복제 디스크의 vfstab에 설정된 디바이스 명이 같은가를 판단하여 다르다면 CD-ROM single User로 부팅하여 복제 디스크의 /(root) 파일 시스템을 마운트하고 vfstab을 맞게 수정한다음 위의 방업을 수행한다.

  4. tar 또는 ufsdump를 이용한 복제

    ufsdump와 ufsrestore는 이를 위한 가장 안전하며 바람직한 방법이다. 여기에서는 tar의 설명은 생략한다.
    I used the following steps to backup one drive to a second identical one (going from memory)
    1) use prtvtoc and fmthard to partition the second disk 
    2) newfs the slices on the second disk 
    3) mount up the root slice of the second disk under /mnt 
    4) cd /mnt;ufsdump of - / | ufsrestore rf - 
    5) sed < /mnt/etc/vfstab -e s/c0t3d0/c0t1d0/g > /tmp/vfstab.new 
    6) mv /tmp/vfstab.new /mnt/etc/vfstab 
    7) cd /;umount /mnt 
    8) continue to mount up each remaining slice and copy the data to it. 
    9) I would also fsck each slice on the new disk just to make sure everything is ok. 
    10) run installboot on the new disk to create the boot blocks
    Once you've done this you can do a "boot disk1" from the ok prompt. 
    This method saved my "tech lead's" butt once. Boot off of the second internal 
    (cold backup) disk and the server was back up again. Dupe the disk1 back 
    to disk3 and reboot later in the evening. I am never going to let him live 
    down that mistake!
    


  5. Mirroring



  6. 참고 문헌

    1. How to Clone a Disk
      http://tiger.la.asu.edu/Solaris_Clone.htm