Поменять scsi контроллер vmware linux

Обновлено: 04.07.2024

Не нашел нормальной статьи как из говна и палок собрать СХД для ESXI от вмвари, так что распишу сам как же это делается.

Для начала нужно СХД.

Назовем это сервер-хранилище, чтобы не путать с серверами вмвари.

Это может быть любой комп, желательно сервер, желательно с рейдом. Я поставил на него Debian, потому что я люблю дебиан.

Однако про iSCSI. Ставим единственный необходимый пакет:

apt update && apt install tgt

После этого добавляем конфиг

  1. <target iqn.2019-10.server1.domain.local:lun1>
  2. scsi_id IET 00010001
  3. controller_tid 1
  4. lun 1
  5. backing-store /dev/mapper/server1-storage
  6. </target>

В моем случае я настраиваю два хранилища, так что вот конфиг второго

  1. <target iqn.2019-10.server2.domain.local:lun1>
  2. scsi_id IET 00020001
  3. controller_tid 2
  4. lun 2
  5. backing-store /dev/mapper/server2-storage
  6. </target>


После нажатия, вам должны предложить добавить софтварный iSCSI-адаптер



Заходим в свойства и добавляем интерфейс из виртуального свича. Замечу, что эта штука не поддерживает аггрегированные физические интерфейсы и откажется добавлять виртуальный, если у него в конфиге прописано более одного физического.


Дальше переходим на вкладку Dynamic Discovery и добавляем айпишники серверов-хранилищ (порт по умолчанию)



Недавно я столкнулся с ситуацией, когда на виртуальном диске в виртуальной машине vSphere начало заканчиваться место, а типичная операция по расширению дискового пространства оказалась невозможной. В моем случае это было связано с интерфейсом подключения диска — IDE.

Статьи, которые можно найти в этой связи в Интернет, например:
VMware Knowledge Base
Аналог, с картинками
к сожалению неполны.

Следование данным статьям приводит к неработоспособности виртуальной машины. После более детальных изысканий, был найден работающий путь, дополняющий вышеуказанные статьи. Для того, чтобы статья предоставляла цельное решение проблемы, здесь будет изложен переработанный и дополненный способ конвертации.

Отступления

1. Чтобы не загромождать статью, я буду везде опускать слово «виртуальный», которое будет применяться к диску и к машине.
2. Я буду использовать специфическую терминологию/названия, типичные для vSphere.
3. Невозможность расширения диска может быть вызвана несколькими причинами: наличие снапшотов данного диска (при этом в менеджере снапшотов они могут быть не видны), отсутствие места для расширения, включенное питание машины и т.д. Здесь описывается ситуация, когда снапшотов нет, место есть, питание выключено, но диск IDE.
4. Существует теоретическая/(не проверял) возможность конвертации диска с помощью VMware Converter. Я ее не использовал по двум причинам: это достаточно «тяжелый» софт и я встречал упоминания о невозможности загрузки машины после конвертации
5. Операции производились на vSphere + ESXi v4.1U2. Я не гарантирую работоспособности метода на других версиях (но в принципе должно работать, ничего сверхспецифичного).
6. Внутри машины установлена неонка WinXP 32bit, и часть действий на это рассчитана, если у вас стоит другая ОС имейте это в виду.
7. Формат диска Thick
8. У вас есть свежий бэкап данной машины (в процессе экспериментов я восстанавливался где-то раз 5).

Начали

Итак, наша машина выключена, у нас открыт vSphere Client.
Заходим в свойства машины, и добавляем SCSI Device. В качестве скази девайса у меня был сидиром, у которого рекомендуется сразу же поменять Virtual Device Node с SCSI(0:0) на SCSI(0:1), т.к. впоследствии на SCSI(0:0) мы повесим наш сконвертированный диск.
Скази девайс добавляется вместе со скази контроллером (SCSI Controller), у которого необходимо сменить тип с BusLogic Parallel на LSI Logic Parallel.


Сохраняем настройки и включаем машину.
Ставим драйвер для контроллера, который можно найти на сайте производителя: LSI Support.
Ищем драйвер для своей ОС, для LSI20320-R
После установки драйвера, хорошо бы проверить, что контроллер и скази девайс появились в оборудовании машины и установлены корректно.

