Создание хостинга сайтов на базе Proxmox + HP ProLiant

Доброе время суток.

Итак, обратились ко мне с задачей переезда на собственный сервер с трех VPS около 100 сайтов, в том числе новостей с базой данных MySQL размером около 20 Гб, и общим весом мелких (в основном) файлов на хостинге около 500 Гб.
Сам сервер был установлен без моего участия в стойку провайдера, даны два IP адреса — доступ к админке сервера и IP адрес хостинга.
Картинки для привлечения внимания:
imageimage

Конфигурация сервера:

Proc 1: 2267 MHz
Execution technology: 6/6 cores; 12 maximum threads
Memory technology: 64-bit capable
Processor 1 Internal L1 Cache: 192 KB
Processor 1 Internal L2 Cache: 1536 KB
Processor 1 Internal L3 Cache: 12288 KB
Proc 2: 2267 MHz
Execution technology: 6/6 cores; 12 maximum threads
Memory technology: 64-bit capable
Processor 2 Internal L1 Cache: 192 KB
Processor 2 Internal L2 Cache: 1536 KB
Processor 2 Internal L3 Cache: 12288 KB

HDD:
1 PLEXTOR PX-256M
2 WDC WD1000DHTZ

ОЗУ
PROC 1 DIMM 4B: 16384 MB 1333 MHz
PROC 1 DIMM 6C: 16384 MB 1333 MHz
PROC 2 DIMM 4B: 16384 MB 1333 MHz
PROC 2 DIMM 6C: 16384 MB 1333 MHz


По желаемому на сервере:
1. Windows 2012 Server для каких-то целей, связанных с 1С.
2. Основной хостинг (высоконагруженный).
3. Машина для тестов

В процессе настройки убедил хозяев приобрести еще один IP — адрес для тестовой машины

Приобретены две лицензии ISP Panel для основного хостинга и тестового хостинга.

Собственно с выбором *nix ОС вариантов не было, настаивали на CentOS 6.

Приятно поразила админка сервера — все удобно, понятно.
Итак, виртуализацию (исходя из задач) решил делать на ProxMox, для чего качнул образ диска .
В админке зацепил образ со своей машины, как образ CD- диска в разделе virtual media. Был удивлен тем, что образ не был залит на сервер, а вытягивался прямо с моей машины по мере загрузки. Весь процесс установки занял около 1.5 часов. У меня канал 60 Мб, но тут еще народ работает смотрит онлайн и качает медиа-файлы.
Что надо отметить: на ssd установлен proxmox, разметку диска отдал на откуп инсталляции, все «по умолчанию». То есть WD остался девственно-чистым.
В итоге на IP адресе хостинга имеем админку Proxmox по адресу: IP:8006/.
Надо сказать, что по времени был ограничен, поэтому сильно не ковырялся с машинами «CT», попробовал залить и взлететь взлететь шаблон CentOS, однако он показывал только черный экран. Надо сказать, что до этого я поднимал шаблоны для CT машин у себя на локальном сервере. ИМХО их преимущество — доступ ко всем ресурсам сервера.

Заливаем в машину образ CentOS. Тут было некое неудобство от ProxMox — можно качнуть образ не по ссылке, а только имеющийся у себя на харде. Так что пришлось сначала лить к себе, потом выливать на сервер.

С WD (/dev/sdb), который должен быть основным хранилищем поступил следующим в консоли Proxmox образом по статье отсюда:

0. aptitude update && aptitude upgrade
1. pvcreate /dev/sdb
2. vgcreate ws /dev/sdb
3. lvcreate -n data -L980G ws (размер 980 не помню как вычислил, по моему понижал от Террабайта по 10 гигов)
4. mkfs.ext4 -L data /dev/ws/data
тут пришлось достаточно долго посидеть глядя на циферки, бегущие в консоли, поэтому между пунктом 0 и пунктом 1 лучше вставить aptitude install screen. Тогда пункт 4 изменится таким образом: screen -dmS createfs mkfs.ext4 -L data /dev/ws/data
5. echo "/dev/ws/data /var/lib/ws ext4 defaults 0 1" >> /etc/fstab
6. mount -a


