每天5分钟复习OpenStack(八)存储虚拟化

KVM存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的。Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,Volume 是在 Storage Pool 中划分出的一块空间,宿主机将 Volume 分配给虚拟机,Volume 在虚拟机中看到的就是一块硬盘。
1、文件类存储池
此环境中使用sdb盘做为kvm的存储池来使用,也可以使用分区,(但是一般不建议)实际的生产环境中一般都是两块硬盘做了RAID1 ,在其上创建存储池.

1.1 磁盘格式化文件系统
#创建文件系统
mkfs.xfs -f /dev/sdb
# 创建挂载目录
mkdir -pv /data/volumes
#挂载
mount -a /dev/sdb /data/volumes
1.2 创建存储池
virsh pool-define-as <name> <type> --target 指定目标 --source-path 指定源
virsh pool-define-as sata-sdb dir --target /data/volumes/ --source-path /data/volumes/
- sata-sdb:指定新的存储池的名称,方便区分各种类型存储池。
- dir:指定存储池的类型,本例中为基于目录的存储池。
- --target /data/volumes/:指定存储池将被创建的目标路径。
- --source-path /data/volumes/:指定存储池的数据所在的源路径。
1.3 查看存储池
virsh pool-list --all
Name State Autostart
-------------------------------------------
sata-sdb inactive no
1.4 启动存储池,并设置存储池开机自启动
virsh pool-start sata-sdb
virsh pool-autostart sata-sdb
1.5 验证存储池为活动状态
# virsh pool-list
Name State Autostart
-------------------------------------------
sata-sdb active yes
1.6 删除存储池
#先停止储存池才能删除
virsh pool-destroy --pool pool-name
#删除存储池的相关数据目录(但存储池的配置还在)
virsh pool-delete --pool pool-name
#删除存储池配置文件
1.7 在存储池中创建一个卷 用来扩容磁盘
virsh vol-create-as --pool sata-sdb --name vm_test_sdb --capacity 10G --allocation 10 --format qcow2
- pool : 存储池的名字
- name : 创建卷的名字
- capacity : 总容量
- allocation : 初始容量
- format : 镜像格式,支持多种格式 常见qcow2 raw 等
1.8 验证 存储池中的卷
virsh vol-list sata-sdb
Name Path
------------------------------------------------------------------------------
vm_test_sdb /data/volumes/vm_test_sdb
qemu-img info 查看文件的详细信息
qemu-img info vm_test_sdb
image: vm_test_sdb
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 0.10
上面这些常规操作,大部分文章都有写,下面介绍一些运维很常见需求,但是类似文章很少。
如给虚拟机添加一块盘、虚拟机系统盘扩容、

二: 给虚拟机加上一块磁盘
--live 参数去掉就是离线添加磁盘,离线需要关闭虚拟机。
virsh attach-disk test /data/volumes/vm_test_sdb \
--targetbus scsi sdc --sourcetype file \
--driver qemu --subdriver qcow2 \
--type disk --live --config
- /data/volumes/vm_test_sdb 指定磁盘文件路径
- targetbus 指定总线类型为bus ,对应虚拟机磁盘为sdc,
- sourcetype 指定源文件类型为 file
- drive 指定驱动为qemu 自定义
- live 在线扩容
- config 写入配置文件
验证,hda 为光盘设备,
- 猜一猜:sdc 为添加的盘符,那虚拟机里盘符是否也是sdc了?
virsh domblklist test
Target Source
------------------------------------------------
vda /data/images/test.qcow2
hda -
sdc /data/volumes/vm_test_sdb

答案是根据添加的磁盘的类型和虚拟机device 设备来的如下图所示,显示为sda
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
sr0 11:0 1 1024M 0 rom
vda 253:0 0 50G 0 disk
├─vda1 253:1 0 200M 0 part /boot
└─vda2 253:2 0 49.8G 0 part /

- 1.9 卸载虚拟机磁盘
--live 在线卸载,没有此参数,则需要关机才能卸载。
sdc 为宿主机上识别到的盘
virsh domblklist test可以查看到
virsh detach-disk test sdc --live --config
Disk detached successfully
三:虚拟机系统盘在线扩容
在扩容之前我们在宿主机上查看虚拟机的系统盘的大小,最高50G分配了40G 实际占用14G
virsh domblkinfo test --device vda
Capacity: 53687091200
Allocation: 40531144192
Physical: 1494298624
- 3.1 在宿主机调整磁盘文件大小
virsh blockresize --path /data/images/test.qcow2 --size 100G test
#-- path指定磁盘文件路径 --size 指定扩容之后的大小 test 为domname
3.2 虚拟机层面扩分区
3.2.1 安装必要的包
yum -y install cloud-init cloud-utils-growpart
- 3.2.2 扩容磁盘大小 growpart
#查看根分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 200M 0 part /boot
└─vda2 253:2 0 49.8G 0 part /
#扩容跟分区
[root@localhost ~]# growpart /dev/vda 2
CHANGED: partition=2 start=411648 old: size=104445952 end=104857600 new: size=209303519 end=209715167
#验证根分区
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 253:0 0 100G 0 disk
├─vda1 253:1 0 200M 0 part /boot
└─vda2 253:2 0 99.8G 0 part /
- 3.2.3 文件系统扩容
xfs_growfs /dev/vda2
meta-data=/dev/vda2 isize=512 agcount=4, agsize=3263936 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=13055744, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=6374, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 13055744 to 26162939
(可选)移除安装的包
yum -y remove cloud-init cloud-utils-growpart
四: 将宿主机的硬盘透传给虚拟机使用
在超融合的环境中,存储是部署在虚拟机中的,那怎么将宿主机的硬盘直接透传给虚拟机了?
大部分文章都是通过XML的方式,我介绍下命令行的方式来实现,效率更高,而且便于自动化实现。
在Linux 系统中有能唯一描述磁盘的
总结来说,/dev/disk/by-uuid/使用磁盘的UUID作为标识符,而/dev/disk/by-id/使用磁盘的ID作为标识符。UUID是独一无二的且稳定的,适用于需要持久标识磁盘的情况。而磁盘ID虽然可以唯一标识磁盘,但可能会受到硬件变更的影响。
因此我们建议是使用by-uuid 来唯一描述一个磁盘设备

