商业&,

农业研究所介绍:在Linux上使用ZFS下一代文件系统

如果btrfs感兴趣你,开始你的下一代旅行ZFS的分步指导。

复制

在这一点上,你有一个使用zpool。冗余,zpool至少都有一个好的自我修复vdev带有奇偶校验。你知道如何采取快照,现在让我们看看如何复制这些快照另一个机也是ZFS运行。

建立SSH密钥

这不是严格意义上的ZFS一步,但你需要它来处理复制好走的路,所以这里我们将继续介绍。假设你有box1 box2;你的数据是box1 box2你想支持它。进一步,假设你想把备份box1 box2,而不是把它们倒过来。首先,生成自己根在box1 SSH密钥:

ssh - keygen me@box: ~ $ sudo - t dsa生成公钥/私dsa密钥对。输入文件中保存的关键(/ root / . ssh / id_dsa):创建目录/ root / . ssh。没有密码输入密码(空):再次输入相同的密码:你的身份被保存在/root/.ssh/id_dsa.你的公钥保存在/root/.ssh/id_dsa.pub。指纹的关键是:8 f: 67:61:阿瑟:4 d:是:99:9f: b9:4f: 68:25:37: e5:82: ed root@box1 randomart形象的关键是:+ - [DSA 1024] - - - - - + | | | | |。| | o o | | S o o *。| | + o * o | |。* o E | | B + + | |。* o = o。| + - - - - - - - - - - - - - - - - - - +

你会问,如果你想保存/root/.默认位置的关键ssh(你)如果你想使用一个万能钥匙(在这个例子中,你不)。一旦你完成了,是时候你的新的公共密钥复制到box2:

me@box1: ~ $ sudo scp /root/.ssh/id_dsa.酒吧me@box2: / tmp / me@box2密码:id_dsa。酒吧100% 602 0.6 kb / s 00:00

现在是时候box1的公共密钥添加到根上的授权密钥文件box2和确保我们允许使用键box2。

me@box2: ~ $ sudo - s root@box2: ~ #猫/ tmp / id_dsa。酒吧> > /root/.ssh / authorized_keys root@box2: ~ #回声AuthorizedKeysFile % h /。ssh / authorized_keys > > /etc/ssh/sshd_config

现在我们可以SSH作为根从box1 box2没有密码,这对于我们的下一个步骤是必要的。

完整的复制

现在,box2有自己的使用zpool(我们叫装备,必须由相同数量,类型,或安排vdevs像原来zpool box1),但没有实际的文件系统。我现在在ars / jpeg十亿字节的数据,我想box2复制数据。请记住,我们不复制文件系统本身,我们复制快照。让我们来一个快照:

me@box1: ~ $ sudo - s root@box1: ~ # zfs快照ars / jpegs@1 root@box1: ~ # zfs使用rt ars / jpeg文件名称列表效果参考挂载点ars / jpeg 1024米199克1024米/ ars / jpeg ars jpegs@1 0 - 1024

现在让我们复制:

root@box1: ~ # zfs发送ars / jpegs@1 | ssh box2 zfs接收装备

它是那么容易。1 gb的数据完成后在网络上移动,你现在有一个复制的副本ars / jpeg box1装备/ jpeg box2:

root@box2: ~ # zfs使用rt所有装备/ jpeg文件名称列表效果参考同时挂载点/ jpeg 1024 1.95 1024 t /装备/ jpeg装备/ jpegs@1 0 - 1024

增量复制

是怎样的下一个我们复制?只要我们还没有摆脱快照ars / jpegs@1 box1,我们可以用它作为一个快照和做增量复制下次,会更快。让我们做一个愚蠢的小文件,另一个快照,并复制增量:

root@box1: ~ #回声lolling > / ars / jpeg / lolling。txt root@box1:总1048251 ~ # ls - l / ars / jpeg -rw-r - r - 1根1073741824 1月23日十六23根1 g。本-rw-r - r - 1根根5 1月23日16:32 lolz.txtroot@box1:~# zfs snapshot ars/jpegs@2 root@box1:~# zfs send -i ars/jpegs@1 ars/jpegs@2 | ssh box2 zfs receive technica/jpegs

