CN104090829A - 一种实现逻辑卷元数据备份存储的方法 - Google Patents
一种实现逻辑卷元数据备份存储的方法 Download PDFInfo
- Publication number
- CN104090829A CN104090829A CN201410383038.1A CN201410383038A CN104090829A CN 104090829 A CN104090829 A CN 104090829A CN 201410383038 A CN201410383038 A CN 201410383038A CN 104090829 A CN104090829 A CN 104090829A
- Authority
- CN
- China
- Prior art keywords
- metadata
- disk
- logical volume
- meta
- data region
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明公开了一种实现逻辑卷元数据备份存储的方法,通过在磁盘首尾各存放一份元数据,当磁盘首位置的元数据被破坏后可以从磁盘末尾读取元数据的备份,反之亦然。本发明通过在磁盘首尾存放两份元数据信息提高了元数据的容错能力,当一份元数据被异常破坏时可以使用另一份正常加载,然后完成逻辑卷的激活等操作。
Description
技术领域
本发明涉及计算机***及通信领域,具体涉及一种实现逻辑卷元数据备份存储的方法。
技术背景
在存储***中为提高磁盘空间管理的便利和有效性,通常采用逻辑卷的方式对存储空间进行管理,即通常情况下,在磁盘上创建物理卷(Phisical Volume),然后将物理卷组成存储池,在存储池上划分逻辑卷(Logical Volume),基于逻辑卷可以实现卷空间扩容等高级功能。为了描述存储池的组成及逻辑卷的划分,需要在磁盘上记录其元数据信息,当***启动时根据磁盘上的逻辑卷元数据信息将各个卷进行激活。
通常的卷管理器实现方式,只在磁盘起始位置存放一份逻辑卷元数据信息,如果磁盘起始的元数据信息被异常破坏,会导致逻辑卷无法被正常扫描和激活,为了提高逻辑卷元数据的容错能力,通常采用元数据备份的方式。
发明内容
本发明要解决的技术问题是:提供一种实现逻辑卷元数据备份存储的方法。
本发明所采用的技术方案为:
一种实现逻辑卷元数据备份存储的方法,通过在磁盘首尾各存放一份元数据,当磁盘首位置的元数据被破坏后可以从磁盘末尾读取元数据的备份,反之亦然。
所述元数据在磁盘上的具体布局方式如下:
1)首先在磁盘的起始的第二个扇区存放卷标描述信息和物理卷描述信息,用于表示此硬盘已被卷管理器所使用,并记录物理卷的UUID;
2)在磁盘起始4KB位置处,开始存放逻辑卷元数据及其描述信息,元数据区默认占用1024个扇区,其中第一个扇区存放mda_header结构用于对随后的元数据进行描述;
3)当启用元数据的备份时,在磁盘末尾存放一份元数据的镜像;
4)当磁盘开始位置的label_header被破坏时,可以根据默认的元数据区大小计算出磁盘末尾位置的lable_header结构,用以判断磁盘是否被卷管理器使用,并根据随后的pv_header结构计算出磁盘首尾两个元数据区的位置;
当磁盘开始的mda_header结构被破坏时,同样从磁盘末尾备份的mda_header读取最近一个版本元数据的偏移位置,然后读取实际的逻辑卷元数据将卷激活。
所述卷标描述信息的定义如下:
struct label_header {
int8_t id[8]; // id字段存储了“LABELONE”字符串
uint64_t sector_xl; // 当前结构所在的扇区,默认为1,即起始第二个扇区
uint32_t crc_xl; // 校验字段
uint32_t offset_xl; // 后面pv_header结构相对此扇区起始的偏移
int8_t type[8]; // 类型信息
}。
所述卷标信息随后存放的是物理卷描述信息,其定义如下:
struct pv_header {
int8_t pv_uuid[ID_LEN]; //使用随机数生成的UUID,唯一标示一个物理卷
uint64_t device_size_xl; //物理卷大小,以字节为单位
struct disk_locn disk_areas_xl[0]; //描述了数据区及元数据区的位置
}。
其中,pv_header结构中的disk_areas_x1成员是一个结构体数组,具体描述了各个数据区和元数据区在磁盘上的位置。如果使用元数据备份功能,则需要在磁盘首尾各存放一份元数据,其相对磁盘起始位置的偏移和元数据区长度均在此结构洪描述。
所述mda_header结构的定义如下:
struct mda_header {
uint32_t checksum_xl; // 元数据区描述符的校验值
int8_t magic[16]; // 用于标识元数据区的字符串
uint32_t version; // 元数据版本信息
uint64_t start; // 元数据区在磁盘上的起始偏移字节
uint64_t size; // 元数据区大小
struct raw_locn raw_locns[0]; //用于描述最近一个版本的元数据所在磁盘位置
}。
在所述mda_header结构之后的下一个扇区存放实际的逻辑卷元数据。
所述逻辑卷元数据采用可读文本的方式描述,且在元数据区内循环存放,当元数据区写满时回绕到元数据区开始位置。
本发明的有益效果为:本发明通过在磁盘首尾存放两份元数据信息提高了元数据的容错能力,当一份元数据被异常破坏时可以使用另一份正常加载,然后完成逻辑卷的激活等操作。
附图说明
图1为未使用元数据备份的磁盘布局示意图;
图2为本发明使用元数据备份的磁盘布局示意图。
具体实施方式
下面参照附图,通过具体实施方式对本发明进一步说明:
一种实现逻辑卷元数据备份存储的方法,通过在磁盘首尾各存放一份元数据,当磁盘首位置的元数据被破坏后可以从磁盘末尾读取元数据的备份,反之亦然。
所述元数据在磁盘上的具体布局方式如下:
1)首先在磁盘的起始的第二个扇区存放卷标描述信息和物理卷描述信息,用于表示此硬盘已被卷管理器所使用,并记录物理卷的UUID;
2)在磁盘起始4KB位置处,开始存放逻辑卷元数据及其描述信息,元数据区默认占用1024个扇区,其中第一个扇区存放mda_header结构用于对随后的元数据进行描述;
3)当启用元数据的备份时,在磁盘末尾存放一份元数据的镜像;
假设逻辑卷元数据区的大小为1024扇区,则磁盘末尾4KB+512KB的区域用于存放备份数据,其中备份区域的第二个扇区用于存放label_header和pv_header结构,用于记录卷管理表识和物理卷标识。备份区域的4K偏移处一个扇区内存放mda_header,注意此扇区内存在两个mda_header结构,第一个用于记录磁盘末尾的元数据存储位置,第二个用于记录磁盘开头的元数据位置,并与磁盘开头的两个mda_header结构对称存放。具体布局方式如图2所示。
4)当磁盘开始位置的label_header被破坏时,可以根据默认的元数据区大小计算出磁盘末尾位置的lable_header结构,用以判断磁盘是否被卷管理器使用,并根据随后的pv_header结构计算出磁盘首尾两个元数据区的位置;
当磁盘开始的mda_header结构被破坏时,同样从磁盘末尾备份的mda_header读取最近一个版本元数据的偏移位置,然后读取实际的逻辑卷元数据将卷激活。
所述卷标描述信息的定义如下:
struct label_header {
int8_t id[8]; // id字段存储了“LABELONE”字符串
uint64_t sector_xl; // 当前结构所在的扇区,默认为1,即起始第二个扇区
uint32_t crc_xl; // 校验字段
uint32_t offset_xl; // 后面pv_header结构相对此扇区起始的偏移
int8_t type[8]; // 类型信息
}。
所述卷标信息随后存放的是物理卷描述信息,其定义如下:
struct pv_header {
int8_t pv_uuid[ID_LEN]; //使用随机数生成的UUID,唯一标示一个物理卷
uint64_t device_size_xl; //物理卷大小,以字节为单位
struct disk_locn disk_areas_xl[0]; //描述了数据区及元数据区的位置
}。
其中,pv_header结构中的disk_areas_x1成员是一个结构体数组,具体描述了各个数据区和元数据区在磁盘上的位置。如果使用元数据备份功能,则需要在磁盘首尾各存放一份元数据,其相对磁盘起始位置的偏移和元数据区长度均在此结构洪描述。
所述mda_header结构的定义如下:
struct mda_header {
uint32_t checksum_xl; // 元数据区描述符的校验值
int8_t magic[16]; // 用于标识元数据区的字符串
uint32_t version; // 元数据版本信息
uint64_t start; // 元数据区在磁盘上的起始偏移字节
uint64_t size; // 元数据区大小
struct raw_locn raw_locns[0]; //用于描述最近一个版本的元数据所在磁盘位置
}。
在所述mda_header结构之后的下一个扇区存放实际的逻辑卷元数据。
所述逻辑卷元数据采用可读文本的方式描述,且在元数据区内循环存放,当元数据区写满时回绕到元数据区开始位置。
逻辑卷元数据以可读文本的方式存放,用于描述物理卷、存储池、逻辑卷的组成、空间划分等信息。例如第一份元数据的起始存放位置为4096+512=4608字节,且元数据长度默认对齐到512字节,假设对齐后的元数据长度为1024字节,则其结束偏移为4608+1024-1=5631。当逻辑卷划分出现变化时,例如对逻辑卷进行增加、扩容、删除等操作时,会对元数据进行更新,则在上一份元数据的后面重新存放一份新版本的元数据。假设上一元数据的结束位置5621,则第二份元数据的起始存放偏移为5632,如果后续逻辑卷结构变化较大,元数据则依次向后排列,当到达元数据区的末尾时,回绕到元数据区的开头进行存放。
当未使用元数据备份时的磁盘布局如图1所示。
Claims (7)
1.一种实现逻辑卷元数据备份存储的方法,其特征在于:在磁盘首尾各存放一份元数据。
2.根据权利要求1所述的一种实现逻辑卷元数据备份存储的方法,其特征在于,所述元数据在磁盘上的具体布局方式如下:
1)首先在磁盘的起始的第二个扇区存放卷标描述信息和物理卷描述信息,用于表示此硬盘已被卷管理器所使用,并记录物理卷的UUID;
2)在磁盘起始4KB位置处,开始存放逻辑卷元数据及其描述信息,元数据区默认占用1024个扇区,其中第一个扇区存放mda_header结构用于对随后的元数据进行描述;
3)当启用元数据的备份时,在磁盘末尾存放一份元数据的镜像;
4)当磁盘开始位置的label_header被破坏时,根据默认的元数据区大小计算出磁盘末尾位置的lable_header结构,用以判断磁盘是否被卷管理器使用,并根据随后的pv_header结构计算出磁盘首尾两个元数据区的位置;
当磁盘开始的mda_header结构被破坏时,从磁盘末尾备份的mda_header读取最近一个版本元数据的偏移位置,然后读取实际的逻辑卷元数据将卷激活。
3.根据权利要求1或2所述的一种实现逻辑卷元数据备份存储的方法,其特征在于,所述卷标描述信息的定义如下:
struct label_header {
int8_t id[8]; // id字段存储了“LABELONE”字符串
uint64_t sector_xl; // 当前结构所在的扇区,默认为1,即起始第二个扇区
uint32_t crc_xl; // 校验字段
uint32_t offset_xl; // 后面pv_header结构相对此扇区起始的偏移
int8_t type[8]; // 类型信息
}。
4.根据权利要求1或2所述的一种实现逻辑卷元数据备份存储的方法,其特征在于,所述卷标信息随后存放的是物理卷描述信息,其定义如下:
struct pv_header {
int8_t pv_uuid[ID_LEN]; //使用随机数生成的UUID,唯一标示一个物理卷
uint64_t device_size_xl; //物理卷大小,以字节为单位
struct disk_locn disk_areas_xl[0]; //描述了数据区及元数据区的位置
}。
5.根据权利要求1或2所述的一种实现逻辑卷元数据备份存储的方法,其特征在于,所述mda_header结构的定义如下:
struct mda_header {
uint32_t checksum_xl; // 元数据区描述符的校验值
int8_t magic[16]; // 用于标识元数据区的字符串
uint32_t version; // 元数据版本信息
uint64_t start; // 元数据区在磁盘上的起始偏移字节
uint64_t size; // 元数据区大小
struct raw_locn raw_locns[0]; //用于描述最近一个版本的元数据所在磁盘位置
}。
6.根据权利要求5所述的一种实现逻辑卷元数据备份存储的方法,其特征在于:在所述mda_header结构之后的下一个扇区存放实际的逻辑卷元数据。
7.根据权利要求6所述的一种实现逻辑卷元数据备份存储的方法,其特征在于:所述逻辑卷元数据采用可读文本的方式描述,且在元数据区内循环存放,当元数据区写满时回绕到元数据区开始位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410383038.1A CN104090829A (zh) | 2014-08-06 | 2014-08-06 | 一种实现逻辑卷元数据备份存储的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410383038.1A CN104090829A (zh) | 2014-08-06 | 2014-08-06 | 一种实现逻辑卷元数据备份存储的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104090829A true CN104090829A (zh) | 2014-10-08 |
Family
ID=51638547
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410383038.1A Pending CN104090829A (zh) | 2014-08-06 | 2014-08-06 | 一种实现逻辑卷元数据备份存储的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104090829A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988891A (zh) * | 2015-02-05 | 2016-10-05 | 浙江大华技术股份有限公司 | 一种磁盘数据修复方法及装置 |
CN110825712A (zh) * | 2019-10-31 | 2020-02-21 | 四川效率源科技有限责任公司 | 一种逻辑卷管理的磁盘簇数据的恢复方法 |
CN111028135A (zh) * | 2019-12-10 | 2020-04-17 | 国网重庆市电力公司电力科学研究院 | 一种图像文件修复方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
CN101216791A (zh) * | 2008-01-04 | 2008-07-09 | 华中科技大学 | 基于指纹的文件备份方法 |
US20100077161A1 (en) * | 2008-09-24 | 2010-03-25 | Timothy John Stoakes | Identifying application metadata in a backup stream |
CN102184260A (zh) * | 2011-06-09 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种云计算环境下的海量数据存取方法 |
CN102737205A (zh) * | 2010-12-02 | 2012-10-17 | 微软公司 | 保护包括可编辑元数据的文件 |
-
2014
- 2014-08-06 CN CN201410383038.1A patent/CN104090829A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1963814A (zh) * | 2006-11-29 | 2007-05-16 | 珠海市泰德企业有限公司 | 存储器数据管理方法 |
CN101216791A (zh) * | 2008-01-04 | 2008-07-09 | 华中科技大学 | 基于指纹的文件备份方法 |
US20100077161A1 (en) * | 2008-09-24 | 2010-03-25 | Timothy John Stoakes | Identifying application metadata in a backup stream |
CN102737205A (zh) * | 2010-12-02 | 2012-10-17 | 微软公司 | 保护包括可编辑元数据的文件 |
CN102184260A (zh) * | 2011-06-09 | 2011-09-14 | 中国人民解放军国防科学技术大学 | 一种云计算环境下的海量数据存取方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105988891A (zh) * | 2015-02-05 | 2016-10-05 | 浙江大华技术股份有限公司 | 一种磁盘数据修复方法及装置 |
CN105988891B (zh) * | 2015-02-05 | 2019-02-12 | 浙江大华技术股份有限公司 | 一种磁盘数据修复方法及装置 |
CN110825712A (zh) * | 2019-10-31 | 2020-02-21 | 四川效率源科技有限责任公司 | 一种逻辑卷管理的磁盘簇数据的恢复方法 |
CN111028135A (zh) * | 2019-12-10 | 2020-04-17 | 国网重庆市电力公司电力科学研究院 | 一种图像文件修复方法 |
CN111028135B (zh) * | 2019-12-10 | 2023-06-02 | 国网重庆市电力公司电力科学研究院 | 一种图像文件修复方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220413706A1 (en) | Data Storage Method, Apparatus and Storage System | |
CN104461391B (zh) | 一种存储设备元数据管理处理方法及*** | |
TWI645404B (zh) | 資料儲存裝置以及非揮發式記憶體操作方法 | |
US10452286B2 (en) | Leveraging continuous replication to copy snapshot backup image | |
EP3155531A1 (en) | Replicating data using remote direct memory access (rdma) | |
TWI293428B (zh) | ||
CN103678145A (zh) | 数据储存装置与快闪存储器控制方法 | |
US9678871B2 (en) | Data flush of group table | |
US9990150B2 (en) | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory | |
CN105302665B (zh) | 一种改进的写时拷贝快照方法及*** | |
CN103996412A (zh) | 一种用于智能卡非易失性存储器的掉电保护方法 | |
CN103049539A (zh) | 一种文件***中文件数据的存储方法及其装置 | |
TW201250695A (en) | Memory erasing method, memory controller and memory storage apparatus | |
CN109460319A (zh) | 一种可写快照的创建方法、装置、***、设备及存储介质 | |
CN106104515A (zh) | 利用非易失性存储器的文件***设计和故障恢复方法 | |
US10642508B2 (en) | Method to limit impact of partial media failure of disk drive and detect/report the loss of data for objects due to partial failure of media | |
CN103473258A (zh) | 云存储文件*** | |
CN107402848A (zh) | 一种快照数据一致性的实现方法 | |
CN104090829A (zh) | 一种实现逻辑卷元数据备份存储的方法 | |
CN109885253A (zh) | 存储设备上的原子跨介质写入 | |
TW201039349A (en) | Data accessing method for flash memory and storage system and controller using the same | |
CN104268097B (zh) | 一种元数据处理方法及*** | |
CN105094711B (zh) | 一种实现写时复制文件***的方法及装置 | |
US20180060162A1 (en) | Auto-Recovery of Media Cache Master Table Data | |
CN103853827A (zh) | 一种保证数据一致性的数据库备份方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141008 |