20 января 2023 25 января 2023 Linux dd losetup pvcreate vgcreate lvcreate vgchange
Задача: выжать максимум производительность из шины материнской платы.
Цель: raid массив построенный на программной технологии LVM
RAID массив 0 уровня состоит из 4 виртуальных устройств Linux созданных на основе пустых файлов размером по 512 мегабайт
Процедура создания программного LVM/RAID0
# создание пустых файлов
dd if=/dev//zero of=sda1.dd bs=1M count=512
dd if=/dev//zero of=sda2.dd bs=1M count=512
dd if=/dev//zero of=sda3.dd bs=1M count=512
dd if=/dev//zero of=sda4.dd bs=1M count=512
# создание виртуальных устройств
losetup --partscan --find --show sda1.dd
losetup --partscan --find --show sda2.dd
losetup --partscan --find --show sda3.dd
losetup --partscan --find --show sda4.dd
# создание PV
pvcreate /dev/loop15
pvcreate /dev/loop16
pvcreate /dev/loop17
pvcreate /dev/loop18
# создание VG
vgcreate vgdata /dev/loop15 /dev/loop16 /dev/loop17 /dev/loop18
# создание LVM/RAID0
lvcreate -i4 -I64 -l 100%VG -n lvmirror vgdata
Файлы блоков LVM/RAID0 будут размещать на 3 типах физических устройств
- Шпиндельный диск HDD с интерфейсом SATA
- Твердотельное хранилище SSD с интерфейсом SATA
- NVME с интерфейсом M2
Для перемещения блоков LVM/RAID0 необходимо остановить VG, удалить виртуальные устройства, перенести файлы, создать устройства, запустить VG по следующему сценарию
# остановка VG
vgchange -a n vgdata
# деактивация виртуальных устройств
losetup -d /dev/loop15
losetup -d /dev/loop16
losetup -d /dev/loop17
losetup -d /dev/loop18
# перемещение файлов-блоков LVM/RAID0
mv sda* /путь/
cd /путь/
# создание виртуальных устройств
losetup --partscan --find --show sda1.dd
losetup --partscan --find --show sda2.dd
losetup --partscan --find --show sda3.dd
losetup --partscan --find --show sda4.dd
# запуск VG
vgchange -a y vgdata
Ниже будут показаны три комбинации конфигураций, в каждой конфигурации по два скриншота замеров производительности диска на котором размещёны блоки LVM/RAID0 и замер производительности LVM/RAID0
Первая, самая медленная, конфигурация: здесь блоки raid размещаются на SSD с интерфейсом SATA
средняя скорость чтения с SSD/SATA диска 540Мб/с
Вторая конфигурация: здесь блоки raid размещаются на обычном шпиндельном SATA диске
Средняя скорость чтения SATA 144Мб/с
Последняя, самая быстрая конфигурация: здесь блоки raid размещаются на скоростном NVME установленнам через переходник в слот PCI-Express
Средняя скорость чтения NVME 2,7Гб/м
Вывод: с помощью LVM/Raid можно получить повышение производительности цифрового хранилища.
Получается, можно взять обычный шпиндельный SATA диск, разделить его на 4 раздел, на их основе создать LVM/RAID0 и получить увеличение скорости чтения в несколько раз
даже звучит дико
сводная таблица, в кавычках количество разделов используемых в LVM/RAID0
SATA (WDC WD3000FYYZ-01UL1B0) | 143,3 Мб/с | |
LVM/RAID0(1) SATA | 3,0 Гб/с | 117,1 Мб/с |
LVM/RAID0(2) SATA | 3,1 Гб/с | 64,9 Мб/с |
LVM/RAID0(3) SATA | 3,9 Гб/с | 85,9 Мб/с |
LVM/RAID0(4) SATA | 5.2 Гб/с | 92.8 Мб/с |
LVM/RAID0(6) SATA | 5,5 Гб/с | 73,3 Мб/с |
SSD/SATA (Samsung SSD 870 QVO) | 540.9 Мб/с | |
LVM/RAID0(1) SSD/SATA | 2,2 Гб/с | 74,5 Мб/с |
LVM/RAID0(2) SSD/SATA | 3,7 Гб/с | 66,7 Мб/с |
LVM/RAID0(3) SSD/SATA | 5,7 Гб/с | 72,4 Мб/с |
LVM/RAID0(4) SSD/SATA | 5.1 Гб/с | 71.7 Мб/с |
LVM/RAID0(6) SSD/SATA | 7,4 Гб/с | 70,9 Мб/с |
NVME/M2 (Samsung SSD 970 EVO Plus) | 2.7 Гб/с | |
LVM/RAID0(1) NVME/M2 | 2,4 Гб/с | 457,3 Мб/с |
LVM/RAID0(2) NVME/M2 | 3.7 Гб/с | 351,9 Мб/с |
LVM/RAID0(3) NVME/M2 | 4,2 Гб/с | 453,1 Мб/с |
LVM/RAID0(4) NVME/M2 | 5.5 Гб/с | 522.4 Мб/с |
LVM/RAID0(6) NVME/M2 | 7,9 Гб/с | 462,7 Мб/с |