Невозможно смонтировать внешний постоянный диск как часть сценария запуска в вычислительном движке Google

Я пытаюсь смонтировать внешний постоянный диск с помощью команды:

sudo mount -o discard, defaults /dev/sdb /mnt/working

что я хочу сделать, так это сделать его частью сценария запуска, когда я запускаю свою виртуальную машину. Я выполнил инструкции по ссылке: https://cloud.google.com/compute/docs/startupscript#startupscriptrunninginstances

Я добавил сценарий следующим образом:

custom metadata
key                       value
startup-script            #! /bin/bash
                           sudo mount -o discard,defaults /dev/sdb /mnt/working

Однако когда я перезапускаю свою виртуальную машину, она не выполняет ее. Что я здесь делаю не так?

ИЗМЕНИТЬ, чтобы предоставить дополнительную информацию

Изображение: debian-10-buster-v20200910 Я не включил ведение журнала ошибок, так как я больше не использую бесплатную версию, но надеюсь, что средство просмотра журнала по умолчанию покажет журналы ошибок. Я ничего не вижу. Я также запустил сценарий, войдя в экземпляр vm:

sudo google_metadata_script_runner startup  

Это тоже не помогло.


person sunny    schedule 21.09.2020    source источник
comment
1) Проверьте журналы на наличие сообщения об ошибке для команды монтирования. 2) Каталог /mnt/working существует? 3) /dev/sdb форматируется с файловой системой? 4) Обычно вы используете /etc/fstab для монтирования файловых систем при запуске. Измените свой вопрос, указав подробные сведения о вашем расследовании этой проблемы. Помните, что команды могут быть специфичными для дистрибутива, включая используемую вами ОС.   -  person John Hanley    schedule 22.09.2020
comment
@JohnHanley, спасибо, что вернулся. Позвольте мне ответить на ваши вопросы один за другим. 1. Я не вижу никаких журналов в средстве просмотра журналов за последние 24 часа для команды mount.2./mnt/working существует, и я могу смонтировать его вручную, запустив указанную выше команду 3. это отформатированная файловая система.4. Я выполнил следующие действия: cloud.google.com/compute/docs/ диски / add-persistent-disk. Я отредактирую вопрос и добавлю эти.   -  person sunny    schedule 22.09.2020
comment
Какой просмотрщик журналов? Команда mount записывает ошибки в /var/log/syslog или аналогичный. Вы также увидите ошибки в выводе консоли. help.ubuntu.com/community/LinuxLogFiles   -  person John Hanley    schedule 22.09.2020
comment
@JohnHanley, обратите внимание, что он работает вручную, когда я явно запускаю команду, как указано выше, из моего экземпляра виртуальной машины. Я надеялся, что то же самое будет выполнено как часть сценария запуска. Не уверен, что вы имеете в виду console. Если вы имели в виду консоль google - ошибок не возникло. виртуальная машина загрузилась правильно. / var / log / syslog не было сообщений об ошибках. Я не думаю, что сценарий когда-либо выполнялся как часть загрузки. Я могу ошибаться.   -  person sunny    schedule 22.09.2020
comment
Консоль означает консоль последовательного порта, где вы можете просматривать вывод консоли Linux. cloud.google.com/compute/docs/instances/ Если команда монтирования не отображается в системном журнале, значит, команда не была запущена. Это означает ошибку в вашем сценарии запуска. Это также будет в / var / log / syslog (поиск предупреждения или ошибки). У вас где-то ошибка. В своем вопросе вы показываете свой сценарий запуска. Это ваш точный сценарий? Как вы это добавляете? Это не так. cloud.google.com/compute/docs/startupscript   -  person John Hanley    schedule 22.09.2020
comment
@JohnHanley, спасибо за быстрый ответ. В системном журнале нет ничего наверняка. Я следил за тем же документом, который вы упоминаете. Если вы перейдете к разделу, в котором говорится о добавлении сценария запуска к существующей виртуальной машине, в нем описаны шаги. И да, это сценарий, который я хочу выполнить. Похоже, вы нашли проблему. хотелось бы это услышать. Мне также помог другой ответ stackoverflow: stackoverflow.com/questions/30766912/   -  person sunny    schedule 22.09.2020
comment
вы также можете проверить журналы службы при подключении к экземпляру по SSH sudo journalctl -u google-startup-scripts.service   -  person lukaszberwid    schedule 22.09.2020
comment
@lukaszberwid, спасибо - ваш отзыв сработал !. При синтаксическом анализе команды в сценарии запуска произошла ошибка. Каким-то образом была подача новой строки btw / dev / sdb и / mnt / working. Поэтому он рассматривал их как две отдельные строки. Только после того, как я расширил поле значения метаданных, я обнаружил эту ошибку. Возможно, проблема с вырезанием и вставкой из консоли ssh. Мне было интересно, можно ли расширить поле значения вправо, так как здесь много недвижимости. Это может предотвратить такие опечатки или каким-то образом увидеть ленту новой строки.   -  person sunny    schedule 22.09.2020
comment
@lukaszberwid, чтобы ответить на предыдущий вопрос Джона, почему я не добавил его в / etc / fstab, я попытался добавить add в fstab, чтобы устройство снова автоматически монтировалось при перезапуске экземпляра в соответствии с инструкциями в cloud.google.com/compute/docs/disks/add-persistent- диск. Однако он не монтируется и отключает мой вход по ssh. Система перезагрузилась, и появился внешний IP-адрес, но я не смог войти через ssh. Мне пришлось удалить запись из fstab через последовательную консоль, чтобы вернуть меня в действие. Не знаю почему.   -  person sunny    schedule 22.09.2020


Ответы (1)


Проблема заключалась в основном в символе новой строки между / mnt / sdb / mnt / working. Это предотвратило запуск сценария запуска. Благодаря совету Лукашбервида я запустил

 sudo journalctl -u google-startup-scripts.service

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

person sunny    schedule 22.09.2020
comment
вы можете создать запрос функции для вычислительной машины в общедоступном системе отслеживания проблем Google - person lukaszberwid; 23.09.2020
comment
Возможно, вы не захотите вырезать и вставить сценарий, а лучше напишите сценарий локально, запустите любые тесты / линтер и загрузите файл сценария как есть, следуя этим инструкциям: cloud.google.com/compute/docs/ - person Jofre; 05.10.2020