关于FreeBSD上的ZFS作为NAS盒的建议?


9

请注意,本页上的答案来自2009年,不应作为福音。如果您有关于的特定问题,请单击“ 询问问题”按钮并询问特定问题。

我当时正在考虑使用FreeBSD 7.2和ZFS文件系统构建家庭备份系统。有没有人对该文件系统有任何经验?

特别:

  • 是否可以从ZFS引导?(我要吗?)
  • 添加驱动器有多容易?
  • 它如何处理不同大小的驱动器?
  • 您是否可以即时添加新驱动器(或至少只需重启即可)?
  • 现成的东西能更好地为我服务吗?

任何其他想法和建议都将受到欢迎。

编辑:

为了清楚起见,我已经阅读了ZFS上FreeBSD页面。我正在寻找具有类似实际设置经验的人的建议。

Answers:


13

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

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

从ZFS引导本来很好(它将使安装更加简单),但是我使用ZFSOnRoot指令来设置具有ZFS的Root / OS驱动器(如果所有分区都是ZFS,则它不需要在引导时执行fsck检查UFS文件系统)。之所以希望能够随后使用所需的不同选项(例如,用于/ usr / obj的noatime和async)设置所有分区(/ var,/ usr,/ tmp等)的原因,这将加速内核编译),但它们都将共享一个公共池中的空间。然后,您可以设置一个数据驱动器,并为每个用户分配一个自己的分区(使用不同的引号和设置)。然后,您可以拍摄快照(在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,其格式为秒(IIRC)。我仍在使用旧版本的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盒的时候。

在下一轮硬件升级中,我计划升级硬件,然后安装具有ZFS v13的当前版本的FreeBSD。V13很酷,因为我有一块电池备份的RAM磁盘,可用于ZIL日志(这使写入尖叫)。它还支持使用SSD来加快文件服务器的速度(新的Sun File Server的规格很不错,它们是从使用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 http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf上的ZFS管理员手册,以更好地了解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

第二条命令是必需的,因为我关闭了共享的默认安装点。


您是否偶然地注意到您所做的一切?并且您愿意张贴它们吗?:)
悲伤

FreeNAS + ZFS上的好帖子。我自己对此一直很好奇。感谢您的信息!
osij2is

11

简介: 我终于构建了我的系统,这是我的注释,以防万一。

目标:

  • 建立一个家用NAS盒,它还可以兼作我的源代码控制和内部Web服务器。
  • 将费用保持在$ 1000以下

规格:

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

设计:

  • FreeBSD 7.2(最终将升级到8.0)。
  • 操作系统位于自己的引导驱动器上,在这种情况下为一个IDE驱动器
  • 数据存储在六个SATA驱动器上。

我们将ZFS用作文件系统,因为它获得了如此好评。ZFS非常需要我们运行64位OS,并且喜欢很多内存,因此我应该至少获得4Gb

硬件:

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

总费用: 874.81美元

硬件设置: 基本的计算机版本,有三个小问题。

  1. 我购买的机箱有6个硬盘驱动器插槽和2个3.5托架。我以为IDE可以容纳3.5个托架之一。这是一个错误的假设,没有合理的方法可以使它起作用。我去了,在Fry's买了一个适配器,价格约为$ 17.00,它工作正常。

  2. 我购买的Sata电缆具有90度连接器,非常好,除了有六个驱动器外,其他方法无法完成。插入一根电缆会使连接器的固定部分悬垂在下一个硬盘驱动器上。我必须去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驱动器用于OS
      • 使用默认的文件系统布局
      • 保持6个SATA驱动器不变
    • 开发人员无需使用X-Windows即可安装,因为该包装盒无头
    • 系统不是NFS客户端或服务器
    • FTP和inetd禁用
    • 允许SSH
    • 未添加任何软件包(稍后会添加)。
    • 添加了一个用户
  6. 安装并重新启动后,我注意到在6个SATA驱动器中仅检测到4个。我进入BIOS,在“ Integrated Peripherals”下,将OnChip SATA Type更改为AHCI,并将OnChip SATA port 4/5 Type更改为“ 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创建存储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. 创建了根目录,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

很棒的答案!赞...检查!

5
  • 是否可以从ZFS引导?(我要吗?)

我没有理由不愿,我认为Snapshot支持仅在OpenSolaris中已经足够成熟,因此您可以切换回旧版本并启动它(实际上只是在疯狂猜测)。

  • 添加驱动器有多容易?

在扩展条带池中添加为?只需将驱动器添加到池中即可。请考虑您下一个问题的含义。

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

您可以将其用作条带,并告诉ZFS保留文件的n个副本。因此,您可以使用现有的全部存储可用性,并仍然获得不错的冗余

  • 您是否可以即时添加新驱动器(或至少只需重启即可)?

替换存储池中的设备我想这是推荐的解决方案,要弄清它在FreeBSD上的运行情况,最简单的方法就是尝试一下。

  • 现成的东西能更好地为我服务吗?

您是否考虑过FreeNAS(Roadmap) 0.70似乎即将发布并将支持ZFS。

您将省去所有框架的麻烦,并且可以相对免费地使用GUI。


我正在使用FreeNAS 0.7RC1,使用ZFS进行安装非常容易。
约瑟夫

3

我有带FreeBSD + ZFS(在7.2-STABLE和8.0-CURRENT上)的服务器,而不是正式生产。

从ZFS引导的描述如下: http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

快速添加驱动器就像键入“ zpool add mypool da7”一样简单,此后即可使用新驱动器。您还可以在条带,镜像,raidz(改进的raid-5)或raidz2(改进的raid-6)中添加整个驱动器

可以将不同大小的驱动器放在池中,但不能用于镜像/条带/ raid(如果我没记错的话,那么只有最小的硬盘空间可用)

(开放)Solaris即时提供对ZFS的支持


2

在ArsTechnica上构建家用ZFS NAS 有一个不错的思路


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.