有没有关于在 FreeBSD 上使用 ZFS 作为 NAS 盒的推荐?

有没有关于在 FreeBSD 上使用 ZFS 作为 NAS 盒的推荐?

请注意,本页上的答案来自 2009 年,不应视为真理。如果您有关于然后请点击问一个问题按钮并提出具体问题。

我正在考虑使用 FreeBSD 7.2 和 ZFS 文件系统构建家庭备份系统。有人用过这个文件系统吗?

具体来说:

  • 可以从 ZFS 启动吗?(我想要吗?)
  • 添加驱动器有多容易?
  • 它能如何处理不同大小的驱动器?
  • 您可以动态添加新驱动器吗(或者至少只需重新启动)?
  • 现成的产品是否能为我提供更好的服务?

欢迎任何其他想法和建议。

编辑:

需要明确的是,我已经阅读了FreeBSD 上的 ZFS 页面。我正在寻找具有与我想要的类似设置的实际经验的人的建议。

答案1

我使用 ZFS 构建了一个家庭 FreeBSD 文件服务器。

这是一台 AMD X2 3200+,有 3GB RAM。它有一个 PCI Express Gig-E。启动驱动器是旧的 400GB,我有 4 个 750GB 的 Seagte 驱动器(其中一个固件版本不同,以防万一)。

从 ZFS 启动会很好(它会使安装更简单),但我使用 ZFSOnRoot 说明使用 ZFS 设置 Root/OS 驱动器(如果所有分区都是 ZFS,则无需在启动时执行 fsck 来检查 UFS 文件系统)。您需要这样做的原因是,您可以根据需要使用不同的选项设置所有分区(/var、/usr、/tmp 等)(例如,/usr/obj 的 noatime 和 async,这将加快内核编译速度),但它们都将共享来自公共池的空间。然后,您可以设置数据驱动器并为每个用户提供他们自己的分区(具有不同的引号和设置)。然后,您可以拍摄快照(在 ZFS 上成本较低)。

My home server has a df that looks like:
/dev/ad0s1a           1.9G    744M    1.1G    41%    /
devfs                 1.0K    1.0K      0B   100%    /dev
dozer/data            1.8T     62G    1.7T     3%    /data
dozer/home            1.7T    9.6G    1.7T     1%    /home
dozer/home/walterp    1.9T    220G    1.7T    11%    /home/walterp
tank/tmp              352G    128K    352G     0%    /tmp
tank/usr              356G    4.4G    352G     1%    /usr
tank/var              354G    2.2G    352G     1%    /var

性能方面,复制文件非常快。我要指出的一点是,我一直在具有 3-4GB 内存的 FreeBSD AMD64 系统上使用 ZFS,并且运行良好,但从我的阅读来看,我担心在具有 2GB 或更少内存的 i386 系统上运行它。

主板上的 SATA 端口用完了,所以我没有尝试添加任何新驱动器。初始设置很简单,一个创建 RAIDZ 的命令,然后是创建 /home 的命令,几秒钟内就格式化了(如果我没记错的话)。我仍在使用旧版本的 ZFS (v6),因此它有一些限制(它不需要大小相同的驱动器,但与 Drobo 不同,如果您有 3 个 750GB 驱动器和一个 1TB 驱动器,最终结果将相当于您有 4 个 750GB 驱动器)。

我使用 ZFS 和 RAIDZ 的一个重要原因是端到端校验和。CERN 发表了一篇论文,记录了他们所做的测试,他们在几周内运行 R/W 测试时发现了 200 多个未纠正的读取错误(零售驱动器中的 ECC 预计每读取 12TB 就会出现一次故障)。我希望服务器上的数据是正确的。我因断电而发生严重崩溃(有人将空间加热器插入 UPS 导致其过载),但当系统恢复时,ZFS 很快就恢复了,没有标准的 fsck 问题。

我喜欢它,因为我可以将 CUPS 添加到 Samba 以获得打印服务器。我添加了 DNS 缓存,并且可以根据需要添加其他软件(我正在考虑将 SNMP 监控添加到我家的桌面以测量带宽使用情况)。对于我在系统上花费的钱,我确信我可以买一个便宜的 NAS 盒,但那样我就没有 64 位本地 Unix 盒可以玩了。如果您喜欢 FreeBSD,我会建议您使用它。如果您更喜欢 Linux,那么我推荐 Linux 解决方案。如果您不想做任何管理,那就是我会选择独立 NAS 盒的时候。

在下一轮硬件升级中,我计划升级硬件,然后安装当前版本的 FreeBSD,它具有 ZFS v13。V13 很酷,因为我有一个电池备份的 RAM 磁盘,可以用于 ZIL 日志(这会让写入尖叫)。它还支持使用 SSD 来加速文件服务器(新 Sun 文件服务器的规格很棒,它们来自使用 SSD 使系统非常快的 ZFS 系统)。

