3 ZFS를 사용한 파일 시스템 구성

Solaris 11.2는 ZFS 파일 시스템을 기반으로 합니다. 디스크 I/O, 디스크 분할 및 디스크 미러링(또는 RAID)은 전적으로 ZFS에 의해 처리됩니다. 따라서 UFS 파일 시스템에서 일반적으로 수행되었으므로 디스크를 분할할 필요가 없습니다. 전체 시스템 디스크는 단일 파티션으로 제공되어야 합니다.

스토리지 배열은 이미 RAID로 구성되었으므로 ACSLS 파일 시스템에 대해 ZFS를 사용해서 추가 RAID 레벨을 구성할 필요가 없습니다. ZFS RAID는 간단한 JBOD 디스크를 사용하는 경우에 필수지만 정규화된 디스크 배열을 사용할 경우 추가 RAID는 선택사항입니다. 아래 예제에서는 각 접근 방법을 보여줍니다.

미러링된 루트 파일 시스템 만들기

  1. Solaris 플랫폼은 2개의 물리적 디스크 드라이브로 구성되어야 합니다. 최적의 ZFS 성능을 위해서는 시스템 디스크 및 해당 미러 드라이브를 분할합니다.

    운영체제 설치 이전에 새 시스템에서 파티션 0에 전체 디스크 공간 중 대부분(아니면 전체)이 포함되도록 각 시스템 디스크 드라이브를 분할할 수 있습니다. ZFS는 전체 디스크에 액세스할 수 있는 경우 더 빠르고 안정적으로 작동합니다. 두번째 디스크에서 ZFS에 대해 정의된 파티션 크기가 주 디스크에 정의된 크기와 동일한지 확인합니다.

    Solaris 11.2가 이미 설치된 시스템에서 root 파티션 크기를 보려면 주 시스템 디스크에서 format 또는 fdisk를 사용합니다. 같은 크기의 파티션으로 두번째 시스템 디스크를 포맷합니다. 포맷이 완료되면 디스크 레이블을 지정합니다.

  2. 시스템이 작동되면 zpool status 명령으로 rpool을 확인합니다.

    # zpool status
      pool: rpool
      state: ONLINE
      scan: none requested
      config:
         NAME                      STATE     READ WRITE CKSUM
         rpool                     ONLINE       0     0     0
          c0t5000C5000EA48903d0s0  ONLINE       0     0     0
    
  3. 두번째 시스템 디스크를 식별하고 해당 장치 ID를 확인합니다.

    # echo | format
    AVAILABLE DISK SELECTIONS:
      0. c0t5000C5000EA48893d0 <SUN146G cyl 14087 alt 2 hd 24 sec 848>
        /scsi_vhci/disk@g5000c5000ea48893
      1. c0t5000C5000EA48903d0 <SUN146G cyl 14087 alt 2 hd 24 sec 848>
        /scsi_vhci/disk@g5000c5000ea48903
    

    2단계에 나와 있는 장치와 거의 비슷한 크기의 대체 장치를 선택합니다. 이 예제에서 두번째 디스크 ID는 c0t5000C5000EA48893d0s입니다.

  4. 두번째 디스크를 rpool에 추가합니다.

    # zpool attach -f rpool \
           c0t5000C5000EA48903d0 \
           c0t5000C5000EA48893d0
    

    시스템이 미러링된 드라이브에 대한 리실버링을 시작하여 부트 드라이브의 내용을 두번째 드라이브로 복사합니다. 이 작업은 몇 분 정도 걸리며 중간에 재부트를 통해 중단되지 않아야 합니다.

    다음을 사용해서 진행 상황을 모니터할 수 있습니다.

    zpool status -v
    

    주 1: 리실버링이 완료될 때까지 모든 상태 표시에는 해당 디스크가 성능 저하 모드로 표시됩니다. 주 디스크에서 미러로 정보를 복사하는 중에는 디스크가 성능 저하 상태로 유지됩니다.

    주 2: 디스크 레이블이 EFI 디스크로 표시되어 zpool attach가 실패하면 Solaris 관리: 장치 및 파일 시스템(http://docs.oracle.com/cd/E23824_01/pdf/821-1459.pdf) 문서에 설명된 프로세스를 따릅니다. 이 프로세스는 다음과 같이 EFI 디스크를 SMI로 전환합니다.

    # format -e
      (select the drive to serve as the rpool mirror).
      format> partition
      partition> print
      partition> label
        (specify label type "0")
        Ready to label? y
      partition> modify
        (select "1" All free Hog)
        Do you wish to continue ... yes
        Free Hog Partition[6]? (specify partition "0")
        (Specify a size of "0" to the remaining partitions)
        Okay to make this current partition table? yes
        Enter table name: "c1t1d0"
        Ready to label disk? y
     partition> quit
     format> quit
    
  5. 미러링된 rpool 구성을 확인합니다.

    # zpool status
      pool: rpool
     state: ONLINE
      scan: resilvered 6.89G in 0h3m with 0 errors
    config:
            NAME                       STATE     READ WRITE CKSUM
            rpool                      ONLINE       0     0     0
              mirror-0                 ONLINE       0     0     0
                c0t5000C5000EA48903d0  ONLINE       0     0     0
                c0t5000C5000EA48893d0  ONLINE       0     0     0
    

    인접한 노드에서 이 작업을 반복합니다.

ACSLS 응용 프로그램에 대한 미러링된 파일 시스템 만들기

ACSLS 파일 시스템은 외부 공유 스토리지 배열의 zpool에 상주합니다. 아래 예제에서는 2개의 디스크만 사용하는 간단한 미러링된 배열(RAID 1)이 사용됩니다. 이러한 드라이브는 실제 드라이브일 수 있지만 대부분의 경우 연결된 스토리지 배열과 별개의 드라이브로 표시되는 가상 장치입니다.

스토리지 배열은 이미 RAID로 구성되었으므로 ACSLS 파일 시스템에 대해 ZFS를 사용해서 추가 RAID 레벨을 구성할 필요가 없습니다. ZFS RAID는 간단한 JBOD 디스크를 사용하는 경우에 필수지만 정규화된 디스크 배열을 사용할 경우 추가 RAID는 선택사항입니다. 아래 예제에서는 각 접근 방법을 보여줍니다.

  1. 공유 스토리지 배열을 준비합니다.

    표준 구성에서는 디스크 배열에서 단일 가상 드라이브를 사용합니다. 그렇지 않으면 ZFS RAID 미러링 구성에 같은 크기의 가상 드라이브 2개가 사용됩니다. 디스크 배열 또는 Solaris 포맷 유틸리티와 함께 관리 도구를 사용해서 2개의 가상 드라이브를 같은 크기가 되도록 분할할 수 있습니다.

  2. ACSLS 설치의 기본 디렉토리를 결정합니다.

    ACSLS 8.4는 모든 파일 시스템에 설치할 수 있습니다. 선택한 기본 파일 시스템은 시스템 rpool에 존재하지 않아야 합니다. 이미 존재하는 경우 기존 파일 시스템을 먼저 삭제해야 새 zpool 아래에 파일 시스템을 만들 수 있습니다.

    ACSLS에 대해 기본값인 /export/home 기본 디렉토리를 사용하려는 경우 Solaris 11.2의 기본 root 풀에서 /export 파일 시스템을 삭제해야 합니다.

    /export/homerpool에 연결되었는지 확인하려면 다음 명령을 실행합니다.

    # zfs list
    

    rpool에서 /export/home을 분리하려면 먼저 보존하려는 파일 또는 디렉토리를 저장합니다. 사용자의 홈 디렉토리가 현재 /export/home에서 활성 상태가 아닌지 확인합니다. 그런 후 zfs destroy를 사용해서 /export 아래의 모든 항목을 제거합니다.

    # zfs destroy -r rpool/export
    

    이 단계를 반복해서 인접한 노드에서 rpool/export를 분리합니다.

  3. format을 사용해서 연결된 디스크 배열에 있는 드라이브의 장치 이름을 식별합니다.

    # echo | format
    AVAILABLE DISK SELECTIONS:
       0. c0t5000C5000EA48893d0 <FUJITSU-MAY2073RCSUN72G-0501-68.37GB>
       /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@0,0
       /dev/chassis/SYS/HD0/disk
    1. c0t5000C5000EA48893d0 <FUJITSU-MAY2073RCSUN72G-0501-68.37GB>
       /pci@0,0/pci1022,7450@2/pci1000,3060@3/sd@1,0
       /dev/chassis/SYS/HD1/disk
    3. c0t600A0B800049EDD600000C9952CAA03Ed0 <SUN-LCSM100_F-50.00GB>
       /scsi_vhci/disk@g600a0b800049edd600000c9952caa03e
    4. c0t600A0B800049EE1A0000832652CAA899d0 <SUN-LCSM100_F-50.00GB>
       /scsi_vhci/disk@g600a0b800049ee1a0000832652caa899
    

    이 예제에서는 장치 이름이 c0t600A...로 시작하는 디스크 배열에서 2개의 시스템 디스크와 2개의 가상 디스크가 제공되어 있습니다.

  4. acslspool을 만듭니다.

    정규화된 디스크 배열을 사용하는 표준 구성의 경우 다음과 같이 acslspool을 만듭니다.

    # zpool create -m /export/home acslspool\
      /dev/dsk/c0t600A0B800049EDD600000C9952CAA03Ed0
    

    1단계에서 제안한 대로 ZFS RAID를 추가한 경우 다음과 같이 미러링된 구성을 만듭니다.

    # zpool create -m /export/home acslspool mirror \
       /dev/dsk/c0t600A0B800049EDD600000C9952CAA03Ed0 \
       /dev/dsk/c0t600A0B800049EE1A0000832652CAA899d0
    
  5. acslspool을 확인합니다.

    # zpool status acslspool
      pool: acslspool
     state: ONLINE
      scan: none requested
    config:
      NAME                                       STATE   READ WRITE CKSUM
      acslspool                                  ONLINE   0     0     0
        mirror-0                                 ONLINE   0     0     0
          c0t600A0B800049EDD600000C9952CAA03Ed0  ONLINE   0     0     0
          c0t600A0B800049EE1A0000832652CAA899d0  ONLINE   0     0     0
    

    주:

    RAID 디스크 배열을 사용할 경우, 미러링된 ZFS 구성은 선택사항입니다.
  6. 새 풀에서 테스트 파일을 만들고 확인합니다.

    # cd /export/home
    # date > test
    # ls
    test
    # cat test
    Tue Jan  7 11:48:05 MST 2015
    
  7. 풀을 내보냅니다.

    # cd /
    # zpool export acslspool
    
  8. 인접 노드에 로그인합니다(이하 '새 현재 노드'라 함).

  9. 새 현재 노드에서 /export/home(또는 ACSLS에 대한 파일 시스템)이 root 풀의 어디에도 마운트되지 않았는지 확인합니다.

    # zfs list
    

    파일 시스템이 rpool에 존재할 경우 이 현재 노드에서 위의 2단계를 반복합니다.

  10. 새 현재 노드에서 acslspool을 가져오고 acslspool이 이 노드에 있는지 확인합니다.

    # zpool import acslspool
    # zpool status
      pool: acslspool
     state: ONLINE
      scan: none requested
    config:
    NAME                                       STATE   READ WRITE CKSUM
    acslspool                                  ONLINE   0     0     0
      mirror-0                                 ONLINE   0     0     0
        c0t600A0B800049EDD600000C9952CAA03Ed0  ONLINE   0     0     0
        c0t600A0B800049EE1A0000832652CAA899d0  ONLINE   0     0     0
    

    zpool import가 실패했으면 zpool import -f로 작업을 시도할 수 있습니다.

    주:

    RAID 디스크 배열을 사용할 경우, 미러링된 ZFS 구성은 선택사항입니다.
  11. 테스트 파일이 새 현재 노드에 있는지 확인합니다.

    # cd /export/home
    # ls
    test
    # cat test
    Tue Jan  7 11:48:05 MST 2015