使用 zpool 命令示例在 Linux 上设置 ZFS 文件系统
【摘要】 ZFS 将卷管理器和文件系统与几个高级特性结合在一起。
在本文中,我们将对 ZFS 进行高级介绍,解释如何在 linux 上安装 ZFS、创建 ZFS 池以及几个 ZFS zpool 命令。
ZFS 将卷管理器和文件系统与几个高级特性结合在一起。
在本文中,我们将对 ZFS 进行高级介绍,解释如何在 linux 上安装 ZFS、创建 ZFS 池以及几个 ZFS zpool 命令。
一、ZFS简介
以下是 ZFS 文件系统的一些特性:
- 防止数据损坏
- 支持高存储容量
- 高效的数据压缩
- 拍摄文件系统的快照
- 写时复制克隆
- RAID Z 支持
- 完整性检查
- 自动修复和支持原生 NFSV4 ACL
这最初是由 Sun Microsystems 为 Solaris 平台开发的。2010 年,Oracle 收购了 Sun 微系统,并在 ZFS 文件系统上做了很多改进。
ZFS 最近在 Linux 上变得流行起来,因为它变得更加稳定。
Linux 端口上的 ZFS 由劳伦斯利弗莫尔国家实验室 (LLNL) 生产。
Linux 上的 ZFS 是一个内核模块,您可以下载、编译和安装。您不必修补或重新编译内核。
您可以从此处下载适用于您各自操作系统发行版的源代码包。
2. 在 Linux 上安装 ZFS
在本文中,我们将在 CentOS 服务器上安装 ZFS。但是,下面提到的 zfs 命令对于 Linux 发行版上的几乎所有发行版都是相同的,除了安装部分。
执行以下 yum 命令在 Redhat/CentOS 上安装 ZFS。
# yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
# yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm
# yum install kernel-devel zfs
请确保满足所有依赖项。安装通常失败的依赖项之一是安装 GCC 编译器的要求。在这种情况下,请在安装 ZFS 之前安装 GCC 编译器。
确保 ZFS 模块已加载我们 lsmod 命令,如下所示:
#lsmod | grep zfs
zfs 1188621 0
zcommon 45591 1 zfs
znvpair 81046 2 zfs,zcommon
zavl 6900 1 zfs
zunicode 323051 1 zfs
spl 264548 5 zfs、zcommon、znvpair、zavl、zunicode
在相关的说明中,您可能想阅读有关如何创建Linux 可加载内核模块的基础知识。
我们在此服务器上添加了一些磁盘(/dev/sdb 到 /dev/sdf)来测试 ZFS 功能。
# ls -l /dev/sd*
brw-rw----. 1 root disk 8, 0 Jul 15 15:52 /dev/sda
brw-rw----. 1 root disk 8, 1 Jul 15 15:52 /dev/sda1
brw-rw----. 1 root disk 8, 2 Jul 15 15:52 /dev/sda2
brw-rw----. 1 root disk 8, 3 Jul 15 15:52 /dev/sda3
brw-rw----. 1 root disk 8, 16 Jul 16 10:57 /dev/sdb
brw-rw----. 1 root disk 8, 32 Jul 16 10:57 /dev/sdc
brw-rw----. 1 root disk 8, 48 Jul 16 10:58 /dev/sdd
brw-rw----. 1 root disk 8, 64 Jul 16 11:27 /dev/sde
brw-rw----. 1 root disk 8, 80 Jul 16 11:27 /dev/sdf
3. 创建一个 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
4.创建镜像池
要创建镜像池,请使用带有以下选项的 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
5. Zpool 导入导出
在某些情况下,您可能需要在系统之间迁移 zfs 池。
ZFS 通过从一个系统导出池并将其导入另一个系统来实现这一点。
要导出任何池,请使用 zpool export 命令,并且 zpool import 命令用于导入池,如以下示例所示:
# zpool export mypool
# zpool import mypool
6. 查看 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
---------- ----- ----- ----- ----- ----- -----
7. 删除 ZFS 池
要销毁池,请使用 zpool destroy 命令,如下所示:
# zpool destroy mypool
8. 更换 ZFS 池中损坏的磁盘
要在发生故障或损坏后更换磁盘,请使用以下命令:
# zpool replace mypool sde sdf
9. 用新磁盘扩展 ZFS 池
要通过添加新磁盘来扩展 zpool,请使用 zpool 命令,如下所示:
# zpool add -f mypool sde
10. 将备用磁盘添加到 ZFS 池
您还可以使用以下命令将备用磁盘添加到 zfs 池,方法是将备用设备添加到 zfs 池。
故障磁盘由备用设备自动替换,管理员可以在以后更换故障磁盘。
请注意,您还可以在多个 ZFS 池之间共享备用设备。
# zpool add -f mypool spare sde
在本文的下一部分中,我们将解释如何使用 ZFS 池来创建 ZFS 文件系统、挂载 ZFS 文件系统以及从命令行对其进行操作。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)