OpenStack 卷的创建和附加

OpenStack 卷的创建和附加

我正在尝试创建并附加一个卷:

openstack volume create ... VOLUME_NAME

openstack server add volume ...

但我遇到了两个问题:

  • 该卷始终会被创建,如果 VOLUME_NAME 已存在,我想阻止创建。
  • 该卷附加在机器的顺序设备下。因此,第一次,它附加在 中/dev/sdb。如果我再次分离并附加,它就会在 中,/dev/sdc依此类推。我尝试过使用,--device但显然它不起作用。

有没有办法仅在名称不存在时创建卷?有没有办法在实例中为附件指定特定设备?

答案1

该卷始终会被创建,如果 VOLUME_NAME 已存在,我想阻止创建。

卷名称不是唯一的;它们主要提供信息。如果要避免创建具有相同名称的多个卷,则必须先检查卷是否存在:

openstack volume show testvolume >& /dev/null ||
  openstack volume create testvolume --size 1

该卷附加在机器的顺序设备下。因此,第一次,它附加在 /dev/sdb 中。如果我再次分离并附加,它将位于 /dev/sdc 中,依此类推。我尝试使用 --device,但显然它不起作用。

在与虚拟机中的磁盘设备交互时,您不应该依赖设备名称。您可以通过其 ID 来识别您的卷;查看路径/dev/disk/by-id,您应该会找到一个设备virtio-<first 20 characters of the id>。所以如果我有:

$ openstack volume list
+--------------------------------------+------------------+-----------+------+----------------------------------+
| ID                                   | Name             | Status    | Size | Attached to                      |
+--------------------------------------+------------------+-----------+------+----------------------------------+
| b53f67ae-bf74-41ee-879d-a16eea110395 | vol1             | available |    2 |                                  |
| 8c584c0b-5c85-4c5d-afc6-283afe0abed3 | vol0             | available |    2 |                                  |
+--------------------------------------+------------------+-----------+------+----------------------------------+

我将卷附加vol1到我的服务器voltest

$ openstack server add volume voltest vol1

我会找到的:

root@voltest:~# ls -lL /dev/disk/by-id
total 0
brw-rw---- 1 root disk 252, 16 Nov 10 18:55 virtio-b53f67ae-bf74-41ee-8

相关内容