Правильная установка FreeBSD 9.1 на SSD

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Leonardo
ефрейтор
Сообщения: 66
Зарегистрирован: 2008-08-04 8:40:56
Откуда: Волгоград

Правильная установка FreeBSD 9.1 на SSD

Непрочитанное сообщение Leonardo » 2013-01-11 11:00:51

Ставлю систему на SSD 60 Gb на ZFS без разделов, без свопа, скриптом:

Код: Выделить всё

#!/bin/sh
#

hdd=$1;
zpool=$2;

umount /dev/md1
mdmfs -s 512M md1 /tmp
sysctl kern.geom.debugflags=0x10
dd if=/dev/zero of=/dev/${hdd} bs=1024k count=10

zpool create -f ${zpool} /dev/${hdd}
zpool set bootfs=${zpool} ${zpool}

zfs set atime=off ${zpool}
zfs set checksum=fletcher4 ${zpool}
zfs set mountpoint=/mnt ${zpool}
zpool export ${zpool}
zpool import -o cachefile=/tmp/zpool.cache ${zpool}

zfs create ${zpool}/usr
zfs create ${zpool}/usr/home
zfs create ${zpool}/var

zfs create -o compression=on -o exec=on -o setuid=off ${zpool}/tmp
zfs create -o compression=lzjb -o setuid=off ${zpool}/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off ${zpool}/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off ${zpool}/usr/ports/packages
zfs create -o compression=lzjb -o exec=off -o setuid=off ${zpool}/usr/src
zfs create -o compression=lzjb -o exec=off -o setuid=off ${zpool}/var/crash
zfs create -o exec=off -o setuid=off ${zpool}/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off ${zpool}/var/db/pkg
zfs create -o exec=off -o setuid=off ${zpool}/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off ${zpool}/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off ${zpool}/var/mail
zfs create -o exec=off -o setuid=off ${zpool}/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off ${zpool}/var/tmp

#zfs create -V 4G ${zpool}/swap
#zfs set org.freebsd:swap=on ${zpool}/swap
#zfs set checksum=off ${zpool}/swap

chmod 1777 /mnt/tmp
chmod 1777 /mnt/var/tmp
cd /mnt ; ln -s usr/home home

cd /usr/freebsd-dist
export DESTDIR=/mnt
for file in base.txz kernel.txz games.txz doc.txz src.txz; do (cat $file | tar --unlink -xvpJf - -C ${DESTDIR:-/}); done

cp /tmp/zpool.cache /mnt/boot/zfs/zpool.cache

cat << EOF > /mnt/etc/rc.conf
# ZFS
zfs_enable="YES"
EOF

echo 'zfs_load="YES"' >> /mnt/boot/loader.conf
echo 'vfs.root.mountfrom="zfs:'${zpool}'"' >> /mnt/boot/loader.conf
touch /mnt/etc/fstab

zfs set readonly=on ${zpool}/var/empty
zfs umount -a
zfs set mountpoint=legacy ${zpool}
zfs set mountpoint=/tmp ${zpool}/tmp
zfs set mountpoint=/usr ${zpool}/usr
zfs set mountpoint=/var ${zpool}/var

dd if=/boot/zfsboot of=/dev/${hdd} count=1
dd if=/boot/zfsboot of=/dev/${hdd} skip=1 seek=1024
echo "script: done"
Все устанавливается нормально, загружается работает, но при старте до загрузки ядра большая задержка - секунд 30.
Иногда выдает сообщение "zfsboot error 128" ждет пять секунд и начинает грузить ядро.
Собственно вопрос как правильно ставить систему на SSD, нужно ли как-то тюнить ZFS с учетом размера блока в 4к, может, что-то ещё нужно тюнить в настройках (чтоб быстро не убить SSD)? И вообще нормальная схема ZFS без разделов на SSD? Что-то не понял как у ZFS с тримом и нужен ли он вообще? Как будет жить система без свопа (памяти 4Gb)?
Прошу помощи т.к. читал много обо всем, но ниче конкретного не прочитал, четкой картины не сложилось, в голове каша, подскажите у кого есть опыт.
Последний раз редактировалось f_andrey 2013-01-11 12:57:35, всего редактировалось 1 раз.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения.
#define TRUE = FALSE
#define FALSE = TRUE

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Leonardo
ефрейтор
Сообщения: 66
Зарегистрирован: 2008-08-04 8:40:56
Откуда: Волгоград

