LinuxForum.Fans
Тема

gentoo на zfs

Автор: zenon 46 сообщений 11941 просмотров
#300413

Увидел на лоре такую штуку.
Откуда скорость такая в zfs? Вообще я с ней не успел познакомиться, вот интересно стало.
Создал и смонтировал раздел:

text
#zpool create sdbzfs /dev/sda2
#zfs set dedup=off sdbzfs
#zfs set compress=lzjb sdbzfs
#zfs set atime=off sdbzfs
#zfs set mountpoint=legacy sdbzfs
#zfs create -o mountpoint=legacy sdbzfs/system
#mount -t zfs sdbzfs/system /mnt/zfs

sdbzfs - мой пул.
На обычном рейзере:
Решил померить скорость:

text
#dd if=/dev/zero of=test.img bs=8k count=256k
262144+0 записей получено
262144+0 записей отправлено
 скопировано 2147483648 байт (2,1 GB), 19,5195 c, 110 MB/c

На только созданном zfs:

text
#dd if=/dev/zero of=test.img bs=8k count=256k
262144+0 записей получено
262144+0 записей отправлено
 скопировано 2147483648 байт (2,1 GB), 3,64958 c, 588 MB/c

Откуда такая прыть!? ....

#300461
"zenon" написал:
Откуда такая прыть!? ....

оперативки сколько и на скольо она свободна при каждом из тестов? попробуй файл размера заведомо большего размера, чем оперативка...
если в этом плане условия равны, то сдаётся мне, что у zfs свой механизм кеширования... на лоре на это намекалось...

#300472
"Fat-Zer" написал:
у zfs свой механизм кеширования

А больше не откуда ей ускорятся, сейчас ограничу кэш ей и повторю с размерчиком побольше.
Вроде так:

text
echo "options zfs zfs_arc_max=512M" > /etc/modprobe.d/zfs.conf 
#300484
text
#dd if=/dev/zero of=test.img bs=8k count=1024k
1048576+0 записей получено
1048576+0 записей отправлено
 скопировано 8589934592 байта (8,6 GB), 14,6679 c, 586 MB/c
#dd if=/dev/zero of=test.img bs=8k count=2048k
2097152+0 записей получено
2097152+0 записей отправлено
 скопировано 17179869184 байта (17 GB), 29,1174 c, 590 MB/c
#dd if=/dev/zero of=test.img bs=8k count=4096k
4194304+0 записей получено
4194304+0 записей отправлено
 скопировано 34359738368 байт (34 GB), 57,9869 c, 593 MB/c
#dd if=/dev/zero of=test.img bs=8k count=8192k
8388608+0 записей получено
8388608+0 записей отправлено
 скопировано 68719476736 байт (69 GB), 117,426 c, 585 MB/c

Это наверное потому что /dev/zero и zfs жмет файл:

text
-rw-r--r-- 1 root root 64G 13-02-03 191806 test.img

Только вот раздел на котором пул zfs 28 GB.
/dev/random попробую...

#300489

А вообще вот какой момент интересен, пул я создаю на разделе, и в пуле создаю mountpoints.
Точки монтирования наследуют параметры пула, но я могу для них и изменить параметры, например компрессию:

text
zfs set compress=gzip-9 zero/mountpoint

вроде смысл правильно я уловил?
Вот только не понял как распределяется пространство между точками монтирования в пуле.
Думаю /usr/portage, /usr/src ... и тому подобное очень даже тру разместить на zfs.
Корень как-то под вопросом, тем более собрать никак не получается, если использовать оверлей zfs

text
layman -o https://raw.github.com/pendor/gentoo-zfs-overlay/master/overlay.xml -f -a zfs

То с dracut проблемы, если не использовать geek-sources с флагами zfs и spl не могу собрать...
Migrating Bootable Gentoo on ZFS Root

#300507

Все-таки собрал geek-sources с юзом zfs.
Порядок наложения патчей geek-sources:
/etc/portage/kernel.conf

text
GEEKSOURCES_PATCHING_ORDER="aufs bfq bld branding ck fbcondecor fedora grsecurity ice imq mageia pardus pld reiser4 rt suse uksm vserver zfs"
text
echo 'sys-fs/zfs -kernel-builtin' >> /etc/portage/profile/package.use.mask 
echo 'sys-fs/zfs kernel-builtin' >> /etc/portage/package.use 
echo 'sys-kernel/geek-sources zfs' >> /etc/portage/package.use 
USE="zfs" emerge sys-kernel/geek-sources