Выключаем виртуальную машину.

В вышеприведенных ссылках, рекомендуют заменить одну строчку в файле %vm-name%.vmdk (ddb.adapterType) чтобы в дальнейшем все заработало. У меня это не сработало (машина не загружается вообще — не виден даже MBR).
После определенных изысканий была найдена проблема — разная геометрия дисков IDE и SCSI.
Таким образом необходимо выяснить геометрию SCSI диска с точно таким же размером как наш IDE диск.
Это можно сделать разными способами, лично я использовал VMware vSphere PowerCLI (см. подвал).
Итак, подключаемся к ESX(i) хосту и выясняем размер диска машины:


Т.о. мы получили размер в килобайтах. Теперь выясним название скази контроллера нашей машины (это понадобится для создания скази диска):


Создаем скази диск, аналогичного размера:

PowerCLI > New-HardDisk -Datastore datastoreXX -StorageFormat Thick -CapacityKB 10485760 -Controller "SCSI controller 0" %vm-name%

При создании, будет выведена табличка, в которой среди прочего будет прописан путь к созданному диску, а также его название.

Немного теории:
В VMware виртуальный диск в простейшем случае состоит из двух файлов:
%vm-name%.vmdk — файл описания диска
%vm-name%-flat.vmdk — собственно сам диск (содержимое)
Кстати, Datastore Browser представляет их в виде одного файла, но если этот файл скачать, например, на локальную машину, то фактически получим два файла, как и должно быть (в теории может быть и больше, если использовался split).

На данный момент нас интересуют файлы описания старого IDE диска и новосозданного SCSI диска. Я пользовался SSH и WinSCP для их извлечения.
Для моего размера диска увидим следующее:

Сначала обратим внимание на вторую строчку, на цифры после RW, это размер дисков (в моем случае в 512b блоках). Числа должны совпадать, если они не совпадают, нет смысла читать дальше.

Далее сразу же бросается в глаза различие цилиндров и головок. Ну и тип адаптера.
Теперь редактируем файл описания старого IDE диска, меняем соответственно число цилиндров, головок и тип адаптера. Не рекомендую просто переписывать файл описания, таковым от нового скази диска, т.к. информации у старого IDE диска в этом файле больше.

Все что нам нужно было от тестового скази диска мы получили, поэтому его можно удалить (например с помощью Remove-HardDisk).

Теперь заходим в свойства виртуальной машины и удаляем IDE диск из состава машины.
будьте предельно внимательны, диск удаляем только из виртуальной машины (Remove from virtual machine), но не удаляем файлы с диска!


Сохраняем изменения, и опять заходим в свойства виртуальной машины. Добавляем жесткий диск, выбираем пункт «Использование существующего диска» (Reuse existing virtual disk) и указываем на файл с нашим диском.


В дополнительных свойствах, проверяем что диск встал на SCSI(0:0).


В данный момент можно удалить скази сидиром, если он не нужен, и проверить настройки IDE сидирома (если он есть). IDE сидиром необходимо установить на канал IDE(0:0) или IDE(1:0) (мастером), иначе машина откажется запускаться.

В целом это все. Можно еще зайти в БИОС виртуальной машины, проверить порядок загрузки.
Виртуальную машину можно запустить, при первой загрузке будет установлен драйвер на диск.


Я хотел бы немного затронуть тему использования ПО Oracle Database внутри виртуальных машин VMWare с точки зрения их оптимальной настройки.
Многие заказчики используют гипервизоры VMWare - это конечно безусловный лидер рынка виртуализации на платформе x86, и мне часто приходится сталкиваться с темой "медленной работы оракла на VMWare".

Вот перечень рекомендаций по использованию ПО Oracle в виртуальной машине VMWare.


Диски виртуальной машины