Таким образом я получил дополнительное хранилище для виртуальных дисков машин.
А вот swap файлы было решено размещать на ssd. Про это ниже.

Про настройки прав доступа. Так как пользователь будет не root, то заводим его и даем права доступа на хранилище и машины. Для этого зашел в датацентр, закладка группы, создал группу «users». Ввел пользователя в группу «users», в закладке пользователи.
Надо отметить, что если мы заходим рутом, то в форме авторизации Proxmox необходимо выбрать авторизацию ОС — «pam», пользователя я же завел уже с авторизацией непосредственно из базы пользователей proxmox, поэтому при входе необходимо выбирать тип авторизации «pve».
Так же очередной «ЗЮ» в сторону создателей Proxmox — прикрутить бы генерацию паролей в админку, неудобно заводить пользователей количеством более одного.
Идем в Датацентр, закладка Разрешения и добавляем группе «users» админские права (ну хозяева же) на доступ к хранилищу ws, и на создание виртуальных машин. Пока достаточно.

Сначала решил создать машину для тестового хостинга. Создаем VM «tests» (машина 100) со следующими характеристиками:
ОЗУ 4 Гб; процессор «по умолчанию kvm64», СД — привод образ CentOS, HDD — образ диска от vmvare (vmdk), кэширование write back, 120 Gb на хранилище ws, сетевая Intel на бридже vmbr0. Про сетевые функции расскажу чуть ниже, когда будем делать хостинг для рабочих сайтов.
Ставим centos, цепляем репозитории, обновляемся, ставим mc. atop, настраиваем resolv.conf и прочее прочее. На этом остановил виртуальную машину подумал.
Так как я потратил на установку образа ОС час, то я решил оптимизировать этот процесс для следующих n-машин. Поэтому в консоли зашел /var/lib/ws/images/100, и скопировал образ диска vmdk в папку /home
Устанавливаем ip адрес интерфейса eth0 виртуальной машины (пока из консоли proxmox).

cd /etc/sysconfig/network-scripts
cat ifcfg-eth0
DEVICE=eth0
HWADDR= (ваш mak адрес, можно посмотреть в админке proxmox)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=<то, что дал провайдер>
NETMASK= <то, что дал провайдер>
GATEWAY= <то, что дал провайдер>
DNS1=8.8.8.8
DNS2=8.8.4.4

service network restart


Далее с сайта ISPmanager раздел установка разворачиваем необходимые сервисы. Некоторое время прошло, машина взлетела, заработала. Ничего не стал трогать в конфах, оставил все по-умолчанию.

Что касается опций proxmox для виртуальной машины, то необходимо оговориться:
1. Запуск при загрузке — ставлю «Да» или «Нет» руками. По-умолчанию «Нет», будьте внимательны.
2. CPU units -совершенно неясная штука, которая тем не менее влияет на производительность виртуалок. Пошел следующим путем:

vzcpucheck в консоли proxmox. 
vzcpucheck Current CPU utilization: 4000 
OpenVZ VM is getting 1000 divided by 906755 and multiplied by 100 = 0.1% of the CPU time
So if I want to give 5 percent of guaranteed time to my VPS, I would enter CPU Units = 45337


Надо сказать для каждой созданной машины так и сделал — CPU Units = 45000.

Что делать с высоко нагруженным хостингом мысль зрела давно:
Создать виртуалок по принципу один сервер — один сервис. Кроме того, раз у нас proxmox имеет внешний IP хостинга, то будем ipfirewall разводить подключения в нужные нам машины. Так же создаем «внутреннюю» сетку, например 192.168.12.0/24.
В Proxmox для этого решил поднять интерфейс dummy:

modprobe dummy

