快捷搜索:

管理 ZFS 存储池

ZFS 存储池的组件

以下各节供给有关以下存储池组件的具体信息:

应用 ZFS 存储池中的磁盘

应用 ZFS 存储池中的文件

标识存储池中的虚拟设备

应用 ZFS 存储池中的磁盘

存储池的最基础元素是一个物理存储器。物理存储器可所以大年夜小至少为 128 MB 的任何块设备。平日,此设备是 /dev/dsk 目录中对系统可见的一个硬盘驱动器。

存储设备可所以全部磁盘 (c1t0d0) 或单个片 (c0t0d0s7)。建议的操作模式是应用全部磁盘,在这种环境下,无需对磁盘专门进行款式化。ZFS 可款式化应用 EFI 标签的磁盘以包孕单个大年夜片。以此要领应用磁盘时,format 敕令显示的分区表与以下信息类似:

Current partition table (original):

Total disk sectors available: 71670953 + 16384 (reserved sectors)

Part   Tag  Flag   First Sector    Size    Last Sector

0    usr  wm        34   34.18GB     71670953

1 unassigned  wm         0     0       0

2 unassigned  wm         0     0       0

3 unassigned  wm         0     0       0

4 unassigned  wm         0     0       0

5 unassigned  wm         0     0       0

6 unassigned  wm         0     0       0

7 unassigned  wm         0     0       0

8  reserved  wm     71670954    8.00MB     71687337

要应用全部磁盘,必须应用标准 Solaris 约定命名磁盘,如 /dev/dsk/cXtXdXsX。一些第三方驱动法度榜样应用不合的命名约定,或者将磁盘放置在除 /dev/dsk 目录以外的位置中。要应用这些磁盘,必须手动标记磁盘并为 ZFS 供给片。

创建包孕全部磁盘的存储池时,ZFS 会利用 EFI 标签。创建包孕磁盘片的存储池时,可以应用传统的 Solaris VTOC 标签来标记磁盘。

应仅在以下环境下应用片:

设备名称长短标准名称。

ZFS 和其他文件系统(如 UFS)之间共享单个磁盘。

磁盘用作互换设备或转储设备。

可以应用全路径(如 /dev/dsk/c1t0d0)或构成 /dev/dsk 目录中设备名称的缩略名称(如 c1t0d0)来指定磁盘。例如,以下是有效的磁盘名称:

c1t0d0

/dev/dsk/c1t0d0

c0t0d6s2

/dev/foo/disk

假如为存储池指定全部磁盘,ZFS 将应用全部磁盘。这意味着将删除已定义的任何现有 fdisk 分区。假如要在具有现有 fdisk 分区的磁盘上创建 ZFS 存储池,则可以经由过程指定片 (c1t0d0s7) 而不是全部磁盘 (c1t0d0) 来创建存储池。

创建 ZFS 存储池的最简单措施是应用全部物理磁盘。在从磁盘片、硬件 RAID 阵列中的 LUN 或基于软件的卷治理器所供给的卷中天生池时,无论从治理、靠得住性照样机能的角度而言,ZFS 设置设置设备摆设摆设都变得越来越繁杂。以下留意事变可能有助于确定若何用其他硬件或软件存储办理规划来设置设置设备摆设摆设 ZFS:

假如在硬件 RAID 阵列中的 LUN 上构建 ZFS 设置设置设备摆设摆设,则必要懂得 ZFS 冗余功能与该阵列所供给的冗余功能之间的关系。有些设置设置设备摆设摆设可能会供给足够的冗余和机能,而其他设置设置设备摆设摆设可能不会供给足够的冗余和机能。

可以应用基于软件的卷治理器(如 SolarisTM 卷治理器 (Solaris Volume Manager, SVM) 或 Veritas 卷治理器 (Veritas Volume Manager, VxVM))所供给的卷来为 ZFS 构建逻辑设备。然则,建议不要应用这些设置设置设备摆设摆设。只管 ZFS 可在这类设备上正常运行,但结果可能是实际机能低于最佳机能。

磁盘由其路径及其设备 ID(假如可用)标识。应用此措施,可以在系统中从新设置设置设备摆设摆设设备,而不必更新任何 ZFS 状态。假如磁盘在节制器 1 和节制器 2 之间切换,则 ZFS 可应用设备 ID 检测到该磁盘已移动,并且现在应应用节制器 2 对其进行造访。设备 ID 对付驱动器固件是独一的。只管不大年夜可能,但确凿有一些固件更新变动了设备 ID。假如发生这种环境,ZFS 仍可以按路径造访设备,并自动更新存储的设备 ID。假如无意中同时变动了设备的路径和 ID,则将池导出再从新导入后才能应用该池。

