关于XFS文件系统概述

article/2025/8/21 16:33:32

前言:

目前XFS已成为Linux主流的文件系统,所以有必要了解下其数据结构和原理。

XFS文件系统

XFS是一个日志型的文件系统,能在断电以及操作系统崩溃的情况下保证数据的一致性。XFS最早是针对IRIX操作系统开发的,后来移植到linux上,目前CentOS 7已将XFS作为默认的文件系统。使用XFS已成为了潮流,所以很有必要了解下其数据结构和原理。

XFS官方说明文档参考:https://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/index.html

接下来将介绍XFS的一些概念,包括分配组、超级块、inode等等,过程中会结合xfs_db(xfs提供的输出文件系统信息的工具)打印一些信息,了解当前XFS的实时数据。

分配组(Allocation Group)

XFS将空间分为若干个分配组,每个分配组大小相等(最后一个可能不等)。分配组包含有超级块、inode管理和剩余空间管理等,所以分配组可以认为是一个单独的文件系统。正是分配组这样的设计,使得XFS拥有了并行IO的能力。在单个分区上使用XFS体现不了这种并行IO能力,但是如果文件系统跨越多个物理硬件比如ceph,并行IO将大大提高吞吐量利用率。
在这里插入图片描述
在这里插入图片描述

上图为分配组的结构图,重点关注前面4个扇区,从上到下分别为超级块、空闲块信息、inode信息和内部空闲列表。

超级块(superblock)

超级块位于分配组的第一个扇区,包含了分配组和文件系统的全部元数据信息,由于结构体比较大,这里就不作列举,可去官方文档中查看https://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/Allocation_Groups.html

xfs_db查看超级块内容,执行xfs_db -r /dev/xxx(xxx为XFS所在的分区),输入sb再输入p即可,如下图所示(鉴于篇幅未尽列出输出):
在这里插入图片描述

超级块有几个核心的元数据为:

blocksize:块大小,一般为4KB;
dblocks:一个分配组含有的块数目;
agcount:整个文件系统含有的分配组数目;
sectsize:扇区大小,一般为512B;
inodesize:inode节点大小,一般为512B;
icount:整个文件系统目前已经分配的inode数目;
ifree:整个文件系统空闲的inode数目,由于XFS不是格式化的时候预分配所有的inode,而是根据使用情况动态构造inode,所以该值为动态值。

空闲块信息(AG free block info)

位于分配组的第二个扇区,主要描述两个空闲空间B+树和剩余空间信息,结构体如下:

