LinuxForum.Fans
Тема

Gentoo на ZFS

Автор: animal 31 сообщений 15128 просмотров
#319394

Разметка:

text
# gdisk -l /dev/sdb
GPT fdisk (gdisk) version 0.8.6

Partition table scan: MBR: protective BSD: not present APM: not present GPT: present

Found valid GPT with protective MBR; using GPT. Disk /dev/sdb: 1953525168 sectors, 931.5 GiB Logical sector size: 512 bytes Disk identifier (GUID): DBF226A2-846C-4283-BCB5-6FD01DC64164 Partition table holds up to 128 entries First usable sector is 34, last usable sector is 1953525134 Partitions will be aligned on 2048-sector boundaries Total free space is 2014 sectors (1007.0 KiB)

Number Start (sector) End (sector) Size Code Name 1 2048 1026047 500.0 MiB 8300 Linux filesystem 2 1026048 1091583 32.0 MiB EF02 BIOS boot partition 3 1091584 2115583 500.0 MiB 8300 Linux filesystem 4 2115584 65030143 30.0 GiB 8300 Linux filesystem 5 65030144 1953525134 900.5 GiB 0700 Solaris root

text

# zpool create -f -o ashift=12 -o cachefile= -O compression=on -m none -R /mnt/gentoo rpool /dev/sdb5
# zfs set dedup=off rpool
# zfs set atime=off rpool
# zfs set xattr=off rpool
# zfs set compression=lz4 rpool
text

# zfs create -o mountpoint=/                      -o compression=off rpool/ROOT
# zfs create -o mountpoint=/usr                   -o compression=off rpool/ROOT/usr
# zfs create -o mountpoint=/usr/portage           -o compression=on  rpool/ROOT/portage
# zfs create -o mountpoint=/usr/portage/distfiles -o compression=off rpool/ROOT/distfiles
# zfs create -o mountpoint=/usr/src               -o compression=on  rpool/ROOT/src
# zfs create -o mountpoint=/var                   -o compression=on  rpool/ROOT/var
# zfs create -o mountpoint=/var/lib/layman        -o compression=on  rpool/ROOT/layman
# zfs create -o mountpoint=/home                  -o compression=on  rpool/HOME

boot

text
# mount -v /dev/sdb3  /mnt/gentoo/boot

Копирую уже собранный stage в /mnt/gentoo

text
# zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
rpool   896G  46,4G   850G     5%  1.00x  ONLINE  /mnt/gentoo
# zpool status
  pool: rpool
 state: ONLINE
  scan: none requested
config:

NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 sdb5 ONLINE 0 0 0

errors: No known data errors # zfs list NAME USED AVAIL REFER MOUNTPOINT rpool 46,4G 836G 136K none rpool/HOME 38,4G 836G 38,4G /mnt/gentoo/home rpool/ROOT 8,02G 836G 99,8M /mnt/gentoo rpool/ROOT/distfiles 2,34G 836G 2,34G /mnt/gentoo/usr/portage/distfiles rpool/ROOT/layman 255M 836G 255M /mnt/gentoo/var/lib/layman rpool/ROOT/portage 838M 836G 838M /mnt/gentoo/usr/portage rpool/ROOT/src 486M 836G 486M /mnt/gentoo/usr/src rpool/ROOT/usr 3,80G 836G 3,80G /mnt/gentoo/usr rpool/ROOT/var 240M 836G 240M /mnt/gentoo/var # zpool export -f rpool # reboot

В /etc/default/grub

text
GRUB_CMDLINE_LINUX_DEFAULT="dozfs=force"
text
# grub2-mkconfig -o /boot/grub2/grub.cfg

Все прописалось grub.cfg:

text
# cat /boot/grub2/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#

### BEGIN /etc/grub.d/00_header ### if [ -s $prefix/grubenv ]; then load_env fi set default="0"

if [ x"${feature_menuentry_id}" = xy ]; then menuentry_id_option="--id" else menuentry_id_option="" fi

export menuentry_id_option

