klink0v (klink0v) wrote,
klink0v
klink0v

Category:

Установка Linux под ProxMox/KVM, часть 3

Третий из четырёх чисто технических постов про установку Linux. Далее — оптимизация дисковой подсистемы.


  1. Если у вас используется "честный" RAID-контроллер либо SATA-диски с реально работающей поддержкой NCQ, то имеет смысл отключить встроенный в ядро элеватор IO-операций, дабы не мешал железкам нормально работать. Для этого в /etc/default/grub добавляем параметр загрузки ядра "elevator=noop".
    Должно получиться как-то так:

    GRUB_CMDLINE_LINUX="elevator=noop"

    После чего говорим "update-grub".

  2. Если у вас старенький HP SmartArray P400, то при желании можно заменить его драйвер "cciss" на более новый "hpsa". Для этого в /etc/modprobe.d/hpsa.conf пишем

    options hpsa hpsa_allow_any=1
    blacklist cciss

    после чего произносим

    update-initramfs -u

    и перезагрузка.

  3. Оптимизируем уже имеющиеся файловые системы на работу с RAID-массивом (если оный имеется). Новые файловые системы также создаем с учетом данных требований.
    Сперва нам потребуется рассчитать параметры "stride" и "stripe-width".
    Stride - это количество блоков файловой системы (в штуках), которое умещаются в одном chunk-е RAID-массива. Так, например, если у HP-шных RAID-контроллеров дефолтный размер chunk-а равен 128 килобайт, а размер блока у ext3/4 по умолчанию равен 4 килобайта, то Stride получается 128/4=32 (штуки).
    Stripe-Width - это количество блоков файловой системы (в штуках), которое умещается в одном страйпе RAID-массива. На практике это число обычно равно размеру Stride, помноженному на количество дисков с уникальными данными (для Raid1 и Raid1+0 это "количество дисков пополам", для Raid0 равно общему количеству дисков, для raid5 - количеству дисков минус один и т.п.). Если у нас Raid1+0 из 8-ми физических дисков, то StripeWidth=Stride*4=32*4=128.
    Эти параметры файловой системы можно менять "на лету" при помощи tune2fs.

    tune2fs -E stride=32,stripe_width=128 /dev/sda4


  4. Далее идёт немного спорная настройка. Некоторые советуют увеличивать значение read-ahead (количество пред-читаемых блоков с блочного устройства), утверждая, что это ведет к заметному росту производительности систем на базе HP-шных SmartArray-ев. Конечно, в каждом конкретном случае нужно проверять самостоятельно. Если решите последовать этому совету, то в /etc/rc.local нужно будет дописать

    /sbin/blockdev --setra 8192 /dev/sda
    exit 0


  5. Конкретно ProxMox для своей работы требует наличия LVM и отдельного логического тома, куда он будет складывать образы виртуальных машин. Итак.

    apt-get install lvm2

    Размечаем пространство под физический том для LVM, например, при помощи parted. Создаем на этом разделе физический том для LVM.

    pvcreate -M2 --dataalignment 128K /dev/sda5

    "M2" означает вторую версию метаданных, dataaligment - как выравнивать данные. Я в качестве множителя беру chunk физического RAID-массива.
    Создаем группу томов:

    vgcreate -M 2 -s 16M main /dev/sda5

    "M" - версия метаданных, "s" - размер chunk-а применительно к логическому тому, "main" - имя группы томов (придумываем сами). Почему 16 мегабайт? А не знаю, просто мне так захотелось.
    Создаем логический том для хранения виртуалок. Важно: занимаем не всё свободное место. Немного оставляем для lvm snapshots и прочих непредвиденных расходов. Помните, что добавить еще дискового пространства к логическому тому можно без проблем, а вот наоборот...

    lvcreate -L 3T -n vz main

    Аргументы команды: объем, имя логического тома, имя группы томов.

  6. Создаём файловую систему на логическом томе (не забыли про stride и stripe-width?). Еще имеет смысл вручную задать количество inod-ов, ибо на больших разделах под таблицы инодов утилита с настройками по умолчанию зарезервирует неоправданно много места (подробнее здесь).

    mkfs.ext3 -b 4096 -I 128 -m 0 -L vzfs -E stride=32,stripe-width=128 -O sparse_super,large_file -N 786432 /dev/mapper/main-vz

    Также я обычно отключаю автоматическую проверку этой файловой системы, поскольку проверяться она может о-о-о-о-очень долго.

    tune2fs -c 0 -i 0 /dev/mapper/main-vz


  7. Примонтируем только что созданную систему. Для этого узнаем ее UUID.

    blkid /dev/mapper/main-vz

    И вписываем его в /etc/fstab, предварительно создав директорию "/var/lib/vz".

    UUID=67f250eb-d8e2-4016-aa68-f5f6724ed160 /var/lib/vz     ext4 noatime,barrier=0 0 0


  8. Проверяем, что смонтировалось. Перезагружаемся и приступаем к установке ProxMox-а.

Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 12 comments