如何正确添加标签,在Linux的AWS EBS卷的设备的文件系统?

问题描述 投票:-1回答:1

我有个任务,以取代现有的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时称为单一的shell命令。再次查询然而,当设备标签消失,甚至被拒绝到实际的文件系统设置。

重新启动EC2实例,并再次尝试时不出现此问题。

我知道有一些其他的方法,通过设备名称或UUID但我想通过自己的文件系统标签安装设备兼容性的原因来安装设备。

如何正确添加标签,在Linux的AWS EBS卷的设备的文件系统?

linux amazon-web-services ansible filesystems mount
1个回答
0
投票

追加sleep中添加标签和检查标签状态之间可能有助于确保文件系统的标签状态。

从改变命令;

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

至;

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

另外,设备可以安装在由udev汽车,它可能是failure to add label的原因。因此可能需要确保设备运行e2label添加标签之前卸载。

© www.soinside.com 2019 - 2024. All rights reserved.