zpool学习

查看磁盘信息
format
创建存储池(raidz1 raidz2 raidz3三种)
zpool create -f base  raidz1  c2t1d1 c2t2d1 c2t3d1 c2t4d1
创建一个 zpool
Zpool 命令用于配置 ZFS 中的存储池。存储池是为 zfs 数据集提供物理存储和数据复制的设备集合。

下面创建一个 zpool。

# zpool create -f mypool raidz sdb sdc sdd sde sdf
在上面的例子中:

create 代表创建一个新池。
-f 选项是忽略磁盘分区标签,因为这些是新磁盘
raidz 是突袭级别。RAIDZ 只不过是 RAID-5 的变体,它允许更好地分配奇偶校验并消除“RAID-5”写入漏洞(断电后数据和奇偶校验不一致)。
raidz 组可以具有单、双或部落奇偶校验,这意味着它可以分别承受一个、两个或三个故障而不会丢失任何数据。数据和奇偶校验在 raidz 组内的所有磁盘上进行条带化。

接下来,验证我们刚刚创建的镜像 zpool 的状态:

# zpool status
 pool: mypool
state: ONLINE
 scan: none requested
config:

       NAME        STATE     READ WRITE CKSUM
       mypool      ONLINE       0     0     0
         raidz1-0  ONLINE       0     0     0
           sdb     ONLINE       0     0     0
           sdc     ONLINE       0     0     0
           sdd     ONLINE       0     0     0
           sde     ONLINE       0     0     0
           sdf     ONLINE       0     0     0

errors: No known data errors

创建池后,如果您执行 df –h,您将看到新创建的池自动安装在挂载点上。

# df -h
Filesystem                  Size  Used Avail Use% Mounted on
/dev/mapper/vglocal-rootlv   14G  2.4G   11G  18% /
tmpfs                       939M     0  939M   0% /dev/shm
/dev/sda1                   504M   46M  433M  10% /boot
mypool                      3.9G     0  3.9G   0% /mypool
创建镜像池

要创建镜像池,请使用带有以下选项的 zpool create 命令。

如果特定镜像组中的任何磁盘发生故障,则另一个磁盘仍然保存数据。一旦更换了故障磁盘,内容就会被镜像回(也称为重新同步)到新更换的磁盘。

# zpool create -f mypool mirror sdb sdc mirror sdd sde

接下来,验证我们刚刚创建的镜像 zpool 的状态:

# zpool status -v
 pool: mypool
state: ONLINE
 scan: none requested
config:

       NAME        STATE     READ WRITE CKSUM
       mypool      ONLINE       0     0     0
         mirror-0  ONLINE       0     0     0
           sdb     ONLINE       0     0     0
           sdc     ONLINE       0     0     0
         mirror-1  ONLINE       0     0     0
           sdd     ONLINE       0     0     0
           sde     ONLINE       0     0     0

errors: No known data errors
Zpool 导入导出

在某些情况下,您可能需要在系统之间迁移 zfs 池。

ZFS 通过从一个系统导出池并将其导入另一个系统来实现这一点。

要导出任何池,请使用 zpool export 命令,并且 zpool import 命令用于导入池,如以下示例所示:

# zpool export mypool

# zpool import mypool
查看 ZFS Pool 的 I/O 统计信息

要查看 zpool I/O 统计信息,请使用 zpool iostat 命令,如下所示:

# zpool iostat -v mypool
              capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
mypool       147K  4.95G      0      0     33    252
 mirror      54K  3.97G      0      0     10     84
   sdb         -      -      0      0    536    612
   sdc         -      -      0      0    282    612
 mirror      93K  1008M      0      0     23    168
   sdd         -      -      0      0    288    696
   sde         -      -      0      0    294    696
----------  -----  -----  -----  -----  -----  -----
删除 ZFS 池

要销毁池,请使用 zpool destroy 命令,如下所示:

# zpool destroy mypool
更换 ZFS 池中损坏的磁盘

要在发生故障或损坏后更换磁盘,请使用以下命令:

# zpool replace mypool sde sdf
用新磁盘扩展 ZFS 池

要通过添加新磁盘来扩展 zpool,请使用 zpool 命令,如下所示:

# zpool add -f mypool sde
将备用磁盘添加到 ZFS 池

您还可以使用以下命令将备用磁盘添加到 zfs 池,方法是将备用设备添加到 zfs 池。

故障磁盘由备用设备自动替换,管理员可以在以后更换故障磁盘。

请注意,您还可以在多个 ZFS 池之间共享备用设备。

# zpool add -f mypool spare sde
创建 ZFS 文件系统
# zfs create tank/home

  设置继承的属性。

  建立文件系统分层结构之后,设置应在所有用户之间共享的任何属性:

# zfs set mountpoint=/export/zfs tank/home
# zfs set sharenfs=on tank/home
# zfs set compression=on tank/home
# zfs get compression tank/home
NAME       PROPERTY    VALUE           SOURCE
tank/home    compression  on             local

  现在提供了一项新功能,通过该功能可在创建文件系统时设置文件系统属性。例如:

# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home
创建各文件系统
# zfs create tank/home/bonwick
# zfs create tank/home/billm
  这些文件系统从其父级继承属性设置,因此会自动挂载在 /export/zfs/user 中并且通过 NFS 共享。您无需编辑 /etc/vfstab 或 /etc/dfs/dfstab 文件。

  设置文件系统特定的属性。

  在本示例中,为用户 bonwick 指定了 10 GB 的配额。此属性可对该用户可以使用的空间量施加限制,而无需考虑池中的可用空间大小。

# zfs set quota=10G tank/home/bonwick

  查看结果。

  使用 zfs list 命令查看可用的文件系统信息:

# zfs list
NAME          USED AVAIL REFER MOUNTPOINT
tank         92.0K 67.0G  9.5K /tank
tank/home       24.0K 67.0G   8K /export/zfs
tank/home/billm     8K 67.0G   8K /export/zfs/billm
tank/home/bonwick    8K 10.0G   8K /export/zfs/bonwick

  请注意,用户 bonwick 仅有 10 GB 的可用空间,而用户 billm 则可使用整个池 (67 GB)。