HP-lefthand底层结构详解及存储灾难数据恢复

2024-08-22 19:32

本文主要是介绍HP-lefthand底层结构详解及存储灾难数据恢复,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

HP-lefthand底层结构详解及存储灾难数据恢复

一、HP-lefthand的特点

HP-lefhand是一款非常不错的SAN存储,使用iscsi协议为客户端分配空间。它支持RAID5RAID6以及RAID10。并且还支持卷快照,卷动态扩容等。常见的型号有:P4500,P4300,P4000等,基于市场占有量和软件定义存储的弊端,有一定的数据恢复市场需求。

HP-lefhand的存储系统是一款嵌入式LINUX系统,需要安装客户端软件才能配置lefthand

服务端:

wKioL1N8KGmAVegCAAEAOod5eD8105.jpg

客服端:

wKiom1N8KK_DC-nGAAMqo28mTfI063.jpg


二、HP-lefthand的存储结构

    Lefthand存储一共分为三个级别,这三个级别共同构成了整个存储,这三个几别分别如下:

物理磁盘:实际的物理磁盘。

逻辑磁盘:将多个物理磁盘组成一个逻辑的磁盘,也就是RAID

逻辑卷:在RAID之上,将不同RAID组成一个大空间,将大空间中不同的区域组成一个卷。

拓扑图如下 

wKioL1N8KKTxwIm1AAHwMmv76bE539.jpg

从整个拓扑图中可以看出,首先需要将物理磁盘组成逻辑磁盘RAID,然后将几个逻辑磁盘组成一个大的存储空间,最后将大的存储空间划分成若干个小块。用户使用的卷是由若干个不连续的小块组成的。也就是卷中存储的用户数据最终会被分成若干个片段存放在不同的逻辑磁盘中,而逻辑磁盘是由多个物理磁盘组成的。最终数据会被分成N个片段放在不通的物理磁盘中。

卷:用户的可用空间,上面说过卷由不同RAIDN个不连续的片段组成,卷中存储的是文件系统以及用户的数据。

RAID:由多个物理磁盘组成,大多是RAID5RAID6RAIDlefthand能识别的最小单元,也就是要想创建卷,必须先创建RAID。因为卷是由不同RAIDN个不连续的片段组成,所以RAID中需要记录它存储的片段是哪一个卷的,并且是卷的第几个片段。因此在RAID的前面会有一部分空间用来存储记录这些片段的MAP

    物理磁盘:物理磁盘中记录的是所有数据,并且数据是不连续的,如果上层是RAID5RAID6。那么物理磁盘中还包括校验数据。

 

三、存储灾难恢复

通过上面对lefthand底层存储的剖析,我们可以很清楚的知道用户的数据是如何存储到磁盘上的。也就意味着如果存储出现灾难,我们可以很快的知道哪里出现问题了。并且针对问题做出解决方案。

针对lefthand上不同的存储灾难表现,对应的数据恢复解决方案如下:

一:当物理磁盘和RAID都完好的情况下,由于用户误删除卷。可以按照lefthand存储中残留的map信息找回误删除的卷。北亚开发的frombyte recovery for Lefthand中也有此模块。二:当物理磁盘完好,RAID损坏的情况下,可能由于RAID中某块磁盘因为坏道过多而离线,导致RAID瘫痪,从而导致卷不可用。可以通过RAID重组、之后激活(需事先备份,确保方案的可回溯)的方法进行数据恢复。如果lefthand的操作系统无法恢复,也可以使用frombyte recovery for Lefthand对恢复后的RAID进行卷解释。

三:当卷中文件系统或文件出现故障时,实则与lefthand本身无关,可以通过在客户端直接做恢复。建议,恢复时增加另一台恢复主机通过iscsi multipath以只读连接。

 可参考文章:某法院HP-P4500存储数据恢复案例


作者:邓奇,北亚数据恢复中心工程师

邮件:dq@frombyte.com

电话:4006505808-801

 

这篇关于HP-lefthand底层结构详解及存储灾难数据恢复的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1097184

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

MySQL的JDBC编程详解

《MySQL的JDBC编程详解》:本文主要介绍MySQL的JDBC编程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言一、前置知识1. 引入依赖2. 认识 url二、JDBC 操作流程1. JDBC 的写操作2. JDBC 的读操作总结前言本文介绍了mysq

Redis 的 SUBSCRIBE命令详解

《Redis的SUBSCRIBE命令详解》Redis的SUBSCRIBE命令用于订阅一个或多个频道,以便接收发送到这些频道的消息,本文给大家介绍Redis的SUBSCRIBE命令,感兴趣的朋友跟随... 目录基本语法工作原理示例消息格式相关命令python 示例Redis 的 SUBSCRIBE 命令用于订

使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解

《使用Python批量将.ncm格式的音频文件转换为.mp3格式的实战详解》本文详细介绍了如何使用Python通过ncmdump工具批量将.ncm音频转换为.mp3的步骤,包括安装、配置ffmpeg环... 目录1. 前言2. 安装 ncmdump3. 实现 .ncm 转 .mp34. 执行过程5. 执行结

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

SpringBoot日志级别与日志分组详解

《SpringBoot日志级别与日志分组详解》文章介绍了日志级别(ALL至OFF)及其作用,说明SpringBoot默认日志级别为INFO,可通过application.properties调整全局或... 目录日志级别1、级别内容2、调整日志级别调整默认日志级别调整指定类的日志级别项目开发过程中,利用日志

Java中的抽象类与abstract 关键字使用详解

《Java中的抽象类与abstract关键字使用详解》:本文主要介绍Java中的抽象类与abstract关键字使用详解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录一、抽象类的概念二、使用 abstract2.1 修饰类 => 抽象类2.2 修饰方法 => 抽象方法,没有

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

MySQL8 密码强度评估与配置详解

《MySQL8密码强度评估与配置详解》MySQL8默认启用密码强度插件,实施MEDIUM策略(长度8、含数字/字母/特殊字符),支持动态调整与配置文件设置,推荐使用STRONG策略并定期更新密码以提... 目录一、mysql 8 密码强度评估机制1.核心插件:validate_password2.密码策略级

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本