我正在尝试创建并附加一个卷:
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