Устранение неполадок виртуальной машины Linux путем подключения диска ОС к виртуальной машине восстановления с помощью Azure CLI
Если на виртуальной машине Linux возникает ошибка загрузки или диска, может потребоваться выполнить действия по устранению неполадок на самом виртуальном жестком диске. Распространенным примером является недопустимая запись в /etc/fstab
, которая препятствует успешной загрузке виртуальной машины. В этой статье описано, как с помощью Azure CLI подключить виртуальный жесткий диск к другой виртуальной машине Linux, чтобы устранить ошибки, а затем повторно создать исходную виртуальную машину.
Обзор процесса восстановления
Процесс устранения неполадок выглядит следующим образом:
- Остановите затронутую виртуальную машину.
- Возьмите snapshot с диска ОС виртуальной машины.
- Создайте диск из snapshot диска ОС.
- Подключите и подключите новый диск ОС к другой виртуальной машине Linux для устранения неполадок.
- Подключитесь к виртуальной машине для устранения неполадок. Измените файлы или запустите любые средства, чтобы устранить проблемы на новом диске ОС.
- Отключите и отсоедините новый диск ОС от виртуальной машины, устраняющей неполадки.
- Измените диск ОС для затронутой виртуальной машины.
Чтобы выполнить эти действия по устранению неполадок, необходимо установить последнюю версию 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
команды могут немного отличаться. Соответствующие изменения в командах см. в документации по конкретному дистрибутиву.
Подключение по протоколу 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.
Свяжитесь с нами для получения помощи
Если у вас есть вопросы или вам нужна помощь, создайте запрос в службу поддержки или обратитесь за поддержкой сообщества Azure. Вы также можете отправить отзыв о продукте в сообщество отзывов Azure.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по