Подключение дисков использую множественные пути. На момент написания инструкция актуальна для
- Astra Linux 1.7
- Debian 10, 11, 12
- Ubuntu 20.04 LTS, 22.04 LTS, 24.04 LTS
Пример настройки СХД HPE MSA P2000, HPE MSA 2040,HPE MSA 2050, HPE MSA 2060, HPE 3Par 8200, HPE 3Par 8440
apt install -y multipath-tools
Смотрим какие диски получили
multipath -ll
Если вывод пустой то посмотрим так
lsblk
В данном случае получаем для СХД HPE MSA формируется от 2 до 4 путей, в зависимости от модели
Интересующие диск по 2 путям sdb, sdc
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT fd0 2:0 1 4K 0 disk sda 8:0 0 127G 0 disk ├─sda1 8:1 0 123G 0 part / ├─sda2 8:2 0 1K 0 part └─sda5 8:5 0 4G 0 part [SWAP] sdb 8:16 0 10.9T 0 disk sdc 8:32 0 10.9T 0 disk sr0 11:0 1 1024M 0 rom
В данном случае получаем для СХД HPE 3Par формируется от 4 до 8 путей, в зависимости от модели
Интересующие диск по восьми путям sdb, sdc, sdd, sde, sdf, sdg, sdh, sdk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 447.1G 0 disk ├─sda1 8:1 0 1007K 0 part ├─sda2 8:2 0 1G 0 part /boot/efi └─sda3 8:3 0 446.1G 0 part sdb 8:16 0 10.9T 0 disk sdc 8:32 0 10.9T 0 disk sdd 8:48 0 10.9T 0 disk sde 8:64 0 10.9T 0 disk sdf 8:80 0 10.9T 0 disk sdg 8:96 0 10.9T 0 disk sdh 8:112 0 10.9T 0 disk sdk 65:128 0 10.9T 0 disk
Получаем их uuid выбирая любой из дисков, например sdb
/lib/udev/scsi_id -g -u -d /dev/sdb #3600c0ff00012be6bd05f1e6601000000
Либо находим uuid в выводе
HPE MSA
multipath -v3 #===== paths list ===== #uuid hcil dev dev_t pri dm_st chk_st vend/pro #3600224807bc1e4a554afc0dc5e935f25 0:0:0:0 sda 8:0 1 undef undef Msft,Vir #3600c0ff00012be6bd05f1e6601000000 2:0:2:94 sdb 8:16 10 undef undef HP,P2000 #3600c0ff00012be6bd05f1e6601000000 2:0:3:94 sdc 8:32 50 undef undef HP,P2000
HPE 3Par
multipath -v3 #===== paths list ===== #uuid hcil dev dev_t pri dm_st chk_st vend/prod/rev dev_st #3600508b1001c7060e9b26bb639d3fcc2 2:1:0:0 sda 8:0 1 undef undef HPE,LOGICAL VOLUME unknown #3600c0ff00012be6bd05f1e6601000000 0:0:0:0 sdb 8:16 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:1:0 sdc 8:32 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:2:0 sdd 8:48 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:3:0 sde 8:64 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:4:0 sdf 8:80 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:5:0 sdg 8:96 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:6:0 sdh 8:112 50 undef undef 3PARdata,VV unknown #3600c0ff00012be6bd05f1e6601000000 0:0:7:0 sdk 8:128 50 undef undef 3PARdata,VV unknown
Добавляем данный uuid как путь в назначенному тому
multipath -a 3600c0ff00012be6bd05f1e6601000000
Для блокировки локальных дисков нужно перечислить диски и контроллеры в файле multipath.conf
-
blacklist { wwid ".*" devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" devnode "^hd[a-z][[0-9]*]" devnode "^sda[[0-9]*]" devnode "^nvme[0-9]*" devnode "^cciss!c[0-9]d[0-9]*" }
Для исключения блокировки томов нужно их перечислить в файле multipath.conf
blacklist_exceptions { wwid 3600c0ff00012be6bd05f1e6601000000 }
Получим список multipath томов и обратим внимание что наш uuid находится в dm-1
ls -l /dev/mapper/ #crw------- 1 root root 10, 236 Nov 21 13:33 control #lrwxrwxrwx 1 root root 7 Nov 21 13:33 pve-root -> ../dm-0 #lrwxrwxrwx 1 root root 7 Nov 21 13:41 vms -> ../dm-1
Создадим раздел GPT
fdisk /dev/dm-1 #Command (m for help): g #Created a new GPT disklabel (GUID: 67752DFA-8643-8E4E-9E62-4E24D620D080). #Command (m for help): n #Partition number (1-128, default 1): #First sector (2048-23418489566, default 2048): #Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-23418489566, default 23418488831): #Created a new partition 1 of type 'Linux filesystem' and of size 10.9 TiB. #Command (m for help): w #The partition table has been altered. #Syncing disks.
Можно использовать cfdisk /dev/dm-1
Проверим что создали дополнительный раздел, нумерация аналогичная привычной /dev/sdb => /dev/sdb1 только /dev/dm-0 => /dev/dm-1
ls -l /dev/mapper/ #root@pve:~# ls -l /dev/mapper/ #total 0 #crw------- 1 root root 10, 236 Nov 21 13:33 control #lrwxrwxrwx 1 root root 7 Nov 21 13:33 pve-root -> ../dm-0 #lrwxrwxrwx 1 root root 7 Nov 21 13:41 vms -> ../dm-1 #lrwxrwxrwx 1 root root 7 Nov 21 13:41 vms-part1 -> ../dm-2
Создадим нужную файловую систему
mkfs.ext4 /dev/dm-2 mkdir -p /data/vms mount /dev/dm-2 /data/vms
Поверим
df -h #Filesystem Size Used Avail Use% Mounted on #/dev/mapper/3600c0ff00012be6bd05f1e6601000000 10.9T 24K 87G 1% /data
Создадим необходимую запись в fstab для автомонтирования диска
Получим UUID тома в системе, не путайте с uuid multipath
blkid /dev/dm-2 #/dev/dm-2: UUID="2c9e39d1-8860-458b-adee-18c99a3bb9c7" BLOCK_SIZE="4096" TYPE="ext4"
nano /etc/fstab
# vms UUID=2c9e39d1-8860-458b-adee-18c99a3bb9c7 /data/vms ext4 defaults 0 2
Проверим
umount /data/vms mount -a
multipath.conf
При необходимости можно создать multipath.conf с перечнем своих правил сканирования и подключения внешних томов
nano /etc/multipath.conf
defaults { # for debian and proxmox find_multipaths "no" user_friendly_names "yes" polling_interval 10 path_selector "round-robin 0" path_grouping_policy "failover" prio "const" path_checker "tur" max_fds "max" rr_min_io 100 rr_min_io_rq 1 rr_weight "uniform" failback "immediate" no_path_retry 12 } blacklist { wwid ".*" devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*" devnode "^hd[a-z][[0-9]*]" devnode "^sda[[0-9]*]" devnode "^nvme[0-9]*" devnode "^cciss!c[0-9]d[0-9]*" } blacklist_exceptions { wwid 3600c0ff00012be6bd05f1e6601000000 wwid 3600c0ff00012be6b87c1846501000000 } multipaths { multipath { wwid 3600c0ff00012be6bd05f1e6601000000 alias vms } multipath { wwid 3600c0ff00012be6b87c1846501000000 alias vmb } } devices { device { vendor "HP" product "(MSA2[02]12fc|MSA2012i)" path_grouping_policy "multibus" no_path_retry 18 } device { vendor "HP" product "(MSA2012sa|MSA23(12|24)(fc|i|sa)|MSA2000s VOLUME)" path_grouping_policy "group_by_prio" prio "alua" path_selector "round-robin 0" hardware_handler "0" failback "immediate" no_path_retry 18 } device { vendor "HP|HPE" product "(P2000 G3 FC|P2000 G3 FC/iSCSI|P2000 G3 SAS|P2000 G3 iSCSI)" path_grouping_policy "group_by_prio" prio "alua" path_selector "round-robin 0" hardware_handler "0" failback "immediate" no_path_retry 18 } device { vendor "HP|HPE" product "MSA [12]0[456]0 (SAN|SAS|FC|iSCSI)" path_grouping_policy "group_by_prio" prio "alua" path_selector "round-robin 0" hardware_handler "0" failback "immediate" no_path_retry 18 } device { vendor "HP" product "A6189A" path_grouping_policy "multibus" no_path_retry 12 } device { vendor "3PARdata" product "VV" path_grouping_policy "group_by_prio" prio "alua" hardware_handler "1 alua" path_selector "round-robin 0" failback "immediate" no_path_retry 18 fast_io_fail_tmo 10 dev_loss_tmo "infinity" vpd_vendor "hp3par" } }
Тестирование производительности подключенного тома
apt install -y fio
Тест: чтение 60%, запись 40%, размер блока 4Кб, глубина очереди 32, использовать 6 файлов размером 10Gb, длительность теста 600 секунд, прямая запись на диск минуя кеш и не использовать аппаратное кеширование
fio --name=IO-RAND --ioengine=libaio --iodepth=32 --rw=randrw --rwmixread=60 --bs=4k --direct=1 --buffered=0 --size=10G --numjobs=6 --time_based=1 --runtime=600 --group_reporting && rm -f IO-RAND*