在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

ceph中rbdmap遇到问题的案例分析

139次阅读
没有评论

共计 3978 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 ceph 中 rbdmap 遇到问题的案例分析,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

运行于 centos6.5 的 rbdmap:

[root@mon0 ceph]# cat /etc/init.d/rbdmap 
#!/bin/bash
# rbdmap Ceph RBD Mapping
# chkconfig: 2345 70 70
# description: Ceph RBD Mapping
### BEGIN INIT INFO
# Provides: rbdmap
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Should-Start: ceph
# Should-Stop: ceph
# X-Start-Before: $x-display-manager
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Ceph RBD Mapping
# Description: Ceph RBD Mapping
### END INIT INFO
DESC= RBD Mapping: 
RBDMAPFILE= /etc/ceph/rbdmap 
. /lib/lsb/init-functions
do_map() {if [ ! -f  $RBDMAPFILE  ]; then
 #log_warning_msg  $DESC : No $RBDMAPFILE found. 
 exit 0
 # Read /etc/rbdtab to create non-existant mapping
 RET=0
 while read DEV PARAMS; do
 case  $DEV  in
   |\#*)
 continue
  */*)
  *)
 DEV=rbd/$DEV
 esac
 #log_action_begin_msg  ${DESC}  ${DEV} 
 newrbd= 
 MAP_RV= 
 RET_OP=0
 OIFS=$IFS
 IFS= , 
 for PARAM in ${PARAMS[@]}; do
 CMDPARAMS= $CMDPARAMS --$(echo $PARAM | tr  =    ) 
 done
 IFS=$OIFS
 if [ ! -b /dev/rbd/$DEV ]; then
 MAP_RV=$(rbd map $DEV $CMDPARAMS 2 1)
 if [ $? -eq 0 ]; then
  newrbd= yes 
 else
  RET=$((${RET}+$?))
  RET_OP=1
 #log_action_end_msg ${RET_OP}  ${MAP_RV} 
 if [  $newrbd  ]; then
 ## Mount new rbd
 MNT_RV= 
 mount --fake /dev/rbd/$DEV  /dev/null 2 1 \
  MNT_RV=$(mount -v /dev/rbd/$DEV 2 1)
 [ -n  ${MNT_RV}  ]   log_action_msg  mount: ${MNT_RV} 
 ## post-mapping
 if [ -x  /etc/ceph/rbd.d/${DEV}  ]; then
  #log_action_msg  RBD Running post-map hook  /etc/ceph/rbd.d/${DEV} 
  /etc/ceph/rbd.d/${DEV} map  /dev/rbd/${DEV} 
 done   $RBDMAPFILE
 exit ${RET}
do_unmap() {
 RET=0
 ## Unmount and unmap all rbd devices
 if ls /dev/rbd[0-9]*  /dev/null 2  then
 for DEV in /dev/rbd[0-9]*; do
 ## pre-unmapping
 for L in $(find /dev/rbd -type l); do
  LL= ${L##/dev/rbd/} 
  if [  $(readlink -f $L)  =  ${DEV}  ] \
    [ -x  /etc/ceph/rbd.d/${LL}  ]; then
  log_action_msg  RBD pre-unmap:  ${DEV}  hook  /etc/ceph/rbd.d/${LL} 
  /etc/ceph/rbd.d/${LL} unmap  $L 
  break
  fi
 done
 #log_action_begin_msg  RBD un-mapping:  ${DEV} 
 UMNT_RV= 
 UMAP_RV= 
 RET_OP=0
 MNT=$(findmnt --mtab --source ${DEV} --noheadings | awk  {print $1})
 if [ -n  ${MNT}  ]; then
 # log_action_cont_msg  un-mounting  ${MNT} 
  UMNT_RV=$(umount  ${MNT}  2 1)
 if mountpoint -q  ${MNT}  then
  ## Un-mounting failed.
  RET_OP=1
  RET=$((${RET}+1))
 else
  ## Un-mapping.
  UMAP_RV=$(rbd unmap $DEV 2 1)
  if [ $? -ne 0 ]; then
  RET=$((${RET}+$?))
  RET_OP=1
  fi
 #log_action_end_msg ${RET_OP}  ${UMAP_RV} 
 [ -n  ${UMNT_RV}  ]   log_action_msg  ${UMNT_RV} 
 done
 exit ${RET}

 *) log_success_msg  Usage: rbdmap {start|stop|restart|force-reload|reload|status} exit 1 esac

修改一些在 centos 上没有的 log 后,这个脚本使用起来还是有问题,具体描述如下:

1. 在只 rbd map 一个块得到 /dev/rbd0 后,使用 rbdmap 脚本可以正常 map/unmap /dev/rbd0。

2. 当将 /dev/rbd0 格式化后挂载到一个目录上,再使用 rbdmap,关机的时候系统就会 hang 在 unmounting filesystem 上了,只能强制断电;再开机启动后执行了 rbdmap 的 do_map() 函数,一切正常。

排查后发现,当将 /dev/rbd0 挂载到目录后,rbdmap 就不会执行 do_unmap() 函数,即使函数中加入显式 umount 操作也不会执行。

想了一个折中的办法,在 rbdmap 停止优先级高的服务中的 stop 函数中显式加入 umount 操作,重启时一切正常了。

先来看一下 ceph、rbdmap 的启停顺序:

head rbdmap
#!/bin/bash
# rbdmap Ceph RBD Mapping
# chkconfig: 2345 70 70
# description: Ceph RBD Mapping
head ceph
#!/bin/sh
# Start/stop ceph daemons
# chkconfig: - 60 80
### BEGIN INIT INFO
# Provides: ceph
# Default-Start:
# Default-Stop:
# Required-Start: $remote_fs $named $network $time
# Required-Stop: $remote_fs $named $network $time

可以看出 ceph 先于 rbdmap 启动,rbdmap 先于 ceph 停止。如果采用 nfs,使用 rbdmap 映射出的块设备,先看看 nfs 的启停顺序:

head /etc/init.d/nfs
#!/bin/sh
# nfs This shell script takes care of starting and stopping
# the NFS services.
# chkconfig: - 30 60
# description: NFS is a popular protocol for file sharing across networks.
# This service provides NFS server functionality, which is \
# configured via the /etc/exports file.
# probe: true

nfs 是这三者中最先启动的,也是最先停止的。所以在 nfs 的 stop 函数中加入 umount 命令:

umount /mnt/nfs
umount /mnt/nfs2

在 rbdmap 中加入挂载命令:

mount /dev/rbd0 -o rw,noexec,nodev,noatime,nobarrier,discard /mnt/nfs
mount /dev/rbd1 -o rw,noexec,nodev,noatime,nobarrier,discard /mnt/nfs2

/etc/ceph/rbdmap 的设置如下:

backup1/backup.img
backup2/backup.img

记得在 ceph-0.80 时测试是没有问题的,到了 0.87.1 出现了上述问题。

关于“ceph 中 rbdmap 遇到问题的案例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计3978字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 夜夜涩| 五月婷婷开心中文字幕 | 亚洲成人在线播放视频 | 激情五月色综合国产精品 | 国产99视频精品免费视频免里 | 久久成年人视频 | 五月丁香综合激情六月久久 | 国产农村一二三区 | 亚洲在线观看网站 | 国产日韩久久久精品影院首页 | 亚洲av无码乱码在线观看 | 欧洲美熟女乱又伦免费视频 | 99久99久6久热在线播放 | 国产成人做受免费视频 | 网站啪啪| 95视频在线观看在线分类h片 | 曰欧一片内射vα在线影院 曰批免费视频播放免费 | 97精品依人久久久大香线蕉97 | 各种少妇正面着bbw撒尿视频 | 视频一区中文字幕 | 中文字幕日本最新乱码视频 | igao在线视频成人免费 | 亚洲麻豆一区 | 美国爱爱片视频在线观看 | 亚洲精品一区久久久久一品av | 亚洲欧美网站 | 欧美大屁股精品毛片视频 | 狠狠久久综合伊人不卡 | 亚洲成年人影院 | 好妈妈在线观看免费高清 | 色先锋影院| 在线免费观看a视频 | 亚洲 欧美 字幕 一区 在线 | 精品日本亚洲一区二区三区 | 少妇高潮惨叫久久久久久 | 亚洲精品tv久久久久久久久 | 国产乱xxⅹxx国语对白 | 国产精品影视 | 国产区成人综合色在线 | 日日碰日日摸日日澡视频播放 | 亚洲狠狠婷婷综合久久久久网站 |