Подключение дисков использую множественные пути. Пример для Debian 11/12 и СХД HPE MSA P2000, HPE MSA 2040,HPE MSA 2050, HPE MSA 2060
apt install -y multipath-tools
Сканируем на наличие назначенных томов (volume) для нашего сервера
rescan-scsi-bus.sh
Смотрим какие диски мы получили
multipath -ll
Если вывод пустой то посмотрим так
lsblk
В данном случае получаем
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
Нас интересуют диски sdb и sdс
Получаем их uuid
/lib/udev/scsi_id -g -u -d /dev/sdb #3600c0ff00012be6bd05f1e6601000000
Либо находим uuid в выводе
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
Добавляем данный 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 "^cciss!c[0-9]d[0-9]*" }
Для исключения блокировки томов нужно их перечислить в файле multipath.conf
blacklist_exceptions { wwid 3600c0ff00012be6bd05f1e6601000000 }
Получим список multipath томов и обратим внимание что наш uuid находится в dm-0
ls -l /dev/mapper/ #total 0 #lrwxrwxrwx 1 root root 7 Apr 16 11:55 mpatha -> ../dm-0 #crw------- 1 root root 10, 236 Apr 16 11:40 control
Создадим раздел GPT
fdisk /dev/dm-0 #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-0
Проверим что создали дополнительный раздел, нумерация аналогичная привычной /dev/sdb => /dev/sdb1 только /dev/dm-0 => /dev/dm-1
ls -l /dev/mapper/ #total 0 #lrwxrwxrwx 1 root root 7 Apr 16 11:55 mpatha -> ../dm-0 lrwxrwxrwx 1 root root 7 Apr 16 11:55 mpatha-part1 -> ../dm-1 #crw------- 1 root root 10, 236 Apr 16 11:40 control
Создадим нужную файловую систему
mkfs.ext4 /dev/dm-1 mkdir -p /data mount /dev/dm-1 /data
Поверим
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-1 #/dev/dm-1: UUID="2c9e39d1-8860-458b-adee-18c99a3bb9c7" BLOCK_SIZE="4096" TYPE="ext4"
nano /etc/fstab
# data UUID=2c9e39d1-8860-458b-adee-18c99a3bb9c7 /data ext4 defaults 0 2
Проверим
umount /data mount -a
К подключенным томам можно обращаться по именам, так же как если бы вы обращались к физическим устройствам при создании физического тома LVM. Например, если имя устройства — /dev/mapper/vmb, то команда, которая отметит его как физический том, будет выглядеть так
pvcreate /dev/mapper/vmb vgcreate vmdisk /dev/mapper/vmb
multipath.conf
При необходимости можно создать multipath.conf с перечнем своих правил сканирования и подключения внешних томов
nano /etc/multipath.conf
defaults { # for debian find_multipaths "no" user_friendly_names "yes" polling_interval 10 path_selector "round-robin 0" path_grouping_policy "group_by_prio" # getuid_callout "/lib/udev/scsi_id -g -u /dev/%n" # getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n" prio "const" path_checker "tur" max_fds "max" rr_min_io 100 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 "^cciss!c[0-9]d[0-9]*" } blacklist_exceptions { wwid 3600c0ff0003c47c04b46846501000000 wwid 3600c0ff00012be6b87c1846501000000 } devices { device { vendor "HP|HPE" product "(P2000 G3 FC|P2000 G3 FC/iSCSI)" path_grouping_policy "group_by_prio" prio "alua" path_selector "round-robin 0" path_checker "tur" hardware_handler "0" failback "immediate" rr_min_io 100 rr_weight "uniform" no_path_retry 18 } device { vendor "HP|HPE" product "(MSA 2040 SAN|MSA 2050 SAN|MSA 2060 SAN)" path_grouping_policy "group_by_prio" prio "alua" path_selector "round-robin 0" path_checker "tur" hardware_handler "0" failback "immediate" rr_min_io 100 rr_min_io_rq 1 rr_weight "uniform" no_path_retry 18 } } multipaths { multipath { wwid 3600c0ff0003c47c04b46846501000000 alias data } multipath { wwid 3600c0ff00012be6b87c1846501000000 alias log } }
Тестирование производительности подключенного тома
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*