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。
  • 两阶段提交
    1. 写入 NVRAM:更改首先写入 NVRAM 中的 journal,标记为“未提交”(dirty)。NVRAM 提供低延迟和高可靠性,确保即使电源中断,数据不会丢失。
    2. 刷新到磁盘:在适当时间(例如定期或达到阈值),OneFS 将 journal 数据从 NVRAM 刷入磁盘上的 /var/journal或 /ifs的元数据区域,标记为“已提交”(committed)。
  • 回放机制:如果系统崩溃或断电,OneFS 在重启时读取 journal,检查未提交的更改,执行回放(replay)操作,恢复文件系统到一致状态。
  • 一致性检查:OneFS 在启动时运行 journal 测试,验证 journal 的完整性和一致性。如果检测到损坏(例如 NVRAM 数据丢失、磁盘 ECC 错误),会创建 journal_bad文件并阻止启动。

2. 分布式一致性

  • 在多节点集群中,每个节点维护自己的 journal,但通过 GMP 同步元数据更改。
  • 当一个节点更新元数据时:
    1. 该节点的 journal 记录更改。
    2. 通过网络广播更改到其他节点,更新它们的 journal 和元数据。
    3. 所有节点达成一致后,元数据刷入磁盘。
  • 如果某个节点的 journal 损坏,集群可能无法启动。

OneFS journal 的工作机制

1. 数据流

  • 写操作
    1. 用户通过 NFS、SMB 或其他协议发起文件操作(如 touch /ifs/test.txt)。
    2. OneFS 将元数据更改(例如文件创建时间、权限)写入 NVRAM 中的 journal。
    3. NVRAM 数据异步刷新到 /var/journal和 /ifs的元数据区域。
    4. 数据块(文件内容)直接写入磁盘(/ifs),由 OneFS 的数据保护机制(N+1、N+2 冗余)管理。
  • 读操作
    • 读取时直接访问 /ifs上的数据块和元数据,无需 journal 参与(除非需要恢复)。
  • 崩溃恢复
    1. 系统重启时,OneFS 检查 NVRAM 和 /var/journal中的 journal。
    2. 如果 journal 完整,执行回放操作,应用未提交的更改。
    3. 如果 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 耗尽、磁盘故障或停电导致。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/975621.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】多线程 -> 线程同步与基于BlockingQueue的生产者消费者模型

线程同步 条件变量 当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。 例如:一个线程访问队列时,发现队列为空,它只能等待,直到其它线程将一个节点添加到队列中。这…

ChatGPT各模型版本对比分析