virsh attach-disk <虚拟机名字> <uuid> <磁盘盘符>
virsh attach-disk test /dev/disk/by-uuid/049b1f34-6c35-4db1-ad04-478ae9603789 sdb



每天5分钟复习OpenStack(八)存储虚拟化的更多相关文章
- KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)
KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...
- KVM存储虚拟化---玩转openstack
KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...
- VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器
VMware vSphere 服务器虚拟化之二十八 桌面虚拟化之安装View传输服务器 View 传输服务器用于管理和简化数据中心与在最终用户本地系统上检出使用的 View 桌面之间的数据传输.必须安 ...
- VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器
VMware vSphere 服务器虚拟化之十八桌面虚拟化之安装View Composer服务器 View Compose服务可安装在管理虚拟机的vC ...
- 创建OpenStack的存储云
OPENSTACK内部 OpenStack是一个开源的云平台项目,是由NASA发起,Rackspace在2010作为一个项目进行主导.源代码是由OpenStack基金会管理并在准许Apache许可下发 ...
- 【恒天云技术分享系列10】OpenStack块存储技术
原文:http://www.hengtianyun.com/download-show-id-101.html 块存储,简单来说就是提供了块设备存储的接口.用户需要把块存储卷附加到虚拟机(或者裸机)上 ...
- Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池
Citrix 服务器虚拟化之十八 桌面虚拟化之部署MCS随机桌面池 完成桌面模版的制作后,可以开始虚拟桌面池的发布 说明: 环境基于实验十七 1.登录DC服务器创建一个组织单位名为Citrix,然后 ...
- 配置Ceph集群为OpenStack后端存储
配置Ceph存储为OpenStack的后端存储 1 前期配置 Ceph官网提供的配置Ceph块存储为OpenStack后端存储的文档说明链接地址:http://docs.ceph.com/docs/ ...
- KVM 存储虚拟化
KVM 的存储虚拟化是通过存储池(Storage Pool)和卷(Volume)来管理的. Storage Pool 是宿主机上可以看到的一片存储空间,可以是多种类型,后面会详细讨论.Volume 是 ...
- O007、KVM 存储虚拟化
参考https://www.cnblogs.com/CloudMan6/p/5273283.html KVM 的存储虚拟化是通过存储池(Storage Pool) 和 卷(Volume)来管理的. ...
随机推荐
- linux内核vmlinux的编译过程之 --- vmlinux.o详解(八)
内核构建系统之所以要在链接 vmlinux 之前,去链接出vmlinux.o.其原因并不是要将 vmlinux.o 链接进 vmlinux,而是要在链接 vmlinux.o 的过程中做完两个动作: e ...
- 2.融合进阶:Stacking与Blending
1 堆叠法Stacking 1.1 堆叠法的基本思想 堆叠法Stacking是近年来模型融合领域最为热门的方法,它不仅是竞赛冠军队最常采用的融合方法之一,也是工业中实际落地人工智能时会考虑的方案之一. ...
- Python爬虫实战之提高CSDN访问量
python爬虫之建立代理池(一)_CodingInCV的博客-CSDN博客 python爬虫之建立代理池(二)_CodingInCV的博客-CSDN博客 前面2篇分别介绍了从2个免费代理网站爬取免费 ...
- pandas 缺失值与空值处理
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/lwgkzl/article/detail ...
- QLabel标签快捷键的使用
1 from PyQt5.QtWidgets import * 2 import sys 3 4 class QlabelDemo(QDialog): 5 def __init__(self): 6 ...
- VScode 中golang 调试 F5,json文件内容更改 Go
调试:在Vscode软件中调试.go文件代码 1.1.1 确保调试文件正常运行 准备好.go文件,并且该文件能正常运行,终端输入命令运行程序,如:go run time.go 测试代码: packag ...
- react中使用动画 react-transition-group
在React中通过react-transition-group使用过渡.动画,首先要有CSS3中的过渡和动画的相关知识储备,可以参考 过渡和2D变换.动画和3d变换. 我们自己通过css设置过渡.动画 ...
- Programming abstractions in C阅读笔记:p127-p129
<Programming Abstractions In C>学习第51天,p127-p129,总结如下: 一.技术总结 1. string library 掌握常用函数如strlen,s ...
- 《深入理解Java虚拟机》读书笔记:基于栈的字节码解释执行引擎
虚拟机是如何调用方法的内容已经讲解完毕,从本节开始,我们来探讨虚拟机是如何执行方法中的字节码指令的.上文中提到过,许多Java虚拟机的执行引擎在执行Java代码的时候都有解释执行(通过解释器执行) ...
- Auto-GPT免费尝鲜之初体验-使用攻略和总结
写在前面的废话 ChatGPT 的交互模式,是和一个 "人" 对话聊天. 如果你想了解更多ChatGPT和AI绘画的相关知识,请参考:ChatGPT注册和变现思路,AI绘画教程汇总 ...