Как правильно добавить метку в файловую систему устройства тома AWS EBS в Linux? - PullRequest
0 голосов
/ 18 января 2019

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

Я пытаюсь добавить метку файловой системы на устройство и затем смонтировать ее. Однако добавление метки с помощью команды e2label не работает должным образом в этом сценарии.

У меня есть задача Ansible:

- name: Ensure external device has correct label
  become: true
  shell: e2label /dev/xvdf "dev-external" && e2label /dev/xvdf
  register: device_label
  retries: 15
  delay: 5
  until: device_label.stdout == "dev-external"

- name: Debug external device label soon after adding label
  debug:
    msg: "{{ device_label.stdout }}"

- name: Get external device label subsequently
  become: true
  shell: e2label /dev/xvdf
  register: device_label_subsequently

- name: Debug external device label subsequently
  debug:
    msg: "{{ device_label_subsequently.stdout }}"

Результаты, как показано ниже:

TASK [label-external-device : Ensure external device has correct label] ***
changed: [<host_ip>]

TASK [label-external-device : Debug external device label soon after adding label] ***
ok: [<host_ip>] => {
    "msg": "dev-external"
}

TASK [label-external-device : Get external device label subsequently] ***
changed: [<host_ip>]

TASK [label-external-device : Debug external device label subsequently] ***
ok: [<host_ip>] => {
    "msg": ""
}

Как вы можете видеть, добавление метки с помощью e2label, похоже, завершается успешно и возвращает метку устройства как dev-external, когда вызывается как одна команда оболочки. Однако при повторном запросе метка устройства исчезает или даже отклоняется, чтобы быть фактически установленной в файловой системе.

Эта проблема не возникает при перезагрузке экземпляров ec2 и повторной попытке.

Я знаю, что есть несколько других способов монтировать устройство по имени устройства или UUID, но из соображений совместимости я хотел бы монтировать устройства по меткам их файловой системы.

Как правильно добавить метку в файловую систему устройства тома AWS EBS в Linux?

1 Ответ

0 голосов
/ 29 января 2019

Добавление sleep между добавлением метки и проверкой статуса метки может помочь обеспечить статус метки файловой системы.

Изменить команду с;

e2label /dev/xvdf "dev-external" && e2label /dev/xvdf

до *; 1007 *

e2label /dev/xvdf "dev-external" && sleep 1 && e2label /dev/xvdf

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

...