易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 29|回复: 0
收起左侧

openstack 云计算卷热扩容相关文档

[复制链接]
发表于 2023-12-15 11:00:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
openstack 云计算卷热扩容相关文档
3 I: u8 b8 X( |; _0 ~$ h- D$ U[toc]4 t& Q- x. B$ i" d! i

0 k: j. A4 J# N  E+ x( B指令2 _( |7 |% W) r
usage: cinder extend <volume> <new_size>
5 o9 U( P+ K- T7 h8 ^" VAttempts to extend size of an existing volume.
8 L/ X  S) ?$ tPositional arguments:
( _4 p. O  d, X4 f, h% G/ t+ G( h  <volume>    Name or ID of volume to extend.  N( o: q& O- A5 F* @! w: P
  <new_size>  New size of volume, in GiBs.
0 A8 S8 N: W) o" p- y功能说明
$ O4 G# C4 n" X! b( [4 p7 i& D% Z+ x
最新的openstack()代码支持了热扩容功能:
3 Q- E  O) f. `! ~3 R0 p2 h( x9 \8 ~. ^9 ?5 V* Y! L: }
Add ability to extend 'in-use' volume. User should be aware of the
7 B! \/ V( C" k. ~$ n: _whole environment before using this feature because it's dependent6 x0 V# a- g6 G% I' j- n9 l
on several external factors below:
5 e) e9 [8 l! j7 ~1. nova-compute version - needs to be the latest for Pike.
1 a; E( ^' b/ ~. K' ~, [2. only the libvirt compute driver supports this currently.2 R) s1 }; ]: k' A, Y
3. only iscsi and fibre channel volume types are supported' K/ E0 q( k, P; q- X; g- _6 r, T
on the nova side currently.6 z! C' R$ \! K' [9 R! c
Administrator can disable this ability by updating the2 r9 }7 ~2 h3 p$ n' ~" N
'volume:extend_attached_volume' policy rule. Extend in reserved& j& T# E, ]. S2 G& D( ~! v; e
state is intentionally NOT allowed.
& z( V$ n4 U" w' i& D4 \0 l! S# t; W1 e! a& W3 f
注意:2 }5 t/ C+ @$ W+ o/ o

; x. K2 c1 w3 R. y; ?4 v  R目前只有 libvirt 驱动能支持,且只有 iscsi 和 fibre channel 协议的卷类型能支持!
- e- o3 {3 T9 ]& r- e2 u% ~& J, Hcinder、nova做完热扩容后,fdisk -l查看可以看到磁盘大小变大,但是之前做的文件系统的大小是不会变化的,df -h 的结果跟扩容前一样。用户还必须用resize2fs 指令自行resize文件系统!
3 S5 C" w/ S# N  s+ M( S《openstack 官网对于热扩容在 CINDER 方面的说明》
! P9 U  D1 i6 n5 i+ W( }" m$ K" M6 ]* G2 T
《openstack 官网对于热扩容在 NOVA 方面的说明》
% W# `; k& W4 b! B
3 H* w) k) K9 P7 TCinder方面代码) m' s' n0 a; Z+ I( d; W* U
Cinder 方面其实没有什么改动,跟冷扩容做的事一样,扩容后的size必须是整数GB且大于扩容前size。核心实现是调用卷驱动里的方法,如netapp,调用的是cinder.volume.drivers.netapp.dataontap.client.client_base.Client#do_direct_resize实现。唯一的区别是,扩容后,会调用nova api。# ~7 E: Y& ?  {% [

- d5 @" L" h) R) A* [cinder.api.contrib.volume_actions.VolumeActionsController#_extend:& J" @& n" O  J
# 如果版本是  且 卷状态是in-use,则走热扩容" P: N7 @+ i! B: J" x4 n$ N4 g* m% s
if req_version.matches("3.42") and volume.status in ['in-use']:) J  x5 f4 q8 W8 ?$ ]1 G& L. Z
    self.volume_api.extend_attached_volume(context, volume, size)
