Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
proxmox:proxmox_storage_optimization [2019/08/12 09:24] – [Создание хранилища Proxmox] admin | proxmox:proxmox_storage_optimization [2022/09/07 14:18] (current) – [proxmox storage optimization] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== proxmox storage optimization ====== | ||
+ | Я хочу построить небольшой домашний сервер виртуализации на базе **ProxMox**. Требования к подсистеме хранения такие: | ||
+ | - кеширование **SSD** | ||
+ | - дедупликация при небольшом потреблении памяти. не обязательно inline, можно просто по расписанию. | ||
+ | - сжатие | ||
+ | Варианты: | ||
+ | - **ZFS** - все круто (" | ||
+ | - **ext3/4 over LVM** - быстрая и стабильная. можно сделать кеширование на **SSD**. Нет дедупликации. Нет сжатия. | ||
+ | - **BTRFS over LVM** - можно сделать кеширование на **SSD**. Есть дедупликация по запросу. Есть сжатие. Можно отключить Copy-On-Write (но тогда отключится сжатие). | ||
+ | - [[https:// | ||
+ | |||
+ | ====== Решение ====== | ||
+ | Выбор пал на связку **BTRFS over LVM**. Она позволяет дедуплицировать данные по расписанию (с помощью **duperemove**), | ||
+ | Файлы образов дисков должны быть в формате **qcow2**, что позволит делать снепшоты. \\ | ||
+ | Файловые системы контейнеров **LXC** можно хранить как в виде образов, | ||
+ | Забегая вперед, | ||
+ | |||
+ | ===== ВНИМАНИЕ!!! ===== | ||
+ | Всем, кто решит использовать **BTRFS** + **lvmcache** на хосте **ProxMox** нужно помнить следующее: | ||
+ | - **lvmcache** НЕ совместим с различными вариантами **hibernate**. Если вы попытаетесь выполнить **pm-hibernate** на хосте кешированными томами, | ||
+ | - использование **BTRFS** с флагом **nodatacow** (то есть отключение Copy-On-Write) наверное, | ||
+ | |||
+ | ===== Создание кешированного тома LVM ===== | ||
+ | |||
+ | https:// | ||
+ | |||
+ | Пример конфигурации такой. | ||
+ | два диска - **/ | ||
+ | Создаем физичесике тома и группу томов **test**: | ||
+ | pvcreate /dev/vdb | ||
+ | pvcreate /dev/vdc | ||
+ | vgcreate vgname /dev/vdb /dev/vdc | ||
+ | Создаем том с кешем на SSD: | ||
+ | lvcreate --type cache-pool -L1G -n cache vgname /dev/vdb | ||
+ | Создаем том с данными: | ||
+ | lvcreate -L9G -n data vgname /dev/vdc | ||
+ | И теперь собираем конструкцию: | ||
+ | lvconvert --type cache --cachepool vgname/ | ||
+ | Do you want wipe existing metadata of cache pool volume test/cache? [y/n]: y | ||
+ | Logical volume vgname/data is now cached. | ||
+ | Отсоединить кеш от тома можно командой: | ||
+ | lvconvert --splitcache vgname/data | ||
+ | Состояние тома можно поглядеть командой: | ||
+ | dmsetup -v status vgname/data | ||
+ | Тип кеша можно поменять командами: | ||
+ | lvchange --cachemode writeback vgname/data | ||
+ | lvchange --cachemode writethrough vgname/data | ||
+ | ===== Создание хранилища Proxmox ===== | ||
+ | Для начала надо смонтировать том с параметрами **noatime, | ||
+ | mkdir / | ||
+ | echo '/ | ||
+ | mount / | ||
+ | pvesm add dir Test-Data --path / | ||
+ | |||
+ | ===== Тестирование FIO ===== | ||
+ | Тестовый хост - **Pentium Silver J5005**, **8GB** Ram, mdadm **RAID1 2x2Tb Seagate HDD** (подключены к **SoC AHCI**), **OCZ Vertex2 EX 100Gb SSD** Cache (подключен к **ASMedia ASM1061**), **transparent_hugepage** выключены. \\ | ||
+ | **FIO** под **Windows Server 2008R2** скачанный отсюда: | ||
+ | Очевидно, | ||
+ | Тесты запускались такими командами: | ||
+ | fio.exe | ||
+ | fio.exe | ||
+ | | ||
+ | То есть тест блоками по **4k**, случайные чтение и запись, | ||
+ | Тесты запускались по три раза, чтобы тестовый файл попал в SSD-кеш. | ||
+ | |||
+ | ^ LVM Cache/PM Cache/ | ||
+ | | WB/ | ||
+ | | WB/ | ||
+ | | WB/ | ||
+ | | WB/ | ||
+ | | WB/ | ||
+ | | WB/ | ||
+ | | WT/ | ||
+ | | WT/ | ||
+ | | WT/ | ||
+ | | WT/ | ||
+ | | WT/ | ||
+ | | WT/ | ||
+ | | NC/ | ||
+ | | NC/ | ||
+ | | NC/ | ||
+ | | NC/ | ||
+ | | NC/ | ||
+ | | NC/ | ||
+ | |||
+ | ==== Результаты тестирования fio ==== | ||
+ | * Предсказуемо, | ||
+ | * Не сильно отстает конфигурация с кешированием только на **SSD** в режиме **WriteBack**. От выхода из строя **SSD** можно защититься, | ||
+ | * Разница между форматами **qcow2** и **raw** несущественна, | ||
+ | * В режимах **Writeback** на уровне **proxmox** без кеширования на **SSD** на уровне **lvm**, скорость записи очень нестабильна. Она может быть как довольно высокой (3000-4000 IOPS), так и довольно низкой (500-1000 IOPS) и меняется произвольным образом. | ||
+ | * Режимы кеширования **ProxMox WriteThrough** - существенно ускоряют чтение (в 100 раз), но замедляют запись (в 5-20 раз) по сравнению с режимами без кеширования и **writeback**. | ||
+ | * Возможно, | ||
+ | |||
+ | |||
+ | ===== Тестирование с помощью CrystalDiskMark 6.0.2 x64===== | ||
+ | Тестирование производилось на **VM** - **Windows Server 2008 R2**, 4GB mem, 2 cores. Для тестирования виртуальной машине добавлен отдельный пустой диск 32Gb.\\ | ||
+ | В качестве **SSD cache** выступал том LVM на **SATA** диске **OCZ Vertex V2 EX**. \\ | ||
+ | Тест в **Crystal Mark** запускался по 3 раза, чтобы данные успевали закешироваться. В таблице приведены данные после третьего замера.\\ | ||
+ | Параметры **CrystalMark** - 5, 1GiB. \\ | ||
+ | **Boot Time** - время загрузки **ОС** от включения до появления приглашения **Press Ctrl+Alt+Del**. | ||
+ | |||
+ | 1 - lvm cache - On WriteBack, proxmox cache - no cache, qcow2 \\ | ||
+ | 2 - lvm cache - On WriteBack, proxmox cache - no cache, raw \\ | ||
+ | 3 - lvm cache - On WriteBack, proxmox cache - WriteBack, qcow2 . WARNING - Very High CPU Load while tests!!! Very Long test!!!\\ | ||
+ | 4 - lvm cache - On WriteBack, proxmox cache - WriteThrough, | ||
+ | 5 - lvm cache - On WriteBack, proxmox cache - WriteThrough, | ||
+ | 6 - lvm cache - On WriteBack, proxmox cache - WriteBack, raw . WARNING - Very High CPU Load while tests!!! Very Long test!!!\\ | ||
+ | ^ Disk Config^ Seq Read Q32T1^ Seq Write Q32T1 ^ 4KiB Q8T8 Read ^ 4KiB Q8T8 Write ^ 4KiB Q32T1 Read ^ 4KiB Q32T1 Write ^ 4KiB Q1T1 Read ^ 4KiB Q1T1 Write^Boot Time, sec^ | ||
+ | | 1 | 217,1 | 105,3 | 112,4 | 84,32 | 111,4 | 78,72 | 12,12 | 21,75 | 16 | | ||
+ | | 2 | 218,9 | 104,6 | 112,7 | 86,15 | 111,8 | 84,85 | 11,87 | 21,58 | | ||
+ | | 3 | 2423 | 245,6 | 329,0 | 163,6 | 285,6 | 165,5 | 39,83 | 34,49 | 16 | | ||
+ | | 4 | 2494 | 84,31 | 331,4 | 6,4 | 289,5 | 5,5 | 40,31 | 4,0 | | ||
+ | | 5 | 2566 | 90,61 | 347,9 | 6,67 | 301,8 | 5,86 | 40,73 | 4,2 | | ||
+ | | 6 | 2457 | 210,9 | 350,5 | 161 | 301,1 | 173,5 | 40,47 | 35,9 | |