文章目录 1. GPT-3.5(2022年11月)2. GPT-4(2023年3月)3. GPT-4o(2024年5月)4. GPT-4o mini(2024年7月)5. o1系列(2024年9月至12月)6. o3-mini(202…

萌新学 Python 之自定义函数

函数主要用来封装功能,具有独立功能的代码块,可以提高代码重复利用率,便于模块管理 函数的定义: def 函数名(形参): 函数体,独立功能的代码 return ‘函数的返回值’ 函数注意事项: 1.函数的命名通常使…

【工作流】Spring Boot 项目与 Camunda 的整合

【工作流】Spring Boot 项目与 Camunda 的整合 【一】Camunda 和主流流程引擎的对比【二】概念介绍【1】Camunda 概念:【2】BPMN 概念 【三】环境准备【1】安装流程设计器CamundaModeler【画图工具】(1)下载安装 【2】CamundaModeler如何设计…

【Linux】基于UDP/TCP套接字编程与守护进程

目录 一、网路套接字编程 (一)基础概念 1、源IP地址与目的IP地址 2、端口号 3、TCP与UDP 4、网络字节序 (二)套接字编程接口 1、socket 常见API 2、sockaddr结构 (三)UDP套接字 1、UDP服务器创建…

【图像处理】:两幅图中相同区域的相似度比较

两幅图中相同区域的相似度比较 1.OpenCV和Python实现的两幅图相似度衡量方法1. 均方误差(MSE)2. 结构相似性指数(SSIM)图像协方差能显示结构特征的原因 3. 直方图相似度4. 特征点匹配5. 相关系数(Pearson Correlation&…

[python脚本]论文1.(一)CPU/内存数据分析和分组

CPU 收集到的CPU数据,格式如下: 由于这里6个数据为一组来收集latency的数据以及各个分位值的数据,而本质上每一行都是一次完整的测试,因此这里将这个csv文件分为两个文件,第一个是和latency相关的,将6条数…

綫性與非綫性泛函分析與應用_1.例題(下)-半母本

第1章 實分析與函數論:快速回顧(下) 五、基數;有限集和無限集相關例題 例題1:集合基數的判斷 判斷集合和集合B=\{a,b,c,d,e\}的基數關係。 解析: 可以構造一個雙射,例如,,,,。 所以,兩個集合具有相同的基數。 例題2:可數集的證明 證明整數集是可數集。 解析: …

MQTT实现智能家居------3、源码分析(超详细)

一、连接服务器 1、初始化: mqtt_log_init();是一个空函数,自己定义宏 client mqtt_lease();//创建一个client结构体,从此以后client代表客户端 platform_memory_alloc();//是一个分配内存的总函数,可以适用于Linux、FreeRTos…

Qt常用控件之日历QCalendarWidget

日历QCalendarWidget QCalendarWidget 是一个日历控件。 QCalendarWidget属性 属性说明selectDate当前选中日期。minimumDate最小日期。maximumDate最大日期。firstDayOfWeek设置每周的第一天是周几(影响日历的第一列是周几)。gridVisible是否显示日历…

智慧废品回收小程序php+uniapp

废品回收小程序:数字化赋能环保,开启资源循环新时代 城市垃圾治理难题,废品回收小程序成破局关键 随着城市化进程加速与消费水平提升,我国生活垃圾总量逐年攀升,年均增速达5%-8%,其中超30%为可回收物。然…

SkyWalking集成Kafka实现日志异步采集经验总结

SkyWalking日志异步采集架构 【重点知识】 1、【Agent】kafka-reporter-plugin-x.x.x.jar包放plugins目录后必走kafka(kafka没有正确配置就会报错) 2、【Agent】异步如不开启数据压缩,日志数据较大,pod多、业务大时容易造成网络…

C++第十六讲:红黑树

C第十六讲:红黑树 1.什么是红黑树1.1红黑树的特点 2.MyRBTree实现2.1红黑树的结构2.2红黑树的插入2.2.1插入的总体逻辑2.2.2情况一:变色2.2.3情况二:单旋 变色2.2.4情况三:双旋 变色2.2.4插入代码总结 2.3红黑树的检查2.4完整代…

KubeKey一键安装部署k8s集群和KubeSphere详细教程

目录 一、KubeKey简介 二、k8s集群KubeSphere安装 集群规划 硬件要求 Kubernetes支持版本 操作系统要求 SSH免密登录 配置集群时钟 所有节点安装依赖 安装docker DNS要求 存储要求 下载 KubeKey 验证KubeKey 配置集群文件 安装集群 验证命令 登录页面 一、Ku…

Java 值传递

1 形参&实参 方法的定义可能会用到参数,参数在程序语言中分为: 实参:用于传递给函数/方法的参数,必须有确定的值。 形参:用于定义函数/方法,接收实参,不需要有确定的值。 String hello …

开源一款I2C电机驱动扩展板-FreakStudio多米诺系列

总线直流电机扩展板 原文链接: FreakStudio的博客 摘要 设计了一个I2C电机驱动板,通过I2C接口控制多个电机的转速和方向,支持刹车和减速功能。可连接16个扩展板,具有PWM输出、过流过热保护和可更换电机驱动芯片。支持按键控制…

论文笔记(七十二)Reward Centering(三)

Reward Centering(三) 文章概括摘要3 基于值的奖励中心化4 案例研究: 以奖励为中心的 Q-learning5 讨论、局限性与未来工作致谢 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan…

内部知识库的核心模块是什么?

内容概要 现代企业内部知识库的架构设计遵循系统性、可扩展性与安全性三重原则,其核心模块的协同运作构成完整的知识资产运营体系。在知识存储层,基于结构化分类的存储管理采用多级目录架构(如客户服务库、培训学习库)&#xff0…

kafka基本知识

什么是 Kafka? Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 软件基金会的一部分。Kafka 主要用于构建实时数据管道和流处理应用程序。它能够高效地处理大量的数据流,广泛应用于日志收集、数…

P8716 [蓝桥杯 2020 省 AB2] 回文日期

1 题目说明 2 题目分析 暴力不会超时&#xff0c;O(n)的时间复杂度&#xff0c; < 1 0 8 <10^8 <108。分析见代码&#xff1a; #include<iostream> #include<string> using namespace std;int m[13]{0,31,28,31,30,31,30,31,31,30,31,30,31};// 判断日期…