在 Ubuntu 19.10 上入门 ZFS 文件系统
| 2019-11-21 08:16:06 评论: 1
Ubuntu 19.10 的主要新特性之一就是 ZFS。现在你可以很容易的无需额外努力就可以在 Ubuntu 系统上安装 ZFS了。
一般情况下,安装 Linux 都会选择 Ext4 文件系统。但是如果是全新安装 Ubuntu 19.10,在安装的启动阶段可以看到 ZFS 选项。
让我们看看 ZFS 为何重要,以及如何在已经安装了 ZFS 的 Ubuntu 上使用它。
ZFS 与其他文件系统有哪些区别?
ZFS 的设计初衷是:处理海量存储和避免数据损坏。ZFS 可以处理 256 千万亿的 ZB 数据。(这就是 ZFS 的 Z)且它可以处理最大 16 EB 的文件。
如果你仅有一个单磁盘的笔记本电脑,你可以体验 ZFS 的数据保护特性。写时复制(COW)特性确保正在使用的数据不会被覆盖,相反,新的数据会被写到一个新的块中,同时文件系统的元数据会被更新到新块中。ZFS 可容易的创建文件系统的快照。这个快照可追踪文件系统的更改,并共享数据块确保节省数据空间。
ZFS 为磁盘上的每个文件分配一个校验和。它会不断的校验文件的状态和校验和。如果发现文件被损坏了,它就会尝试修复文件。
我写过一个文章详细介绍 什么是 ZFS以及它有哪些特性。如果你感兴趣可以去阅读下。
注:请谨记 ZFS 的数据保护特性会导致性能下降。
Ubuntu 下使用 ZFS [适用于中高级用户]
一旦你在你的主磁盘上全新安装了带有 ZFS 的 Ubuntu,你就可以开始体验它的特性。
请注意所有的 ZFS 设置过程都需要命令行。我不知道它有任何 GUI 工具。
创建一个 ZFS 池
这段仅针对拥有多个磁盘的系统。如果你只有一个磁盘,Ubuntu 会在安装的时候自动创建池。
在创建池之前,你需要为池找到磁盘的 id。你可以用命令 lsblk
查询出这个信息。
为三个磁盘创建一个基础池,用以下命令:
sudo zpool create pool-test /dev/sdb /dev/sdc /dev/sdd
请记得替换 pool-test
为你选择的的命名。
这个命令将会设置“无冗余 RAID-0 池”。这意味着如果一个磁盘被破坏或有故障,你将会丢失数据。如果你执行以上命令,还是建议做一个常规备份。
你可以用下面命令将另一个磁盘增加到池中:
sudo zpool add pool-name /dev/sdx
查看 ZFS 池的状态
你可以用这个命令查询新建池的状态:
sudo zpool status pool-test
镜像一个 ZFS 池
为确保数据的安全性,你可以创建镜像。镜像意味着每个磁盘包含同样的数据。使用镜像设置,你可能会丢失三个磁盘中的两个,并且仍然拥有所有信息。
要创建镜像你可以用下面命令:
sudo zpool create pool-test mirror /dev/sdb /dev/sdc /dev/sdd
创建 ZFS 用于备份恢复的快照
快照允许你创建一个后备,以防某个文件被删除或被覆盖。比如,我们创建一个快照,当在用户主目录下删除一些目录后,然后把它恢复。
首先,你需要找到你想要的快照数据集。你可以这样做:
zfs list
你可以看到我的家目录位于 rpool/USERDATA/johnblood_uwcjk7
。
我们用下面命令创建一个名叫 1910
的快照:
sudo zfs snapshot rpool/USERDATA/johnblood_uwcjk7@1019
快照很快创建完成。现在你可以删除 Downloads
和 Documents
目录。
现在你用以下命令恢复快照:
sudo zfs rollback rpool/USERDATA/johnblood_uwcjk7@1019
回滚的时间长短取决于有多少信息改变。现在你可以查看家目录,被删除的目录(和它的内容)将会被恢复过来。
要不要试试 ZFS ?
这篇文章仅简单介绍的 Ubuntu下 ZFS 的用法。更多的信息请参考 Ubuntu 的 ZFS Wiki页面。我也推荐阅读 ArsTechnica 的精彩文章。
这个是试验性的功能。如果你还不了解 ZFS,你想用一个简单稳定的系统,请安装标准文件系统 EXT4。如果你想用闲置的机器体验,可以参照上面了解 ZFS。如果你是一个“专家”,并且知道自己在做什么,则可以随时随地随意尝试ZFS。
你之前用过 ZFS 吗?请在下面留言。