format
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)。