Назад | Перейти на главную страницу

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

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

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

В частности:

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

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

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

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

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

Было бы неплохо загрузиться из 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 диска по 750 ГБ).

Одной из главных причин, по которой я использовал ZFS с RAIDZ, были сквозные контрольные суммы. ЦЕРН опубликовал документ, в котором задокументирован проведенный ими тест, в ходе которого было обнаружено 200+ неисправленных ошибок чтения при выполнении теста чтения / записи в течение нескольких недель (ожидается, что 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

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

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

Цели:

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

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

  • Требуется хотя бы один терабайт хранилища
  • Должна быть избыточность данных (RAID или что-то подобное)
  • Должен быть в состоянии заменить мой текущий сервер управления устаревшим исходным кодом

Дизайн:

  • FreeBSD 7.2 (со временем будет обновлена ​​до 8.0).
  • ОС находится на собственном загрузочном диске, в данном случае на одном диске IDE
  • Данные хранятся на шести дисках SATA.

В качестве файловой системы мы используем ZFS, так как она получила такие положительные отзывы. ZFS в значительной степени требует, чтобы мы запускали 64-битную ОС, и ему нужно много памяти, поэтому я должен получить минимум 4 Гб

Оборудование:

Программное обеспечение: 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 на компакт-диск. Я мог бы использовать единственный DVD, но у меня его не было.

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

  3. Включил только что построенный компьютер и зашел в BIOS, чтобы убедиться, что он видит все 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, а тип порта SATA 4/5 OnChip на «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 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
  • Можно ли загрузиться с ZFS? (Хотел бы я?)

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

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

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

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

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

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

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

  • Будет ли мне лучше служить чем-нибудь готовым?

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

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

У меня есть сервера с 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)

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

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

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

У меня нет опыта работы с ZFS, но я только что видел это в своем RSS-фидере:

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

Это говорит о том, что он созревает, но не готов к производству (во FreeBSD).