Устранение неполадок виртуальной машины Linux путем подключения диска ОС к виртуальной машине восстановления с помощью Azure CLI

Если на виртуальной машине Linux возникает ошибка загрузки или диска, может потребоваться выполнить действия по устранению неполадок на самом виртуальном жестком диске. Распространенным примером является недопустимая запись в /etc/fstab , которая препятствует успешной загрузке виртуальной машины. В этой статье описано, как с помощью Azure CLI подключить виртуальный жесткий диск к другой виртуальной машине Linux, чтобы устранить ошибки, а затем повторно создать исходную виртуальную машину.

Обзор процесса восстановления

Процесс устранения неполадок выглядит следующим образом:

  1. Остановите затронутую виртуальную машину.
  2. Возьмите snapshot с диска ОС виртуальной машины.
  3. Создайте диск из snapshot диска ОС.
  4. Подключите и подключите новый диск ОС к другой виртуальной машине Linux для устранения неполадок.
  5. Подключитесь к виртуальной машине для устранения неполадок. Измените файлы или запустите любые средства, чтобы устранить проблемы на новом диске ОС.
  6. Отключите и отсоедините новый диск ОС от виртуальной машины, устраняющей неполадки.
  7. Измените диск ОС для затронутой виртуальной машины.

Чтобы выполнить эти действия по устранению неполадок, необходимо установить последнюю версию Azure CLI и войти в учетную запись Azure с помощью команды az login.

Команды восстановления виртуальной машины можно использовать для автоматизации шагов 1, 2, 3, 4, 6 и 7. Дополнительную документацию и инструкции см. в статье Восстановление виртуальной машины Linux с помощью команд восстановления виртуальной машины Azure.

Важно!

Скрипты, приведенные в этой статье, применяются только к виртуальным машинам, которые используют управляемый диск.

В следующих примерах замените имена параметров собственными значениями, такими как myResourceGroup и myVM.

Определение проблем с загрузкой

Проверьте последовательные выходные данные, чтобы определить, почему виртуальная машина не может загрузиться правильно. Распространенным примером является недопустимая запись в /etc/fstabили удаляемый или перемещаемый базовый виртуальный жесткий диск.

Получите журналы загрузки с помощью команды az vm boot-диагностика get-boot-log. В следующем примере возвращается последовательный вывод от виртуальной машины с именем myVM в группе ресурсов с именем myResourceGroup:

az vm boot-diagnostics get-boot-log --resource-group myResourceGroup --name myVM

Просмотрите последовательные выходные данные, чтобы определить причину сбоя загрузки виртуальной машины. Если последовательные выходные данные не предоставляют никаких указаний, вам может потребоваться просмотреть файлы журналов после /var/log подключения виртуального жесткого диска к виртуальной машине для устранения неполадок.

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

В следующем примере виртуальная машина с именем myVM останавливается из группы ресурсов с именем myResourceGroup:

az vm stop --resource-group MyResourceGroup --name MyVm

Создание snapshot с диска ОС затронутой виртуальной машины

Snapshot — это полная копия виртуального жесткого диска только для чтения. Его нельзя подключить к виртуальной машине. На следующем шаге мы создадим диск из этого snapshot. В следующем примере создается snapshot с именем mySnapshot из диска ОС виртуальной машины с именем myVM.

#Get the OS disk Id 
$osdiskid=(az vm show -g myResourceGroup -n myVM --query "storageProfile.osDisk.managedDisk.id" -o tsv)

#creates a snapshot of the disk
az snapshot create --resource-group myResourceGroupDisk --source "$osdiskid" --name mySnapshot

Создание диска из snapshot

Этот скрипт создает управляемый диск с именем myOSDisk из snapshot с именем mySnapshot.

#Provide the name of your resource group
$resourceGroup="myResourceGroup"

#Provide the name of the snapshot that will be used to create Managed Disks
$snapshot="mySnapshot"

#Provide the name of the Managed Disk
$osDisk="myNewOSDisk"

#Provide the size of the disks in GB. It should be greater than the VHD file size.
$diskSize=128

#Provide the storage type for Managed Disk. Premium_LRS or Standard_LRS.
$storageType="Premium_LRS"

#Provide the OS type
$osType="linux"

#Get the snapshot Id 
$snapshotId=(az snapshot show --name $snapshot --resource-group $resourceGroup --query id -o tsv)

# Create a new Managed Disks using the snapshot Id.

az disk create --resource-group $resourceGroup --name $osDisk --sku $storageType --size-gb $diskSize --source $snapshotId

Если группа ресурсов и исходная snapshot находятся не в одном регионе, при запуске az disk createвы получите сообщение об ошибке "Ресурс не найден". В этом случае необходимо указать--location <region>, чтобы создать диск в том же регионе, что и исходный snapshot.