http://www.linux.org.ru/forum/general/8534473
В конфиге ядра:

text
CONFIG_KALLSYMS=y
text
#zgrep CONFIG_PREEMPT /proc/config.gz
# CONFIG_PREEMPT_RCU is not set
CONFIG_PREEMPT_NOTIFIERS=y
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set

Хотя CONFIG_PREEMPT можно было в =y оставить.

Дособерусь, попробую с корнем zfs.

#300509

А компьютер какой архитектуры используете?

#300511

Ссылка на досуге полистать.

#300513
"Lupo Alberto" написал:
Вдруг как-то поможет — http://www.funtoo.org/wiki/ZFS_Install_Guide

Спс, посмотрю.

"Lupo Alberto" написал:
А компьютер какой архитектуры используете?

64-bit
В общем-то ядро собрал почти, в чруте, на стабильной ветке.
На десктопе ~amd64, zfs и zfs-kmod встают и так отлично, те, в чруте собрать с корнем на zfs у меня получилось вообще без проблем.
Одно но - /etc/init.d/zfs start и modprobe zfs сработали только после

text
#insmod /lib64/modules/3.7.4-gentoo/addon/zfs/zfs/zfs.ko
#300526

Борьба продолжается...

text
#grub2-mkconfig
/usr/sbin/grub2-probe: ошибка: не удалось получить канонический путь sdbzfs/system.