1. Рекомендуется в гостевой машине сделать отдельные диски для ОС, файла подкачки (swap), временных файлов (temp), выполняемых файлов Oracle (каталогов ORACLE_HOME), файлов данных БД (oradata), и (по необходимости) для FRA.
Наличие отдельных дисков позволит:
- гибко расширять диски, если вдруг неожиданно виртуальный диск переполнится, например: когда при установке патча у Вас не хватило места, вы можете пересоздать виртуальный диск бОльшего размера и "перелить" на него данные;
- распределить vmdk-файлы по разным дискам (контроллерам) для балансировки ввода-вывода на хост-машине, например: вы можете положить swap-файл на SSD-диск.

2. Желательно чтобы имена файлов дисков виртуальных машин (vmdk-файлы) имели "говорящие" названия, например: system.vmdk, swap.vmdk, temp.vmdk, orahome.vmdk, oradata.vmdk, fra.wmdk.

3. Не рекомендуется делать thin-диски для файлов данных БД.
Поскольку, как правило, файлы данных табличных пространств делают autoextend и происходит "двойное" расширение vmdk-файлов: на первом шаге расширяется vmdk-файл, на втором - tablespace-файл внутри виртуальной машины. Что замедляет работу ВМ.
Варианта два:
- напрямую отдать под виртуальный диск раздел хост-машины (этот вариант конечно предпочтительный, но не всегда есть такая возможность);
- при создании виртуального диска заранее распределить место в vmdk-файле,
для расширения такого раздела можно использовать LVM гостевой системы, либо ASM (что предпочтительее);

- укажите "p" для создания primary-раздела;
- укажите "1" для номера раздела;
- нажмите два раза клавишу Enter для принятия параметров по умолчанию значений первого и последнего цилиндра диска (под раздел отводится целиком весь диск);
- введите конмадну "t" для указания типа раздела
- далее введите команду "fb" для того чтобы вновь созданный раздел имел тип "VMware VMFS volume";
- перейдите в расширенный режим (expert mode) утилиты fdisk введя команду "x";
- введите команду "b" для задания первого блока;
- укажите номер раздела "1";
- укажите начальный блок "128"
- и, наконец, введите команду "w" для записи изменений на диск.

Создание файловой системы на созданном таким образом разделе осуществляется обычным образом, например: mkfs -t ext3 /dev/sdg1

Настройка ПО внутри виртуальной машины
Внутри виртуальной машины Linux отключите службы НЕ нужные для работы ПО Oracle, такие как: anacron, apmd, atd, autofs, cups, cupsconfig, gpm, isdn, iptables, kudzu, netfs и portmap.

После окончания настройки и установки ПО Oracle, рекомендуется перевести Linux на виртуальной машине в 3-й режим загрузки (чтобы не грузилась графическая оболочка). Для этого в файле /etc/initab нужно поменять строку id:5:initdefault: на id: 3 :initdefault:

Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.

Виртуальный контроллер SCSI тоже бывает разных типов, и для него доступны кое-какие настройки. Сначала про типы. Если вы зайдете в свойства ВМ и на закладке Hardware выделите SCSI-контроллер, в верхней правой части окна будет кнопка Change Type (рис. 5.12).

Смена типа виртуального SCSI-контроллера Типов всего четыре:

Рис. 5.12. Смена типа виртуального SCSI-контроллера Типов всего четыре:

- BusLogic Parallel - этот виртуальный дисковый контроллер работает наименее эффективным способом, с большими, чем другие, накладными расходами. Однако для него есть драйверы для большого количества операционных систем;

- LSI Logic Parallel - работает с меньшими накладными расходами, чем Bus-Logic;

- LSI Logic SAS - новая версия LSI Logic. Отличается тем, что поддерживает стандарт SCSI 3. Используется для ВМ, которым необходима поддержка этого стандарта. Главным образом для виртуальных машин - узлов кластера Microsoft Failover Cluster;

- VMware Paravirtual SCSI (PVSCSI) - самая современная версия виртуального дискового контроллера. Обеспечивает наибольшую производительность и наименьшие накладные расходы. Однако не работает VMware Fault Tolerance для ВМ с этим контроллером, и список ОС, для которых есть драйверы, невелик:

• Windows Server 2008 (включая R2);

• Windows Server 2003;

• Red Hat Enterprise Linux (RHEL) 5.

