文档章节

LVM元数据服务lvmetad分析

LastRitter
 LastRitter
发布于 2017/09/12 14:19
字数 1053
阅读 21
收藏 0
点赞 0
评论 0
LVM

lvmetad是LVM中用于处理元数据缓存的服务。

缓存状态

  • Empty : 系统中可用的设备还没有被添加到lvmetad。
  • Scanning : 部分系统中可用的设备已经被添加进lvmetad。
  • Initialized : 全部系统中可用的设备已经被添加进lvmetad。
  • Outdated : 还有系统或者存储时间没有被lvmetad处理。
  • Updated : 所有事件都已经被处理。

缓存过时(Outdated)的情况

  • MissingDev : 添加到系统中的设备还没有被添加进lvmetad。
  • RemovedDev : 从系统中移除的设备还没有被从lvmetad删除。
  • MissingVG : 写入磁盘的新VG还没有被添加进lvmetad。
  • RemovedVG : 从磁盘中删除的VG还没有被从lvmetad中删除。
  • ChangedVG : 磁盘中的VG元数据已经被修改,但是lvmetad还没有更新。
  • MissingPV : 写入磁盘的新PV还没有被添加进lvmetad。
  • RemovedPV : 从磁盘中删除的PV还没有被从lvmetad中删除。
  • ChangedPV : 磁盘中的PV元数据已经被修改,但是lvmetad还没有更新。

缓存状态转换

  • Empty -> Scanning
  • Scanning -> Initialized
  • Initialized -> Scanning
  • Initialized -> Outdated
  • Outdated -> Updated
  • Updated -> Outdated
  • Updated -> Scanning
  • Outdated -> Scanning

缓存状态转换的原因

Empty

  • 启动或重启lvmetad服务。

Scanning

  • 运行pvscan --cache命令。
  • 运行任何global_filter不同的命令(token不匹配)。
  • 当lvmetad处于Empty状态时,运行任何命令。
  • 运行一个报告或显示命令时使用--foreign选项。
  • 运行一个报告或显示命令时使用--shared选项。
  • 运行一个命令时使用了lvmetad全局锁,且锁的状态发生改变。

Initialized

  • 扫描完成。

Outdated

  • 从系统中添加或删除设备。
  • 创建、删除或修改一个VG。
  • 创建、删除或修改一个PV。

Updated

  • 接收并处理完所有事件。

不同缓存状态下的请求处理

  • Empty : 返回token错误。
  • Scanning : 返回token错误,并附带“updating”字符串。
  • Initialized : 正常响应所有请求。
  • Updated : 正常响应所有请求。
  • Outdated : 正常响应所有请求。

一般的状态转换步骤

正常情况下,状态转换一般是“Updated -> Scanning -> Initialized”,转换步骤是:

  1. 接收一个设置token为“updating”的请求, Scanning状态开始;
  2. 接收一个pv_clear_all请求来清除当前缓存;
  3. 接收一系列pv_found时间来重新构建缓存;
  4. 接收一个设置token为一个hash值,Initialized状态开始。

从Outdated向Updated的状态转换依赖与LVM命令发送给lvmetad的事件请求,比如说pv_found, pv_gone, vg_update, vg_remove。

注意:

  • 当通过lvmlockd使用共享VG时,Outdated会持续较长时间,因此,在每次使用缓存前,lvmlockd会强制进行一次“Outdated -> Scanning -> Initialized”状态转换。

缓存的有效性

正常情况下,lvmetad通过处理来自客户端的提醒消息和系统的uevents来保持缓存处于最新状态。当使用lvmlockd时,当其他主机改变磁盘上的元数据时,也应该使本机的lvmetad元数据缓存变为过时状态。

为了解决这个问题,lvmetad元数据缓存增加了“无效”标志,当一个命令向lvmetad发送获取元数据请求时,在lvmetad返回元数据的同时,附带缓存“无效”标志。命令在收到响应后首先检查这个标志,如果无效则扫描磁盘,获取最新的元数据。最后把最新的元数据发送给lvmetad服务,并清除其“无效”标志,后面再有新的命令获取元数据时获取的就是最新的元数据了。

为了跟踪元数据“无效”状态,LVM元数据被分为两类,VG范围和全局范围:

  • VG范围 - 包括VG修改或者LV所有操作。
  • 全局范围 - 包括VG的名称、孤立的物理卷。

当使用lvmetad时,分布式锁中会包含VG最新的seqno,或者全局锁会有一个全局计数器,当对锁使用Update操作后会增加这个序号。其他节点在获取锁时会把锁记录的序号与自身保存的序号进行比较,如果自身的较小则说明元数据过时,则从本地重新扫描元数据。