if [ "${prev_saved_entry}" ]; then set saved_entry="${prev_saved_entry}" save_env saved_entry set prev_saved_entry= save_env prev_saved_entry set boot_once=true fi

function savedefault { if [ -z "${boot_once}" ]; then saved_entry="${chosen}" save_env saved_entry fi }

function load_video { if [ x$feature_all_video_module = xy ]; then insmod all_video else insmod efi_gop insmod efi_uga insmod ieee1275_fb insmod vbe insmod vga insmod video_bochs insmod video_cirrus fi }

if [ x$feature_default_font_path = xy ] ; then font=unicode else insmod part_gpt insmod zfs set root='hd1,gpt5' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt5 --hint-efi=hd1,gpt5 --hint-baremetal=ahci1,gpt5 04375699b6712308 else search --no-floppy --fs-uuid --set=root 04375699b6712308 fi font="/ROOT/usr@//share/grub/unicode.pf2" fi

if loadfont $font ; then set gfxmode=auto load_video insmod gfxterm set locale_dir=$prefix/locale set lang=ru_RU insmod gettext fi terminal_output gfxterm if sleep --interruptible 0 ; then set timeout=10 fi ### END /etc/grub.d/00_header ###

### BEGIN /etc/grub.d/10_linux ### menuentry 'Gentoo GNU/Linux' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-04375699b6712308' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd1,gpt3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt3 --hint-efi=hd1,gpt3 --hint-baremetal=ahci1,gpt3 42a6dff3-92b9-4971-83fa-73928787f87b else search --no-floppy --fs-uuid --set=root 42a6dff3-92b9-4971-83fa-73928787f87b fi echo 'Загружается Linux x86_64-3.9.0-geek …' linux /kernel-genkernel-x86_64-3.9.0-geek root=ZFS=rpool/ROOT ro dozfs=force echo 'Загружается начальный виртуальный диск …' initrd /initramfs-genkernel-x86_64-3.9.0-geek } submenu 'Дополнительные параметры для Gentoo GNU/Linux' $menuentry_id_option 'gnulinux-advanced-04375699b6712308' { menuentry 'Gentoo GNU/Linux, с Linux x86_64-3.9.0-geek' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-x86_64-3.9.0-geek-advanced-04375699b6712308' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd1,gpt3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt3 --hint-efi=hd1,gpt3 --hint-baremetal=ahci1,gpt3 42a6dff3-92b9-4971-83fa-73928787f87b else search --no-floppy --fs-uuid --set=root 42a6dff3-92b9-4971-83fa-73928787f87b fi echo 'Загружается Linux x86_64-3.9.0-geek …' linux /kernel-genkernel-x86_64-3.9.0-geek root=ZFS=rpool/ROOT ro dozfs=force echo 'Загружается начальный виртуальный диск …' initrd /initramfs-genkernel-x86_64-3.9.0-geek } menuentry 'Gentoo GNU/Linux, с Linux x86_64-3.9.0-geek (режим восстановления)' --class gentoo --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-x86_64-3.9.0-geek-recovery-04375699b6712308' { load_video set gfxpayload=keep insmod gzio insmod part_gpt insmod ext2 set root='hd1,gpt3' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt3 --hint-efi=hd1,gpt3 --hint-baremetal=ahci1,gpt3 42a6dff3-92b9-4971-83fa-73928787f87b else search --no-floppy --fs-uuid --set=root 42a6dff3-92b9-4971-83fa-73928787f87b fi echo 'Загружается Linux x86_64-3.9.0-geek …' linux /kernel-genkernel-x86_64-3.9.0-geek root=ZFS=rpool/ROOT ro single echo 'Загружается начальный виртуальный диск …' initrd /initramfs-genkernel-x86_64-3.9.0-geek } }

### END /etc/grub.d/10_linux ###

### BEGIN /etc/grub.d/20_linux_xen ###

### END /etc/grub.d/20_linux_xen ###

### BEGIN /etc/grub.d/30_os-prober ### ### END /etc/grub.d/30_os-prober ###