typedef struct xfs_agf {__be32              agf_magicnum;__be32              agf_versionnum;__be32              agf_seqno;__be32              agf_length;__be32              agf_roots[XFS_BTNUM_AGF];__be32              agf_spare0

http://chatgpt.dhexx.cn/article/ZXVPmuZd.shtml

相关文章

XFS 文件系统 (一) :设计概览

文章目录 0 前言1 设计背景2. 需要解决的问题2.1 异常恢复太慢2.2 不支持大文件系统2.3 不支持大型稀疏文件2.4 不支持大型连续文件2.5 不支持大目录2.6 不支持过多文件个数 3 XFS 架构4 痛点解决4.1 Allocation Groups4.2 Manging Free Space4.3 大文件的支持 5 总结 0 前言 …

linux常见实战(一)--【基于centos7的磁盘操作(新磁盘挂载/已有磁盘扩容)】

文章目录 前言:磁盘与文件系统1.xfs2.ext4 一、新磁盘的挂载1.查看已挂载磁盘情况2.查看所有磁盘情况3.给新磁盘分区4.格式化磁盘5.挂载磁盘6.设置开机自动挂载7.测试重启后挂载状态 二、对已有磁盘进行扩容1.查看磁盘挂载情况、分区情况2.进入磁盘进行分区操作3.格…

更快更好的Linux文件系统:XFS

XFS一种高性能的日志文件系统,最早于1993年由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX 5.3版的默认文件系统。2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux 内核上。XFS极具…

Centos7使用

目录 一.材料准备 二.安装VM 三.创建虚拟机 四.进入CentOS安装界面 五、最小化必要的一些工具 一.材料准备 1.VMware-workstation 16版本 2.CentOS-7 64位光盘映像文件 二.安装VM 略 三.创建虚拟机 1.打开VMware Workstation,点击创建虚拟机 2.选择自定义…

CentOS7安装MySQL8

文章目录 一 前言二、Centos 7 安装 mysql8 步骤:1.下载MySQL官方的 Yum Repository2.安装方法一: 用wget 下载后安装方法二:下载 RMP 软件包将该软件包上传到 Linux 服务器,并安装。 3.Navicate 远程连接配置 一 前言 最近在自己…

CentOS7的安装流程

CentOS7的安装流程 1、 环境准备 安装VMware 下载Centos7镜像文件 2、 CentOS7安装流程 步骤一:打开VMware,点击创建新的虚拟机 步骤二:选择典型安装,点击下一步 步骤三:选择稍后安装操作系统,点击…

centos7安装教程

centos7安装教程:首先下载“CentOS-7-x86_64-bin-DVD1.iso”镜像文件;然后依次选择“文件->新建虚拟机->自定义”;接着根据向导进行虚拟机的创建;最后进入CentOS安装界面并进行安装设置即可。 本文操作环境:cent…

Linux-CentOS7安装教程【附CentOS7镜像】

Linux-CentOS7安装教程【附CentOS7镜像】 1. 新建虚拟机 点击“创建新的虚拟机” 点击“下一步” 选择“稍后安装操作系统”,点击“下一步” 选择"CentOS 7 64",点击“下一步” 起一个虚拟机名字,设置一个合适的安装位置&#xf…

CentOS7安装git

CentOS7安装git 前言一、git介绍二、使用yum安装git1.安装git2.查看git版本3.移除git 三、源码包安装git1.安装依赖2.下载源码包3.解压4.git安装5.查看git版本 总结 前言 CentOS7安装git,刚开始使用yum安装git,发现安装的版本默认是1.8.3.1,…

centos7操作大全

不要走朋友,下面有很多安装教程(注意查阅目录) 基础命令 #查看cnetos7版本 cat /etc/centos-release #更改密码 passwd #(root指的是用户名,也可以不指定,默认更改当前用户) passwd root #删除文件命令 rm -f example.txt #删除…

CentOS7安装及配置

CentOS7安装及配置 1、安装CentOS7 打开VMware,选择创建新的虚拟机 选择典型,点击下一步 选择“稍后安装操作系统”,点击下一步 客户机操作系统选择“Linux”,版本选择“CentOS 7 ”,点击下一步填写虚拟机名称及其安…

Centos7 入门

Centos7 入门 目录 Centos7 入门1.3.注意事项创建虚拟机系统安装2.3.远程连接2.3.1.安装FinalShell 3.设置IP、网关、DNS、镜像3.1.设置IP3.2.设置主机名3.3.切换国内(163)镜像3.4.minimal版本安装系统组件3.5.同步时间3.5.1.安装3.5.2.设置为开机启动3.…

Centos7安装

一、Vmware安装 VMware16 下载地址:https://download.csdn.net/download/u014644574/75713616 Vmware安装_小百菜的博客-CSDN博客 二、Centos安装 1、下载Centos7 阿里的镜像:https://mirrors.aliyun.com/centos/7/isos/x86_64/ CentOS 7提供的ISO…

Centos7的下载安装以及之后的基本操作【学习记录】

本文内容概览 CentOS7 的镜像下载在 VMware 上安装 CentOS7安装 VMware 后的基础操作:安装 VMware Tools、关闭防火墙、更换 yum 源为国内源的操作安装软件(主要是用来学习 JAVA 的):JDK、MySQL、Tomcat、Redisputty 软件的安装下…

【CentOS7(Linux)保姆级详细安装过程】

Centos7(Linux详细安装教程) Centos7图形化桌面安装教程如下: 文章目录 Centos7(Linux详细安装教程)前言一、软件准备二、安装三、进入CentOS安装界面四、系统必要的优化配置至此关于VMware Workstation安装Centos7图形化界面的步骤完整完毕了 前言 一、软件准备 …

CentOS 7教程(一)-初步入门及安装

一、为什么要学Linux 大部份同学所使用的桌面操作系统是Windows,那么,为什么要学Linux呢?关于Linux的前世今生,在度娘上随便一搜,就可以搜出一堆,大体就是一个天才少年Linus Torvalds非常热爱计算机技术&am…

centOS7操作系统安装教程(图文详解)

Linux系统 上期讲解了安装VMware软件安装教程https://blog.csdn.net/m0_68495664/article/details/129222772?spm1001.2014.3001.5501 欲安装centOS操作系统,必须先要安装好VMware载件,接下来给大家送上centOS操作系统安装详系教程。 市面上有很多操作系…

超详细的CentOS7的下载安装配置教程

CentOS主流版本有7和8,我们这里选择centos7进行安装,因为现在8已经不更新了,CentOS 8 是一个介于实验性版本和稳定商业版本之间的产物,是最后一个版本,一般情况下,我们更追求稳定性,所以我们选择…

CentOS 7下载及安装教程

▣ 博主主站地址:微笑涛声 【www.cztcms.cn】 操作系统基本上都有服务器版本,像Windows有Windows server版本。服务器版即为可以搭建各种开发环境的系统,运行非常稳定。本教程是CentOS 7在虚拟机(VMware Workstation Pro 15)的安装教程。由于…

Linux(CentOS-7)-全面详解(学习总结---从入门到深化)

目录 Linux概述 Linux特点 Linux应用领域 Linux和Windows区别 Linux下载安装 安装VMWare虚拟机 下载CentOS 安装CentOS Linux三种网络配置 背景 桥接模式 NAT Host-only Linux 远程登录 配置Nat网络模式 设置虚拟交换机网关 管理员授权 设置子网打开NAT设置 设置网关 配置vm…