Поделиться через


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

Область применения: ✔️ виртуальные машины Linux

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

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

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

  1. Остановите затронутую виртуальную машину.
  2. Создание моментального снимка с диска ОС виртуальной машины.
  3. Создайте диск из моментального снимка диска операционной системы.
  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-diagnostics 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

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

Моментальный снимок — это полная копия виртуального жесткого диска, доступная только для чтения. Его нельзя присоединить к виртуальной машине. На следующем шаге мы создадим диск из этого моментального снимка. В следующем примере создается моментальный снимок с именем 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

Создание диска из моментального снимка

Этот скрипт создает управляемый диск с именем myOSDisk из моментального снимка 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

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

Теперь у вас есть копия исходного диска ОС. Этот новый диск можно подключить к другой виртуальной машине 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: сбой, ошибка или отклонение. Для решения проблем с доступом к приложениям, выполняющимся на виртуальной машине, см. статью Устранение проблем с подключением к приложениям на виртуальных машинах Linux в Azure.

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

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