Рекомендации по ZFS на FreeBSD в качестве коробки NAS?

9

Обратите внимание, что ответы на этой странице относятся к 2009 году, и на них не следует полагаться как на Евангелие. Если у вас есть конкретный вопрос о нажмите кнопку « Задать вопрос» и задайте конкретный вопрос.

Я думал о создании домашней системы резервного копирования с использованием FreeBSD 7.2 и файловой системы ZFS. Кто-нибудь имел опыт работы с этой файловой системой?

В частности:

  • Можно ли загрузиться с ZFS? (Хотел бы я?)
  • Насколько легко добавить диск?
  • Насколько хорошо он обрабатывает диски разных размеров?
  • Можете ли вы добавить новые диски на лету (или, по крайней мере, просто перезагрузив)?
  • Буду ли я лучше обслуживать что-нибудь с полки?

Любые другие мысли и предложения приветствуются.

Редактировать:

Просто чтобы прояснить, я прочитал страницу FreeBSD на ZFS . Я ищу предложения от людей с практическим опытом, подобным тому, что я хочу.

Скорбный
источник

Ответы:

13

Я создаю домашний файловый сервер FreeBSD, используя ZFS.

Это AMD X2 3200+ с 3 ГБ оперативной памяти. Он имеет PCI Express Gig-E. Загрузочный диск - старый 400 ГБ, и у меня есть 4 750 ГБ дисков Seagte (один на разную версию прошивки, на всякий случай).

Загрузка из ZFS была бы хорошей (это упростило бы установку), но я использовал инструкции ZFSOnRoot для настройки диска Root / OS с ZFS (если все разделы являются ZFS, тогда не нужно делать fsck при загрузке проверить файловые системы UFS). Причина, по которой вы захотите этого, заключается в том, что вы можете затем настроить все свои разделы (/ var, / usr, / tmp и т. Д.) С различными необходимыми параметрами (такими как noatime и async для / 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

С точки зрения производительности, копирование файлов происходит очень быстро. Единственное, что я хотел бы отметить, это то, что я использовал ZFS на системах FreeBSD AMD64, которые имеют 3-4 ГБ, и это работало хорошо, но из моего чтения я бы побеспокоился о запуске его на системе i386, которая имела 2 ГБ или меньше памяти.

У меня закончились SATA-порты на материнской плате, поэтому я не пытался добавить новые диски. Первоначальная настройка была простой: команда для создания RAIDZ, а затем команда для создания / home, которая была отформатирована в секундах (IIRC). Я все еще использую более старую версию ZFS (v6), поэтому у нее есть некоторые ограничения (она не требует дисков одинакового размера, но в отличие от Drobo, если у вас было 3 диска 750 ГБ и диск 1 ТБ, конечный результат будет, как если бы у вас было 4 750GB дисков).

Одной из основных причин, по которой я использовал ZFS с RAIDZ, были сквозные контрольные суммы. CERN опубликовал документ, в котором задокументирован тест, в котором они обнаружили 200+ неисправленных ошибок чтения при выполнении теста R / W в течение нескольких недель (ECC в розничных накопителях, как ожидается, будет давать сбой после каждых считанных 12 ТБ). Я хотел бы, чтобы данные на моем сервере были правильными. У меня был тяжелый сбой из-за перебоя в питании (кто-то перегружал ИБП, подключив к нему обогреватель), но когда система может вернуться, ZFS вернулась быстро, без стандартных проблем с fsck.

Мне это нравится, потому что я могу добавить CUPS в Samba, чтобы получить сервер печати. Я добавил кэш DNS и могу добавлять другое программное обеспечение по своему усмотрению (я думаю о добавлении мониторинга SNMP к рабочим столам в моем доме для измерения использования полосы пропускания). За то, что я потратил на систему, я уверен, что мог бы купить дешевый NAS-блок, но тогда у меня не было бы 64-битного локального Unix-блока для игры. Если вам нравится FreeBSD, я бы сказал, что вам нужно. Если вы предпочитаете Linux, я бы порекомендовал решение для Linux. Если вы не хотите заниматься администрированием, тогда я выберу автономный NAS-блок.

На следующем этапе обновления оборудования я планирую обновить оборудование и установить текущую версию FreeBSD с ZFS v13. V13 - это круто, потому что у меня есть RAM-диск с резервным питанием от батареи, который я могу использовать для журнала ZIL (это заставляет писать крики) Он также поддерживает использование SSD для ускорения работы файлового сервера (спецификации на новых файловых серверах Sun хороши, и они получают их от системы ZFS, использующей SSD для очень быстрой работы системы).

РЕДАКТИРОВАТЬ: (еще не могу оставлять комментарии). Я в значительной степени следовал инструкциям на http://www.ish.com.au/solutions/articles/freebsdzfs . Единственное существенное изменение, которое существует в 7.X с момента написания этих инструкций, заключалось в том, что вышел 7.2, и если у вас есть 2+ ГБ, вам не нужно добавлять следующие три строки в /boot/loader.conf:

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

В инструкциях также объясняется, как создать зеркало и как вернуть систему в режим восстановления (смонтировать с помощью ZFS). Поработав с его инструкциями один или два раза, я использовал руководство администратора ZFS от Sun 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

Где ad4-ad10 был найден с помощью команды dmesg | grep 'ata. * Master', это имена жестких дисков SATA в системе, которые будут использоваться для раздела с большими данными. На моей материнской плате первые три порта ata (ad0-3), где 4 порта PATA, а затем, поскольку каждый порт SATA является главным, нет старых номеров.

Чтобы создать файловую систему, я просто сделал:

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

Вторая команда необходима, потому что я отключил стандартные точки монтирования для общих ресурсов.

Вальтер
источник
У тебя случайно есть записи обо всем, что ты сделал? И вы бы хотели их опубликовать? :)
скорбим
Отличный пост на FreeNAS + ZFS. Мне было любопытно об этом сам. Спасибо за вашу информацию!
osij2is
11