注意,这一次,我们使用- i参数,指定两个快照。我们也使用完整路径现有的文件系统装备/ jpeg在我们收到命令,因为我们收到增量到现有的文件系统,而不是一个完整的复制创建一个新的文件系统。这几乎instantaneously-lolz发生的复制。txt只是一个愚蠢的小文件,毕竟ZFS已经知道有什么或没有改变从快照@1 @2快照。因为它没有趴到磁盘上寻找变化,它可以立即开始把他们当问道。

一切看起来和我们预期的一样,在box2吗?

root@box2: ~ # zfs使用rt所有装备/ jpeg文件名称列表效果参考同时挂载点/ jpeg 1024 1.95 1024 t /装备/ jpeg装备/ jpegs@1 117 k - 1024装备/ jpegs@2 0 - 1024 m - root@box2: ~ # ls lh /装备/ jpeg总1.0 g -rw-r - r - 1根1.0 g 1月23日十六23根1 g。本-rw-r - r - 1根根5 1月23日16:32 lolz.txt

完全和我们预期的一样:不仅原始文件系统的一个完整副本,但原始文件系统的一个完整副本和所有的快照我们复制他们。

在这一点上,您可以安全地摆脱快照ars / jpegs@1 box1如果你想。下次你复制box2,您将使用@2作为父母不管你未来快照等等。这可以让你做一些很酷的东西,喜欢用昂贵的“主”服务器,快速存储(但不是的)和一个“备份”服务器便宜,缓慢的存储(足够的)。你甚至可以保持很多快照备份服务器上,而摧毁他们很快从你的“主”服务器。很强大的东西。

重复数据删除

我必须诚实,我的唯一原因提及dedup我知道会有一个狂热的如果我不评论。可能有一个,因为接下来我要告诉你的是你不想听到的东西:

你可能不想用dedup。句号。

重复数据删除听起来令人兴奋的。停止关心当用户盲目地复制一个文件夹有15克的东西!比你要不要写更多的东西!保持相同的驱动器上更多的东西!获得一些性能好处,有时,不同!但问题是,ZFS的方式实现了dedup,它占用了很多的内存;除非你有一个非常专业的机器和一个非常专业的工作负载,内存几乎肯定会比你愿意喂它。

底线是:每1 tb的删除处理存储,你需要大约5 gb的RAM。这就是dedup表空间一个人。那不算ZFS的正常的内存消耗。我已经测试了这个个人。复制后大约6 tb的数据与dedup ZFS文件系统打开,我的内存消耗向上大约32 gb。这是一个特殊的服务器有128 gb的RAM,幸运的是它可以处理它。即便如此,我测试后立即禁用dedup因为我不满意结果。

在大多数情况下,对于大多数用户来说……这是不值得的。对不起。

最后的结论

我们仍然只触及表面的ZFS能做什么。但是希望你看过足以让你一半ZFS我感兴趣。我一直在使用ZFS专业生产了五年,我可以诚实地说,它改变了我的职业生涯和我的业务。我不会梦想回到ZFS之前我做事情的方式。

对于Windows和Mac用户(或任何Linux用户对命令行),不要绝望,敬请期待!本系列的下一部分,我将覆盖FreeNAS,本质上是“ZFS容易模式。”It's a ready-to-download, ready-to-use distribution that lets you set up, manage, and configure your own ZFS-powered Network Attached Storage device out of a generic PC with a bunch of hard drives; no command line required.

吉姆·索尔特(@jrssnet)是一个作者,公众演说家、小企业主、雇佣兵系统管理员和父亲三说的不一定是这个顺序。他得到了第一个真正的味道通过运行Apache开源在他自己的专用FreeBSD 3.1服务器早在1999年,他强烈支持自由/开源软件。他还还创建和维护http://freebsdwiki.nethttp://ubuntuwiki.net

通道Ars Technica