© 著作权归作者所有

共有 人打赏支持
LastRitter
粉丝 35
博文 36
码字总数 168045
作品 0
武汉
高级程序员
Linux两块磁盘挂载指向一个文件夹LVM磁盘管理(三)

注意:任何磁盘的操作有可能损坏里面数据,请提前备份数据,切记!切记!切记! 0x00:LVM常用命令对照。 针对LVM底层PV的一些基本操作 对于底层的PV而言,操作的命令如下表所示: 针对LVM中...

piazini
2017/11/11
0
0
openstack-10:安装cinder存储服务

安装cinder硬盘服务. admin-openrcopenstack user create --domain default --password-prompt cinderopenstack role add --project service --user cinder admin openstack service create ......

超级梦想家
01/02
0
0
Openstack 安装部署指南翻译系列 之 Cinder服务安装(Block Storage)

1.1.1.1. Cinder服务安装(Block Storage) 块存储服务(cinder)为访客实例提供块存储设备。存储设置方法由块存储驱动程序确定,或者在多后端配置的情况下确定驱动程序。有各种可用的驱动程...

yuweibing
2017/11/13
0
0
centos 7 系统初始化

centos 7 服务器初始化 1. mini安装 2. 安装系统包 #yum -y groupinstall additional-devel base compat-libraries console-internet debugging development directory-client hardware-mon......

博弈帅哥哥
2017/03/15
0
0
关于LVM逻辑卷

简介 逻辑卷是一种device mapper技术,即可以将一个或者多个底层块设备组织成一个逻辑设备,从而提供动态改变大小,不停机情况下添加磁盘,快照以及备份 等功能,使得对于磁盘的管理更加方便...

jiangche00
2017/05/06
0
0
服务器raid5两块硬盘离线vxfs文件系统恢复数据方法

服务器数据恢复故障描述 客户的服务器共有8块450GB SAS硬盘,其中7块硬盘组成一个RAID5阵列,1块热备盘。阵列中2块硬盘损坏并离线,导致RAID5阵列瘫痪,进而影响上层LUN无法正常使用。硬盘无...

宋国建
04/19
0
0
【长文+图片】HP FC MSA2000服务器瘫痪数据恢复过程

服务器数据恢复故障描述 某公司的一台HP FC MSA2000服务器,服务器中搭建RAID5阵列,服务器正常使用过程中出现2块硬盘损坏并离线,而此时只有一块热备盘成功激活,因此导致RAID5阵列瘫痪,上...

宋国建
07/04
0
0
HP存储raid5两块硬盘离线lvm下vxfs文件系统恢复数据过程

故障描述 HP FC MSA2000存储,由于RAID5阵列中出现2块硬盘损坏并离线,而此时只有一块热备盘成功激活,因此导致RAID5阵列瘫痪,上层LUN无法正常使用,用户联系联系北亚数据,整个存储空间由8...

张宇
2017/01/13
0
0
HP FC MSA2000服务器raid数据恢复成功案例

一、服务器数据恢复案例背景: HP FC MSA2000服务器空间由8块450GB SAS硬盘组成raid5磁盘阵列,一块热备盘。服务器在使用中先后有两块硬盘离线,导致服务器瘫痪,lun无法正常使用。 服务器数...

宋国建
前天
0
0
Openstack 安装部署指南翻译系列 之 Manila服务安装(Share Storage)

1.1.1.1. Manila服务安装(Share Storage) 1.1.1.1.1. 服务概述 OpenStack共享文件系统服务(manila)为虚拟机提供文件存储。共享文件系统服务提供了一个管理和配置文件共享的集合。该服务还...

yuweibing
2017/11/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7设置以多用户模式启动

1、旧版本linux系统修改inittab文件,在新版本执行vi /etc/inittab 会有以下提示 # inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON......

haha360
38分钟前
0
0
OSChina 周日乱弹 —— 红薯,五年间我对你不离不弃

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ andonny :分享周二珂的单曲《孤独她呀》 《孤独她呀》- 周二珂 手机党少年们想听歌,请使劲儿戳(这里) @孤星闵月 :没事干,看一遍红楼梦...

小小编辑
44分钟前
98
8
Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式 Factory工厂模式 Singleton单例模式 Delegate委派模式 Strategy策略模式 Prototype原型模式 Template模板模式 Spring5 beans 接口实例化 代理Bean操作 ...

小致dad
今天
0
0
SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
9
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
16
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
242
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部