Version 13 (modified by root, at 2015-04-17T10:32:58Z) (diff) |
---|
хранилище iscsi zfs для нищебродов
синопсис
по результатам посещения магазинов имеется четыре жёстких диска, одна нормальная ssd, две ssd ниочень, сервер с резервным блоком питания, батарейкой для контроллера и корзинами для дисков. к великому сожалению, устанавливать на сервер FreeBSD лишено смысла, т.к. под неё нет управления контроллером. в случае выхода из строя жёсткого диска для его замены весь nas придётся перегружать, чтобы добавить новый диск.
кроме того, после нескольких попыток установить FreeBSD выяснилось, что грузится она с этого контроллера только с zfs зеркала. если делать raidz2 или stripe из mirror, то zfsloader по какой-то причине не видит дисков.
поскольку из всех линуксов наибольший опыт работы у меня с CentOS, то я решил остановиться на нём, а именно на версии 6.6, как последней версии без systemd, который ещё предстоит изучать.
установка
перед установкой необходимо дать возможность операционной системе получить доступ до дисков. hp smartarray p410 не умеет jbod, а в рамках использования zfs возможности контроллера по работа с дисковыми массивами мне неинтересны. придётся обойтись костылём: сделать из каждого диска отдельный массив raid0.
внятного описания как грузить линукс с zfs мне найти не удалось, поэтому грузиться я буду с ext4. первые два диска я подготовил вот так:
когда спросят про то, куда писать загрузчик, то нужно выбирать вот такую схему:
если выбрать что-то другое, то ничего не загрузится: после инициализации рейда будет просто чёрный экран с одним мигающим курсором. хотя на виртуальной машине с обычными sas дисками работает, даже если загрузчик записать на md10. видимо, особенность контроллера hp smartarray p410 - не такой он уж и smart.
конфигурирование
система
после установки сразу стоит сделать yum update -y, поскольку пакет zfs on linux предназначен для последней версии ядра и на старьё не установится.
zfs занимает весь объём оперативной памяти для кэша (arc) и в некоторых случаях может не успеть освободить часть памяти, необходимую для работы софта. в этом случае ядро начнёт геноцид приложений и служб, а чтобы этого не произошло в систему нужно добавить swap.
помимо этого на оставшиеся два диска я добавлю ещё зеркала для раздела /boot, кашу маслом не испортишь:
yum install -y gdisk for i in c d; do sgdisk -g \ -n 1:2048:1138687 /dev/sd${i} \ -t 1:fd00 /dev/sd${i} \ -c 1:boot${i} -n 2:1138688:46649343 /dev/sd${i} \ -t 2:fd00 /dev/sd${i} \ -c 2:main${i} done mdadm --grow /dev/md10 \ --raid-devices=4 \ --add /dev/sdc1 \ --add /dev/sdd1 mdadm --create /dev/md22 \ --level=1 --raid-devices=2 \ /dev/sdс2 \ /dev/sdd2 mkswap -L swap /dev/md22
допишу строчку про swap в /etc/fstab:
LABEL=swap swap swap defaults 1 3
и выполню swapon -a, чтобы swap подцепился.
во время установки grub был записан в загрузчик только первого диска. мы все умираем и этот диск когда-то тоже умрёт, поэтому grub нужно записать в загрузчики остальных дисков, чтобы сервер мог загрузиться с любого диска. для этого в /boot/grub/device.map я напишу:
(hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc (hd3) /dev/sdd
и выполню:
for i in a b c d; do grub-install --root-directory=/ /dev/sd${i} grub-install --root-directory=/ /dev/sd${i}1 done
zfs
самый неинтересный раздел. zfs заводится с полпинка, как описано тут:
rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum localinstall --nogpgcheck https://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm yum install kernel-devel zfs
основная часть места на моих четырёх 3тб винтах осталась не разбита. сделаю разделы для zfs
for i in a b c d; do sgdisk \ -n 3:46649344:5859649343 /dev/sd${i} -c 3:ztd${i} done
напомню, что у меня ещё есть три штуки ssd, которые я использую для zil и l2arc. разбивал их я вот таким образом:
sgdisk -g \ -n 1:2048:46139391 /dev/sde \ -c 1:zil1 -n 2:46139392:417335295 /dev/sde \ -c 2:cache1 \ -n 1:2048:46139391 /dev/sdf \ -c 1:zil2 -n 2:46139392:207620095 /dev/sdf \ -c 2:cache2 \ -n 1:2048:207620095 /dev/sdg \ -c 1:cache3
т.е. получилось вот так:
/dev/sde: Number Start (sector) End (sector) Size Code Name 1 2048 46139391 22.0 GiB 8300 zil1 2 46139392 417335295 177.0 GiB 8300 cache1 /dev/sdf: Number Start (sector) End (sector) Size Code Name 1 2048 46139391 22.0 GiB 8300 zil2 2 46139392 207620095 77.0 GiB 8300 cache2 /dev/sdg: Number Start (sector) End (sector) Size Code Name 1 2048 207620095 99.0 GiB 8300 cache3
примерно 15% от
scst
от выбора iscsi target под linux может закружиться голова, но за меня их уже сравнили, поэтому я этого делать не буду, а поверю на слово и сразу выберу scst.
ядро
полезные ссылки:
Attachments (2)
- grub.png (66.8 KB) - added by root at 2015-04-17T07:53:41Z.
- anaconda-disk-layout.png (69.0 KB) - added by root at 2015-04-17T09:19:02Z.
Download all attachments as: .zip