Подключение дисков использую множественные пути. На момент написания инструкция актуальна для
- 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*