Теперь у вас есть копия исходного диска ОС. Этот новый диск можно подключить к другой виртуальной машине Windows для устранения неполадок.

Подключение нового виртуального жесткого диска к другой виртуальной машине

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

Этот скрипт подключите диск myNewOSDisk к виртуальной машине MyTroubleshootVM:

# Get ID of the OS disk that you just created.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)

# Attach the disk to the troubleshooting VM
az vm disk attach --disk $myNewOSDiskid --resource-group $resourceGroup --size-gb $diskSize --sku $storageType --vm-name MyTroubleshootVM

Подключение подключенного диска данных

Примечание.

В следующих примерах подробно описаны действия, необходимые для виртуальной машины Ubuntu. Если вы используете другой дистрибутив Linux, например Red Hat Enterprise Linux или SUSE, расположение файлов журнала и mount команды могут немного отличаться. Соответствующие изменения в командах см. в документации по конкретному дистрибутиву.

  1. Подключение по протоколу SSH к виртуальной машине для устранения неполадок с использованием соответствующих учетных данных. Если этот диск является первым диском данных, подключенным к виртуальной машине для устранения неполадок, скорее всего, он подключен к /dev/sdc. Используйте dmesg для просмотра подключенных дисков:

    dmesg | grep SCSI
    

    Выходные данные аналогичны следующему примеру:

    [    0.294784] SCSI subsystem initialized
    [    0.573458] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
    [    7.110271] sd 2:0:0:0: [sda] Attached SCSI disk
    [    8.079653] sd 3:0:1:0: [sdb] Attached SCSI disk
    [ 1828.162306] sd 5:0:0:0: [sdc] Attached SCSI disk
    

    В предыдущем примере диск ОС находится на , /dev/sda а временный диск, предоставленный для каждой виртуальной машины, — в /dev/sdb. Если у вас несколько дисков данных, они должны быть в /dev/sdd, /dev/sdeи т. д.

  2. Создайте каталог для подключения существующего виртуального жесткого диска. В следующем примере создается каталог с именем troubleshootingdisk:

    sudo mkdir /mnt/troubleshootingdisk
    
  3. Если на существующем виртуальном жестком диске имеется несколько секций, подключите необходимый раздел. В следующем примере первая основная секция подключается по адресу /dev/sdc1:

    sudo mount /dev/sdc1 /mnt/troubleshootingdisk
    

    Примечание.

    Рекомендуется подключать диски данных на виртуальных машинах в Azure с помощью универсального уникального идентификатора (UUID) виртуального жесткого диска. В этом кратком сценарии устранения неполадок подключение виртуального жесткого диска с помощью UUID не требуется. Однако при обычном использовании изменение /etc/fstab для подключения виртуальных жестких дисков с использованием имени устройства, а не UUID может привести к сбою загрузки виртуальной машины.

Исправление проблем на новом диске ОС

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

Отключение и отключение нового диска ОС

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

  1. От сеанса SSH до виртуальной машины для устранения неполадок отключите существующий виртуальный жесткий диск. Сначала выйдите из родительского каталога для точки подключения:

    cd /
    

    Теперь отключите существующий виртуальный жесткий диск. В следующем примере устройство отключает по адресу /dev/sdc1:

    sudo umount /dev/sdc1
    
  2. Теперь отсоедините виртуальный жесткий диск от виртуальной машины. Закройте сеанс SSH на виртуальной машине для устранения неполадок:

    az vm disk detach -g MyResourceGroup --vm-name MyTroubleShootVm --name myNewOSDisk
    

Изменение диска ОС для затронутой виртуальной машины

Вы можете использовать Azure CLI для переключения дисков ОС. Вам не нужно удалять и повторно создавать виртуальную машину.

В этом примере останавливается виртуальная машина с именем myVM и назначается диск с именем myNewOSDisk в качестве нового диска ОС.

# Stop the affected VM
az vm stop -n myVM -g myResourceGroup

# Get ID of the OS disk that is repaired.
$myNewOSDiskid=(az disk show -g $resourceGroup -n $osDisk --query id -o tsv)

# Change the OS disk of the affected VM to "myNewOSDisk"
az vm update -g myResourceGroup -n myVM --os-disk $myNewOSDiskid

# Start the VM
az vm start -n myVM -g myResourceGroup

Дальнейшие действия

Если у вас возникли проблемы с подключением к виртуальной машине, см. статью Устранение неполадок SSH-подключений к виртуальной машине Azure. Проблемы с доступом к приложениям, запущенным на виртуальной машине, см. в статье Устранение неполадок с подключением приложений на виртуальной машине Linux.

Свяжитесь с нами для получения помощи

Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.