[Из песочницы] Как создать несколько VMFS датасторов на одном дисковом устройстве
В некоторых специфических ситуациях вам может понадобиться создать несколько data store на одном дисковом устройстве. Как, например, произошло в нашем случае.
На одном из наших Vsphere ESxi серверов установлен RAID адаптер Adaptec ASR72405 c подключёнными к нему 24 жёсткими дисками по 5 TB марки ST5000NM0024. Нами было принято решение построить RAID 60 на 22 дисках и ещё 2 диска сконфигурировать в hot-spare. Это обеспечивало нам необходимое дисковое пространство при максимальной полученной скорости доступа при потоковом чтении/записи — в районе 3.5 гигабайта в секунду на запись и 3.3 гигабайта в секунду на чтение. Обращаю внимание ещё раз, что по специфике нашей задачи нас интересовала именно максимальная скорость при потоковом чтении/записи.
Однако суммарная ёмкость получаемого тома (и необходимая нам для нашей задачи) составляет 81.826 терабайта, что превышает максимально поддерживаемые ESXi 62TB. Создание двух логических устройств/рейд массивов по 10 дисков каждый не подходило, поскольку уменьшало максимальную скорость доступа почти вдвое и значительно уменьшало общий суммарный размер хранилища из-за увеличения количества дисков, выделенных для чётности (в двух массивах их, соответственно будет в 2 раза больше чем в одном) и дисков hot-spare, поскольку каждый массив RAID-60 требует чётного количества дисков — т.е. 4 диска вынужденно уходили в hot-spare. Первоначально мы попробовали создать два логических диска (тома) используя по ½ каждого жёсткого диска для каждого тома соответственно, однако тесты отказоустойчивости выявили неприятную особенность (я бы даже назвал это багом) логики работы внутренних микропрограмм Adaptec в нашей конфигурации: при выходе из строя жёсткого диска и перестроении массива RAID контроллер подключал к одному логическому диску половину одного hot-spare диска, а к другому — половину другого hot-spare диска. А при замене диска на исправный — был не в состоянии закончить copying-back процесс и зависал в состоянии 99% на более чем неделю — дольше мы не ждали. При этом никаких инструментов выяснить причину этого зависания и/или как-то вручную восстановить логические диски Adaptec не предоставляет. (Естественно, нами использовались последние доступные версии firmware и raid management.)
На наше обращение в техническую поддержку Adaptec мы получили рекомендацию использовать жёсткие диски в логических дисках целиком, а не частично. Дословно — «If all arrays do not complete the rebuild correctly, I would recommend you reconfigure the system to have several separate RAID arrays rather than the arrays spread across all the drives.» По причинам описаным выше, данное решение нас не устраивало.
Таким образом, у нас возникла необходимость разделить единый RAID диск размером почти 82 терабайта на два тома примерно по 41 терабайту на уровне разделов на диске средствами операционной системы. Vsphere ESXi в нашем случае. Однако стандартно через GUI такая возможность не поддерживается. ESXi позволяет через GUI создать только один data store на каждом подключённом диске, и несмотря на то, что на диске ещё осталось свободное место, GUI не позволяет создать ещё один data store. Ниже вы найдёте инструкцию, как сделать это средствами CLI.
Прежде всего вам необходимо разрешить SSH доступ к вашему ESXi хосту. После этого выясните, как именно называется ваш RAID массив. Это, например, можно посмотреть через GUI:
Т.е., для всех дальнейших операций наш диск будет называться
/vmfs/devices/disks/eui.3167ece000d00000
Перед началом разметки диска проверьте текущее состояние таблицы разделов и убедитесь что у вас нет никаких уже существующих разделов на этом диске:
~ # partedUtil getptbl /vmfs/devices/disks/eui.3167ece000d00000
gpt
10938084 255 63 175720329216
Далее проверьте максимальный доступный для использования сектор диска:
~ # partedUtil getUsableSectors /vmfs/devices/disks/eui.3167ece000d00000
34 175720329182
Теперь можно создавать необходимые разделы:
~ # partedUtil setptbl "/vmfs/devices/disks/eui.3167ece000d00000" gpt "1 2048 87031810047 AA31E02A400F11DB9590000C2911D1B8 0" "2 87031810048 175720329182 AA31E02A400F11DB9590000C2911D1B8 0"
Первый раздел создаётся с сектора 2048 по сектор 87031810047, второй с сектора 87031810048 по сектор 175720329182. В вашем случае эти значения скорей всего будут другими. Идентификатор AA31E02A400F11DB9590000C2911D1B8 должен быть скопирован без изменений, он означает, что создаётся раздел типа VMFS. 0 после этого идентификатора означает, что раздел будет не загружаемым.
Если все значения указаны правильно, то вы получите ответ
gpt
0 0 0 0
1 2048 87031810047 AA31E02A400F11DB9590000C2911D1B8 0
2 87031810048 175720329182 AA31E02A400F11DB9590000C2911D1B8 0
Можете так же проверить полученную таблицу разделов:
~ # partedUtil getptbl /vmfs/devices/disks/eui.3167ece000d00000
gpt
10938084 255 63 175720329216
1 2048 87031810047 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
2 87031810048 175720329182 AA31E02A400F11DB9590000C2911D1B8 vmfs 0
Это означает что нами были успешно созданы два раздела, и они имеют имена eui.3167ece000d00000:1 и eui.3167ece000d00000:2
Теперь осталось только создать data stores.
Это делается командами
~ # /sbin/vmkfstools -C vmfs5 -b 1m -S Data1 /vmfs/devices/disks/eui.3167ece000d00000:1
и
~ # /sbin/vmkfstools -C vmfs5 -b 1m -S Data2 /vmfs/devices/disks/eui.3167ece000d00000:2
Если всё сделано правильно, то после каждого запуска команды вы увидите что-то вроде:
create fs deviceName:'/vmfs/devices/disks/eui.3167ece000d00000:1', fsShortName:'vmfs5', fsName:'Data1'
deviceFullPath:/dev/disks/eui.3167ece000d00000:1 deviceFile:eui.3167ece000d00000:1
Checking if remote hosts are using this device as a valid file system. This may take a few seconds...
Creating vmfs5 file system on "eui.3167ece000d00000:1" with blockSize 1048576 and volume label "Data1".
Successfully created new volume: 59e14137-1e03a524-12db-002590826ec4
Через несколько секунд оба ваших data store станут доступны в GUI:
Более подробную информацию по использованию этих команд вы можете найти здесь и здесь.
Буду рад, если сэкономил кому-то несколько часов. Отвечу на любые вопросы.
Спасибо, что дочитали до конца.