Далее в админке Proxmox, Датацентр — Сеть создаем vmbr1 (бридж) на базе интерфейса dummy.
Задаем ip адрес proxmox 192.168.12.1. Подготовка сделана.
Поехали.
1 машина: mysql (vm101). Опытным путем было выяснено, что база такого объема данных (20Гб) хорошо существует на 27 Гб ОЗУ. Процессор 4 сокета по 3 ядра. А вот хард цепляем как и машина №1. Когда Proxmox создает машину, копирую из /home образ hdd первого CentOS (если Вы помните, там не настроена сеть и hostname, но все уже обновлено и готово к запуску). Сетевая карта на бридже vmbr1
Настраиваем сетевой интерфейс. Так как eth0 у нас остался на машине для тестов, то нужно создать в /etc/sysconfig/network-scripts файл ifcfg-eth1 следующего содержания:
cd /etc/sysconfig/network-scripts
cat ifcfg-eth1
DEVICE=eth1
HWADDR= (ваш mak адрес, можно посмотреть в админке proxmox)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.12.10
NETMASK= 255.255.255.0
GATEWAY= 192.168.12.1
DNS1=8.8.8.8
DNS2=8.8.4.4

service network restart


Ставим необходимый репозиторий Percona и сам Percona.
Конфиг mysql привел ниже (частично он переехал со старого сервера, частично был оптимизирован) :
cat my.cnf
[mysqld]
user=mysql
skip-external-locking
low-priority-updates

port= 3306
wait_timeout = 120

#На случай погибели базы раскомментировать
#innodb_force_recovery = 5

datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock

symbolic-links=0

key_buffer              = 256M
key_buffer_size         = 256M
max_allowed_packet      = 4M
thread_stack            = 2048K
thread_cache_size       = 8086
thread_concurrency      = 8

query_cache_limit       = 1G
query_cache_size        = 1G

#myisam-recover          = BACKUP
max_connections         = 1400
table_definition_cache  = 8000

join_buffer_size       =4M

tmp_table_size         = 768M
max_heap_table_size    = 768M
max_tmp_tables = 500
character-set-server = utf8
expire_logs_days=2
innodb_data_home_dir=/var/lib/mysql
innodb_data_file_path=ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/lib/mysql
innodb_file_per_table=1

# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_open_files=1200
innodb_buffer_pool_size = 22G
innodb_buffer_pool_instances = 22
innodb_additional_mem_pool_size = 512M

# Set .._log_file_size to 25 % of buffer pool size
innodb_log_file_size = 64M
innodb_log_buffer_size = 4M
innodb_lock_wait_timeout = 50
innodb_flush_log_at_trx_commit = 2
innodb_flush_method=O_DIRECT
innodb_doublewrite=0
innodb_support_xa=0
innodb_checksums=0
innodb_io_capacity = 120
max-connect-errors = 10000

back_log = 500
binlog_cache_size = 1M
sync_binlog = 0
key_cache_division_limit=70

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 64M
write_buffer = 64M
key_cache_division_limit=70

Что касается всевозможных значений, то это тема отдельной статьи, которая возможно появится позже. Поэтому привожу плод своих набегов на MySQL как есть, без комментариев.


Что касается установки nginx как proxy к apache, то на эту тему куча статей. Плюс в той же виртуалке завожу exim + dovecot с базой в MySQL.
Виртуальная машина nginx (vm102). Образ диска взят так же копированием после создания виртуальной машины. CPU 3 сокета, 3 ядра; ОЗУ 4 Гб. Сетевая карта на бридже vmbr1.
Приведу конфиг nginx.
cat nginx.conf
user  nginx;
worker_processes  6;
#Если будет чудить, раскомментировать следующие две строки, а предыдущую закомментировать. 
#worker_processes auto;
#worker_cpu_affinity 010000 100000 001000 000100 000010 000001;

error_log  /var/log/nginx/error.log;
pid        /var/run/nginx.pid;

events {
    worker_connections  2048;
    }