### BEGIN /etc/grub.d/40_custom ### # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above. ### END /etc/grub.d/40_custom ###

### BEGIN /etc/grub.d/41_custom ### if [ -f ${config_directory}/custom.cfg ]; then source ${config_directory}/custom.cfg elif [ -z "${config_directory}" -a -f $prefix/custom.cfg ]; then source $prefix/custom.cfg; fi ### END /etc/grub.d/41_custom ###

Только хрень какая-то с локалями...

/var/log/rc.log
Хотя:

text
# locale
LANG=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8
# cat /etc/env.d/02locale
LC_ALL=" "
LANG="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"

и не важно что я напишу в LC_ALL=" " - все равно ругань в логе, хотя все работает...
может /usr вынес зря?

#319399

zenon, а locale -a что говорит?

#319400
"Fat-Zer⇓" написал:
locale -a
text
# locale -a
C
en_US
en_US.iso88591
en_US.utf8
POSIX
ru_RU
ru_RU.iso88595
ru_RU.koi8r
ru_RU.utf8
russian
#322091

Устал от тормозов ext4 после года активного использования для медиа/торрентов на домашнем сервере, перевел на zfs, сейчас два раздела 300 и 800Гб, посмотрим, оперативку любит, статистика:

скачок использования, как раз виден.

#322149

По моим ощущениям, ZFS тормознее Ext4. А уж как он любит диск насиловать - это словами не передать.

#340334

По прошествии нескольких месяцев пребывания корня на ZFS, вернул его на Btrfs. Очень уж ZFS медленная на Линуксе, очень ощутимо медленнее Btrfs.

#340358

zenon, чем статистику делал?

#340362

"animal" написал:
Без компрессии должно быть быстрее, как мне кажется. И вообще, так в вики написано
IRL иногда быстрее, иногда -- медленнее. Быстрее потому, что читать/писать нужно меньше. И если диск "медленный", т.е. медленнее читает, чем распаковывает, то в целом будет быстрее.

Например: у меня скорость 16МБ/с. Т.е. я прочитаю 160МБ за 10 сек. Однако, если зажать вдвое, получится 5сек. Тогда, и только тогда, когда
1. CPU успеет зажать 160Мб за 5сек
2. у CPU и у носителя не будет других задач (это критично для HDD, который два файла одной головкой сразу писать не умеет)
3. Хватит памяти, ибо чем лучше сжатие, те больше жрёт паковщик. xz жрёт сотни и тысячи метров памяти.
4. ну и наконец, данные такие, что их в принципе можно сжать вдвое. Вот только таких файлов практически не бывает.

Потому вика _обычно_ права, IRL сжатие на лету не даёт профита.
#340392
"drBatty" написал:
zenon, чем статистику делал?

Monitorix.

#340663
"Fat-Zer" написал:
/dev/zero - это стандартное устройство, возвращающее нули при чтении и являющееся чёрной дырой при записи...

выбери другое имя.

Возможно, /dev/zero является "чёрной дырой" при записи, но, имхо, это певдоустройство предназначено для чтения. В качестве чёрной дыры принято использовать /dev/null

#340665
"bobr" написал:
Возможно, /dev/zero является "чёрной дырой" при записи, но, имхо, это певдоустройство предназначено для чтения. В качестве чёрной дыры принято использовать /dev/null
text
NULL(4)                          Linux Programmer's Manual                         NULL(4)

NAME null, zero - data sink

DESCRIPTION Data written to a null or zero special file is discarded.

Reads from the null special file always return end of file (i.e., read(2) returns 0), whereas reads from zero always return bytes containing zero (\0 characters).

null and zero are typically created by:

mknod -m 666 /dev/null c 1 3 mknod -m 666 /dev/zero c 1 5 chown root:root /dev/null /dev/zero

FILES /dev/null /dev/zero

NOTES If these devices are not writable and readable for all users, many programs will act strangely.

SEE ALSO chown(1), mknod(1), full(4)

оба правы.

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