编辑:(暂时无法发表评论)。我基本上按照以下说明操作:http://www.ish.com.au/solutions/articles/freebsdzfs自从这些说明编写以来,7.X 中存在的一个主要变化是 7.2 发布了,如果您有 2+ GB,则不必在 /boot/loader.conf 中添加以下三行:

vm.kmem_size_max="1024M"
vm.kmem_size="1024M"  
vfs.zfs.arc_max="100M"

说明还解释了如何创建镜像以及如何将系统恢复到恢复模式(使用 ZFS 挂载)。按照他的说明操作了一两次后,我使用了 Sun 的 ZFS 管理手册http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf更好地理解 ZFS 是什么。为了创建我的数据存储,我使用了第 91 页上创建 ZFS 池的命令的修改版本。这是 FreeBSD,我必须做一个小改动:

zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10

通过执行 dmesg |grep 'ata.*master' 可以找到 ad4-ad10,这是系统上将用于大数据分区的 SATA 硬盘驱动器的名称。在我的主板上,前三个 ata 端口(ad0-3)是 4 个 PATA 端口,然后由于每个 SATA 端口都是主端口,因此没有旧号码。

为了创建文件系统,我只需执行以下操作:

zfs create dozer/data
zfs set mountpoint=/data dozer/tank

需要第二条命令是因为我关闭了共享的默认挂载点。

答案2

介绍: 我终于建立了自己的系统,以下是我的笔记,希望它能对其他人有所帮助。

目标:

  • 构建一个家用 NAS 盒,它也可以兼作我的源代码控制和内部 Web 服务器。
  • 将成本控制在 1000 美元以下

规格:

  • 必须至少拥有 1TB 的存储空间
  • 必须具有数据冗余(RAID 或类似技术)
  • 必须能够取代我目前老化的源代码控制服务器

设计:

  • FreeBSD 7.2(最终将升级到 8.0)。
  • 操作系统位于其自己的启动驱动器上,在本例中是一个 IDE 驱动器
  • 数据存储在六个 SATA 驱动器上。

我们使用 ZFS 作为文件系统,因为它得到了如此好评。ZFS 几乎要求我们运行 64 位操作系统,并且需要大量内存,所以我应该至少获得 4Gb

硬件:

软件: FreeBSD 7.2 - 1 @ $0.00 http://www.freebsd.org/

总成本: 874.81美元

硬件设置: 一台基本的计算机构造,存在三个小问题。

  1. 我购买的机箱有 6 个硬盘插槽和两个 3.5 托架。我以为 IDE 可以装在其中一个 3.5 托架中。这是一个错误的假设,而且没有合理的方法可以让它工作。我去 Fry's 买了一个适配器,花了大约 17.00 美元,它工作得很好。

  2. 我购买的 SATA 电缆有 90 度连接器,这很好,但对于 6 个驱动器来说,没有办法让它工作。插入一根电缆会导致连接器的不灵活部分悬在下一个硬盘上。我不得不去 Fry's 买了 5 根普通的 SATA 电缆。遗憾的是,我在 Newegg 买的那些太便宜了,不值得把它们寄回去。

  3. 机箱将硬盘驱动器的背面朝向机箱的侧面,电源的电源线有一个坚硬的连接器,从机箱的边缘伸出。这不允许我将侧盖滑回原位。我不得不摆弄了一会儿才让它工作,最后将两根模块化电源线(每根都有四个 SATA 插头)交错放在驱动器之间,这样第一根电缆为驱动器 0、2 和 4 供电,第二根电缆为驱动器 1、3 和 5 供电。这允许足够的弯曲,我可以用拉链将它们绑起来。

