关于XFS文件系统概述

现在,XFS已经成为Linux中主要的文件系统,了解它的数据结构和原理就显得尤为重要。
XFS文件系统是一种日志文件系统,即使在发生电源故障或操作系统崩溃时也能确保数据一致性。
它最初是为IRIX操作系统开发的,后来移植到Linux上,现在是CentOS7中的默认文件系统。
随着XFS越来越流行,掌握它的数据结构和原理变得很重要。
欲了解更多官方信息,请参阅xfs.org/docs/xfsdocs-xm...这篇文章是关于分配组的,超级街区,它将介绍XFS的关键概念,例如inode;将显示实时数据。
连接xfs_db(XFS提供的信息输出工具)。
AllocationGroupXFS将空间划分为若干个分配组;每个分配组的大小相同(不是最后一个)。
每个分配组都有一个超级块;安德罗管理;剩下的包括空间管理等,可以认为是一个独立的文件系统。
正是这种设计使得XFS能够进行并行IO。
尽管在单个面板上使用XFS可能无法体现此功能。
如果文件系统跨越很多物理硬件(例如Ceph)。
并行IO将大大提高吞吐量。
如上图了解它们正在经历什么以及它们如何工作非常重要。
网上有很多关于B+树的资料;请您亲自检查一下。
本文仅介绍基础知识。
B+树是多叉平衡排序树,中间节点有m个关键字,m个子节点仅包含关键字,但没有数据的叶子节点包含所有关键字和数据。
形成一个链表。
然后,我们将通过xfs_db探索这两棵树的内容。
来自agf的打印信息;可见,bnoroot=1和cntroot=2分别指定B+树根节点所在的区块序号和区块号作为关键字。
inodeB+树信息驻留在分区组的第三扇区,主要是inodeB+树的根块;主要显示已建inode数量和空闲inode数量。
主要成员包括:agi_root(inodeB+树的根块);agi_level(树高);agi_count(构建的inode数量);agi_freecount(空闲内盘数量)。
Inode信息每个文件或目录对应一个inode,用于描述文件的核心信息。
datafork(存储数据位置信息);Extendedattributefork(扩展数据位置信息存储库)。
InodeCore描述文件的基本信息如下具体定义:di_mode(文件类型和访问权限);di_format(指定数据分叉的数据格式);di_uid(所有者ID);di_gid(所有者组ID);迪阿泰姆di_mtime;di_ctime(访问时间、修改时间、属性修改时间);di_size(数据大小);di_forkoff(数据分叉和扩展

Linux文件系统xfs#2-Superblock

可以使用mkfs.xfs命令在分区或逻辑卷上创建Linux文件系统xfs。
xfs文件系统由多个分配组(AG)组成。
每个AG包含相同数量的块,最后一个AG可能不相等,其余块单独存储。
每个AG作为一个独立的文件系统,拥有自己的已使用空间,最大容量为512字节*231。
多AG设计增强了xfs的并发能力。
在磁盘上,每个AG的结构都是基于扇区和块的。
通常块大小为4k。
如果扇区是512B,那么它正好包含4个扇区并形成一个块。
每个AG的开头存储着一个关键的超级块,它是文件系统的核心信息容器。
主AG的超级块包含全面的信息,如果主超级块损坏,则使用其他AG的超级块进行恢复。
超级块的内部结构包含关键字段,其细节将在后续文章中详细讨论。
本文简单介绍了AG和超级块的基本概念。
我们将在后面的内容中更详细地讨论B+树结构和超级块。

XFS文件系统简介Linux中使用XFS文件系统的配置方法

否则我们将无法完成分区的格式化;也就是说,我们无法将分区格式化为XFS文件系统格式。
要下载的包名称:xfsprogs-2.0.3。

解压并安装下载的XFSProgs工具。
mkfs.xfs将自动安装在/sbin目录中。

复制代码

代码如下:

#tar–xvfxfsprogs-2.0.3.src.tar。
gz

#cdxfsprogs-2.0.3src

#./config

#do

#install

使用mkfs.xf将磁盘格式化为xfs文件系统方法如下:

复制代码

代码如下。
#/sbin/mkfs.xfs/dev/sda6#说明:权限分区格式化为xfs文件系统。
>

data=bsize=4096blocks=1024135,imaxpct=25

=sunit=0swidth=0blks,unwriting=0

naming=version2bsize=4096

log=internallogbsize=4096blocks=1200

realtime=noneextsz=65536blocks=0,rtextents=0

格式化磁盘时,如果mkfs.xfs要求将分区格式化为其他文件系统,可以使用-f参数强制格式化:

复制代码

代码如下:

#/sbin/mkfs.xfs–f/dev/sda6

3.挂载XFS文件系统

复制代码

代码如下:

#mount–txfs/dev/sda6/xfs##其中/xfs是根分区下的目录。

最后应该将/etc/fstab改为系统启动后自动挂载,这样xfs分区就可以在系统启动后挂载,而不必每次都挂载。

需要注意的是,当前的xfs受到Linux内存页的限制,在x86版本中文件系统块大小只有4K。
此外,XFS文件系统可以通过不同的方式挂载,这使得文件系统可以以读模式挂载,也可以以读写模式挂载。
这是因为xfs文件系统作为根文件系统时出于安全考虑必须以只读模式挂载。

3为避免造成不可挽回的损失,在迁移文件系统时,建议先备份磁盘上的数据和文件,最好在更改文件系统之前备份整个系统。
这一步的方法有很多种,本文仅介绍作者的迁移方法。
您可以按照您习惯的方式完成它。

如果想要一个纯粹的xfs系统(系统中所有文件系统都使用XFS文件系统),还应该将根文件系统映射到xfs文件系统。
这实际上是一个更复杂的步骤。
由于无法挂载根文件,因此必须首先在文件系统ext2文件系统上创建一个分区,然后将文件复制到现有的根分区上。
将所有文件和目录复制到该分区,然后通过编辑/etc/fstab文件替换它们。
主根部分。

方法如下:

复制代码

$mkfs-text2/dev/hda4

$mkdir/mnt/temp

$mount-text2/dev/hda4/mnt/temp

$cd/

$tarlcvf-.|(cd/mnt/temp;tarxpvf-)

以上操作就是将根分区上的所有文件解压出来,复制到新创建的分区中。
当然,您可以使用以下命令直接复制文件。

复制代码

代码如下:

#cp–dpR//mnt/temp

继续,将下次启动的root分区更改为/dev/hda4分区,编辑/etc/fstab文件和/etc/lilo.conf,然后运行​​lilo。

重启后,新root分区是/dev/hda4。

接下来,创建xfs文件系统分区:

复制代码

代码如下。

$mkfs-txfs/dev/hda2

挂载该分区,并使用两种方法将根分区的内容复制到该分区

复制.code

代码如下:

$mount-txfs/dev/hda2/mnt/temp

根分区下,运行

代码复制

代码如下:

$cd/

$tarlcvf-.|(cd/mnt/temp;tarxpvf-)

再次更改/etc/fstab、/etc/lilo.conf,将原来的ext2分区替换为新创建的xfs分区。
如下图:

复制代码

代码如下:

/dev/hda2/xfsdefaults11

使用新创建的xfs分区作为根分区,并保存以上设置。
再次检查配置文件内容,确认无误后重启系统。
如果您的设置全部正确,系统成功启动后您将拥有一个干净的XFS文件系统。