EMC Isilon存储节点挂掉--Journal故障问题处理
EMC isilon 的集群存储系统经常会遇到有些节点关机后无法启动,使用串口或者接上显示器去看,会看到node节点启动到下面的位置就不正常启动了。典型的console输出如下:
老的版本,OneFS 7.0版本以前的:
Checking Isilon Journal integrity...
DRAM journal is invalid, initiating recovery...
Attempting to save and restore journal to clear any ECC errors in unused DRAM blocks...
Attempting to save journal to default location
Warning: /etc/ifs/journal_bad exists. Saving bad journal.
OneFS is unmounted
Writing journal_backup_valid : backup in progress
Writing journal_backup_serial : unmounted backup at Sun Feb 23 13:54:15 2025
Saving journal to /var/journal/journal.gz
Unable to save journal (isi_dumpjournal -s returned 1)
Error output:
Writing v4/v5/v6 journal
type sector bytes
----- ---------- ----------
Bad version: 9
isi_dumpjournal: Bad v4 superblock sect 0x0
Unable to save journal /var/journal/journal:
Restore failed
!! The journal test has encountered a problem.
!! Could not recover journal. Contact Isilon Customer Support
!! immediately.
!! Type 'prompt' to drop to a shell.
OneFS 7.0 版本以后的提示:
Test Journal exited with error - Checking Isilon Journal integrity. . .
Attempting to save journal to default location
Warning: /etc/ifs/journal_bad exists. Saving bad journal .
OneFS is unmounted
Writing journal_backup_valid: backup in progress
Writing journal_backup_serial: unmounted backup at Sun Oct 20 08: 36: 31 2013
Saving journal to /var/journal/journal.gz
Unable to save journal ( isi_dump journal - s returned 1)
Error output :
data 422768 8192
data 787792 8192
data 617904 8192
Bad flags: 0xe01d
isi_dump journal : Bad v4 txn block sect 0x1a57f
Unable to save journal /var/journal/jour nal :
DRAM journal is invalid, initiating recover y. . .
Attempting to save and restore journal to clear any ECC errors in unused DRAM blocks. . .
Restore failed
Could not recover journal . Contact Isilo Customer Support immediately.
Please contact Isilon Customer Support at 1-877-2-ISILON.
Command Options:
1) Enter recovery shell
2) Continue booting
3) Reboot
开始之前,先简单说一下,什么是journal,为什么journal有问题,节点就无法启动了。简单来说,journal就是OneFS存储系统的日志文件,就是内存中的数据,这些数据还没有写入到磁盘中。如果journal有问题了,那么存储操作系统的一致性就有问题了,就意味着有数据丢失了。这也就是isilon为什么遇到这个问题就不让节点加入集群的原因了。
导致出现journal出现问题的原因从大的方面就是2种:
硬件问题,常见的是NVRAM 卡坏了,笼子chassis有问题了。
软件问题,就是journal数据不一致了。这个常见的是保存在NVRAM中的数据由于长时间关机,nvram中的数据没有了。
解决这个问题最简单的就是把node节点给smartfail了,然后再add进来。但是也有很多情况,客户是无法对node做smartfail的,比如,cluster集群的空间不够一个node的smartfail,或者集群中超过protection level的node出现了故障。这个时候就要分析node出现故障前journal的情况来进行相关问题处理,可以联系我们,添加vx: StorageExpert。
下面是关于EMC isilon OneFS操作系统中journal的详细介绍,有了这些概念的深入理解,我们就可以更好的处理journal issue问题了。
1. 什么是 journal?
- 定义:在 OneFS 中,journal 是一种日志机制,用于记录文件系统元数据的更改(例如创建、删除、修改文件或目录)。它类似于数据库的 WAL(Write-Ahead Logging)或传统文件系统(如 ext3/ext4)的 journal,但是为 Isilon 的分布式文件系统设计,专门用于确保多节点集群的数据一致性和恢复能力。
- 作用:
- 一致性保证:在节点崩溃、断电或硬件故障后,journal 允许 OneFS 回放日志,恢复文件系统到一致状态,避免数据丢失或损坏。
- 性能优化:通过先将元数据更改写入 journal(通常在 NVRAM 中),然后异步刷新到磁盘,OneFS 可以在高负载下提高写性能。
- 分布式支持:在多节点集群中,journal 确保所有节点之间的元数据更改同步一致。
- 存储位置:
- NVRAM:OneFS 使用 NVRAM(非易失性随机存取内存)作为 journal 的主要存储区域,提供高速、低延迟的写操作。NVRAM 通常是硬件卡(如 Mellanox NVRAM 卡)。
- 磁盘(/var/journal):journal 的副本或备份存储在本地磁盘的 /var/journal分区中。这是持久化存储,用于在 NVRAM 耗尽或损坏时尝试恢复。
2. OneFS 中的 journal 特性
- 分布式设计:OneFS 是分布式文件系统,每个节点维护自己的 journal,但通过群组管理协议(GMP,Group Management Protocol)同步集群元数据,确保一致性。
- 元数据聚焦:journal 主要记录元数据更改(文件属性、目录结构、权限等),而不是实际数据内容(数据块存储在 /ifs上的磁盘中)。
- 冗余与恢复:OneFS 使用 journal 备份(如 /var/journal/journal.gz)和cluster的更改日志,在节点故障时恢复元数据meta data。
OneFS journal 的原理
1. 基本原理
- 日志记录:当用户或应用对 /ifs中的文件或目录进行操作(例如创建文件、修改权限),OneFS 将这些元数据的更改写入 journal。
- 两阶段提交:
- 写入 NVRAM:更改首先写入 NVRAM 中的 journal,标记为“未提交”(dirty)。NVRAM 提供低延迟和高可靠性,确保即使电源中断,数据不会丢失。
- 刷新到磁盘:在适当时间(例如定期或达到阈值),OneFS 将 journal 数据从 NVRAM 刷入磁盘上的 /var/journal或 /ifs的元数据区域,标记为“已提交”(committed)。
- 回放机制:如果系统崩溃或断电,OneFS 在重启时读取 journal,检查未提交的更改,执行回放(replay)操作,恢复文件系统到一致状态。
- 一致性检查:OneFS 在启动时运行 journal 测试,验证 journal 的完整性和一致性。如果检测到损坏(例如 NVRAM 数据丢失、磁盘 ECC 错误),会创建 journal_bad文件并阻止启动。
2. 分布式一致性
- 在多节点集群中,每个节点维护自己的 journal,但通过 GMP 同步元数据更改。
- 当一个节点更新元数据时:
- 该节点的 journal 记录更改。
- 通过网络广播更改到其他节点,更新它们的 journal 和元数据。
- 所有节点达成一致后,元数据刷入磁盘。
- 如果某个节点的 journal 损坏,集群可能无法启动。
OneFS journal 的工作机制
1. 数据流
- 写操作:
- 用户通过 NFS、SMB 或其他协议发起文件操作(如 touch /ifs/test.txt)。
- OneFS 将元数据更改(例如文件创建时间、权限)写入 NVRAM 中的 journal。
- NVRAM 数据异步刷新到 /var/journal和 /ifs的元数据区域。
- 数据块(文件内容)直接写入磁盘(/ifs),由 OneFS 的数据保护机制(N+1、N+2 冗余)管理。
- 读操作:
- 读取时直接访问 /ifs上的数据块和元数据,无需 journal 参与(除非需要恢复)。
- 崩溃恢复:
- 系统重启时,OneFS 检查 NVRAM 和 /var/journal中的 journal。
- 如果 journal 完整,执行回放操作,应用未提交的更改。
- 如果 journal 损坏,创建 journal_bad并停止启动。
2. 硬件依赖
- NVRAM:提供高速、低延迟的 journal 写操作。长时间停电可能导致 NVRAM 电池耗尽,journal 数据丢失。
- 磁盘:/var/journal分区存储 journal 备份(如 journal.gz)。
3. 错误处理
- ECC 错误:磁盘或者NVRAM的ECC 错误(ECC block list hit)可能破坏 journal 或元数据,导致 OneFS 无法恢复。
- journal 损坏:见 journal_bad(“The journal device is corrupted.”),可能是 NVRAM 耗尽、磁盘故障或停电导致。
相关文章:
EMC Isilon存储节点挂掉--Journal故障问题处理
EMC isilon 的集群存储系统经常会遇到有些节点关机后无法启动,使用串口或者接上显示器去看,会看到node节点启动到下面的位置就不正常启动了。典型的console输出如下: 老的版本,OneFS 7.0版本以前的: Checking Isilon…...
掌握 ElasticSearch 组合查询:Bool Query 详解与实践
掌握 ElasticSearch 组合查询:Bool Query 详解与实践 一、引言 (Introduction)二、Bool 查询基础2.1 什么是 Bool 查询?2.2 Bool 查询的四种子句2.3 语法结构 三、Bool 查询的四种子句详解与示例3.1 must 子句3.2 filter 子句3.3 should 子句3.4 must_no…...
Spring Boot 3 集成 RabbitMQ 实践指南
Spring Boot 3 集成 RabbitMQ 实践指南 1. RabbitMQ 核心原理 1.1 什么是RabbitMQ RabbitMQ是一个开源的消息代理和队列服务器,使用Erlang语言开发,基于AMQP(Advanced Message Queuing Protocol)协议实现。它支持多种消息传递模…...
查看cmd下python的安装路径 + Windows 命令行添加环境变量和不重启刷新环境变量
1、查看cmd下python的安装路径 cmd ----》输入“python” 命令 ---》输入 import sys; print(sys.executable) 即可看到当前系统python的安装路径: 注:系统所使用的python实际上就是在系统环境变量下配置的python目录。 2、刷新path命令:在c…...
C/C++跳动的爱心
系列文章 序号直达链接1C/C李峋同款跳动的爱心2C/C跳动的爱心3C/C经典爱心4C/C满屏飘字5C/C大雪纷飞6C/C炫酷烟花7C/C黑客帝国同款字母雨8C/C樱花树9C/C奥特曼10C/C精美圣诞树11C/C俄罗斯方块小游戏12C/C贪吃蛇小游戏13C/C孤单又灿烂的神14C/C闪烁的爱心15C/C哆啦A梦16C/C简单…...
Linux 命令大全完整版(10)
4. 压缩与解压缩命令 gzip(gnu zip) 功能说明:压缩文件。语 法:gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/fast][文件…] 或 gzip [-acdfhlLnNqrtvV][-S <压缩字尾字符串>][-<压缩效率>][–best/f…...
Cannot deserialize instance of java.lang.String out of START_ARRAY token
这个错误 Cannot deserialize instance of java.lang.String out of START_ARRAY token 表示 Jackson 正在尝试将一个 JSON 数组反序列化成一个 String 类型的字段,但是 JSON 中传递的是一个数组而不是单一的字符串。 具体来说,这段堆栈信息:…...
一、初始爬虫
1.爬虫的相关概念 1.1 什么是爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人)就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地爬取互联网信息的程序。 原则上,只要是浏览器…...
在低功耗MCU上实现人工智能和机器学习
作者:Silicon Labs 人工智能(AI)和机器学习(ML)技术不仅正在快速发展,还逐渐被创新性地应用于低功耗的微控制器(MCU)中,从而实现边缘AI/ML解决方案。这些MCU是许多嵌入式…...
Elasticsearch除了用作查找以外,还能可以做什么?
前言 Elasticsearch用于实时数据分析、日志存储、业务智能等。还有日志与监控、多租户和安全性。以及应用场景包括日志分析、公共数据采集、全文搜索、事件数据、数据可视化。处理错误拼写和支持变体,不过这些可能还是属于搜索优化。企业搜索、日志管理、应用监控、…...
QQ登录测试用例报告
QQ登录测试用例思维导图 一、安全性测试用例 1. 加密传输与存储验证 测试场景:输入账号密码并提交登录请求。预期结果:账号密码通过加密传输(如HTTPS)与存储(如哈希加盐),无明文暴露。 2. 二…...
《算法基础入门:最常用的算法详解与应用(持续更新实战与面试题)》
1. 排序算法 排序算法是将一组数据按特定的顺序排列起来的算法,常见的有: 冒泡排序(Bubble Sort)选择排序(Selection Sort)插入排序(Insertion Sort)归并排序(Merge So…...
单臂路由
单臂路由(Router on a Stick)是一种网络配置方式,主要用于在单个物理接口上实现多个VLAN之间的路由。它通常用于交换机与路由器之间的连接,适用于VLAN间通信需求较小的情况。 工作原理 VLAN划分:交换机上配置多个VLAN…...
细说STM32F407单片机2个ADC使用DMA同步采集各自的1个输入通道的方法
目录 一、示例说明 二、工程配置 1、RCC、DEBUG、CodeGenerator 2、USART6 3、TIM3 (1)Mode (2)参数设置 (3) TRGO (4)ADC1_IN0 1)ADCs_Common_Settings 2&a…...
[python脚本]论文1.(一)CPU/内存数据分析和分组
CPU 收集到的CPU数据,格式如下: 由于这里6个数据为一组来收集latency的数据以及各个分位值的数据,而本质上每一行都是一次完整的测试,因此这里将这个csv文件分为两个文件,第一个是和latency相关的,将6条数…...
一周学会Flask3 Python Web开发-Jinja2模板基本使用
锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们平台开发web系统,必须用到网页,单纯的静态网页无法满足我们的需求。我们可以使用模版引擎技术&am…...
基于大数据爬虫的旅游分析可视化平台设计和实现
# 当数据蜘蛛侠遇上旅游百事通:一场说走就走的技术狂欢 ## 引言:当旅游攻略遇上大数据,世界突然变得透明 去年国庆假期,小王在黄山之巅挤成"人肉三明治"时突然顿悟——如果能提前知道哪个景点即将爆满,哪个…...
sql调优之数据库开发规范
数据库 数据库开发规范 也可用于PostgreSQL以及兼容PG的数据库 通用命名规则 【强制】 本规则适用于所有对象名,包括:库名、表名、列名、函数名、视图名、序列号名、别名等。 【强制】 对象名务必只使用小写字母,下划线,数字&…...
《操作系统 - 清华大学》8 -3:进程管理:进程特点
深入剖析进程的特点、实现及进程控制块 一、进程的特点 (一)动态性 进程具有明显的动态性。它可以被动态创建,在执行过程中会发生状态切换,从一个状态转变为另一个状态。当所有任务执行完毕后,进程还会结束运行。整…...
Java 大视界 -- 总结与展望:Java 大数据领域的新征程与无限可能(96)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
前端ES面试题及参考答案
目录 let/const 与 var 的区别?TDZ 是什么? 箭头函数与普通函数的区别?箭头函数能否作为构造函数? 模板字符串的嵌套表达式和标签模板用法? 解构赋值的应用场景及对象 / 数组解构差异? 函数参数默认值的生效条件及暂时性死区问题? 展开运算符(...)在数组 / 对象中…...
【微服务】深入解析spring aop原理
目录 一、前言 二、AOP 概述 2.1 什么是AOP 2.2 AOP中的一些概念 2.2.1 aop通知类型 2.3 AOP实现原理 2.3.1 aop中的代理实现 2.4 静态代理与动态代理 2.4.1 静态代理实现 三、 jdk动态代理与cglib代理 3.1 jdk动态代理 3.1.1 jdk动态代理模拟实现 3.2 CGLIB 代理…...
计算机网络之路由协议(OSPF路由协议)
一、定义与分类 OSPF是一种内部网关协议(IGP),也属于链路状态路由协议。它使用链路状态路由算法,在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC2328,而RFC5340则定义了适用于I…...
DeepSeek等LLM对网络安全行业的影响
大家好,我是AI拉呱,一个专注于人工智领域与网络安全方面的博主,现任资深算法研究员一职,兼职硕士研究生导师;热爱机器学习和深度学习算法应用,深耕大语言模型微调、量化、私域部署。曾获多次获得AI竞赛大奖,拥有多项发明专利和学术论文。对于AI算法有自己独特见解和经验…...
Ai沟通学习记录三
代理模式 简单的理解可以任务角色扮演。例如:“你是伟大的画家”,帮我构思一个山水花的描述词。 你是个眼科医生,我最近眼干燥,怎么弄。 等等。 举例环节 输入: 如果你是熊。看到一个人,蹲下来捡石头。 你…...
pikachu靶场搭建教程
需要的东西 phpStudy: 链接: https://pan.baidu.com/s/1fJ-5TNtdDZGUf5FhTm245g 提取码:0278 pikachu-master: Github链接:https://github.com/zhuifengshaonianhanlu/pikachu 链接: https://pan.baidu.c…...
游戏引擎学习第119天
仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾和今天的议程 如果你们还记得昨天的进展,我们刚刚完成了优化工作,目标是让某个程序能够尽可能快速地运行。我觉得现在可以说它已经快速运行了。虽然可能还没有达到最快的速度,但我们…...
数据结构与算法再探(七)查找-排序
查找 一、二分查找 二分查找是一种高效的查找算法,适用于在已排序的数组或列表中查找特定元素。它通过将搜索范围逐步减半来快速定位目标元素。理解二分查找的“不变量”和选择左开右闭区间的方式是掌握这个算法的关键。 二分查找关键点 不变量 在二分查找中&a…...
从零开始制作一个漂亮的悬浮按钮
0.1血版 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> &l…...
Win11更新系统c盘爆满处理
1.打开磁盘管理 2.右击c盘选择属性,进行磁盘管理,选择详细信息。 3.选择以前安装的文件删除即可释放c盘空间。...
