Комментарии 54
У меня для таких целей есть отдельная Android-приставка с Kodi и примаунченной шарой, а сервер в коридоре жужжит :)
Ого, а управляете чем? — если приложение для телефона, то какое?
Меня официальное Kore не устраивает тем, что там нельзя музыку по папочкам проигрывать, приходится использовать проприетарное Yatse, но должен признать, что оно достаточно неплохое.
Для управления TV, приставкой и звуком использую универсальный пульт с гироскопом MeLE F10 Deluxe:
В proxmox классно то, что он ставится по сути на чистый Debian, пользуюсь в качестве десктопа, аналогично можно вместо wm поставить kodi (не самое чистое решение конечно, но работает прекрасно).
Более свежее ПО — в рамках десктопа с proxmox прекрасно работает testing репозитарий Дебиана, ставил из него всё, что нужно.
Всегда за безопасность, но придерживаюсь рационального (для меня) подхода, что не везде виртуализация нужна.
у меня стоит Jessie с иксами, на него накатил Proxmox, через одну виртуалку вывожу свои компы в всемирную сеть. Ну и мне хватает простой самбы что бы я мог делать на шарах все, а ребенок и жена только читать.
1) Я всё же установил proxmox на флешку. Последние версии проксмокса работают с флешек как часы — никаких проблем. Плюс флешки довольно легко клонировать и, если одна помирает, можно склонировать её образ на новую.
2) NAS установлен в отдельной виртуальной машине, в эту машину проброшены диски через virtio. Не могу сказать, что это обеспечивает сказочную производительность дисковой подсистемы, но с настройками «по умолчанию» выходит 40-50 MB/s, мне хватает хватает и я даже не пытался добиться большего.
3) All-in-one включает роутер, который реализован как виртуальная машина с openwrt.
4) Там же десктоп/htpc в виде lxc контейнера с пробросом видеокарты (lxc.cgroup.devices.allow, lxc.mount.entry). На контейнере Ubuntu 16.04 и KDE plasma 5 с Kodi, аппаратное ускорение работает ОК, при том что видео встроенное в дешевый AM1-процессор от AMD и используется 4К монитор.
5) Виртуалка с роутером и NAS лежит прямо на флешке, на которой proxmox. Когда стартует Proxmox, он стартует роутер и NAS, а затем уже с хранилища на NAS стартуют остальные виртуалки/контейнеры.
Ну и для докер контейнеров у меня отдельная вирт. машина, а не lxc.
Вам спасибо, за интерес и не менее интересные коментарии :)
1) С флешкой у меня не завелось, все флешки в доме перепробовал. :) Сколько с root на флешке не связывлся и дома и на работе, всегда система либо очень сильно тормозит, либо вообще не заводится.
Вот и в последний раз даже USB3.0 флешку специально для этого купил, думал таких проблем не будет, ан нет, даже это не спасло. Может у вас какая-то супер-флешка?
2) У меня тоже была такая идея, но хотелось реализации именно на хосте а не в виртуальной машине, потому что a) только так можно получить живую производительность, и b) обе системы прекрассно работают и делят между собой одни ресурсы и могут использовать один и тот же пул zfs.
Я устанавливал прямо обычным установщиком Proxmox'a, с флешки на флешку, как тут описано. Обратите внимание на
rootdelay
. Дополнительно настраивал что бы меньше обращений к диску было, как советуют во всяких («устаревших») мануалах по установке линукса на SSD, но не знаю, какую роль эти настройки играют, наверное, и без них ок. Главное чтобы свопа на флешке не было, наверное. Вот мои настройки:
> systemctl enable tmp.mount
> cat /etc/fstab
/dev/pve/root / ext4 commit=120,noatime,nodiratime,errors=remount-ro 0 1
UUID=219E-7546 /boot/efi vfat defaults 0 1
#/dev/pve/swap none swap sw 0 0
proc /proc proc defaults 0 0
> tail -n3 /etc/default/tmpfs
RAMTMP=yes
RAMRUN=yes
RAMLOCK=yes
2.b) Ну они и так делят ресурсы и используют один и тот же пул zfs. У меня настроено и через NFS и через ZFS-over-iSCSI, оба варианта поддерживаются в Proxmox. Мне кажется, лучше максимально разделить службы по контейнерам/вм в данном случае. С производительностью, наверное, сложнее, но люди же используют SAN и добиваются очень большой производительности, так что, наверное, при желании, можно и это настроить.
Флешки пробовал разные, но подозреваю все они сильно хуже по скорости случайной записи чем флешки в приведенной вами ссылке, думаю что проблема именно в этом.
FreeNAS тормозил над каждым действием в веб-морде.
Proxmox 4.4 и 5.0 beta1 и Debian 8 устанавилвались очень долго, но в конце установки выдавал ошибку. Debian не грузился с ошибкой что не может найти root-раздел. Из опций только noatime,nodiratime
указал при установке.
Спасибо за информацию, в следующий раз куплю нормальную флешку и обязательно попробую еще раз!
Debian не грузился с ошибкой что не может найти root-раздел
Это лечится через rootdelay в аргументах grub, я выше ссылку давал.
Спасибо за информацию, в следующий раз куплю нормальную флешку и обязательно попробую еще раз!У меня в одном из серверов стоит Lexar JumpDrive S23 16GB, которая по сегодняшним меркам так себе, но для Proxmox хватает вполне.
Домашний NAS — а что в качестве железного сервера? ZFS с дедупликацией какие ресурсы потребляет?
Не советую применять дедупликацию в ZFS где-либо, кроме промышленного файлового хранилища, лучше просто использовать lz4 сжатие.
Домашний NAS — а что в качестве железного сервера?
CPU: AMD FX-8300 Vishera
RAM: 16GB DDR3
HDD: 3x2TB (raidz) TOSHIBA DT01ACA200
ZFS с дедупликацией какие ресурсы потребляет?
Здесь пишут что нужно расчитывать 20GB RAM на каждый TB данных
На деле у меня два датастора со включенной дедупликацией, общий объем данных в которых ~850GB, примерно треть в них повторяется. Данные обновляются редко (музыка и фотографии)
Остальные данные около ~400GB хранятся на датасторах без дедупликации но с lz4 сжатием на лету.
Эти данные находятся в постоянном в доступе (раздаются торрентом или проигрываются удаленно).
CPU: утилизируется на 2-5%
RAM: используется почти все 16G, 4G из которых выделено в контейнер с докером, но при этом в swap
не лезет (~500M всегда свободно строго)
Прелесть дедупликации что ее можно в любой момент выключить/включить.
Возможно я что-то не так понимаю, но ведь полного исключения и не нужно?
Чем плохо то что сдедуплицированные данные такими и останутся на всегда? — ведь основной процесс дедупликации просто перестанет работать, не так ли?
Если интересно, готов рассказать про многие вопросы ZFS, т.к. являюсь контрибьютором. В планах статья-howto с описанием дел на настоящий момент.
статья-howto с описанием дел на настоящий момент
было бы очень интересно!
Будет ли когда-нибудь шифрование из коробки? Будет ли более «производительная» дедупликация, я имею ввиду с меньшими требованиями к ресурсам, особенно оперативке? Что на счёт ssd-кеширования? Как я понимаю, сейчас ZIL и L2ARC не позволяют полноценный кеш организовать, по сравнению с bcache, например?
Будет ли когда-нибудь шифрование из коробки?
Да, уже год активно дорабатывается и шлифуется. При чём оно разрабатывается с учётом всех недостатков реализации от Oracle, а также позволит штатными send/recieve и scrub отправлять и проверять данные на целостность без ключа.
Будет ли более «производительная» дедупликация, я имею ввиду с меньшими требованиями к ресурсам, особенно оперативке?
В целом производительность будет улучшаться в следующем мажорном выпуске, но явных проблем с дедупликацией нет. Требование к ОЗУ связано напрямую с deduplication table (структура, в которой хранится соответствие контрольной суммы и блока), если DDT в неё не помещается, то будет ухудшение производительности.
Отдельно упомяну, что в бета-релизе проведена большая работа по оптимизации управления данными в ОЗУ (сокращённо ABD)
Что на счёт ssd-кеширования
ZIL выносит журнал на отдельный носитель, а L2ARC очень похож на bcache со своими особенностями. Вот отличная статья по этому поводу.
Отдельно стоит отметить, что в случае ZFS часто хватает просто добавить ОЗУ, ARC прекрасно борется с вымыванием кеша.
На своём десктопе использую 2 WD RED в виде mirror с 16гб ОЗУ, после прогрева кеша машина работает не хуже, чем с ZFS на бюджетном SSD.
Требование к ОЗУ связано напрямую с deduplication table (структура, в которой хранится соответствие контрольной суммы и блока),
В том то и дело, что требования к ОЗУ гигантские, как мне кажется. Допустим у нас 10TB данных, средний блок 64k — выходит ~156*10^6 блоков. Хеш одного блока пусть будет 32 бита, тогда выходит что нужно 10TB/64kB*4=625MB ОЗУ. Даже если взять 8 байтный хеш — всё равно выходит ~1 GB. В случае коллизии (вероятность которой примерно 10^-11 для 8 байтного хеша) можно просто сверить весь блок.
В том то и дело, что требования к ОЗУ гигантские
Вы о выше упомянутых 20гб? Это очень завышенная оценка, FreeBSD даёт оценку в ~ 5 гб на 1тб.
Тут прекрасно описан метод работы DDT, там же приводятся конкретные цифры — 320 байт на каждую запись (уникальный блок).
Вообще есть прекрасная возможность заранее получить точные цифры — у zdb есть возможность имитации дедупликации:
zdb -S название_пула
На выходе будет Total allocated blocks, перемножив его на 320 байт получим требуемое количество ОЗУ. Также там приводится коэффициент дедупликации.
Вот симуляция для моего пула (бекапы, /home, /, немного виртуалок, одним словом дедуплицировать особо нечего):
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 9.79M 767G 611G 613G 9.79M 767G 611G 613G
2 894K 47.7G 39.0G 39.3G 1.89M 101G 82.4G 83.1G
4 112K 3.52G 2.28G 2.37G 541K 17.0G 11.1G 11.6G
8 32.9K 1.17G 925M 968M 348K 13.1G 10.1G 10.6G
16 12.0K 529M 397M 418M 239K 10.1G 7.62G 8.03G
32 10.5K 925M 726M 734M 480K 42.3G 33.0G 33.4G
64 892 39.7M 30.0M 31.3M 80.0K 3.71G 2.77G 2.89G
128 419 23.1M 18.7M 19.2M 73.7K 4.19G 3.40G 3.47G
256 208 13.6M 10.9M 11.1M 73.1K 4.86G 3.92G 3.99G
512 76 4.90M 3.85M 3.91M 49.4K 3.29G 2.60G 2.64G
1K 13 1.01M 827K 840K 16.4K 1.20G 981M 999M
2K 2 130K 5.50K 8K 6.19K 508M 19.1M 24.8M
8K 5 640K 404K 404K 41.8K 5.22G 3.30G 3.30G
Total 10.8M 821G 655G 656G 13.6M 974G 772G 776G
dedup = 1.18, compress = 1.26, copies = 1.01, dedup * compress / copies = 1.48
На мои 800гб корневого пула, вообще не оптимизированного для dedup (а также 230гб бекапов с размером блока 1МБ) он дал всего лишь коэффициент 1.18, при этом на DDT потребуется 10.8М*320=3456мб ОЗУ. Оракл не рекомендует включать дедупликацию при коэффициенте меньше 2, я с ними полностью согласен.
Дедупликация — это прекрасно, но практически бесплатное lz4 сжатие (а для большинства HDD оно только ускоряет) в случае неповторяющихся данных намного целесообразнее.
Полезная ссылка.
— используемый sha256 (ваш dataHash) = 32 байт
— block pointer (ваш blockID) (blkptr_t) = 128 байт
Это только базовые цифры для минимального варианта реализации. Также там точно есть счётчик повторений, глубже копать не стал, но эти цифры уже дают понимание, что требования не такие уж и раздутые.
Причина такого большого block pointer кроется в самой идее ZFS, и от этого никуда не деться. По этому базовый блок 128кб, он позволяет уменьшить накладные расходы. Больше блок — меньше накладные расходы, но при чтении файла с размером больше блока придётся прочитать ещё 1 полный блок (где находится окончание файла).
используемый sha256 (ваш dataHash) = 32 байтно зачем хранить весь sha256 в оперативке? достаточно было бы первые 4-8 байт, а в случае коллизий уже пересчитывать полный. То же самое с block pointer, можно было бы пересчитывать сокращённую форму в blkptr_t налету.
Мне нравится ваш ход мыслей! :)
По предложениям ответить не могу, т.к. в нутра этой части не лазил, но мы всегда открыты к предложениям! Если готовы — можете внести свои предложения в виде issue, или сразу пулл реквестом, помогу с любым вопросом в части оформления, а другие участники всегда подскажут по коду, сообщество очень доброжелательное.
обязательно пишите! — мы все очень сильно ждем :)
Вопрос, ответ на который кажется очевидным, но всё же. Если ZFS+дедупликацию использовать для хранения несжатых бэкапов Proxmox на самом сервере — какие ресурсы это потребует, с учётом того что коэффициент будет наверняка очень высоким, сохранится ли 20 гигабайт на терабайт данных, не будет ли проблем с самим проксмоксом? Сервер 48 гигабайт РАМ+терабайт SATA (ZFS) +2x200 SSD — сможет ли справиться с этой задачей без больших потерь памяти? Стоит ли включить дедупликацию на SSD, где лежат образы виртуалок?
Вопрос навеян Вашим комментарием "Не советую применять дедупликацию в ZFS где-либо, кроме промышленного файлового хранилища".
Всё верно, в таком случае используется snapshot, он позволяет создавать инкрементальные срезы хоть каждую минуту. Но сразу оговорюсь, что не стоит подменять им полноценный бекап на другую машину (а в таком случае снапшоты также прекрасно передаются по сети в инкрементальном режиме).
Вообще, после zfs я уже не представляю, как можно жить без снапшотов и хеширования данных. На моей машине настроено создание снапшота всей системы раз в 15 минут, и это никак не влияет ни на производительность, ни на простои (см. https://github.com/zfsonlinux/zfs-auto-snapshot )
Спасибо всем за поддержку, статье быть, и не одной:)
По поводу установки на флеш или hdd — вообще без разницы, т.к. тот же ZFS прекрасно отделяет и резервирует систему.
А какаое конкретно нутро вы имеете ввиду? OMV состоит их стандартных демонов и веб-морды к ним, никаких хитрых и дополнительных модулей ядра он не использует.
Плагин ZFS — да, требует модуль ядра zfs, но он и так уже присутствует в Proxmox, потому мы и выпилили его из зависимостей. В остальном это всего лишь управлялка.
Кстати, что мне показалось странным, в зависимостях плагина можно обнаружить пакет pve-headers
, а это означает что разработчик допускает возможность совместной установки плагина с кастомным ядром Proxmox.
openmediavult:
perl:any libjs-extjs5 php5-fpm libpam-modules php5-cgi php5-cli php5-pam sudo ethtool python3-dialog acl ifenslave resolvconf iproute2 xfsprogs jfsutils ntfs-3g hdparm sdparm ifupdown mdadm postfix libsasl2-modules bsd-mailx python3-dbus cpufrequtils rsyslog logrotate smartmontools openssl openssh-server openssh-blacklist-extra uuid tzdata nfs-kernel-server proftpd-basic wget util-linux samba samba-common-bin rsync apt-utils snmpd avahi-daemon libnss-mdns iptables monit acpid beep gdisk rrdtool collectd cron anacron cron-apt quota quotatool whiptail lvm2 watchdog ca-certificates perl libjson-perl liblocale-po-perl proftpd-mod-vroot libjavascript-minifier-xs-perl coreutils xmlstarlet mount parted bash diffutils lsof socat rrdcached locales nginx bash-completion python3 python3-apt pm-utils wpasupplicant systemd systemd-sysv btrfs-tools samba-vfs-modules pciutils python3-pyudev python3-natsort jq ntp python3-netifaces udev apt-transport-https python3-lxml debconf debconf-2.0 init-system-helpers
openmediavault-zfs:
linux-headers-amd64 pve-headers linux-headers-3.16.0-4-all openmediavault openmediavault-omvextrasorg zfs-dkms zfsutils-linux zfsutils zfs-zed
В остальном гарантий вам конечно же никто не даст, но для себя я проверил все работает как часы, что будет дальше? — поживем увидим :)
apt install build-essentials
Нужно:
apt install build-essential
dpkg -i openmediavault_*.deb
(Чтение базы данных … на данный момент установлен 79921 файл и каталог.)
Подготовка к распаковке openmediavault_4.1.12_all.deb …
Распаковывается openmediavault (4.1.12) на замену (4.1.12) …
Настраивается пакет openmediavault (4.1.12) …
Creating users/groups ...
Updating local package archive ...
Updating service units ...
Failed to preset unit: Unit file /etc/systemd/system/openmediavault-beep-up.service is masked.
/usr/bin/deb-systemd-helper: error: systemctl preset failed on openmediavault-beep-up.service: No such file or directory
dpkg: ошибка при обработке пакета openmediavault (--install):
подпроцесс установлен сценарий post-installation возвратил код ошибки 1
Обрабатываются триггеры для rsyslog (8.24.0-1) …
При обработке следующих пакетов произошли ошибки:
openmediavault
Пока ничего не нагулил.
Failed to preset unit: Unit file /etc/systemd/system/openmediavault-beep-up.service is masked.
Попробуйте размаскировать юнит и переконфигурировать пакет:
systemctl unmask openmediavault-beep-up.service
dpkg --configure openmediavault_*.deb
Ну, виртуалка точно смысла не имеет. Либо контейнер, либо прямо на хост из репозитория OMV поставить. Смысл вопроса в другом: технически же можно и наоборот — поставить на хост OMV, и туда уже пакетом подтянуть PVE. И там и сям в основе debian. Вопрос что менее криво? Допускаю, что даже некий третий вариант: minimal netinstall debian и потом и то и другое из пакетов накатить. Может так даже лучше зависимости разрулятся. Тогда вопрос, что ставить первым?
All-In-One: Proxmox + OpenMediaVault или ещё одна идея для домашнего NAS