http {
    include       /etc/nginx/mime.types;
    default_type   text/html;

    access_log  /var/log/nginx/access.log;

    sendfile        on;
    keepalive_timeout   20;
    tcp_nodelay        on;

    gzip  on;
    gzip_comp_level 2;
    gzip_proxied any;
    gzip_types  text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;

    client_max_body_size 64m;

    include /etc/nginx/conf.d/*;
}

cd /etc/nginx/conf.d
cat default

server {
        listen   *:80; ## listen for ipv4; this line is default and implied
        access_log /var/log/nginx/access.log;
        location /nginx_status {
            stub_status on;
            access_log  off;
            allow       127.0.0.1;
            deny        all;
        }
        server_name nginx.xxx.ru;

location / {
        proxy_pass http://192.168.12.20:80/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_connect_timeout 60;
        proxy_send_timeout 60;
        proxy_read_timeout 90;
    }

}


192.168.12.20 — адрес apache с ISPManager-ом
192.168.12.30 — адрес nginx (и exim), то бишь машина, которая смотрит в сеть, на которую будем заворачивать траффик по портам http/https/mail


Создаем apache (vm103). CPU 4 сокета по 2 ядра, ОЗУ 16 Гб, 1-ый HDD 120 Gb для готового образа, второй HDD 500Gb для сайтов, Сетевая карта на бридже vmbr1. Переливаем образ уже установленного CentOS, настраиваем:

cd /etc/sysconfig/network-scripts
cat ifcfg-eth1
DEVICE=eth1
HWADDR= (ваш mak адрес, можно посмотреть в админке proxmox)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=192.168.12.20
NETMASK= 255.255.255.0
GATEWAY= 192.168.12.1
DNS1=8.8.8.8
DNS2=8.8.4.4

service network restart


Как нам установить ISPManager на хостинг, расположенный внутри локальной сети? Ничего более умного в голову не пришло, кроме как задать ProxMox другой доступный нам IP адрес — от машины tests, машине tests отключить автозапуск, и на время перевести сетевой интерфейс в бридж vmbr0. После ребута Proxmox, внутри машины apache(vm103):
cd /etc/sysconfig/network-scripts
cat ifcfg-eth1
DEVICE=eth1
HWADDR= (ваш mak адрес, можно посмотреть в админке proxmox)
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=none
IPADDR=<то, что дал провайдер>
NETMASK= <то, что дал провайдер>
GATEWAY= <то, что дал провайдер>
DNS1=8.8.8.8
DNS2=8.8.4.4

service network restart


Цепляем HDD 500 GB на /var/www:

fdisk /dev/sdb
<<создаем раздел размером с диск>>
mkfs.ext4 -L data /dev/sdb1
echo "/dev/sdb1 /var/www ext4 defaults 0 1" >> /etc/fstab
6. mount -a


Далее с сайта ISPmanager раздел установка разворачиваем необходимые сервисы.
Отключаем Posfix, courier (у нас же почтовик не тут), прочие ненужные сервисы по вкусу. Выключаем mysql, говорим ISPmanager-у что сервер mysql находится на другой машине. Это делается из ISPManager-а в разделе MySQL.
Возвращаем настройки как было (apache vmbr1, 192.168.12.20; tests автозапуск при загрузке; proxmox ip — адрес хостинга).
В proxmox (192.168.12.1; <Реальный IP>) добавляю в rc.local проброс порта 1500 (админка ISPManager) на apache (192.168.12.20), проброс ssh к виртуалкам, проброс портов на nginx:
cat /etc/rc.local
/sbin/iptables -F
/sbin/iptables -X

/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 22003 -j DNAT --to-destination 192.168.12.10:22003
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 22002 -j DNAT --to-destination 192.168.12.20:22002
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 22004 -j DNAT --to-destination 192.168.12.30:22004
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 1500 -j DNAT --to-destination 192.168.12.20:1500

#nginx
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 80 -j DNAT --to-destination 192.168.12.30:80
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 445 -j DNAT --to-destination 192.168.12.30:445
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 443 -j DNAT --to-destination 192.168.12.30:443
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 25 -j DNAT --to-destination 192.168.12.30:25
/sbin/iptables -t nat -A PREROUTING -p tcp -d <реальный IP> --dport 110 -j DNAT --to-destination 192.168.12.30:110



Что касается запуска IPSManager, который требует на локальной машине ip, к которому привязана лицензия, то решил так же через интерфейс dummy. Ему выдаю необходимый ip адрес, потом делаю ifconfig dummy down. Раньше этого не делал, но сайты настроены так, что берут картинки для отображения по адресу вида имя сайта/images/.../.../...jpg.
Поэтому если интерфейс не гасить, то получается так:
nslookup <имя сайта> возвращает <ip реальный> 
- Где у нас IP реальный? - спрашивает httpd. 
- Да вот же он, у меня тут поднят - отвечает ОС. 
А там апач не запущен, нет ничего. Соответственно получаем пустоту вместо картинки. 


Обещал рассказать про swap раздел на SSD-диске. Тут все достаточно просто, создаем образ диска в хранилище default, собственно куда и ставили Proxmox. Задаем необходимый размер образа. Затем подключаем разделы так:

mkswap /dev/sd<буква диска>
cat /proc/swaps 
swapoff -v /dev/sda<номер раздела своп> (это выключает старый swap
swapon /dev/sd<буква диска>


Напоследок приведу fstab машины с apache (там виртуальных дисков больше всего).

 cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Mar 11 15:57:46 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/VolGroup-lv_root /                       ext4    defaults        1 1
UUID=43977fc1-b315-4c84-8d4e-147f4063a60e /boot                   ext4    defaults        1 2
/dev/mapper/VolGroup-lv_home /home                   ext4    defaults        1 2
/dev/sdc                      swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb1          /var/www         ext4    defaults        1 2 noatime,nodiratime,noacl,data=writeback,commit=15


Обратите внимание на последнюю строку файла fstab. Значительно ускорил работу файловой системы установкой после 1 2. До этого долго рыл всевозможные форумы и слепил такую строку из того, что накопал. Сборная солянка, так сказать.

В принципе так или иначе все работает и летает уже 2 недели, то есть тестовый период прошел.
Что касается бекапа (BACKUP), то предложил пойти очень простым путем — взять WD Live Book гига этак на 3, включить на нем ftp и лить туда снапшоты виртуальных машин, которые успешно создает ProxMox.
Что касается проброса пассивного FTP, я его еще не сделал. Смысл в том, что необходимо пробросить на apache порты 20, 21 и некое количество портов для пассивного соединения, а у меня этот проброс не получается. Ну не цепляется фтп из вне к моему серверу никак. Пока не горит, так что решаю по мере прихода вдохновения. Буду признателен за подсказку. Стоит сервер proftpd. Идея была следующая — жестко в конфиге прописать пул портов для пассивного режима FTP, и пробросить его внутрь из ProxMox. Пока не докопался как это делается.

Спасибо за внимание!
P.S. Тут пишут, что я статью эту редактировать не могу, вычитывал 30 минут, вроде все чисто. Приношу извинения за вольные и невольные вульгаризмы в тексте, ошибки или опечатки.
AdBlock похитил этот баннер, но баннеры не зубы — отрастут

Подробнее
Реклама

Комментарии 24

    +1
    VPS около 100 сайтов

    и ни слова о raid…
    я не такой бесстрашный
      –1
      А raid и нет. Один диск WD 1000 Gb. Банально не хватит места.
        0
        тогда «data=writeback,commit=15» рекомендую убрать, а то будет большой ППЦ
        вообще без раид контроллера с батарейкой и резервным питанием для сервера не стоит такие штуки тюнить
          0
          «data=writeback,commit=15» рекомендую убрать

          Это не в ProxMox, а внутри виртуальной машины, которая с апачем и файлами сайтов. Все равно убрать?
            0
            ааа, ну внутри виртуалки почему бы и нет, если бэкапы будут
      +1
      Статья про установку Linux? Дак вроде не одна тысяча их. Да и про настройку ProxMox тоже предостаточно. Убедить купить IP ну это конечно да. Даже не знаю про что статья в общем.
        +3
        Что надо отметить: на ssd установлен proxmox

        Т.е. когда SSD сдохнет, вы получите автоматом проблемы с загрузкой системы, равно как и с её восстановлением.

        Заливаем в машину образ CentOS. Тут было некое неудобство от ProxMox — можно качнуть образ не по ссылке, а только имеющийся у себя на харде. Так что пришлось сначала лить к себе, потом выливать на сервер.

        Достаточно было зайти по ssh на машину с proxmox и скачать wget'ом образ в /var/lib/vz/template/iso/

        С WD (/dev/sdb)

        Так сколько у вас дисков, 1 или 2? Если один, то, опять же, взашей гнать всех, кто участвовал в разработке конфигурации, закупке, а затем согласился ставить систему на заведомо рискованную конфигурацию. Если два, то где второй? Почему не используется raid, если у вас 100 сайтов?

        ОЗУ 4 Гб; процессор «по умолчанию kvm64», СД — привод образ CentOS, HDD — образ диска от vmvare (vmbr), кэширование write back, 120 Gb на хранилище ws, сетевая Intel на бридже vmbr0.

        kvm64 для проца для одиночной установки? Зачем, у вас есть лишние ресурсы? Для гомогенных кластеров и односерверных установок для виртуальных машин нужно использовать тип cpu 'host'.
        Для каких целей вы используете формат vmdk (а не vmbr, как статье)? Почему не родные qcow2 или raw? Тип жесткого диска вы тоже не указали, но подозреваю, что используется ide?
        В наше время для почти всех OS нужно использовать virtio (то же самое касается и сети). Это значительно снижает нагрузку на хост и увеличивает производительность соответствующих подсистем VM.

        Кстати, вот к этому:
        Так как я потратил на установку образа ОС час, то я решил оптимизировать этот процесс для следующих n-машин. Поэтому в консоли зашел /var/lib/ws/images/100, и скопировал образ диска vmbr в папку /home

        Если бы использовали формат диска qcow2, могли бы использовать так называемые thin-provisioned диски, т.е. у вас был бы один образ в качестве основного, а изменения конкретных виртуалок накапливались бы в отдельных контейнерах.

        В общем, так практически по всей статье. Даже новичкам это читать просто вредно.
          0
          Для каких целей вы используете формат vmdk (а не vmbr, как статье)? Почему не родные qcow2 или raw? Тип жесткого диска вы тоже не указали, но подозреваю, что используется ide?

          Использую SCSI. Формат выбран для совместимости с другими машинами виртуализации. VMVare взял за стандарт де-факто.
          Т.е. когда SSD сдохнет, вы получите автоматом проблемы с загрузкой системы, равно как и с её восстановлением.

          Просьбу заказчика требуется выполнять. SSD позволит взлететь систему даже когда сдохнет.
          Так сколько у вас дисков, 1 или 2? Если один, то, опять же, взашей гнать всех, кто участвовал в разработке конфигурации, закупке, а затем согласился ставить систему на заведомо рискованную конфигурацию. Если два, то где второй? Почему не используется raid, если у вас 100 сайтов?

          Вверху привел конфигурацию сервера: два харда — SSD и WD. Работаю с чем дали.
            0
            У вас там написано: 2 WD… — неясно из контекста, это 2 шт. или порядковый номер два.
            Я бы вам всё-таки рекомендовал использовать virtio и нативный формат контейнера. вы выбрали самый медленный вариант из возможных.
            Кроме того — я не написал это выше — выход из строя ssd, на котором вы расположили swap-файлы виртуалок, обрушит и виртуалки тоже. Хотя, если в системе в принципе нет двух одинаковых дисков, это не имеет значения.

            Если вы этого не сделали, я бы рекомендовал вам уведомить заказчика о том, что вы снимаете с себя ответственность за сохранность данных и системы в целом в таких условиях.
              0
              Если вы этого не сделали, я бы рекомендовал вам уведомить заказчика о том, что вы снимаете с себя ответственность за сохранность данных и системы в целом в таких условиях.

              Сделано заранее.
                0
                Я себе слабо представляю обрушение виртуалки из-за отсутствия swap-диска.
                Кстати, да, решение может быть в следующем: CentOS (как и прочие nix) поддерживает swap-диски и swap-файлы. Можно организовать дополнительно одновременно со swap-диском на ssd swap-файл на основном диске, который позволит системе не рухнуть.
                Ради интереса решил посмотреть использование swap на сервере: 1% на apache, на остальных не используется. Uptime 14 дней.
                  0
                  Если у вас что-то есть в свапе и он отвалится, в лучшем случае у вас вылетит приложение (конкретный сервис, исполняемый поток, не знаю, как его назвать лучше), чей код\данные были выгружены в свап. Если он пуст — возможны варианты, но вероятность паники минимальна, конечно. Опять же, ровно до момента попытки записи в свап, что будет дальше — вопрос.
              0
              «Если бы использовали формат диска qcow2, могли бы использовать так называемые thin-provisioned диски, т.е. у вас был бы один образ в качестве основного, а изменения конкретных виртуалок накапливались бы в отдельных контейнерах.»

              qcow2 выглядит очень привлекательно, но только на первый взгляд. Его единственное отличие от vmdk — live-снапшоты, но на практике они оказываются не очень нужны. Бэкапы можно делать через снапшоты lvm — как и делается.

              thin-provisioned — это как раз не qcow2, а vmdk. thin-provisioned это вообше не то что, похоже, Вы думаете. qcow2 эмулирует thin с помощью разреженных файлов, но это само по себе приводит к некоторым проблемам — например, Вы не можете скопировать такой файл на устройство, не поддерживающее разреженные файлы, при бэкапировании скорость заметно ниже чем vmdk, и всегда остаётся опасность получить гигантский файл. При этом преимущества непонятны.

              «один образ в качестве основного» — это что? Разве Proxmox это поддерживает? «Изменения конкретных виртуалок» — а кто считал сколько это экономит в процентах? 1% через месяц эсплуатации? И это ценой невозможности бэкапить виртуалки простым копированием и замедление всех операций? Такие оптимизации можно делать на огромной куче виртуалок, но не на 2-3.

              Так что не только статья вредная, но и некоторые комментарии. Но беда в том, что по виртуализации вообще толковых статей на русском очень мало. Даже форум и wiki proxmox запутаны и малопонятны, так что любая статья и любое обсуждение — благо.
              В общем, я ни разу не встречал обоснованной рекомендации использовать qcow2 вместо vmdk.
                0
                По Вашему мнению (как человека, который разбирается в предмете) в чем вред статьи?
                  0
                  Я не предлагал использовать qcow2 backing files concept в качестве рабочего решения, я упомянул, что такая возможность есть. Qcow2 — формат по умолчанию в Proxmox неспроста. Но вообще, я всегда рекомендую использовать raw с нормальным выделенным хранилищем (кластером системы хранения, если хотите). На последнем проекте выделенного хранилища не было, поэтому появился локальный zfs с набором ssd под ZIL и L2ARC, где backup решается на уровне резервного копирования live snapshot'ов FS. Причем решается неполноценно, потому что одна из виртуалок — Windows Server с контроллером реплицируемого домена, который срезервировать копированием невозможно — он не восстановится потом. Так что и возможность backup копированием файлов VM — не панацея.

                  А то, что proxmox что-то не поддерживает, так proxmox (в случае односерверной установки) не более чем GUI для стандартных инструментов.

                  И основные отличия vmdk от qcow2 (и, тем более, от raw и lvm-raw) — в скорости. Это главное.
                    0
                    Статья не про сферических коней, а про proxmox, так что любые возможности qcow можно упоминать только если их можно использовать в proxmox. Иначе обсуждение просто неконструктивно.

                    Proxmox ни в какой установке не «GUI для стандартных инструментов», так как никаких стандартных инструментов не использует.

                    И насчёт скорости. Приведите достоверные результаты тестирования скорости vmdk и qcow2 — тогда можно продолжать обсуждение их достоинства с точки зрения производительности.

                    Тут же отвечу насчёт «Даже десктоп SSD сейчас имеют настолько большое количество циклов перезаписи, что к тому моменту, как они закончатся диск скорее устареет морально.» Количество циклов перезаписи не увеличилось, изменились алгоритмы более равномерного использования SSD диска. Записываемый объём данных вполне предсказуем, для OCZ он вообще в последних моделях включался в гарантию. Для Kingston есть табличка:
                    www.kingston.com/datasheets/SV300S3_ru.pdf
                    Суммарное число записываемых байтов (TBW)

                    60ГБ: 32ТБ
                    120ГБ: 64ТБ
                    240ГБ: 128ТБ
                    480ГБ: 256ТБ

                    Суммарное число записываемых байтов (TBW) – это общий объем данных, который может быть записан на
                    твердотельный накопитель при указанной нагрузке до того, как накопитель достигнет предела износа.

                    Как видите, для сервера вполне достижимые цифры. На серверных моделях SSD они выше, но тоже не бесконечны.

                    В общем, статья не то чтобы вредная, но стоит помнить, что она просто описывает конкретный опыт, а не является руководством.
                      0
                      Proxmox ни в какой установке не «GUI для стандартных инструментов», так как никаких стандартных инструментов не использует.

                      Продолжаю считать, что Proxmox — это не более, чем web-ui для KVM\OpenVZ. Для работы она использует стандартные cli-утилиты названных выше инструментов. Не согласны? Аргументируйте, пожалуйста.

                        0
                        Например, Proxmox имеет API, контроль за выполнением задач, копирование конфигурации, отказоустойчивость, проверенные методики решения практических задач, поддержка бэкапирования, описание того что и как нужно делать для достижения результата и чего делать не надо, некоторые «стандартные утилиты» самими proxmox'овцами и поддерживаются. Для Proxmox даже web не нужен.

                        Как я понимаю, остальные мои возражения я писал для воздуа — Вы их не читали?
                          0
                          Я не понимаю, как то, что вы описали, противоречит тому, что сказал я. Это замечательно, что кто-то предложил «проверенные» методики (многие из которых, кстати, «проверяются» и создаются их же пользователями) и написал несколько скриптов, я с удовольствием пользуюсь их решением, но это — не более, чем Web GUI с — если вам так хочется — несколькими дополнительными скриптами. То, что вы перечислили, либо можно реализовать собственными скриптами за пару часов работы максимум, либо не актуально для (вы, видимо, пропустили мою пометку) односерверной установки. Более того, некоторые операции жестко зашиты в скрипты и нормального пути, для, скажем, монтирования nfsv4 и при этом сохранения возможности обновления просто нет.

                          Насчет «остального»: я увидел написанное вами. Только и тут не понимаю, как это противоречит моей мысли о том, что надежность SSD в наше время вполне себе позволяет использовать их и в серверном применении. Собственно, рискну предположить, что основная разница между серверным и несерверным SSD чаще всего в наличии у серверных SSD конденсаторов да больших объемов служебных областей для равномерного распределения нагрузки.
                +1
                Статья о ХП на картинке Делл. Ай ай ай :)
                  0
                  Пост написан как технический дневник: что увидел, то и записал. Сложно воспринимается.
                  Где логика и красота? Мысли разбегаются.
                  «Даже новичкам это читать просто вредно» — верное замечание.
                    –1
                    >А вот swap файлы было решено размещать на ssd.
                    У SSD ограничено число циклов записи, не надо так делать.

                    >1. pvcreate /dev/sdb
                    >2. vgcreate ws /dev/sdb
                    >3. lvcreate -n data -L980G ws (размер 980 не помню как вычислил, по моему понижал от Террабайта по 10 гигов)


                    LVM создают вместо обычного тома тогда, когда хотят получить снэпшоты, а для них надо оставить место на томе, так что:
                    lvcreate -n data -L900G ws
                    а когда нам нужно сделать бэкап, то
                    lvcreate -s -n data-backup -L 50G /dev/ws/data
                    dd if=/dev/ws/data-backup of=/mnt/nfs/backup-server/mybackup.img
                    и т.п.

                    Кстати, в масонских ложах шепчутся, что поддержка vmdk сделана в QEMU для галочки и сливает по производительности QCOW2, а QCOW2 сливает RAW, потому что вынужден делать copy-on-write.
                    Отдельные еретики даже смеют утверждать, что наиболее правлславно использовать разделы lvm вместо образов дисков, т.к. это работает в обход VFS хоста, которая бьет длинные IO-запросы на кучу мелки по 4кб рамером
                      0
                      У клиента два сервера терминальных внутри ProxMox на Windows 2003 Serv для 1С крутится. Один на vmdk, другой на qcow2. Вот разницы в производительности по IO не заметил совершенно. Собственный опыт.
                      Не буду возражать, что возможно родной формат лучше, есть некоторые плюшки.
                        0
                        Не соглашусь с вами только касательно использования SSD, это миф из далёкого прошлого. Даже десктоп SSD сейчас имеют настолько большое количество циклов перезаписи, что к тому моменту, как они закончатся диск скорее устареет морально.

                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                      Самое читаемое