2 f& z6 O1 `$ Q4 e' Lelse: # 否则,冷扩展2 a" \& I$ ?8 I( d9 U* X+ F
    self.volume_api.extend(context, volume, size)
6 L, W8 r, w6 x* K) i3 x! x: ?; j+ g
cinder/volume/manager.py里调用nova api,通知nova要扩展卷:% F+ ~6 Y0 H  s. ]
if orig_volume_status == 'in-use':* E/ ]  n7 i6 v9 l5 k5 [+ G
        nova_api = compute.API()1 i5 S: n0 F+ ]/ _) \( r
        instance_uuids = [attachment.instance_uuid+ d2 X8 o5 A( r1 h: ?. y- \
                          for attachment in attachments]$ E# `. t- ?- W/ }% Q% D
        nova_api.extend_volume(context, instance_uuids, volume.id)
$ s! z: H: Z, ~. }2 G这里调用nova client 里的:3 g* {1 N  l; q" M( A1 D. P
novaclient.v2.server_external_events.ServerExternalEventManager#create:# H+ ?: a4 ?" W
  l1 T  i6 ]# ~) P3 d" [
class ServerExternalEventManager(base.Manager):
2 r6 }) `5 D. C4 V    resource_class = Event# H9 O& j  N' c# L/ c
1 h) Q1 ?9 Q5 Y* E. s
    def create(self, events):
! \) W+ g$ {8 y8 V        """Create one or more server events.
* m1 {) O  B8 I; w% S) N5 a/ J
$ f1 u' l' B4 t0 E6 M$ F        :param:events: A list of dictionaries containing 'server_uuid', 'name',8 U9 R- U6 Y" [* K; C
                       'status', and 'tag' (which may be absent)
: S/ r5 x& ~' A9 u" `* [4 C        """
; f" ^. R  v/ C5 @' ^3 e" ]! Z9 x( k  z- s% g* z3 {- e
        body = {'events': events}* `9 l% m" F/ L
        return self._create('/os-server-external-events', body, 'events',+ J' o! ~% F0 Z  o8 z
                            return_raw=True)
: `; @8 u4 {$ d. _: A# L( e' F- \
+ ^9 g+ M# H. W& A( J1 C; Y/ E$ `'events':
- p# q, o, N& z, s& i+ l* \1 P8 {
# |( ~& K- H2 I0 m  o; J{'name': 'volume-extended',
! p( B* u0 H+ U; i'server_uuid': server_id,
' l2 q% X- H/ \, |6 m'tag': volume_id}
0 ~  l7 R' Z. `  d+ G* s: iNova方面代码
: e/ z! t6 @: |8 sNova将使用现有的外部事件API端点监听来自Cinder的附加卷扩展通知。收到通知后,Nova将使用os-brick触发主机上的设备重新扫描,以发现卷大小的变化。/ V6 t, t& F7 R9 W4 a2 c7 N
% M# Q2 n$ h8 c
nova api '/os-server-external-events':
6 W/ Y) p0 A/ d' `+ e1 T
" O& {* l9 h9 }. b& Frequest:: I, f; f. t$ R0 J: t
    {2 ^3 M- J) K$ Y0 J9 q: `+ y
        "events": [
- g  b% N5 m2 O( K0 a0 q            {) }* E# |9 @( {$ M9 U( G9 P  F- \  F' Y
                "name": "volume-extended",
+ g/ h3 |* K; I" d  G! }                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",/ J( q% a- |5 p5 }4 k
                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
1 g; R4 M( q2 p            }/ ]% M+ M( H# z; D. T' T
        ]
' n5 p8 f% N9 p3 f7 r+ x6 r4 Z    }
2 l8 u( y" [) a/ q0 n# C+ xresponse:
; h2 f! F! ?3 D* p$ i- {% m    {
" J1 L& ]7 ^. H3 n, ^        "events": [
* W! l: v. L* n3 H            {8 f7 T7 j) Y5 S: P' e
                "name": "volume-extended",
' b& `% F4 f2 ~; A                "status": "completed",; L8 j4 U2 h$ p5 F
                "code": 200,: B! A; I+ L# [5 o9 _
                "server_uuid": "3df201cf-2451-44f2-8d25-a4ca826fc1f3",
1 a5 t. n4 B1 x0 d+ H8 V& f                "tag": "0e63d806-6fe4-4ffc-99bf-f3dd056574c0"
* J' t4 G' F8 W) u( ?# p            }
& V' v- L9 Z% z6 k- A9 B) q# p        ]7 G! j3 z  o2 m+ E7 P' u8 ^
    }
9 z* m3 n. U- Y7 l5 Q- n检查nova驱动compute_driver = libvirt.LibvirtDriver是否能支持卷扩展 "supports_extend_volume": True
& [2 Z: W* ?9 U驱动的支持功能定义在nova.virt.libvirt.driver.LibvirtDriver:' m6 n, u7 ^7 t
class LibvirtDriver(driver.ComputeDriver):' \8 Z9 U; U) q2 A
    capabilities = {
2 k7 W4 y4 b$ \1 t/ q        "has_imagecache": True,: B) r; B9 u. v+ \1 P
        "supports_recreate": True,
! h- m5 K8 `& ~8 d$ c' ]5 x+ B        "supports_migrate_to_same_host": False,
( j! C) c" c( x, |1 n2 M) [        "supports_attach_interface": True,
7 ?' W: n3 c% |5 J/ O! J% \! x        "supports_device_tagging": True,
  N2 ?; C) t8 W) P        "supports_tagged_attach_interface": True,
2 y, j2 t$ U5 S, r# u# @* \        "supports_tagged_attach_volume": True,$ p; _, `9 d! o! V3 g. {
        "supports_extend_volume": True,
) t3 M: ~2 e+ K3 c6 t    }5 H( b% y) a% U
+ r1 y% K4 E# L& m/ K0 a8 q5 S
根据卷connection_info找对应的驱动,然后调用驱动的extend_volume方法。
6 P. T/ s% ]" h) U! L8 ]$ U) S    def _extend_volume(self, connection_info, instance):
2 z& ?: W8 B4 @; T5 a. o( K        vol_driver = self._get_volume_driver(connection_info)* J! m. n) o2 u9 s/ T2 g: i- M# J
        return vol_driver.extend_volume(connection_info, instance)
& I+ s  f9 p4 ~比如Iscsi,就会找nova.virt.libvirt.volume.iscsi.LibvirtISCSIVolumeDriver#extend_volume:  `' n' A- O! b# J! i
        new_size = self.connector.extend_volume(connection_info['data'])
' r, U9 c5 @9 Q- f3 z7 \在调用ISCSIConnector的extend_volume" A* H+ Q. {1 b$ C4 Z6 w
os_brick.initiator.connectors.iscsi.ISCSIConnector#extend_volume:
, E& Q$ l$ k7 H- e/ ]/ O/ g        volume_paths = self.get_volume_paths(connection_properties)
. m$ d3 p3 h; ^$ `( U& n, l8 `: Y6 E        if volume_paths:
: Z! L8 x. y- H% b2 }            return self._linuxscsi.extend_volume(volume_paths)
. z7 H! |- C& r1 {2 o1 k7 g+ g! f调用linuxscsi的extend_volume' \  z; A0 t! b
os_brick.initiator.linuxscsi.LinuxSCSI#extend_volume:
2 ^7 F1 F+ y) I/ x) w% ~   def extend_volume(self, volume_paths):% A  K) l/ Q! @9 ?9 @
        """Signal the SCSI subsystem to test for volume resize.
4 N/ [" b, C, Z3 }: L, y* A* {7 Z( z1 H$ g- q
        This function tries to signal the local system's kernel
: c# O- e. E( q        that an already attached volume might have been resized.& N+ r0 q% o% d4 r' v2 X7 ^1 b
        """
: t, n- |1 f/ {% t4 E, m* R$ [1 q        LOG.debug("extend volume %s", volume_paths)
6 Z& A! q+ c6 B) o. l4 _  J0 G7 i! i9 O6 E  p, P2 B- W
        for volume_path in volume_paths:& \, g4 w1 a& V6 w! X/ ^
            device = self.get_device_info(volume_path)' g6 v0 e8 l# m7 W+ x' r8 b
            LOG.debug("Volume device info = %s", device)
& j) }" o8 c' h# }  L. {  [            device_id = ("%(host)s:%(channel)s:%(id)s:%(lun)s" %
! u% o8 ?' U' u- {2 d+ O* r) T' s9 O                         {'host': device['host'],2 X3 s3 K4 N9 I. ~% P  [! y
                          'channel': device['channel'],
0 B% p: V" r6 y                          'id': device['id'],7 c9 ^4 }$ C4 Z& l1 L; F7 D
                          'lun': device['lun']})0 M( `" Q8 \) q4 {  h+ b4 ]
2 q: L+ ?. u6 Q" ?1 C
            scsi_path = ("/sys/bus/scsi/drivers/sd/%(device_id)s" %
& d7 C1 q! [. l4 B7 s                         {'device_id': device_id})  ; o3 y3 _/ Q, }* i
            # 如:scsi_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3'
5 H9 q% \( Y/ k' H2 ~$ e# ]; J1 x0 \
            # 获取设备大小
  {9 w1 y. d) d            size = self.get_device_size(volume_path)
+ w7 ^% Z- e; ]. h! ~5 l& C) ]            LOG.debug("Starting size: %s", size)  g# \5 p! ~2 V" E! i) f; S4 u

3 M3 Y, C% V2 |" L1 S0 n! Y7 }$ M            # now issue the device rescan, H0 G, K  @3 b
            rescan_path = "%(scsi_path)s/rescan" % {'scsi_path': scsi_path}  l# T2 d8 {- l# d& ~7 e3 f( c  s
            # 如:rescan_path = u'/sys/bus/scsi/drivers/sd/3:0:0:3/rescan'
* ^' q% T! P: n$ Z
  n; t: Q6 ]2 h' _7 p            # 在rescan_path文件里写入1。: Q" g  Z5 i$ N! D9 q) {
            # 对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。
2 {) V# i5 _2 \% u2 X& C3 b: O0 f& k            self.echo_scsi_command(rescan_path, "1")- `+ d! X- I0 f3 @
            new_size = self.get_device_size(volume_path)
$ @) k' ~7 ?" q5 A; _7 L, Z            LOG.debug("volume size after scsi device rescan %s", new_size)
7 l" d7 _3 c8 u  x' E+ }6 p  r. E% _3 _- ^  m- H* [  L
        # 通过指令`/lib/udev/scsi_id --page 0x83 --whitelisted /dev/disk/by-path/ip-12.24.3.10:3260-iscsi-iqn.1992-08.com.netapp:sn.2d72abb030d511e7875800a098ac0ce9:vs.24-lun-3 `拿到wwnid* S9 G- l( ^, }  a
        scsi_wwn = self.get_scsi_wwn(volume_paths[0])
0 ^! D/ J( C* d. d$ W  o# A        # 如:scsi_wwn = u'3600a09803830387461244a62344f6b52'
: O5 r% u( w" {: x/ L8 Y3 S7 f        mpath_device = self.find_multipath_device_path(scsi_wwn)
2 k% c6 Y' k0 v, u        # 如果mpath_device非空,说明是多路径磁盘。/ L( _4 m  p. z/ S2 H& `5 I
        if mpath_device:/ b" r. U, x. `6 J8 o) @
            # Force a reconfigure so that resize works
  h1 K, ~4 _& u            # 执行 `multipathd reconfigure` 重新获取 multipath.conf 配置中变化。
" ~1 w5 I0 |6 k; A3 _, I7 L: c$ l            self.multipath_reconfigure(): I( n# l& q+ c9 S' B
            # 获取设备大小
9 p/ z- z+ `7 B! \6 T" s            size = self.get_device_size(mpath_device)
( f& f# g& T4 `: M5 @7 A, b            LOG.info("mpath(%(device)s) current size %(size)s",2 B3 X9 J" K, b) H; z0 V2 l
                     {'device': mpath_device, 'size': size})) _  Y0 Z7 g1 N4 c4 k
1 x7 A3 j0 A8 n: S7 o
            # 调用指令 multipathd resize map multipath_device 重置多路径磁盘的大小
3 U1 e2 h, V+ E1 V0 u! f            result = self.multipath_resize_map(scsi_wwn)! C+ T8 e' O) Q7 x
            if 'fail' in result:6 X& i* i7 G0 i3 k% J
                LOG.error("Multipathd failed to update the size mapping of "7 ]5 L( ]: `% e" _' O& R% {
                          "multipath device %(scsi_wwn)s volume %(volume)s",
! ^" G! S; C7 _5 c                          {'scsi_wwn': scsi_wwn, 'volume': volume_paths})
7 e( c* l0 v) ]1 s+ v1 h: F9 u% V3 a                return None5 X- X) o4 ~; A

, j! Y+ h& A. |! N/ @  F/ d. A8 A            # 获取设备大小
0 T! @2 U1 U: L6 z8 C+ y            new_size = self.get_device_size(mpath_device)
  n3 S1 k( s4 _% w# l9 V) d) a1 R            LOG.info("mpath(%(device)s) new size %(size)s",6 j! ?' _* j  p. {  }, ^
                     {'device': mpath_device, 'size': new_size})9 |' Q# d2 V! E; H. b* E
1 ^* I  n- S6 X& ~
        return new_size
7 |) Q0 p& E2 s9 M0 a流程简要:" u9 a. ~  P; i" E6 O
向scsi扫描文件写入 1:tee -a 1 "%(scsi_path)s/rescan",对于SCSI设备,对 rescan 文件设置为1 可以使SCSI设备重新扫描。8 f- `" G4 r2 G* u' P% \

' E& A6 Z4 @" J9 ?4 d2 s# z& Y/lib/udev/scsi_id --page 0x83 --whitelisted 得到scsi_wwn8 {; L  ^" v9 O" Z0 `' f

( d! Z7 ^1 `% K- }# [检查多路径设备,先检查/dev/disk/by-id/dm-uuid-mpath-%(wwn)s是否存在,存在则返回路径;如果不存在,则检查/dev/mapper/%(wwn)s,存在则返回路径,不存在返回none。
' ^  O9 ?/ {6 s1 m& R2 h9 R; _
) S% A/ X4 X3 [5 |) E0 `1 A$ d+ ^如果第3部结果为none,流程结束。
9 d7 L* T2 x- m5 v- P1 ]6 M  J5 B6 |
如果第3步查到路径,则需要执行 multipathd reconfigure 重新获取 multipath.conf 配置中变化。' r1 l- S3 d7 b7 v
4 }* d5 {* d2 u4 |- D
执行multipathd resize map scsi_wwn 重新设置设备大小。多路径磁盘流程结束。
3 u; o/ t- W* o- E" m& B( o. E. d0 ]/ e2 q
FC和Iscsi驱动都是这样流程。
5 C2 }$ w1 k6 S/ L4 m( }9 t9 g/ }, r# q$ L/ P
附:3 B% l' f" P7 F
centos 如何使用多路径磁盘5 |2 I; Q# ~3 k3 Z$ Q
1.安装multipath工具
- |! j6 e0 b$ [" A" X# 安装multipath工具
/ q9 w  w. k8 d8 y! byum -y install device-mapper device-mapper-multipath2 q2 p4 S* e3 Z1 i
  C- W4 w$ O' w4 d
#加载multipath内核模块
4 V; o' B* y( P* \+ o+ I/ [modprobe dm-multipath
7 |9 i+ e) y. b+ O9 e# p9 R5 Umodprobe dm-round-robin, c+ J8 P; G5 X1 B- [' n* Y9 u

- s0 i  |6 A  O6 b6 a! K; q# 拷贝默认配置文件; ^1 W( Q  p/ P
cat /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf > /etc/multipath.conf1 d0 b" A8 y6 k& W3 f$ h

9 Q$ U; V) h. q+ _% c7 V0 J#启动服务6 `. ?. Y* E9 p$ y
service multipathd start 或者 /bin/systemctl start  multipathd.service5 K! N* s  g  k# M  N
2.配置nova_compute的配置文件
& y4 \+ L" i9 @. R) z: s[libvirt]
! y$ i& W  b* \$ q#  iscsi磁盘是否开启多路径,True为开启
0 @7 V8 F6 c, q5 e5 n& ^6 l3 Gvolume_use_multipath=True9 F3 T+ z# }3 W- e: Q- M1 y$ z

6 u& O8 d) _* p2 J; E$ L# 建立连接时的rescan次数6 r+ L6 M! O- Q% T9 [8 y
num_iscsi_scan_tries=5
$ Q# _2 C8 r5 n
4 ]% M  `; |& t3 @9 r# 创建iscsi连接使用的iface名称9 h" g  p4 J+ K% A/ z
iscsi_iface=default
# ~6 s: f) t# r% G" Z0 s修改在线多路径设备容量的方法
4 @( X( T% |$ F9 q% N& N/ H( Lredhat官网上介绍了修改在线多路径设备容量的方法:
" X! ~& {# s6 k2 d( c/ J7 N1 c
6 ?3 m5 h- \& r5 o6 v& oRESIZING AN ONLINE MULTIPATH DEVICE
- D: `* r2 k  `' UIf you need to resize an online multipath device, use the following procedure.: ^4 x" l3 p+ p6 I2 X0 V7 R/ K* A

8 e6 n( ?& o& }7 I& gResize your physical device.3 r$ _3 `2 P7 L- A4 E
Execute the following command to find the paths to the LUN:) W8 I; L0 d! d+ W3 C' _
# multipath -l1 U3 c5 h  x7 K* q+ ]( I& u5 x
8 B- q" W+ E- r& n% }# x3 y' g. F
Resize your paths. For SCSI devices, writing a 1 to the rescan file for the device causes the SCSI driver to rescan, as in the following command:/ L. a, L& |) Q  _2 a" d( B6 t
# echo 1 > /sys/block/path_device/device/rescan
: a. l' u! d5 ^2 k. y0 q1 [' M: O* {. c& r2 \
Ensure that you run this command for each of the path devices. For example, if your path devices are sda, sdb, sde, and sdf, you would run the following commands:2 T) d7 Q3 C- b) Z; o
5 D! B, B9 a8 f7 ?3 |& S
# echo 1 > /sys/block/sda/device/rescan
0 @7 i, @7 [' Q5 s
: p& ^/ m( q. q; E# echo 1 > /sys/block/sdb/device/rescan
) E" B, Q$ _8 P8 ^+ W* h
+ E) o2 M1 g4 m" D# echo 1 > /sys/block/sde/device/rescan9 u. ^  e0 E8 Q, X- ?4 o8 i" w  t) G
: ~8 ]( g  K7 Z, k  Q
# echo 1 > /sys/block/sdf/device/rescan! `( ]" f# S7 T; z$ P# {

6 z5 G+ y' F/ }/ cResize your multipath device by executing the multipathd resize command:
4 J. i$ S7 j/ Q3 W, E  R# multipathd resize map multipath_device
  w- G( j, [) O' e- T! I0 P% U
. k! \) q) O" u9 A, ]) hResize the file system (assuming no LVM or DOS partitions are used):
5 C7 z6 R8 o, U1 i, P# resize2fs /dev/mapper/mpatha
& Q& `6 D( j7 w$ {- K" W2 [9 Y8 g8 I7 z
看的出,跟nova的处理流程差不多,主要少了resize2fs一步。
7 v% l# v, q2 a8 e, `  m6 b! D
9 L% z+ }3 z2 v# m测试过程遇到问题+ d  W+ {8 h8 Y, B. T# [
问题: 创建虚机时提示"Host 'localhost.localdomain' is not mapped to any cell"# X1 C3 d$ T. X+ \; X9 g+ ?

3 b- V+ p* l/ W/ H& k( R解决: 执行 nova-manage cell_v2 simple_cell_setup/ i5 Z0 F0 k- i. w( r  f* e

' x* n& ^9 [/ \# b问题: n-cpu日志提示libvirt 版本过低' ~6 l0 M9 q' E+ g& u
  ]! b4 W1 A# D7 \; d3 B1 }
解决: 按照以下步骤升级
4 v3 o% b$ C. f  W5 y$ rpm -qa|grep kvm
  l) o# A8 e8 B/ R' g5 {8 D4 p2 p: B$ rpm -qa|grep qemu-system
! }7 j+ r8 q/ d. Q& }7 Z  }: s6 c$ sudo virsh -c qemu:///system version --daemon
+ T) u( `+ \! `* _0 w$ sudo yum remove qemu-system-x86
" }2 l/ p' y: m$ sudo service libvirtd restart# Z0 p9 x2 \! N
$ sudo virsh -c qemu:///system version --daemon& S- A# M# I$ ~5 P' ^

7 A! k! ]# O0 d  {7 j0 R4 ~问题: c-vol 提示:ERROR oslo_messaging.rpc.server ConnectionFailedError: HTTPConnectionPool(host='12.24.2.18', port=2379):% n: e7 w: i4 G0 g9 l) s1 D
Max retries exceeded with url: /v3alpha/lease/grant (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x718cc10>:) E# V+ j! G- I# D: o4 z9 D
Failed to establish a new connection: [Errno 111] ECONNREFUSED',))
. x) {. d% _0 K9 AERROR oslo_messaging.rpc.server
& G: H$ `$ N" _9 w$ t% C0 z( {7 m. D4 v
解决: 配错了coordination。在cinder.conf里吧[coordination]的backend_url注释掉即可。
: f( p/ i, W! z/ X
2 U9 l% @0 K2 [8 L- e
8 X1 n% V& y: A2 C
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:22 , Processed in 0.044144 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表