как расширить хранилище SAN в CentOS 7

У меня есть сервер с CentOS 7, использующий LUN для хранения данных. Недавно команда Storage расширила пространство LUN. Это результат команды multipath -ll

      ~ # multipath -ll                                                                                    
   mpathc (3600601606cb04000a0eb35b80750eb11) dm-5 DGC     ,VRAID           
   **size=27T** features='2 queue_if_no_path retain_attached_hw_handler' hwhandler='1 alua' wp=rw
   |-+- policy='service-time 0' prio=50 status=active
   | |- 1:0:0:2 sdl 8:176 active ready running
   | `- 4:0:0:2 sdn 8:208 active ready running
   `-+- policy='service-time 0' prio=10 status=enabled
     |- 1:0:1:2 sdm 8:192 active ready running
     `- 4:0:2:2 sdo 8:224 active ready running

Предыдущий размер составлял 20 ТБ, а теперь увеличился до 27 ТБ.

Это вывод команды fdisk coammnd

      fdisk -l /dev/mapper/mpathc
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Disk /dev/mapper/mpathc: 29686.8 GB, 29686813949952 bytes, 57982058496 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
Disk label type: gpt
Disk identifier: 843A6F7E-581A-455E-822F-2CE4306394BF

#         Start          End    Size  Type            Name
1         8192  42949672926     20T  Linux filesyste 

Вы можете видеть, что размер и секторы LUN увеличены. это результат команды kpartx

      kpartx -l /dev/mapper/mpathc
GPT:Primary header thinks Alt. header is not at the end of the disk.
GPT:Alternate GPT header not at the end of the disk.
GPT: Use GNU Parted to correct GPT errors.
mpathc1 : 0 42949664735 /dev/mapper/mpathc 8192

и это вывод команды df

      df -h /dev/mapper/mpathc1
Filesystem           Size  Used Avail Use% Mounted on
/dev/mapper/mpathc1   20T   17T  4.0T  81% /Splunk-Storage/COLD

Поэтому я не могу понять, как расширить пространство /dev/mapper/mpathc1 без потери данных. Я очень признателен за любое предложение. Заранее спасибо.

2 ответа

Шаг 1. Попробуйте повторно просканировать устройства хранения, чтобы сообщить ядру об изменении размера. Я не уверен, нужно ли это делать для всех четырех компонентов многолучевого распространения, но это не должно повредить. Вы повторно сканируете устройства хранения, записывая что-либо в ихrescanфайл:

      echo > /sys/class/block/sdl/device/rescan
echo > /sys/class/block/sdm/device/rescan
echo > /sys/class/block/sdn/device/rescan
echo > /sys/class/block/sdo/device/rescan

Сканирование HBA также должно работать. SCSI-HBA имеютscanфайл; вы записываете в него три десятичных числа: контроллер, цель и LUN, чтобы сканировать этот LUN. Или используйте подстановочный знак «-» вместо числа. Ниже сканируются все устройства на контроллере 0 на двух HBA:

      echo "0 - -" > /sys/class/scsi_host/host1/scan
echo "0 - -" > /sys/class/scsi_host/host4/scan

Шаг 2: На этом этапе ядро ​​знает, что/dev/mapper/mpathcсоставляет 27 ТБ. Теперь вам придется увеличить размер раздела 1. Эту команду можно использовать для изменения размера разделов, но я считаю, что версия Centos 7 не имеет такой функции. Поэтому я бы размонтировал файловую систему, удалил раздел (страшно, я знаю), а затем снова создал раздел, на этот раз с правильным размером. Проверьте правильность его параметров.

      umount /dev/mapper/mpathc1
parted /dev/mapper/mpathc1 rm 1 mkpart primary 0% 100% print

Возможно, вы захотите сначала проверить это на диске, который не содержит ценных данных.

не знаю, можно ли установитьpartedверсия, в которой естьresizepartкоманда. Это облегчило бы второй шаг.

Руководство по хранению RHEL 7 содержит аналогичную процедуру с , но предполагает использование LVM и отсутствие многопутевого доступа. Послеfdiskпроцедуру, вам, вероятно, придется использоватьkpartxдля информирования ядра об изменениях на диске. Таким образом, разделенный подход кажется мне более простым и, следовательно, более безопасным.

Шаг 3 : Увеличьте файловую систему. Сначала установите его снова. Если это XFS, вам необходимо смонтировать его, а затем запуститьxfs_growfs.

      mount /dev/mapper/mpathc1 /Splunk-Storage/COLD
xfs_growfs /Splunk-Storage/COLD

Если это ext[234], запуститеresize2fs. Его можно смонтировать или снять.

      resize2fs /dev/mapper/mpathc1
mount /dev/mapper/mpathc1 /Splunk-Storage/COLD

Вы сделали.

Спасибо за ваше время.
На шаге 2 я использовалresizepartно я получил это:
Error: The backup GPT table is not at the end of the disk, as it should be. This might mean that another operating system believes the disk is smaller. Fix, by moving the backup to the end (and removing the old backup)? Fix/Ignore/Cancel?
Должен ли я это исправить?

Это полный вывод

      ~ # parted /dev/mapper/mpathc                                                                                                   
 GNU Parted 3.1
 Using /dev/mapper/mpathc
 Welcome to GNU Parted! Type 'help' to view a list of commands.
 (parted) p                                                                
 Error: The backup GPT table is not at the end of the disk, as it should  be.  This might mean that another operating system believes the
 disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
 Fix/Ignore/Cancel? I                                                      
 Warning: Not all of the space available to /dev/mapper/mpathc appears to be used, you can fix the GPT to use all of the space (an extra
 15032385536 blocks) or continue with the current setting? 
 Fix/Ignore? I                                                             
 Model: Linux device-mapper (multipath) (dm)
 Disk /dev/mapper/mpathc: 29.7TB
 Sector size (logical/physical): 512B/512B
 Partition Table: gpt
 Disk Flags: 

 Number  Start   End     Size    File system  Name  Flags
 1      4194kB  22.0TB  22.0TB  xfs

(parted) resizepart                                                       
Error: The backup GPT table is not at the end of the disk, as it should be.  This might mean that another operating system believes the
disk is smaller.  Fix, by moving the backup to the end (and removing the old backup)?
Fix/Ignore/Cancel? C
Другие вопросы по тегам