3 使用 ZFS 的文件系统配置

Solaris 11.2 基于 ZFS 文件系统。磁盘 I/O、磁盘分区和磁盘镜像(或 RAID)完全是由 ZFS 处理的。因此,应当不需要对磁盘进行分区(使用 UFS 文件系统时通常要这样做)。整个系统磁盘应当显示为单个分区。

您的存储阵列已配置了 RAID,因此,没有必要使用 ZFS 为您的 ACSLS 文件系统配置额外的 RAID 级别。如果使用的是简单的 JBOD 磁盘,则 ZFS RAID 是必需的,但是如果采用了合格的磁盘阵列,则该额外的 RAID 是可选的。下面的示例将对这两种方式对进行说明。

创建镜像根文件系统

  1. 您的 Solaris 平台应配置有两个物理磁盘驱动器。对系统磁盘及其镜像驱动器进行分区以实现最佳的 ZFS 性能。

    在新系统上,安装操作系统之前,可以对每个系统磁盘驱动器进行分区,使分区 0 包含整个磁盘空间的大部分(如果不包含全部)。如果 ZFS 能够访问整个磁盘,则其可以更快更可靠地运行。确保在第二个磁盘上为 ZFS 定义的分区与在主磁盘上定义的分区大小相同。

    在已安装了 Solaris 11.2 的系统上,对主系统磁盘使用 formatfdisk 查看 root 分区的大小。对第二个系统磁盘进行格式化,使其具有一个相同大小的分区。当格式化完成后,为磁盘添加标签。

  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:如果 zpool attach 因为磁盘被标记为 EFI 磁盘而失败,请执行《Oracle 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 中。下面的示例采用了一个仅使用两个磁盘的简单镜像阵列 (RAID 1)。这些可能是真实的驱动器,但最可能是虚拟设备,这些虚拟设备呈现为来自所连接的存储阵列的离散驱动器。

存储阵列已配置了 RAID,因此,没有必要使用 ZFS 为您的 ACSLS 文件系统配置额外的 RAID 级别。如果使用的是简单的 JBOD 磁盘,则 ZFS RAID 是必需的,但是如果采用了合格的磁盘阵列,则该额外的 RAID 是可选的。下面的示例将对这两种方式对进行说明。

  1. 准备共享存储阵列。

    在标准配置中,使用来自磁盘阵列的单个虚拟驱动器。否则,ZFS RAID 镜像配置会使用大小相等的两个虚拟驱动器。管理工具可以与磁盘阵列或 Solaris format 实用程序一起使用对两个虚拟驱动器进行分区,以使其大小相等。

  2. 确定 ACSLS 安装的目标基目录。

    ACSLS 8.4 可安装在任何文件系统中。所选基文件系统不应已存在于系统 rpool 中。如果已存在,则在新的 zpool 下创建现有文件系统时,应先销毁该文件系统。

    如果对 ACSLS 使用默认的 /export/home 基目录,则需要从 Solaris 11.2 的默认 root 池销毁 /export 文件系统。

    要确认 /export/home 是否已附加到 rpool,请运行以下命令:

    # zfs list
    

    要将 /export/homerpool 分离,请首先保存您要保留的所有文件或目录。确保所有用户的起始目录当前在 /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... 开头的虚拟磁盘。

  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