前言
这部分介绍如何将块存储设备挂载到虚拟机中。
一、块存储操作
1. 创建数据卷
创建一个大小为1Gb的数据卷。
source openstack-demo.sh
openstack volume create --size 1 volume-lvm
执行cinder list
查看创建的数据卷。
2. 使用数据卷
将volume-lvm数据卷挂载到provider-instance实例下。
openstack server add volume provider-instance 8eeae358-a077-4afc-968c-968f256c32ac
挂载时候可能会出现下面Error:
ERROR oslo_messaging.rpc.server OSError: [Errno 2] No such file or directory
出现该问题的原因是配置项的名字写错了:
# 错误
iscsi_helper = lioadm
# 正确
target_helper = lioadm
3. 测试
先启动vm实例。
openstack server start provider-instance
启动成功后,查看vm实例的ip地址,然后通过ssh登录进去。
ssh [email protected]
登录之后,对新的磁盘执行格式化操作。
sudo su -
fdisk -l
mkfs.ext4 /dev/vdb
格式化完成后,我们新建一个目录,然后将磁盘挂载到该目录上。
mkdir /mount
mount -t ext4 /dev/vdb /mount/
如果我们在/mount
目录下操作的数据,都会保存在/dev/vdb
磁盘中。
4. 卸载和删除数据卷
先登录vm卸载磁盘:
ssh [email protected]
sudo su -
umount /mount/
exit
卸载完成后退出,然后再执行下面命令卸载数据卷。
source openstack-demo.sh
openstack volume list
nova volume-detach provider-instance 438f45fc-5fef-43a2-9678-7c75a3aa74d8
也可以执行下面命令删除数据卷。
openstack volume delete 438f45fc-5fef-43a2-9678-7c75a3aa74d8
注意卸载和删除的区别,卸载数据卷只是把数据卷从VM中脱离出来,数据卷还是存在的,但是数据卷的状态会重新变为available。删除数据卷的话,数据卷就不存在了。
二、块存储nfs操作
1. 准备工作
- 时间同步:
ntpdate -u time1.aliyun.com
- 清空环境:
vgs
vgremove cinder_lvm
vgs
mkfs.ext4 /dev/sdb
- 安装配置NFS服务:
yum install -y nfs-utils rpcbind --nogpgchec
- 创建目录:
mkdir -p /cinder_nfs
chown cinder:cinder /cinder_nfs
echo "/cinder_nfs *(rw,no_root_squash)">/etc/exports
- 启动服务:
systemctl start rpcbind nfs-server
systemctl status rpcbind nfs-server
systemctl enable rpcbind nfs-server
- 挂载nfs目录到磁盘:
mount /dev/sdb /cinder_nfs/
df -h
2. 计算节点配置
- 配置cinder目录:
mkdir -p /var/lib/cinder/nfs
chown -R cinder.cinder /var/lib/cinder/nfs
- 配置使用nfs:
echo '192.168.88.15:/cinder_nfs'>/etc/cinder/nfs_shares
chmod 0640 /etc/cinder/nfs_shares
chown -R cinder:cinder /etc/cinder/nfs_shares
- 修改cinder配置,添加nfs配置项:
vim /etc/cinder/cinder.conf
[DEFAULT]
enabled_backends = nfs
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = /var/lib/cinder/nfs
- 重启服务:
systemctl restart openstack-cinder-volume target
systemctl status openstack-cinder-volume target
- 验证效果:
ls -l /var/lib/cinder/nfs/
df -h
mount | grep cinder
3. 控制节点使用nfs存储
先安装nfs-utils工具。
yum install nfs-utils -y
安装完成后,创建一块磁盘。
source openstack-demo.sh
openstack volume create --size 1 disk02
cinder list
新建完成后,将新建的数据卷挂载到虚拟机中。
openstack server add volume provider-instance 748d6f05-6e20-43b6-bce3-9b68af28e39a
如果挂载成功,则可以看到status状态为in-use。
三、多存储操作
1. 准备工作
- 关闭openstack-cinder-volume服务
- 清除旧记录
- 重启主机
systemctl stop openstack-cinder-volume
cinder-manage service remove cinder-volume compute@nfs
cinder-manage service remove cinder-volume compute@lvm
reboot
2. 存储配置
在contrl节点上分别创建两个存储类型:lvm和nfs。
source openstack-admin.sh
openstack volume type create lvm
openstack volume type create nfs
在compute节点上修改cinder配置,分别启用两个后端。
[default]
enabled_backends = lvm,nfs
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder_lvm
iscsi_protocol = iscsi
target_helper = lioadm
volume_backend_name = lvm
[nfs]
volume_driver = cinder.volume.drivers.nfs.NfsDriver
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = /var/lib/cinder/nfs
volume_backend_name = nfs
配置完成后重启一下服务。
systemctl restart openstack-cinder-volume target
systemctl status openstack-cinder-volume target
执行命令openstack volume service list
检查一下服务是否启动成功。
在control节点上设置存储类型和后端的关联关系。
cinder type-key lvm set volume_backend_name=lvm
cinder type-key nfs set volume_backend_name=nfs
检查效果:
openstack volume type show lvm
openstack volume type show nfs
cinder extra-specs-list
3. 测试
首先创建一个数据卷,类型为nfs,大小为1Gb,名称为volume-nfs。
source openstack-demo.sh
openstack volume create --type nfs --size 1 volume-nfs
创建完成后,将其挂载到VM实例上。
openstack server add volume provider-instance 438f45fc-5fef-43a2-9678-7c75a3aa74d8
创建lvm类型的数据卷与此类似,这里不再作演示。
总结
这部分我们学会了如何将不同类型的数据卷挂载到虚拟机上。接下来我们介绍如何制作镜像文件。