首页 > 其他分享 >每天5分钟复习OpenStack(八)存储虚拟化

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

时间:2023-11-02 12:44:17浏览次数:40  
标签:存储 复习 虚拟化 -- 虚拟机 virsh sdb test 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

标签:存储,复习,虚拟化,--,虚拟机,virsh,sdb,test,OpenStack
From: https://www.cnblogs.com/alex0815/p/17805144.html

相关文章

  • (三)C#编程基础复习——数据类型
    C#语言中内置了一些基本的数据类型,数据类型用来指定程序中变量可以存储的数据的类型,C#中的数据类型可以大致分为三类:值类型(Valuetypes);引类型(Referencestypes);指针类型(Pointertypes);一、值类型值类型顾名思义就是有带数值的类型,C#中的值类型有非常多,值类型变量声明后,不......
  • kafka复习:(11)auto.offset.reset的默认值
    在ConsumerConfig这个类中定义了这个属性的默认值,如下图也就是默认值为latest,它的含义是:如果没有客户端提交过offset的话,当新的客户端消费时,把最新的offset设置为当前消费的offset.默认是自动提交位移的,每5秒进行一次提交。可以通过参数配置手动提交。手动提交offset的示例import......
  • kafka复习:(10)按分区获取ConsumerRecord
    packagecom.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;importorg.apache.kafka.clients.consumer.ConsumerConfig;importorg.apache.kafka.clients.consumer.ConsumerRecord;importorg.apache.kafka.clients.consumer.ConsumerRecords;importorg.apache.kafka......
  • kafka复习:(8)消费某个主题指定分区的消息
    packagecom.cisdi.dsp.modules.metaAnalysis.rest.kafka2023;importorg.apache.kafka.clients.consumer.ConsumerConfig;importorg.apache.kafka.clients.consumer.ConsumerRecord;importorg.apache.kafka.clients.consumer.ConsumerRecords;importorg.apache.kafka......
  • 【面试题】前端面试复习6---性能优化
    性能优化一、性能指标要在Chrome中查看性能指标,可以按照以下步骤操作:打开Chrome浏览器,并访问你想要测试的网页。使用快捷键F12或右键点击页面并选择“检查”,打开开发者工具。在开发者工具中,切换到“Performance”(性能)选项卡。点击开始录制按钮,即红色的圆点按钮。开始加载页......
  • python爬虫知识体系80页md笔记,0基础到scrapy项目高手,第(2)篇:http协议复习精讲
    本文主要学习一下关于爬虫的相关前置知识和一些理论性的知识,通过本文我们能够知道什么是爬虫,都有那些分类,爬虫能干什么等,同时还会站在爬虫的角度复习一下http协议。完整体系笔记直接地址:请移步这里共8章,37子模块,总计5.6w+字今天这一篇主讲:爬虫基础本阶段本文主要学......
  • SpringCloud复习:(2)@LoadBalanced注解的工作原理
    @LoadBalanced注解标记了一个RestTemplate或WebClientbean使用LoadBalancerClient来进行负载均衡。LoadBalancerAutoConfiguration类给带注解的@RestTemplate添加了拦截器:LoadBalancerInterceptor.具体流程如下:首先定义一个LoadBalancerInterceptor然后定义了一个RestTemplateC......
  • SpringCloud复习:(3)LoadBalancerInterceptor
    使用Ribbon时,execute方法会由RibbonLoadBalancerClient类来实现它会调用重载的execute方法getLoadBalancer默认会返回ZoneAwareLoadBalancer(基类是BaseLoadBalancer).此处调用的getServer方法就会根据负载均衡策略选择适当的服务器来为下一步的http请求做准备。这个execute方法......
  • SpringCloud复习:(1)netflix包里的DiscoveryClient类
    DiscoveryClient类实现了EurekaClient接口它的主要作用:服务注册,服务续约,服务下线,获取服务列表。initScheduledTasks方法用来开启定时任务来完成上述功能。上图中的代码用来从服务器定期(默认30秒)拉取服务列表(ScheduledExecutorService的应用场景)其中TimedSupervisorTask这个Run......
  • linux基本文件命令复习笔记
    1,放大缩小终端窗口字体  放大 ctrlshift+=   缩小  ctrl-2,6个常见终端命令 (1)ls  查看当前文件夹下的内容 (2)pwd 查看当前所在文件夹  (3)cd目录名 切换文件夹 (4)touch文件名 如果文件不存在,新建文件。和mkdir不同的是,mkdir创......