跳到主要内容

[toc]

openstack中的卷

  • openstack中卷可以转换成镜像,镜像也可以转换成卷

在块存储节点上的配置文件/etc/lvm/lvm.conf中定义了使用lvm作为后端存储

  • a/sdb/代表一个lvm,a/sdc/代表另一个lvm,可以有多个磁盘做成lvm
在该devices部分中,添加一个接受/dev/sdb设备并拒绝所有其他设备的过滤 器:
devices {
...
filter = [ "a/sdb/", "a/sdc/", "r/.*/"]

/etc/cinder/cinder.conf文件中关于后端存储的定义

  • enabled_backends = sata,ssd表示的是后端存储的名称,名称任意,这里使用/dev/sdb/dev/sdc做了两个lvm,分别模拟普通的sata盘和较快速的固态硬盘(ssd)
  • enabled_backends后边的任意名称会在配置文件中作为单独的一个区域存在,这个区域中的volume_backend_name会在后续创建卷的时候指定磁盘的类型,其中volume_backend_name是键,后边的sata和ssd是值,这样的话就能把普通磁盘和ssd磁盘区分开来并且给实例挂载不同的磁盘
#后段名称任意,这里我们定义为普通磁盘sata,固态硬盘ssd
[DEFAULT]
enabled_backends = sata,ssd

[sata]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = sata

[ssd]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-ssd
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd

创建卷(没有卷)

项目-->卷-->卷-->创建卷

iShot2020-06-0112.20.29

创建一个名为sata的卷

iShot2020-06-0112.33.29

创建一个名为ssd的卷

iShot2020-06-0112.36.57

创建后的卷

iShot2020-06-0112.37.27

创建卷

管理员-->卷-->卷-->创建卷

iShot2020-06-0112.39.11

创建sata和ssd卷

iShot2020-06-0112.40.15

创建后的卷

iShot2020-06-0112.41.4a3

创建卷扩展规格

点击创建后的卷-->查看扩展规格

iShot2020-06-0112.44.04

点击已创建

iShot2020-06-0112.44.52

创建卷扩展规格,写入配置文件中的键和值,这里示例了ssd,sata是同样的操作

iShot2020-06-0112.53.17

键就是/etc/cinder/cinder.conf中enabled_backends对应的后端存储名称单独区域中的volume_backend_name

#后段名称任意,这里我们定义为普通磁盘sata,固态硬盘ssd
[DEFAULT]
enabled_backends = sata,ssd

[sata]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = sata

[ssd]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-ssd
iscsi_protocol = iscsi
iscsi_helper = lioadm
volume_backend_name = ssd

创建后的卷扩展规格

ssd

iShot2020-06-0112.55.45

sata

iShot2020-06-0112.56.21

创建卷(有卷)

删除之前创建的没有卷的卷

创建sata类型的卷和ssd类型的卷

iShot2020-06-0113.17.05

创建后的卷

iShot2020-06-0113.18.32

给虚拟机关联卷

虚拟机中的初始磁盘,默认是1G大小

iShot2020-06-0116.19.17

选择要连接卷的虚拟机,点击连接卷

iShot2020-06-0116.32.18

选择一个卷连接

iShot2020-06-0117.00.03

虚拟机中查看磁盘,发现会多了一个10G的磁盘

iShot2020-06-0117.00.40

格式化后挂载

iShot2020-06-0117.36.24

关于卷的安全性问题

上一步中把新关联的卷挂载到了/mnt,现在向新关联的卷写入一些内容

$ echo 'test ssd' > /mnt/test.txt
$ cat /mnt/test.txt
test ssd

然后在web界面查看卷的ID

项目-->卷-->卷-->点击ssd

iShot2020-06-0117.52.03

iShot2020-06-0117.52.55

在块存储节点上查看lv,可以看到volume-c1b20eb9-4e05-4fd6-816b-87d93c7cdcfb是对应的ssd卷

iShot2020-06-0117.55.17

这个ssd的具体路径是/dev/mapper/cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb

当尝试挂载这个ssd时是不被允许的

[root@block1 ~]# mount /dev/mapper/cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb /opt
mount: /dev/mapper/cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb is already mounted or /opt busy

可以采用先拷贝这个文件然后再挂载(cp、dd都可以)

#拷贝目录
cp /dev/mapper/cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb /root

#查看大小
[root@block1 ~]# ll -h
total 10G
-rw-r----- 1 root root 10G Jun 2 08:18 cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb

#挂载 loop的意思是用来把一个文件当成硬盘分区mount到目录
mount -o loop cinder--ssd-volume--c1b20eb9--4e05--4fd6--816b--87d93c7cdcfb /mnt

#进入/mnt目录,查看文件内容,此时是可以看见的
[root@block1 ~]# cd /mnt
[root@block1 mnt]# ls
lost+found test.txt
[root@block1 mnt]# cat test.txt
test ssd

计算节点上虚拟机中的磁盘是可以被拷贝到计算节点的,并且内容可见

把虚拟机启动在卷上

openstack中的虚拟机默认是启动在计算节点上的

iShot2020-06-0209.06.33

点击实例名称,查看示例id

iShot2020-06-0209.07.19

虚拟机的存放位置默认是计算节点中的/var/lib/nova/instances

iShot2020-06-0209.09.31

选择创建新卷、删除实例时删除卷,并且指定卷大小

iShot2020-06-0209.19.04

源中指定了卷大小为5G,所以这里要选择和卷大小相同规格的根磁盘

iShot2020-06-0209.21.15