Напомню, что «паравиртуализованный» виртуальный контроллер означает, что при его работе задействуются мощности контроллера физического напрямую, без какой-то эмуляции или перехвата со стороны гипервизора. Именно в этом кроется повышение эффективности паравиртуализованных дисковых и сетевых контроллеров.

Резюме. Если позволяют условия, используйте контроллер типа VMware Paravirtual. Если он не поддерживается гостевой ОС, используйте LSI Logic Parallel. Если и он не поддерживается, используйте BusLogic. Для ВМ-узлов MFC используйте LSI Logic SAS.

Пример - установка в ВМ Windows 2008. У этой ОС нет стандартных драйверов для PVSCSI, однако есть для контроллера LSI. Но на ESX(i) (начиная с Update 1) есть образ FDD с драйверами для PVSCSI. И теперь у вас есть несколько вариантов того, как поступить с типом контроллера:

- вариант 1. Тип контроллера поставить PVSCSI, подключить к ВМ образ flp с драйвером для него и в начале установки подложить эти драйверы. После окончания установки оставить этот тип контроллера.

Вариант хорош простотой. В данном случае его можно назвать оптимальным;

- вариант 2. Тип контроллера поставить LSI Logic. После установки ОС добавить в систему второй контроллер, типа PVSCSI, включить ВМ. Windows активирует драйверы для PVSCSI. Выключить ВМ, удалить второй контроллер (PVSCSI), тип первого поменять с LSI Logic на PVSCSI. Вариант не очень удобен большим количеством шагов, зато нет нужды в подкладывании драйверов;

- наконец, драйверы можно интегрировать в дистрибутив - но их необходимо где-то взять. Например, из упомянутого образа FDD. Как вариант - из iso с VMware tools.

Образы дискет с драйверами для PVSCSI (Windows 2003/2008) и Bus Logic (Windows XP) доступны в каталоге vmimages. Зайдите в свойства ВМ, выделите Floppy Drive ^ Use existing floppy image in datastore ^ каталог vmimages\ floppies.

Еще у виртуального SCSI-контроллера есть настройка «Bus sharing» - совместный доступ к SCSI-шине. Она нужна в ситуациях, когда вы хотите дать одновременный доступ к одним и тем же виртуальным дискам нескольким ВМ. Обычно это необходимо для построения кластеров, таких как MSCS/MFC. Варианты этой настройки:

- None - совместного доступа нет. Значение настройки по умолчанию;

- Virtual - к виртуальным дискам, висящим на этом контроллере, возможен доступ с других ВМ на этом же сервере. Настройка, нужная для организации cluster-in-a-box;

- Physical - к виртуальным дискам, висящим на этом контроллере, возможен доступ с других ВМ, в том числе с других серверов. Настройка, нужная для организации cluster-across-boxes и physical-to-virtual.

Добавление контроллера. Если вы нажмете кнопку Add на закладке Hardware в свойствах ВМ, вы увидите список виртуальных компонентов, которые в ВМ можно добавить. Однако среди них нет SCSI-контроллера. Если вам надо добавить SCSI-контроллер, то делается это так.

Все-таки идем в мастер добавления виртуального оборудования Edit Settings ^ Hardware ^ Add. Но добавляем Hard Drive.

Проходим по мастеру создания жесткого диска. О подробностях - чуть ниже, сейчас нас интересует пункт «SCSI node». У каждого виртуального диска есть адрес вида «SCSI X:Y». Последняя цифра адреса - это номер диска на SCSI-шине, SCSI id. А первая цифра - номер контроллера. Таким образом, первый, дефолтный диск ВМ создается по адресу SCSI 0:0, то есть это первый диск на первом контроллере. Если для второго диска вы выберете адрес SCSI 1:0, то кроме диска у вас добавится и второй контроллер. Если для третьего диска выбрать SCSI 2:0, то добавится третий контроллер. Всего до четырех.

Добавлять несколько контроллеров вам придется преимущественно для ВМ -узлов Microsoft Cluster Services или Microsoft Failover Cluster. Для этих решений требуется, чтобы загрузочный диск и диски с данными висели на разных контроллерах.

Читайте также: