Рекомендації щодо 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 диски Seagte на 750 Гб (один із різною версією прошивки, про всяк випадок).

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

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

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

Однією з великих причин того, що я використовував ZFS з RAIDZ, були цілісні контрольні суми. CERN опублікував документ, в якому задокументовано тест, який вони зробили, коли вони виявили 200+ непоправлених помилок читання під час виконання тесту R / W протягом декількох тижнів (очікується, що ECC у роздрібних накопичувачах матиме помилку один раз на 12TB зчитування). Я хотів би, щоб дані на моєму сервері були правильними. У мене стався важкий збій через відключення електроживлення (хтось перевантажив ДБЖ, підключивши до нього нагрівач простору), але коли система може повернутися назад, ZFS повернувся швидко, без стандартних проблем з fsck.

Мені це подобається, тому що я міг би потім додати CUPS до Samba, щоб отримати сервер друку. Я додав кеш DNS і можу додавати інше програмне забезпечення, як мені подобається (я думаю про додавання SNMP-моніторингу до настільних комп'ютерів мого будинку для вимірювання використання пропускної здатності). Щодо того, що я витратив на систему, я впевнений, що міг би придбати дешеву коробку NAS, але тоді я не мав би 64-бітну локальну коробку Unix, з якою можна було б грати. Якщо вам подобається FreeBSD, я б сказав, піди з ним. Якщо ви віддаєте перевагу Linux, то я б рекомендував рішення для Linux. Якщо ви не хочете займатися будь-якою адміністрацією, саме тоді я б пішов на окрему коробку NAS.

У наступному раунді оновлення обладнання я планую оновити обладнання, а потім встановити поточну версію FreeBSD, у якій є ZFS v13. V13 класний, тому що у мене є резервна копія диска оперативної пам’яті, яку я можу використовувати для журналу 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 в системі, які будуть використовуватися для великого розділу даних. На моїй материнській платі, перші три порти ата (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-бітну ОС, і вона любить багато пам'яті, тому я повинен отримати мінімум 4 Гбіт

Обладнання:

Програмне забезпечення: 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-градусні роз'єми, що було приємно, окрім шести накопичувачів, не було можливості зробити роботу. Підключення одного кабелю призвело до того, що гнучка частина роз’єму звисала над наступним жорстким диском. Мені довелося їхати до Фрі і 5 звичайними кабелями SATA. На жаль, ті, які я купив у Newegg, були настільки дешевими, що відправляти їх назад не варто.

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

Налаштування ОС:

  1. Записали на CD FreeBSD 7.2 ISO. Я міг би використовувати один DVD, але у мене не було лежачи.

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

  3. Підключив щойно вбудований комп'ютер і пішов у біос, щоб переконатися, що він бачив усі 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 дозволено
    • Не додано жодних пакетів (ті будуть додані пізніше).
    • Додано одного користувача
  6. Після установки та перезавантаження я помітив, що виявлено лише 4 з 6 накопичувачів SATA. Я ввійшов у BIOS і під Інтегрованою периферією змінити тип OnChip SATA на AHCI, а OnChip SATA порт 4/5 ввести "SATA". Збережені настройки та перезавантажити.

  7. У цей момент FreeBSD виявив усі шість дисків як: ad4 ad6 ad8 ad10 ad12 ad14

  8. Отримайте останню інформацію з cvs за допомогою csup: 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, Serial, Parallel тощо. Додав до /etc/make.conf: CPUTYPE = athlon64 CFLAGS = -O2 -fno-строгий-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 та 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

Фантастична відповідь! Upvote ... перевірити!
Май

5
  • Чи можливо завантажуватися із ZFS? (Хочеться?)

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

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

Додати як у розширити смугастий басейн? Просто додайте диск до басейну, ось і про це. Розгляньте наслідки свого наступного питання ти.

  • Наскільки добре він обробляє диски різних розмірів?

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

  • Чи можете ви додавати нові диски на ходу (або принаймні лише за допомогою перезавантаження)?

Заміна пристроїв у сховищі даних Я думаю, що це рекомендоване рішення, найпростіший спосіб з'ясувати, наскільки добре це працює на FreeBSD, ймовірно, спробувати.

  • Чи мені краще послужити щось із полиці?

Чи вважали ви, що FreeNAS (дорожня карта) 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", новий привід можна використовувати відразу після цього; Ви також можете додати цілу купу приводів у смужку, дзеркало, рейдз (покращений рейд-5) або raidz2 (покращений рейд-6)

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

(Відкрито) Solaris має підтримку ZFS прямо з коробки



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.