Re: Правильная установка FreeBSD 9.1 на SSD

Непрочитанное сообщение Leonardo » 2013-02-01 12:54:00

Порыл дополнительно в сторону разметки дисков с учетом 4к блоков.
Как я понимаю проблемы в том, что система общается с диском блоками 512 байт, а контроллер диска пишет блоками 4к нет. Вся проблема в том, что некоторые системы размечают разделы не кратно блокам 4к к примеру начиная с 63 блока(512) как у Винь ХР. Именно в этом и весь косяк, и необходимо сдвигать разделы на 1 блок, или создавать разделы начиная с 32 или 40 или 48 или 64 и т.д. блока размером 512. Помимо сдвига разделов ещё неплохо было бы, чтобы система общалась с диском блоками по 4 к, новые оси(винь 7 и т.п.) делают сдвиг и размер блока автоматически.
В zfs можно также указать размер блока в 4k, это делается путём создания пула поверх фиктивной прослойки созданной утилитой gnop с размером блока в 4к. Таким образом, для правильного создания пула zfs на диске новых моделей с размером блока 4к необходимо создать gpart-ом раздел начиная с 40 блока(512) и прослойкой gnop подменить размер блока в 512(который сообщает контроллер диска) размером в 4 к и поверх создать пул.

Внимание мой вопрос: как быть со сдвигом, если zfs пул создается на "голый" диск без разделов, размер блока понятно, мы укажем при помощи gnop?
Или нет ни какого сдвига, пул начинается от начала диска? Вот тут знаний о структуре zfs пула у меня не хватает.

Прошу прощения за много букв, и за кривое толкование.
#define TRUE = FALSE
#define FALSE = TRUE

freewood
рядовой
Сообщения: 25
Зарегистрирован: 2011-10-30 21:49:06

Re: Правильная установка FreeBSD 9.1 на SSD

Непрочитанное сообщение freewood » 2013-02-01 23:21:18

Давно делал по факу, но с разделами, если поможет, то принцип был такой:
делаем схему gpt
создаем разделы, первый раздел под boot со смещением (я делал на 40)
с помощью gnop делаем эмуляцию (если я правильно выражаюсь) диска с 4к сектором
делаем на нем zfs, в итоге она думает, что находится на диске с 4к секторами. Первый раздел у меня выровнен, так что все тютелька в тютельку.

Аватара пользователя
iZEN
ст. лейтенант
Сообщения: 1089
Зарегистрирован: 2007-09-15 16:45:26
Контактная информация:

Re: Правильная установка FreeBSD 9.1 на SSD

Непрочитанное сообщение iZEN » 2013-02-05 1:12:27

GNU/Linux — это не Unix и даже никогда им не был, и, что самое смешное, никогда им не станет — GNU's Not Unix

Leonardo
ефрейтор
Сообщения: 66
Зарегистрирован: 2008-08-04 8:40:56
Откуда: Волгоград

Re: Правильная установка FreeBSD 9.1 на SSD

Непрочитанное сообщение Leonardo » 2013-02-07 16:02:16

Спасибо откликнувшимся, ну с gpt разметкой понятно. Разобрался кажись, значит zfs pool создаётся от начала диска, причем сначала идут две метки по 256к, после них по смещению 512к до 4М идет загрузочный блок именно из-за этого мы при установке пишем загрузчик в первый сектор 512 байт(в начале дика есть 8k свободного места), а потом смещаемся на 1024 блока как раз на 512к пропуская эти две метки и попадаем в загрузочный блок.

Код: Выделить всё

dd if=/boot/zfsboot of=/dev/ada0 count=1
dd if=/boot/zfsboot of=/dev/ada0 skip=1 seek=1024
Так это я к чему: получается, что основная часть данных начинается со смещения 4Мб т.е. с 4194304 байта кратного размеру 4k.
Таким образом если ssd диск отдает инфу о размере блока в 4к просто создаем пул поверх диска без манипуляций с gnop, если говорит о блоке в 512 байт, то делаем подмену размера блока при помощи gnop. Ещё по этой теме у меня остался вопрос с тримом.
#define TRUE = FALSE
#define FALSE = TRUE