linux文件系统(2):xfs文件系统

您所在的位置:网站首页 查看Linux文件系统 linux文件系统(2):xfs文件系统

linux文件系统(2):xfs文件系统

2023-03-29 00:18| 来源: 网络整理| 查看: 265

在上一篇中我们对linux的文件系统做了一个概述,并用ext2的模型对inode、block、superblock等基础支持做了一些演示,接下来,我们介绍另一个文件系统:xfs。

背景

xfs文件系统的引进主要基于以下几个问题:

1、ext系列的文件系统会在文件系统初始化时就创建好inode、block、superblock等信息,而在存储设备动辄几个T的情况下,这个初始化的速度非常慢。

2、现在动辄几个T的单文件对于ext的文件系统来说也是一个考验。

xfs可以解决上述的两个问题。

xfs本身也是一个日志是的文件系统,ext4有的功能,xfs本身也都支持。

xfs 文件系统在资料的分布上,主要规划为三个部份,一个数据区域 (data section)、一个日志区域 (log section)以及一个实时运作区域 (realtime section)。 这三个区域的数据内容如下:

数据区域:基本上,数据区就跟我们之前谈到的 ext 家族一样,包括 inode/data block/superblock 等数据,都放置在这个区块。 这个数据区与 ext 家族的 block group 类似,也是分为多个储存区群组(allocation groups,AG) 来分别放置文件系统所需要的数据。 每个储存区群组都包含了 (1)整个文件系统的 superblock、 (2)剩余空间的管理机制、 (3)inode 的分配与追踪。此外,inode 与 block 都是系统需要用到时, 这才动态配置产生,所以格式化动作超级快!

日志区域:文件的变化会在这 里纪录下来,直到该变化完整的写入到数据区后, 该笔纪录才会被终结。如果文件系统因为某些缘故 (例如最常见的停电) 而损毁时,系统会拿这个登录区块来进行检验,看看系统挂掉之前,文件系统正在运作些啥动作,藉以快速的修复文件系统。 xfs支持在这个区域可以设置一个外部磁盘比如一个SSD,加快这个区域的读写速度。

实时运作区域:当有文件要被建立时,xfs 会在这个区段里面找一个到数个的 extent 区块,将文件放置在这个区块内,等到分配完毕后,再写入到 data section 的 inode 与 block 去!这个 extent 区块的大小得要在格式化的时候就先指定,最小值是 4K 最大可到 1G。一般非磁盘阵列的磁盘默认为 64K容量,而具有类似磁盘阵列的stripe 情况下,则建议 extent 设定为与 stripe 一样大较佳。这个extent 最好不要乱动,因为可能会影响到实体磁盘的效能。

观察xfs文件系统不能再使用dumpe2fs这样的工具了,需要使用其他的,我们这里使用xfs_info:

df -T /home #使用这个命令查看/home挂载点下的文件系统信息等内容 # output 文件系统 类型 1K-块 已用 可用 已用% 挂载点 /dev/mapper/cl-home xfs 1143138964 8114316 1135024648 1% /home

sudo xfs_info /dev/mapper/cl-home # output meta-data=/dev/mapper/cl-home isize=512 agcount=4, agsize=71481088 blks ① = sectsz=4096 attr=2, projid32bit=1 ② = crc=1 finobt=1, sparse=1, rmapbt=0 ③ = reflink=1 ④ data = bsize=4096 blocks=285924352, imaxpct=5 ⑤ = sunit=0 swidth=0 blks ⑥ naming =version 2 bsize=4096 ascii-ci=0, ftype=1 ⑦ log =internal log bsize=4096 blocks=139611, version=2 ⑧ = sectsz=4096 sunit=1 blks, lazy-count=1 ⑨ realtime =none extsz=4096 blocks=0, rtextents=0 ⑩

第一行--第四行(描述元数据):

isize:inode的容量,每个是512agcount:就是刚才提到的存储区群组的数量,4个agsize:每个ag包含的block的数量。配合第5行的bsize可以计算出每个ag的大小。sectsz:逻辑扇区的大小,4096byte。

第五行--第六行(数据区域):

bsize:block的大小。blocks:有多少个blocksunit和swidth与磁盘阵列的相关性比较高,我这边没有做raid。

第八行-第九行(日志区域):

log =internal表示日志区域使用的不是一个设备。

第十行(实时运作区域):

=none,目前还没有用过,每个extend的大小是4096



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3