:(

#300527

Эть...

text
# Bind over pseudo-filesystems
    $ mount -t proc none /mnt/gentoo/proc
    $ mount --rbind /dev /mnt/gentoo/dev
    $ chroot /mnt/gentoo /bin/bash
    $ env-update && source /etc/profile
    $ emerge -v =sys-boot/grub-1.99_rc99

# Setup the config file $ cat /proc/mounts | grep -v rootfs > /etc/mtab $ grub-mkconfig -o /boot/grub/grub.cfg

$ grub-install /dev/sdb

И после прочтения как-то так сразу:

text
#cat /proc/mounts | grep -v rootfs > /etc/mtab
#grub2-mkconfig -o /boot/grub2/grub.cfg
Генерируется grub.cfg …
Найден образ linux: /boot/kernel-genkernel-x86_64-3.7.5-geek
Найден образ initrd: /boot/initramfs-genkernel-x86_64-3.7.5-geek
Найден Gentoo Base System release 2.1 на /dev/sdb2
Найден Debian GNU/Linux (7.0) на /dev/sdb6
завершено
#300676
"Lupo Alberto" написал:
Вдруг как-то поможет — http://www.funtoo.org/wiki/ZFS_Install_Guide

Не понял, в funtoo сразу есть zfs? Патчить не надо? Не понял...
Про конфигурацию ядра мельком есть, но ни как патчить, ни какое ядро ставить...

#300812

Ох уж мне этот подрыв с zfs...
geek-sources через пень-колоду собрать удалось, но отвалилось всё usb... не понял где можно задать вопрос по этому оверлею, только английский форум нашёл хотя вроде наш чел делает.
Патчи накладываются вроде нормально на gentoo-sources.

text
# make -C /usr/src/linux modules_prepare 
# env EXTRA_ECONF='--enable-linux-builtin' ebuild /usr/portage/sys-kernel/spl/spl-0.6.0_rc14.ebuild clean configure
# cd /var/tmp/portage/sys-kernel/spl-0.6.0_rc14/work/spl-spl-0.6.0-rc14
# ./copy-builtin /usr/src/linux

# env EXTRA_ECONF='--with-spl=/usr/src/linux --enable-linux-builtin' ebuild /usr/portage/sys-fs/zfs-kmod/zfs-kmod-0.6.0_rc14.ebuild clean configure # cd /var/tmp/portage/sys-fs/zfs-kmod-0.6.0_rc14/work/zfs-zfs-0.6.0-rc14 # ./copy-builtin /usr/src/linux

text
#eselect kernel list
Available kernel symlink targets:
  [1]   linux-3.7.4-gentoo *

Конфиг ядра вот эти рекомендации выполнял:

text

When you get up to the kernel, make sure that you disable the CFQ scheduler, and turn on No-op (It's the default one once you disable all schedulers). The reason for this is because ZFS has its own scheduler and the CFQ one conflicts with it. Go to your kernel config, and make sure you have the following: (there should be a /usr/src/linux symlink as well)

ZLIB_INFLATE/DEFLATE must be compiled into the kernel (not as a module). > ZLIB_INFLATE [=y], ZLIB_DEFLATE [=y]

General setup ---> > [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support > () Initramfs source file(s)

[*] Enable loadable module support ---> [*] Module unloading

Device Drivers ---> > Generic Driver Options ---> >> [*] Maintain a devtmpfs filesystem to mount at /dev

Cryptographic API ---> <*> Deflate compression algorithm <*> Zlib compression algorithm

Собралось вроде, псмотрим на работоспособность...
На счёт шедулера не понял, почему CFQ нельзя, на лоре упоминание было что оставили при сборке CFQ

#300857

gentoo-sources-3.7.4 (linux-3.7.4-gentoo) пропатчил, собрал, пока корень не на zfs, работает вроде.
Конфиг если нужен тут [url=ftp://linuxru.org/kernel/kernel-config-x86_64-3.7.4-gentoo-zfs-spl]kernel-config-x86_64-3.7.4-gentoo-zfs-spl[/url].
Конфиг изначально из Aptosid, плюс сказанное в предидущем посте.
..
Ещё один вариант - Gentoo Hardened ZFS rootfs with dm-crypt/luks

#300873
"zenon" написал:
geek-sources через пень-колоду собрать удалось, но отвалилось всё usb... не понял где можно задать вопрос по этому оверлею, только английский форум нашёл хотя вроде наш чел делает.Патчи накладываются вроде нормально на gentoo-sources.

ЕМНИП он на #gentoo-ru бывает... покрайнемерь там geek-sources обсуждают переодически...

#300909

Я тоже пару дней назад поставил. Делал по funtoo-wiki, ядро geek-sources-3.7.5.
Про шедулер забыл - оставил CFQ, но оно и так работает.
Самая большая проблема была с initramfs: better-initramfs как я понял пока не поддерживает zfs, Bliss-initramfs не заработала.
В итоге собрал initramfs генкернелом и с ней всё ок.

#300912
zenon написал:
Ох уж мне этот подрыв с zfs...
geek-sources через пень-колоду собрать удалось, но отвалилось всё usb... не понял где можно задать вопрос по этому оверлею, только английский форум нашёл хотя вроде наш чел делает.

Ты про оверлей init6? Спроси на лоре. Ник init_6.
Вот буквально сегодняшняя тема https://www.linux.org.ru/forum/general/8808762

#300913
"Fat-Zer" написал:
если мне не изменяет память он на #gentoo-ru бывает...
"animal" написал:
Ты про оверлей init6? Спроси на лоре. Ник init_6.

Понял.
Пока просто с патчем gentoo-sources повожусь.

"animal" написал:
Самая большая проблема была с initramfs: better-initramfs как я понял пока не поддерживает zfs, Bliss-initramfs не заработала.

Там вообще объяснение все как-то через вон чё, ничерта не понял.

"animal" написал:
В итоге собрал initramfs генкернелом и с ней всё ок.

Funtoo? А как boot-update подхватил сам?

text
boot-update 1.6.11 /
Copyright 2009-2012 Funtoo Technologies

[use option "-l" for license info, "-h" for help]

* Generating config for grub...

* ERROR : (root=auto) - / entry in /etc/fstab not recognized (/ROOT/funtoo/). * ERROR : No matching kernels or boot entries found in /etc/boot.conf. * Did not complete successfully.

Хотя я пул с stage3 и фантой прибил уже...
Главную проблему zfs в ядре победил вроде.... но только вроде, надо посмотреть ещё.

#300914
"zenon" написал:

* ERROR : (root=auto) - / entry in /etc/fstab not recognized (/ROOT/funtoo/).
* ERROR : No matching kernels or boot entries found in /etc/boot.conf.

Нужно /etc/fstab привести в соответствие с системными реалиями и boot-update настроить.

Войдите или зарегистрируйтесь, чтобы ответить.