应用 ZFS 存储池中的文件

ZFS 还容许将 UFS 文件用作存储池中的虚拟设备。此功能主要用于测试和启用简单的实验,而不是用于临盆。缘故原由是文件的任何应用都依附于根基文件系统以实现同等性。假如创建了由 UFS 文件系统中的文件支持的 ZFS 池,即会隐式依附于 UFS 来包管精确性和同步语义。

然则,假如首次试用 ZFS,或者在没有足够的物理设备时考试测验更繁杂的结构,则文件会异常有用。所有文件必须以完备路径的形式指定,并且大年夜小至少为 64 MB。假如移动或重命名某个文件,则必须将池导出再从新导入才能应用该池,这是由于没有设备 ID(可以按其查找文件)与文件相关联。

标识存储池中的虚拟设备

每个存储池都由一个或多个虚拟设备组成。虚拟设备是存储池的内部表示形式,用于阐明物理存储的结构及其故障特性。是以,虚拟设备表示用于创建存储池的磁盘设备或文件。

两种顶层虚拟设备可供给数据冗余:镜像虚拟设备和 RAID-Z 虚拟设备。这些虚拟设备由磁盘、磁盘片或文件构成。

在镜像虚拟设备和 RAID-Z 虚拟设备之外的池中应用的磁盘、磁盘片或文件本身用作顶层虚拟设备。

存储池平日由多个顶层虚拟设备构成。ZFS 将在池内的所有顶层虚拟设备中以动态要领对数据进行条带化。

可以应用 -f 选项覆盖这些差错,但建议不要采纳这种做法。此敕令还会发出警告,指明正应用大年夜小不合的设备创建镜像池或 RAID-Z 池。只管容许此设置设置设备摆设摆设,然则冗余级别不匹配会导致较大年夜设备上孕育发生未应用的空间,并要求应用 -f 选项覆盖警告。

在预运行模式下创建存储池

因为创建池可能以不合要领意外掉败,并且款式化磁盘这一操作可能孕育发生迫害,是以 zpool create 敕令具有一个附加选项 -n,此选项可用于模拟创建池,而无需实际将数据写入磁盘。此选项履行设备应用中反省和复制级别验证,并申报该历程中呈现的任何差错。假如未找履新错,则会显示类似以下的输出:

# zpool create -n tank mirror c1t0d0 c1t1d0

would create 'tank' with the following layout:

tank

mirror

c1t0d0

c1t1d0

假如不实际创建池,则无法检测到某些差错。最常见的示例是在同一设置设置设备摆设摆设中两次指定同一设备。因为不写入数据本身便无法靠得住地检测到此差错,是以 create -n 敕令可能会申报运行成功,但在实际运行时又无法创建池。

存储池的缺省挂载点

创建池时,根数据集的缺省挂载点是 /pool-name。此目录必须不存在或者为空。假如目录不存在,则会自动创建该目录。假如该目录为空,则根数据聚会会议挂载在现有目录的顶层。要应用不合的缺省挂载点创建池,请在 zpool create 敕令中应用 -m 选项:

# zpool create home c1t0d0

default mountpoint '/home' exists and is not empty

use '-m' option to specify a different default

# zpool create -m /export/zfs home c1t0d0

# zpool create home c1t0d0

default mountpoint '/home' exists and is not empty

use '-m' option to provide a different default

# zpool create -m /export/zfs home c1t0d0

专用转储设备

正在将磁盘用作系统的专用转储设备。要更正此差错,请应用 dumpadm 敕令。

ZFS 池的一部分

磁盘或文件是活动 ZFS 存储池的一部分。要更正此差错,请应用 zpool 敕令销毁池。

以下应用环境反省用作赞助性警告,并可以应用 -f 选项进行覆盖以创建池:

包孕文件系统

磁盘包孕已知的文件系统,只管该系统未挂载并且看起来未被应用。

卷的一部分

磁盘是 SVM 卷的一部分。

实时进级

正在将磁盘用作 Solaris Live Upgrade 的调换向导情况。

导出的 ZFS 池的一部分

磁盘是已导出的或者从系统中手动删除的存储池的一部分。假如是后一种环境,则会将池的状态申报为可能处于活动状态,由于磁盘可能是也可能不是由其他系统应用的收集连接驱动器。覆盖可能处于活动状态的池时请务必审慎。

以下示例阐明若何应用 -f 选项:

# zpool create tank c1t0d0

invalid vdev specification

use '-f' to override the following errors:

/dev/dsk/c1t0d0s0 contains a ufs filesystem.

