Oracle Solaris ZFS 管理指南

创建 ZFS 存储池

要创建存储池,请使用 zpool create 命令。此命令采用池名称和任意数目的虚拟设备作为参数。池名称必须符合ZFS 组件命名要求中的命名要求。

创建基本存储池

以下命令创建了一个名为 tank 的新池,该池由磁盘 c1t0d0c1t1d0 组成:


# zpool create tank c1t0d0 c1t1d0

代表整个磁盘的设备名称可在 /dev/dsk 目录中找到,并由 ZFS 适当标记以包含单个大片。数据通过这两个磁盘以动态方式进行条带化。

创建镜像存储池

要创建镜像池,请使用 mirror 关键字,后跟将组成镜像的任意数目的存储设备。可以通过在命令行中重复使用 mirror 关键字指定多个镜像。以下命令创建了一个包含两个双向镜像的池:


# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

第二个 mirror 关键字表示将指定新的顶层虚拟设备。数据通过这两个镜像以动态方式进行条带化,并会相应地在每个磁盘之间创建冗余数据。

有关建议的镜像配置的更多信息,请参见以下站点:

http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide

目前,ZFS 镜像配置中支持以下操作:

不能直接从镜像存储池中移除非日志或缓存设备。对于此功能,已经申请了 RFE(请求提高)。

创建 ZFS 根池

您可以从 ZFS 根文件系统进行安装和引导。查看以下根池配置信息:

有关安装和引导 ZFS 根文件系统的更多信息,请参见第 5 章

创建 RAID-Z 存储池

创建单奇偶校验 RAID-Z 池与创建镜像池基本相同,不同之处是使用 raidzraidz1 关键字而不是 mirror。以下示例说明如何创建一个包含由 5 个磁盘组成的单个 RAID-Z 设备的池:


# zpool create tank raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 /dev/dsk/c5t0d0

本例说明可以通过设备的缩写名称或全名指定磁盘。/dev/dsk/c5t0d0c5t0d0 指代同一个磁盘。

创建池时,使用 raidz2raidz3 关键字可以创建双奇偶校验或三奇偶校验 RAID-Z 配置。例如,


# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz2-0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0

errors: No known data errors

# zpool create tank raidz3 c0t0d0 c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0
# zpool status -v tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          raidz3-0  ONLINE       0     0     0
            c0t0d0  ONLINE       0     0     0
            c1t0d0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c3t0d0  ONLINE       0     0     0
            c4t0d0  ONLINE       0     0     0
            c5t0d0  ONLINE       0     0     0
            c6t0d0  ONLINE       0     0     0
            c7t0d0  ONLINE       0     0     0

errors: No known data errors

目前,ZFS RAID-Z 配置中支持以下操作:

目前,RAID-Z 配置中支持以下操作:

有关 RAID-Z 配置的更多信息,请参见RAID-Z 存储池配置

使用日志设备创建 ZFS 存储池

缺省情况下,ZIL 是通过主池中的块分配的。但是,通过使用单独的意图日志设备(如使用 NVRAM 或专用磁盘)可能会获得更佳的性能。有关 ZFS 日志设备的更多信息,请参见设置单独的 ZFS 日志设备

创建存储池时或创建存储池以后,您可以设置 ZFS 日志设备。

以下示例显示如何使用镜像日志设备创建镜像存储池:


# zpool create datap mirror c1t1d0 c1t2d0 mirror c1t3d0 c1t4d0 log mirror c1t5d0 c1t8d0
# zpool status datap
  pool: datap
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        datap       ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c1t1d0  ONLINE       0     0     0
            c1t2d0  ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            c1t3d0  ONLINE       0     0     0
            c1t4d0  ONLINE       0     0     0
        logs
          mirror-2  ONLINE       0     0     0
            c1t5d0  ONLINE       0     0     0
            c1t8d0  ONLINE       0     0     0

errors: No known data errors

有关从日志设备故障中进行恢复的信息,请参见示例 11–2

使用高速缓存设备创建 ZFS 存储池

您可以使用高速缓存设备创建一个存储池,来缓存存储池数据。例如:


# zpool create tank mirror c2t0d0 c2t1d0 c2t3d0 cache c2t5d0 c2t8d0
# zpool status tank
  pool: tank
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        tank        ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            c2t0d0  ONLINE       0     0     0
            c2t1d0  ONLINE       0     0     0
            c2t3d0  ONLINE       0     0     0
        cache
          c2t5d0    ONLINE       0     0     0
          c2t8d0    ONLINE       0     0     0

errors: No known data errors

确定是否使用高速缓存设备创建 ZFS 存储池时,请考虑以下几点: