Устранение неполадок виртуальной машины Linux путем подключения диска ОС к виртуальной машине восстановления с помощью Azure CLI
Область применения: ✔️ виртуальные машины Linux
Если возникает проблема с загрузкой или диском на виртуальной машине Linux, возможно, вам нужно устранить неполадки, связанные с самим виртуальным жестким диском. Например, такая ситуация возникает из-за неправильной записи в /etc/fstab
, которая мешает успешно загрузить виртуальную машину. В этой статье подробно описано, как с помощью Azure CLI подключить виртуальный жесткий диск к другой виртуальной машине Linux для устранения ошибок, а затем восстановить исходную виртуальную машину.
Обзор процесса восстановления
Процесс устранения неполадок выглядит следующим образом.
- Остановите затронутую виртуальную машину.
- Создание моментального снимка с диска ОС виртуальной машины.
- Создайте диск из моментального снимка диска операционной системы.
- Подключите и подключите новый диск ОС к другой виртуальной машине Linux для устранения неполадок.
- Подключитесь к этой виртуальной машине. Измените файлы или запустите все средства для устранения проблем на новом диске ОС.
- Отключите и отсоедините новый диск ОС от виртуальной машины устранения неполадок.
- Изменение диска ОС для затронутой виртуальной машины
Чтобы выполнить эти действия по устранению неполадок, нужно установить последнюю версию 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
и расположение файлов журнала могут немного отличаться. Используйте документацию к своему дистрибутиву, чтобы скорректировать команды соответствующим образом.
Подключитесь к виртуальной машине для устранения неполадок по протоколу 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
и т. д.Создайте каталог для подключения существующего виртуального жесткого диска. Следующая команда создает каталог с именем
troubleshootingdisk
.sudo mkdir /mnt/troubleshootingdisk
Если на существующем виртуальном жестком диске есть несколько разделов, подключите нужный. Следующая команда подключает первый основной разделу к каталогу
/dev/sdc1
.sudo mount /dev/sdc1 /mnt/troubleshootingdisk
Примечание.
Мы рекомендуем подключать диски данных к виртуальным машинам Azure с использованием глобального уникального идентификатора (UUID) виртуального жесткого диска. Для нашего упрощенного примера по устранению неполадок можно и не использовать UUID для подключения диска. Но в обычной ситуации, если вы измените
/etc/fstab
так, чтобы виртуальные жесткие диски подключались по имени устройства вместо UUID, у виртуальной машины могут быть проблемы с загрузкой.
Устранение проблем на новом диске ОС
Теперь, когда существующий виртуальный жесткий диск подключен, вы можете выполнить любые необходимые действия по обслуживанию и (или) устранению неполадок. После устранения проблем выполните следующие действия.
Отключение и отключение нового диска ОС
После устранения ошибок отключите и отсоедините существующий виртуальный жесткий диск от виртуальной машины, использованный для устранения неполадок. Виртуальный жесткий диск нельзя использовать с другой виртуальной машиной, пока вы не отмените аренду, присоединяющую виртуальный жесткий диск к виртуальной машине для устранения неполадок.
Используя открытый сеанс подключения по SSH к виртуальной машине для устранения неполадок, отключите существующий виртуальный жесткий диск. Прежде всего выйдите из каталога, в котором создана точка подключения.
cd /
Теперь отключите существующий виртуальный жесткий диск. В следующем примере диск отключается от каталога
/dev/sdc1
:sudo umount /dev/sdc1
Теперь отсоедините виртуальный жесткий диск от виртуальной машины. Выход из сеанса 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.