# zpool create -f tank c1t0d0

抱负的环境是,更正差错而不是应用 -f 选项。

不匹配的复制级别

建议不要创建包孕不合复制级其余虚拟设备的池。zpool 敕令可考试测验防止意外创建冗余级别不匹配的池。假如考试测验创建具有这样设置设置设备摆设摆设的池,则会显示类似以下的差错:

# zpool create tank c1t0d0 mirror c2t0d0 c3t0d0

invalid vdev specification

use '-f' to override the following errors:

mismatched replication level: both disk and mirror vdevs are present

# zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 c5t0d0

invalid vdev specification

use '-f' to override the following errors:

mismatched replication level: 2-way mirror and 3-way mirror vdevs are present

今朝,ZFS RAID-Z 设置设置设备摆设摆设中支持以下操作:

向现有 RAID-Z 设置设置设备摆设摆设中添加用于其他顶层 vdev 的另一组磁盘。

只要可供调换的磁盘大年夜于或即是要被调换的设备,便可调换现有 RAID-Z 设置设置设备摆设摆设中的一个或多个磁盘。

今朝,RAID-Z 设置设置设备摆设摆设中不支持以下操作:

向现有 RAID-Z 设置设置设备摆设摆设中附加其他磁盘。

从 RAID-Z 设置设置设备摆设摆设平分离磁盘。

不能从 RAID-Z 设置设置设备摆设摆设中彻底删除设备。对付此功能,已经申请了 RFE(哀求前进)。

处置惩罚 ZFS 存储池创建差错

呈现池创建差错可以有许多缘故原由。此中一些缘故原由是显而易见的(如指定的设备不存在),而其他缘故原由则不太显着。

检测应用中的设备

款式化设备之前,ZFS 会首先确定 ZFS 或操作系统的某个其他部分是否正在应用磁盘。假如磁盘正在应用,则可能会显示类似以下的差错:

# zpool create tank c1t0d0 c1t1d0

invalid vdev specification

use '-f' to override the following errors:

/dev/dsk/c1t0d0s0 is currently mounted on /. Please see umount(1M).

/dev/dsk/c1t0d0s1 is currently mounted on swap. Please see swap(1M).

/dev/dsk/c1t1d0s0 is part of active ZFS pool zeepool. Please see zpool(1M).

应用 -f 选项可以覆盖此中的一些差错,然则无法覆盖大年夜多半差错。应用 -f 选项无法覆盖应用以下各项孕育发生的差错,必须手动对这些差错进行更正:

挂载的文件系统

磁盘或此中一片包孕当前挂载的文件系统。要更正此差错,请应用 umount 敕令。

/etc/vfstab 中的文件系统

磁盘包孕 /etc/vfstab 文件中列出的文件系统,但当前未挂载该文件系统。要更正此差错,请删除或注释掉落 /etc/vfstab 文件中的响应行。

只要可供调换的磁盘大年夜于或即是要被调换的设备,便可调换现有镜像设置设置设备摆设摆设中的一个或多个磁盘。

只要残剩设备可为设置设置设备摆设摆设供给足够冗余,便可分离镜像设置设置设备摆设摆设中的一个或多个磁盘。

今朝,镜像设置设置设备摆设摆设中不支持以下操作:

不能从镜像存储池中彻底删除设备。对付此功能,已经申请了 RFE(哀求前进)。

不能出于备份目的而瓜分或中断镜像。对付此功能,已经申请了 RFE(哀求前进)。

创建 RAID-Z 存储池

创建单奇偶校验 RAID-Z 池与创建镜像池基真相同,不合之处是应用 raidz 或 raidz1 关键字而不是 mirror。以下示例阐明若何创建一个包孕由 5 个磁盘组成的单个 RAID-Z 设备的池:

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

本示例注解可以应用全路径指定响应的磁盘。/dev/dsk/c5t0d0 设备与 c5t0d0 设备相同。

可以应用磁盘片创建类似的设置设置设备摆设摆设。例如:

# zpool create tank raidz c1t0d0s0 c2t0d0s0 c3t0d0s0 c4t0d0s0 c5t0d0s0

然则,必须预先款式化磁盘,使其包孕适昔时夜小的片 0。

可在创建池时应用 raidz2 关键字来创建双奇偶校验 RAID-Z 设置设置设备摆设摆设。例如:

# zpool create tank raidz2 c1t0d0 c2t0d0 c3t0d0

# zpool status -v tank

pool: tank

state: ONLINE

scrub: none requested

config:

NAME     STATE   READ WRITE CKSUM

tank     ONLINE    0   0   0