操作系统设置:

  1. 将 FreeBSD 7.2 ISO 刻录到 CD。我本来可以使用单张 DVD,但我手边没有。

  2. 已烧毁 memtest86+ (http://www.memtest.org/) 到 CD 上。

  3. 启动新组装的电脑,进入 BIOS 以确保它能识别所有 7 个驱动器和 DVD-ROM。确实如此。更改启动顺序,使 CDROM 优先。

  4. 将 memtest86+ CD 插入新安装的计算机,重新启动,并运行一整夜。测试通过,没有任何错误。

  5. 安装了 FreeBSD 7.2,如果您不熟悉,我建议您阅读以下内容:http://www.freebsd.org/doc/en/books/handbook/install.html 它比我更好地解释了该怎么做。以下是我的具体设置:

    • 标准安装是否
    • 使用整个 IDE 驱动器来运行操作系统
      • 使用默认文件系统布局
      • 6 个 SATA 驱动器未受影响
    • 开发人员无需安装 X-Windows,因为盒子是无头的
    • 系统不是 NFS 客户端或服务器
    • FTP 和 inetd 已禁用
    • 允许 SSH
    • 未添加任何包(稍后将添加)。
    • 已添加 1 个用户
  6. 安装并重启后,我注意到 6 个 SATA 驱动器中只有 4 个被检测到。我进入 BIOS,在集成外设下将 OnChip SATA 类型更改为 AHCI,将 OnChip SATA 端口 4/5 类型更改为“SATA”,保存设置并重启。

  7. 此时,FreeBSD 将所有六个驱动器检测为:ad4 ad6 ad8 ad10 ad12 ad14

  8. 使用 csup 从 cvs 获取最新版本:csup -g -L 2 stable-supfile 我已经编辑了该文件以使用主机:cvsup11.us.FreeBSD.org,其他所有信息保持原样。

  9. 按照此处所述重建并安装最新的内核和世界: http://www.freebsd.org/doc/en/books/handbook/makeworld.html 定制我的内核(参见 ZFSNAS)。我禁用了大量设备,因为我从不打算使用 SCSI、USB、PCMCIA、串行、并行等。将以下内容添加到 /etc/make.conf:CPUTYPE=athlon64 CFLAGS= -O2 -fno-strict-aliasing -pipe make -j8 buildworld

NAS 设置:

  1. 为我们的存储创建 ZFS 池:zpool create storage raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. 在新创建的存储上创建主文件系统:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. 编辑 /etc.rc/conf 并添加以下内容:

    zfs_enable="YES"
    

    这会在启动时挂载 ZFS 文件系统。

  4. 创建 root、samba 和 perforce 目录

    zfs create storage/root
    cp -rp /root/* storage/root
    rm -rf /root 
    zfs set mountpoint=/root storage/root
    zfs create storage/fileshare
    zfs create storage/perforce
    

    除非您需要池中更多的文件系统,否则您基本上已经完成了 ZFS 部分。有关更多详细信息,请参阅以下内容: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

安装的端口:

/usr/ports/shells/bash
    make install
/usr/ports/editors/vim
    make install
/usr/ports/net/samba33
    make
    make install
    // Use all defaults un-check cups.
/usr/ports/devel/perforce
    make
    make install PERFORCE_PORT=XXXX PERFORCE_USER=p4user PERFORCE_GROUP=p4
    rm -rf /usr/local/perforce
    cd /storage/perforce/
    mkdir root
    mkdir log
    chown p4user:p4user *
    cd /storage
    chown p4user:p4user perforce 

Edited /usr/local/etc/perforce.conf as follows:
    #
    # Perforce FreeBSD configuration file
    #
    #
    # $FreeBSD: ports/devel/perforce/files/perforce.conf.in,v 1.3 2005/01/18 15:43:36 lth Exp $

    #
    # Perforce ROOT
    #
    PERFORCE_ROOT="/storage/perforce/root"

    #
    # Perforce user (it is recommended to run p4d as a non-root user)
    #
    PERFORCE_USER="p4user"

    #
    # p4d/p4p port (default: 1666)
    #
    PERFORCE_PORT="XXXX"

    #
    # p4p cache directory
    #
    PERFORCE_PROXY_CACHE="/usr/local/perforce/cache"

    #
    # p4p target server (default: perforce:1666)
    #
    PERFORCE_PROXY_TARGET="perforce:1666"

    #
    # p4d options (see man p4d)
    #
    PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L /storage/perforce/logs/p4d.log"

    #
    # Uncomment this line to have the server started automatically
    #
    PERFORCE_START=yes

用户添加:

user1
user2

已创建的群组:

sambashare
    Added user1 and user2 as members

chgrp sambashare /storage/fileshare
chmod 775 /storage/fileshare
chmod g+s /storage/fileshare

Samba 配置:

Samba configuration file:
#################
    [global]
       workgroup = USERLAN
       server string = ZFS NAS
       security = user
       hosts allow = 192.168.1. 127.
       log file = /usr/local/samba/var/log.%m
       max log size = 50
       passdb backend = tdbsam
       dns proxy = no

    [user1share]
       comment = user1 share
       path = /storage/fileshare
       valid users = user1 user2
       public = no
       writable = yes
       printable = no
       create mask = 0765
#################

pdbedit -a -u user1 
    # followed prompts
pdbedit -a -u user2 
    # followed prompts

答案3

  • 可以从 ZFS 启动吗?(我想要吗?)

我看不出你为什么想要这样做,我认为快照支持只有在 OpenSolaris 中才足够成熟,以便你可以切换回旧版本并启动它(但这实际上只是猜测)。

  • 添加驱动器有多容易?

添加扩展条带池?只需向池中添加一个驱动器,仅此而已。请考虑下一个问题的含义。

  • 它能如何处理不同大小的驱动器?

您可以将其用作条带并告诉 ZFS 保留文件的 n 个副本。这样您就可以使用您拥有的全部存储可用性,同时仍能获得不错的冗余

  • 您可以动态添加新驱动器吗(或者至少只需重新启动)?

替换存储池中的设备我猜这是推荐的解决方案,找出它在 FreeBSD 上运行情况的最简单方法可能是尝试一下。

  • 现成的产品是否能为我提供更好的服务?

你有没有考虑过FreeNAS(路线图)0.70 似乎即将发布并将支持 ZFS。

您将省去所有框架的麻烦,并免费获得一个相对好用的 GUI。

答案4

有一个不错的线在 ArsTechnica 上了解如何构建家庭 ZFS NAS。

相关内容