在FreeBSD上把ZFS作为一个NAS盒子的build议?

请注意,这个页面上的答案是从2009年开始的,不应该作为福音的依据。 如果您有关于zfs的具体问题,请点击“ 提问”button并提出具体问题。

我正在考虑使用FreeBSD 7.2和ZFS文件系统构build一个家庭备份系统。 有没有人有任何有关该文件系统的经验?

特别:

  • 是否有可能从ZFS启动? (我想要吗?)
  • 添加驱动器有多容易?
  • 它如何处理不同大小的驱动器?
  • 你可以添加新的驱动器(或至less只是一个重启)?
  • 我现在可以更好地服务于现成的东西吗?

任何其他的想法和build议将受到欢迎。

编辑:

为了清楚起见,我已经阅读了ZFS上的FreeBSD页面 。 我正在寻找具有实际经验的人员的build议,并提供类似于我想要的设置。

我使用ZFS构build了一个家庭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等)(例如noatime和async for / usr / obj,这将加速内核编译),但他们都将共享一个公共池中的空间。 然后,您可以设置一个数据驱动器,并为每个用户分配一个自己的分区(使用不同的引号和设置)。 然后您可以拍摄快照(在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 

性能明智,复制文件是真正的快速。 我注意到的一个问题是,我已经在FreeBSD AMD64系统上使用了ZFS,它具有3-4GB,并且运行良好,但是从我的阅读中,我担心在具有2GB的i386系统上运行它,内存不足

我跑了主板上的SATA端口,所以我没有试图添加任何新的驱动器。 初始设置很简单,一个创buildRAIDZ的命令,然后是创build/ home的命令,该命令在几秒钟内被格式化(IIRC)。 我仍然使用旧版本的ZFS(v6),所以它有一些限制(它不需要相同大小的驱动器,但不像Drobo,如果你有3个750GB的驱动器和1TB的驱动器,最终的结果就好像你有4个750GB的硬盘)。

我使用ZFS和RAIDZ的一个重要原因是端到端的校验和。 欧洲粒子物理研究所(CERN)发表了一篇文章,logging了他们在几周内运行R / Wtesting时发现了200多个未校正的读取错误(零售驱动器中的ECC预计每12TB读取一次失败)的testing。 我希望我的服务器上的数据是正确的。 由于停电(有人通过插入空间加热器使UPS超负荷),导致硬盘崩溃,但是当系统可以恢复时,ZFS快速恢复,没有标准的fsck问题。

我喜欢它,因为我可以将CUPS添加到Samba来获取打印服务器。 我添加了一个DNScaching,可以添加其他软件,我喜欢(我正在考虑添加SNMP监测到我家的桌面来衡量带宽使用情况)。 对于我所使用的系统,我确信我可以买一个便宜的NAS盒子,但是我不会有一个64位的本地Unix盒子。 如果你喜欢FreeBSD,我会说去吧。 如果你更喜欢Linux,那么我会推荐一个Linux解决scheme。 如果你不想做任何pipe理的话,那就是当我去参加单机NAS的时候。

在下一轮的硬件升级中,我打算升级硬件,然后安装当前版本的FreeBSD,它有ZFS v13。 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" 

说明还解释了如何创build镜像以及如何将系统恢复到恢复模式(使用ZFS进行挂载)。 在玩过一两次指令之后,我使用了Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf中的ZFS Admin手册来更好地理解ZFS是什么。 为了创build我的数据存储,我在页面91上使用了一个修改版本的命令来创buildZFS池。 这是FreeBSD,我不得不做一个小小的改变:

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

其中ad4-ad10通过执行dmesg | grep'ata。* master'find,这是系统中将用于大数据分区的SATA硬盘驱动器的名称。 在我的主板上,前三个ata端口(ad0-3)有4个PATA端口,然后因为每个SATA端口都是主设备,所以没有旧的数字。

为了创build文件系统,我只是做了:

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

第二个命令是必需的,因为我closures了共享的默认挂载点。

简介:我终于build立了我的系统,这里是我的笔记,以防万一。

目标:

  • build立一个家庭NAS盒子,也可以加倍我的源代码pipe理和内部networking服务器。
  • 保持在$ 1000以下的成本

产品规格:

  • 必须至less有一个TB的存储空间
  • 必须有数据冗余(RAID或类似的东西)
  • 必须能够replace我目前老化的源代码控制服务器

devise:

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

我们使用ZFS作为文件系统,因为它得到了如此好的评价。 ZFS几乎要求我们运行一个64位的操作系统,并喜欢大量的内存,所以我应该得到至less4Gb

硬件:

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

总成本: 874.81美元

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

  1. 我购买的情况下有6个硬盘的插槽,和两个3.5海湾。 我认为IDE可以适应3.5个海湾之一。 这是一个不好的假设,没有合理的方法来使它工作。 我去了,在Fry的$ 17.00买了一个适配器,它运行良好。

  2. 我购买的Sata电缆有90度连接器,除了有6个驱动器外,还没有办法完成这个工作。 插入一根电缆导致连接器的不灵活部分悬挂在下一个硬盘驱动器上。 我不得不去弗里和5常规SATA电缆。 不幸的是,我在纽蛋店买的那么便宜,不值得寄回去。

  3. shell将硬盘的背面指向shell的一侧,电源的电源线上有一个坚硬的连接器,伸出shell的边缘。 这不允许我将侧盖滑回原位。 为了使它工作起来,我不得不花费一些时间,最终以模块化电源电缆(它们每个具有四个SATA插头)插在两个驱动器之间,这样第一根电缆驱动的驱动器0,第二和第四,第二个动力1,3和5.这允许足够的弯曲,我可以拉链绑在一起。

OS设置:

  1. 将FreeBSD 7.2 ISO烧录到CD。 我本来可以使用单张DVD,但我没有任何谎言。

  2. 将memtest86 +( http://www.memtest.org/ )刻录到CD上。

  3. 打开新build的电脑,进入BIOS,确保它看到所有7个驱动器和DVD-ROM。 它做了。 首先更改启动顺序以制作CDROM。

  4. 将memtest86 + CD插入新build的计算机,重新启动,然后运行一晚。 通过没有错误。

  5. 安装FreeBSD 7.2,如果你不熟悉这个,我build议阅读下面的内容: http : //www.freebsd.org/doc/en/books/handbook/install.html它比我更好地解释要做什么能够。 这是我的具体设置:

    • 是否安装了标准版
    • 使用整个IDE驱动器的操作系统
      • 使用默认的文件系统布局
      • 保持6个SATA驱动器不变
    • 开发人员安装不使用X-Windows,因为这个盒子是无头的
    • 该系统不是NFS客户端或服务器
    • FTP和inetd被禁用
    • SSH允许
    • 添加了没有包(那些将在稍后添加)。
    • 添加了一个用户
  6. 安装并重新启动后,我注意到只有4个SATA驱动器被检测到。 我进入了BIOS,在集成外设下将OnChip SATA Type改为AHCI,并将OnChip SATA端口4/5types改为“SATA”保存设置并重新启动。

  7. 在这一点上,FreeBSD检测到所有六个驱动器:ad4 ad6 ad8 ad10 ad12 ad14

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

  9. 重build并安装最新的内核和世界,如下所述: 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. 为我们的存储创buildZFS池:zpool创build存储raidz2 ad4 ad6 ad8 ad10 ad12 ad14

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

     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. 创build了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 

创build的小组:

 sambashare Added user1 and user2 as members chgrp sambashare /storage/fileshare chmod 775 /storage/fileshare chmod g+s /storage/fileshare 

Sambaconfiguration:

 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 
  • 是否有可能从ZFS启动? (我想要吗?)

我没有看到你想要的理由,我认为在OpenSolaris中Snapshot支持只是成熟的,所以你可以切换回旧版本,并启动(但实际上只是猜测)。

  • 添加驱动器有多容易?

添加在展开一个条纹池? 只需添加一个驱动器到游泳池,就是这样。 考虑下一个问题的含意。

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

您可以将其用作条带,并告诉ZFS保留n个文件副本。 因此,您可以使用您拥有的完整存储可用性,并仍然可以获得体面的冗余

  • 你可以添加新的驱动器(或至less只是一个重启)?

replace存储池中的设备我猜这是推荐的解决scheme,找出在FreeBSD上工作的最简单的方法是尝试一下。

  • 我现在可以更好地服务于现成的东西吗?

你认为FreeNAS(路线图) 0.70似乎即将发布,将支持ZFS。

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

我有FreeBSD + ZFS服务器(在7.2-STABLE和8.0-CURRENT),不在生产中。

从ZFS引导在这里描述http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

dynamic添加驱动器与input“zpool add mypool da7”一样简单,新驱动器在此之后可用; 你也可以在条纹,镜像,raidz(改进的raid-5)或raidz2(改进的raid-6)中join整串驱动,

不同大小的驱动器可以放在游泳池中,但不能用于镜像/条纹/ RAID(如果我正确记得,只有最小的硬盘空间可用)

(Open)Solaris支持开箱即用的ZFS

在ArsTechnicabuild立家庭ZFS NAS有一个很好的线索 。

我没有使用ZFS的经验,但我刚刚在我的RSS提要中看到了这一点:

http://www.freebsdnews.net/2009/06/10/zfs-version-13-freebsd-current/

这表明它正在成熟,但还没有准备好生产(在FreeBSD上)。