raidz2   ONLINE    0   0   0

c1t0d0  ONLINE    0   0   0

c2t0d0  ONLINE    0   0   0

c3t0d0  ONLINE    0   0   0

errors: No known data errors

创建和销毁 ZFS 存储池

以下各节先容创建和销毁 ZFS 存储池的不合环境。

创建 ZFS 存储池

处置惩罚 ZFS 存储池创建差错

销毁 ZFS 存储池

根据设计,可快速轻松地创建和销毁池。然则,履行这些操作请务必审慎。虽然进行了反省,以防止在新的池中应用现已应用的设备,然则 ZFS 无法始终知道设备何时已在应用中。销毁池更为轻易。请审慎应用 zpool destroy。这是一个会孕育发生重大年夜后果的简单敕令。

创建 ZFS 存储池

要创建存储池,请应用 zpool create 敕令。此敕令采纳池名称和随意率性数目的虚拟设备作为参数。池名称必须相符ZFS 组件命名要求中概述的命名约定。

创建基础存储池

以下敕令创建了一个名为 tank 的新池,该池由磁盘 c1t0d0 和 c1t1d0 组成:

# zpool create tank c1t0d0 c1t1d0

这些全部磁盘可在 /dev/dsk 目录中找到,并由 ZFS 适当标记以包孕单个大年夜片。数据经由过程这两个磁盘以动态要领进行条带化。

创建镜像存储池

要创建镜像池,请应用 mirror 关键字,后跟将组成镜像的随意率性数目的存储设备。可以经由过程在敕令行中重复应用 mirror 关键字指定多个镜像。以下敕令创建了一个包孕两个双向镜像的池:

# zpool create tank mirror c1d0 c2d0 mirror c3d0 c4d0

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

今朝,ZFS 镜像设置设置设备摆设摆设中支持以下操作:

向现有镜像设置设置设备摆设摆设中添加用于其他顶层 vdev 的另一组磁盘。

向现有镜像设置设置设备摆设摆设中附加其他磁盘。或者,向非复制设置设置设备摆设摆设中附加其他磁盘,以创建镜像设置设置设备摆设摆设。

从观点上讲,包孕三个磁盘的 RAID-Z 设置设置设备摆设摆设与以下内容类似:

raidz c1t0d0 c2t0d0 c3t0d0

从观点上讲,更繁杂的 RAID-Z 设置设置设备摆设摆设与以下内容类似:

raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0 c5t0d0 c6t0d0 c7t0d0 raidz c8t0d0 c9t0d0 c10t0d0 c11t0d0

c12t0d0 c13t0d0 c14t0d0

假如要创建包孕许多磁盘的 RAID-Z 设置设置设备摆设摆设(如本示例所示),则最好将包孕 14 个磁盘的 RAID-Z 设置设置设备摆设摆设拆分为两个包孕 7 个磁盘的分组。若 RAID-Z 设置设置设备摆设摆设包孕的分组中的磁盘数目为一位数 (1-9),则该设置设置设备摆设摆设的机能应该更好。

冗余设置设置设备摆设摆设中的自我修复数据

ZFS 在镜像设置设置设备摆设摆设或 RAID-Z 设置设置设备摆设摆设中供给了自我修复数据。

检测到坏的数据块时,ZFS 不仅会从另一个冗余副本中提取精确的数据,还会经由过程将差错数据调换为精确的副本对其进行修复。

存储池中的动态条带化

对付添加到池中的每个虚拟设备,ZFS 会超过所有可用设备以动态要领对数据进行条带化。因为是在写入时确定放置数据的位置,是以在分配时不会创建固定宽度的条带。

向池中添加虚拟设备时,ZFS 会将数据徐徐分配给新设备,以便掩护机能和空间分配策略。每个虚拟设备也可所以包孕其他磁盘设备或文件的镜像或 RAID-Z 设备。应用此设置设置设备摆设摆设,可以机动地节制池的故障特性。例如,可以经由过程 4 个磁盘创建以下设置设置设备摆设摆设:

应用动态条带化的四个磁盘

一个四向 RAID-Z 设置设置设备摆设摆设

应用动态条带化的两个双向镜像

只管 ZFS 支持在同一池中组合不合类型的虚拟设备,然则建议不要采纳这种做法。例如,可以创建一个包孕一个双向镜像和一个三向 RAID-Z 设置设置设备摆设摆设的池。然则,容错能力险些与最差的虚拟设备(在本示例中为 RAID-Z)相同。建议做法是应用相同类型的顶层虚拟设备,并且每个设备的冗余级别相同。

您可能还会对下面的文章感兴趣: