首页 > 其他分享 >本地修改OpenStack虚机RBD块

本地修改OpenStack虚机RBD块

时间:2023-04-25 13:33:44浏览次数:42  
标签:rbd image dev disk instance fishcried 虚机 OpenStack RBD

本地修改OpenStack虚机RBD块

机RBD块

Posted by fishcried on March 9, 2016

有台名为nginx的vm出现了些怪异的行为, 想把根磁盘导出来挂载在本地看看到底是怎么回事. 如果nova使用的是本地存储,vm disk会 存在相应compute节点的/var/lib/nova/instance/xxxx/disk中,直接使用mount命令井进行本地挂载即可,或者使用libguestfs-tools工具套件. 但是如果使用的是rbd存储,vm的disk会存在ceph pool里,需要先解决如何把相应的rbd image搞到本地,再做相应的挂载修改处理.

下面记录一下整体的处理流程,重点有两个:

  1. 如何把rbd搞到本地.
  2. 挂载image时需要跳过起始扇区,否则挂载不成功.

如果磁盘不加密,其实就是在裸奔.

1. 查看vm所在compute节点

通过horizon确认nginx虚拟id,然后通过管理员权限执行nova show命令,可以看到vm所在物理机器,以及xml中的instance_name.

fishcried@:~# nova show be3eab24-81f0-48f0-bf6d-1387da64184b +--------------------------------------+-----------------------------------------------------------------+ | Property | Value | +--------------------------------------+-----------------------------------------------------------------+ | OS-EXT-SRV-ATTR:host | compute-1 | | OS-EXT-SRV-ATTR:instance_name | instance-00000135 | | ............................. | ................. | +--------------------------------------+-----------------------------------------------------------------+

compute节点为compute-1, instance-name为instance-00000135.这个instance-name便于virsh dumpxml.

2. 通过xml文件查看相应的rbd image id

登陆上面的compute节点,然后执行virsh dumpxml instance-00000135查看xml定义,主要找到disk device中rbd的image id.

fishcried@:~# virsh dumpxml instance-00000135

<domain type='kvm' id='74'>

<name>instance-00000135</name>

...

<devices>

<disk type='network' device='disk'>

<driver name='qemu' type='raw' cache='writeback' discard='unmap'/>

<auth username='cinder'>

<secret type='ceph' uuid='df995543-c5b7-48f7-b812-aed8c37a6d4a'/>

</auth>

<source protocol='rbd' name='liberty-pool/be3eab24-81f0-48f0-bf6d-1387da64184b_disk'>

<host name='192.168.xxx.96' port='6789'/>

<host name='192.168.xxx.90' port='6789'/>

<host name='192.168.xxx.91' port='6789'/>

</source>

<backingStore/>

<target dev='vda' bus='virtio'/>

<alias name='virtio-disk0'/>

<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>

</disk>

</devices>

</domain>

看到了吧,rbd信息为liberty-pool/be3eab24-81f0-48f0-bf6d-1387da64184b_disk,格式是pool/image-id的形式.

3. 将rbd image导入到本地

想导出rbd image肯定需要ceph的权限的.

导出rbd image的方式有两种,一种是rbd map,另一种是rbd export. 如果是map的方式,执行后会在/dev目录下看到相应的 rbdx设备(其实是软连接到相应的文件), 如果是export的方式,执行时需要指定导出后的文件名.

map

# map的方式

fishcried@:~# rbd map liberty-pool/be3eab24-81f0-48f0-bf6d-1387da64184b_disk

/dev/rbd0

export

# export的方式

rbd export liberty-pool/be3eab24-81f0-48f0-bf6d-1387da64184b_disk nginx-rbd

4. 挂载image

以上面map的方式继续,map后rbd块映射到了本地的/dev/rbd0.

通过fdisk -lu /dev/rbd0查看下image的分区信息, 尤其要注意Units和Start这里,因为要跳过Start字节数.

fishcried@:~/nginx# fdisk -lu /dev/rbd0

GNU Fdisk 1.2.4

Copyright (C) 1998 - 2006 Free Software Foundation, Inc.

This program is free software, covered by the GNU General Public License.

This program is distributed in the hope that it will be useful,

but WITHOUT ANY WARRANTY; without even the implied warranty of

MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

GNU General Public License for more details.

Disk /dev/rbd0: 85 GB, 85896599040 bytes

255 heads, 63 sectors/track, 10443 cylinders, total 167766795 sectors

Units = sectors of 1 * 512 = 512 bytes

Device Boot Start End Blocks Id System

/dev/rbd0p1 * 2048 167765961 83883366 83 Linux

Warning: Partition 1 does not end on cylinder boundary.

上面看到一个Units为512字节, Start为2048,所以起始为512*2048,使用mount -o offset=xxx命令即可.

fishcried@:~/# echo "512*2048" | bc

1048576

上面用的是bc计算器算一下,其实心算我也能算出来,不过不能紧张.

fishcried@:~/# mkdir nginx

fishcried@:~/# mount -o offset=1048576 /dev/rbd0 nginx

fishcried@:~/nginx# ls

bin boot dev etc home initrd.img lib lib64 lost+found media mnt opt proc fishcried run sbin srv sys tmp usr var vmlinuz

fishcried@:~/nginx# cd ..

fishcried@:~/# umount nginx

4. 收场

修改后,需要将rbd image再导入到ceph中,如果是map的方式则不用这么麻烦了,只要rbd unmap /dev/rbd0即可.如果是export的方式,则需要导入一下.

rbd import liberty-pool/be3eab24-81f0-48f0-bf6d-1387da64184b_disk nginx-rbd

标签:rbd,image,dev,disk,instance,fishcried,虚机,OpenStack,RBD
From: https://www.cnblogs.com/xuning-xuning/p/17352338.html

相关文章

  • openstack基础云性能优化
    14.基础云性能优化CSIG/云产品部/企业云平台产品中心Exportedon11/09/2020TableofContentsmariadb3haproxy4keystone5nova6控制节点服务6计算节点服务6cinder7neutron11注意事项12mariadb修改mariadb配置文件,在mariadb所有副本节点上修改配置文件/etc/my.conf[mysqld......
  • ipsan 盘符变化_虚机无法启动
    ipsan盘符变化,虚机无法启动检查/usr/lib/python2.7/site-packages/nova/compute/manager.py配置检查多路径是否开启virsh domblklist instance-xxx检查nova配置是否开启多路径/etc/nova/compute.conf[libvirt]volume_use_multipath=true更改配置后重启nova-compute服务......
  • [云计算]Openstack 中 Swift 的环是如何存储的?
    在Swift中,环(Rings)是存储在磁盘上的二进制文件。这些环文件包含了Swift集群中所有存储设备的位置信息、权重和设备ID等元数据信息,以及哈希函数所需的参数信息。Swift中的每个节点都会定期从主控节点获取新的环数据,并将其存储在本地硬盘上作为环缓存。具体来说,Swift环大致包含以下......
  • [云计算]Openstack中对象环、容器环、账户环的作用
    Swift中的环(Rings)是一种用于对象存储的分布式哈希表结构。环包含了一个元素列表和一个哈希函数,用于将一个对象ID映射到环上的一个元素位置,以便找到该对象在Swift中的存储位置。Swift中包含了三种类型的环,分别是对象环、容器环和账户环,下面是它们各自的作用:对象环对象环是用于定......
  • OpenStack详解
    OpenStack是当今最具影响力的云计算管理工具——通过命令或者基于Web的可视化控制面板来管理IaaS云端的资源池(服务器、存储和网络)。它最先由美国国家航空航天局(NASA)和Rackspace在2010年合作研发,现在参与的人员和组织汇集了来自100多个国家的超过9500名的个人和850多......
  • openstack导出image镜像的方法
    1、查询环境中的镜像[root@controllerhttpd]#glanceimage-list环境中一个有两个镜像本次导出instance。2、执行导出命令命令解释:/root/wuyeliang.img为导出后的镜像存放路径及名称,789eb102-031b-4559-a00e-eeeb3272c37c为需要导出镜像的ID......
  • 记一次kvm虚机mysql数据库磁盘扩容操作步骤及其问题小坑
    背景:业务量持续增加,原来规划的1T磁盘空间不足以支撑业务发展存储使用,需要对数据库磁盘进行扩容。目前物理机有新增了2块3.5Tssd的数据盘用于数据库虚机磁盘扩容使用。需要安排时间对其进行操作扩容。操作思路:1、完成磁盘raid1操作,将新磁盘挂载到物理机上并添加到kvm的存储空间......
  • OpenStack核心组件-glance镜像服务
    1.glance介绍Glance是Openstack项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找、注册和检索等。Glance提供RestfulAPI可以查询虚拟机镜像的metadata(元数据)及获取镜像。Glance可以将镜像保存到多种后端存储上,比如简单的文件存储或者对象存储。理解Image要理解ImageServ......
  • OpenStack介绍
    1云平台的由来IT基础架构的发展:物理架构----->虚拟化架构---->云计算架构2常见的云管理平台:vCloudDirector、CloudStack、OpenStack2.1vCloudDirectorVMwarevCloud™Director使客户能够按需交付基础架构,以便终端用户能以最大的敏捷性使用虚拟资源。扩展模块、API和开放式......
  • openstack高可用(pike版本)-架构
    1、API服务包括*-api,neutron-server,glance-registry,nova-novncproxy,keystone,httpd等。由HAProxy提供负载均衡,将请求按照一定的算法转到某个节点上的API服务。由Pacemaker提供VIP。2、内部组件包括*-scheduler,nova-conductor,nova-cert等。它们都是无状态的,因此可以......