Введение: я наконец собрал свою систему, и вот мои заметки, на случай, если она кому-нибудь поможет.

Цели:

  • Создайте домашний NAS-блок, который также может использоваться как мой источник контроля и внутренний веб-сервер.
  • Держите стоимость под 1000 $

Характеристики:

  • Должен иметь как минимум один терабайт памяти
  • Должен иметь избыточность данных (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 отсеков. Это было плохое предположение, и не было никакого разумного способа заставить это работать. Я пошел и купил адаптер у Фрая за ~ 17 долларов, и он работал нормально.

  2. Кабели Sata, которые я купил, имели разъемы на 90 градусов, что было приятно, за исключением шести приводов, не было никакого способа сделать работу. При подключении одного кабеля негибкая часть разъема зависла над следующим жестким диском. Я должен был пойти на Фрая и 5 обычных кабелей SATA. К сожалению, те, что я купил в Newegg, были настолько дешевы, что не стоит отправлять их обратно.

  3. Корпус направляет заднюю часть жестких дисков на боковую сторону корпуса, а силовые кабели от блока питания имеют жесткий разъем, выступающий над краем корпуса. Это не позволило мне сдвинуть боковую крышку на место. Мне пришлось немного поиграться с ним, чтобы заставить его работать, и в итоге получилось, что два из модульных силовых кабелей (по четыре разъема SATA на каждом) чередовались между дисками, так что первый кабель с питанием от дисков 0, 2, 4 и второй, 1, 3 и 5 с питанием. Это позволило достаточно согнуть, чтобы я мог завязать их.

Настройка ОС:

  1. Записал ISO-образы FreeBSD 7.2 на CD. Я мог бы использовать один DVD, но у меня не было ничего валяющегося.

  2. Записал memtest86 + ( http://www.memtest.org/ ) на компакт-диск.

  3. Включил только что собранный компьютер и вошел в биос, чтобы убедиться, что он видел все 7 дисков и DVD-ROM. Это сделал. Изменен порядок загрузки, чтобы сначала сделать CDROM.

  4. Вставьте компакт-диск memtest86 + в только что собранный компьютер, перезагрузите его и оставьте работать на ночь. Прошло без ошибок.

  5. Установленная FreeBSD 7.2, если вы не знакомы с этим, я рекомендую прочитать следующее: http://www.freebsd.org/doc/en/books/handbook/install.html Объяснить, что делать, гораздо лучше, чем я Можно. Вот мои конкретные настройки:

    • Сделал стандартную установку
    • Использовал весь диск IDE для ОС
      • используется макет файловой системы по умолчанию
      • 6 дисков SATA остались нетронутыми
    • Разработчик установит без X-Windows, так как коробка будет без головы
    • Система не является клиентом или сервером NFS
    • FTP и inetd отключены
    • SSH разрешено
    • Пакеты не добавлены (они будут добавлены позже).
    • Добавлен один пользователь
  6. После установки и перезагрузки я заметил, что были обнаружены только 4 из 6 дисков SATA. Я зашел в BIOS и в разделе «Интегрированные периферийные устройства» изменил тип OnChip SATA на AHCI, а порт 4/5 типа OnChip SATA на «SATA». Сохраненные настройки и перезагрузка.

  7. На данный момент FreeBSD обнаружил все шесть дисков как: ad4 ad6 ad8 ad10 ad12 ad14

  8. Получите последние данные из cvs, используя csup: csup -g -L 2 stable-supfile. Я уже отредактировал файл, чтобы использовать host: cvsup11.us.FreeBSD.org, оставив всю остальную информацию как есть.

  9. Пересобрал и установил последнее ядро ​​и мир, как описано здесь: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Настроил мое ядро ​​(см. ZFSNAS). Я отключил большой набор устройств, так как я никогда не планировал использовать SCSI, USB, PCMCIA, Serial, Parallel и т. Д., Добавив следующее в /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. Созданы каталоги root, samba и перформанс

    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
Скорбный
источник
Фантастический ответ! Upvote ... проверить!
Мэй
5
  • Можно ли загрузиться с ZFS? (Хотел бы я?)

Я не вижу причин, по которым вы захотите этого сделать, я думаю, что поддержка снимков в OpenSolaris достаточно зрелая, чтобы вы могли переключиться обратно на более старую версию и загрузить ее (но на самом деле это просто дикая догадка).

  • Насколько легко добавить диск?

Добавить как расширить полосатый пул? Просто добавьте диск в бассейн, вот и все. Подумай о последствиях твоего следующего вопроса.

  • Насколько хорошо он обрабатывает диски разных размеров?

Вы можете использовать его как полосу и указать ZFS хранить n копий файла. Таким образом, вы можете использовать полную доступность хранилища и при этом получить приличную избыточность

  • Можете ли вы добавить новые диски на лету (или, по крайней мере, просто перезагрузив)?

Замена устройств в пуле хранения Я думаю, что это рекомендуемое решение, самый простой способ выяснить, насколько хорошо это работает на FreeBSD, - это попробовать.

  • Буду ли я лучше обслуживать что-нибудь с полки?

Задумывались ли вы о том, что FreeNAS (Roadmap) 0.70 собирается быть выпущенным и будет поддерживать ZFS.

Вы избавите себя от хлопот всего фреймворка и получите относительно удобный бесплатный графический интерфейс.

Мартин М.
источник
Я использую 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)

Диски разных размеров могут быть размещены в пуле, но не могут использоваться в зеркале / полосе / рейде (если я правильно помню, тогда будет использоваться только самое маленькое место на жестком диске)

(Open) Solaris имеет поддержку ZFS прямо из коробки

SaveTheRbtz
источник
2

Есть хорошая нить о создании домашнего ZFS NAS в ArsTechnica.

quux
источник