Я создаю домашний файловый сервер 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
Вторая команда необходима, потому что я отключил стандартные точки монтирования для общих ресурсов.