文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Linux下常见文件系统的示例分析

2023-06-16 15:07

关注

这篇文章主要介绍了Linux下常见文件系统的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

历史

文件系统创建者创建时间最开始支持的平台
ext2Rémy Card1993Linux,Hurd
XFSSGI1994IRIX, Linux, FreeBSD
ext3Dr. Stephen C. Tweedie1999Linux
ZFSSun2004Solaris
ext4众多开发者2006Linux
BtrfsOracle2007Linux

从创建时间可以看出他们所处的不同时代,因为Btrfs的实现借鉴自ZFS,所以这里也将ZFS列出来作为参考。

大小限制

文件系统***文件名长度***文件大小***分区大小
ext2255 bytes2 TB16 TB
ext3255 bytes2 TB16 TB
ext4255 bytes16 TB1 EB
XFS255 bytes8 EB8 EB
Btrfs255 bytes16 EB16 EB

***文件和分区大小受格式化分区时所采用的块大小(block size)所影响,块越大,所支持的***文件和分区越大,也越可能浪费磁盘空间,上表列出的数据基于4K的块大小。

代码规模

从代码规模可以看出文件系统的功能丰富程度以及复杂度,下面列出的数据来自于kernel-4.1-rc8,只是简单的用wc -l来统计,没有过滤空行、注释等。

文件系统源文件(.c)头文件(.h)
ext283631016
ext3164961567
ext4446504522
XFS8960515091
Btrfs1052547933

ext2

ext的优点是比较简单,文件比较少时性能较好,比较适合文件少的场景,主要缺点如下

ext3

ext3在ext2的基础上实现了下面几个功能,其它的都保持不变,即ext2的缺点ext3也有

ext4

ext4借鉴了当前成熟的一些文件系统技术,在ext3上增加了一些功能,并且对性能做了一些改进,主要变化如下

这里是一个查看文件/etc/fstab创建时间的例子(文件存在/dev/sda1分区上):

dev@ubuntu:~$ ls -i /etc/fstab 10747906 /etc/fstab dev@ubuntu:~$ sudo debugfs -R 'stat <10747906>' /dev/sda1 Inode: 10747906   Type: regular    Mode:  0644   Flags: 0x80000 Links: 1   Blockcount: 8 ctime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015  atime: 0x55d1b014:8bcf7b44 -- Mon Aug 17 05:57:40 2015  mtime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015 crtime: 0x5546dc54:6e6bc80c -- Sun May  3 22:41:24 2015 Size of extra inode fields: 28 EXTENTS: (0):46712815

Extents: 在最开始的ext2文件系统中,数据块都是一个一个单独管理的,inode中存有指向数据块的指针,文件占用了多少个数据块,inode里面就有多少个指针(多级),想象一下一个1G的文件,4K的块大小,那么需要(1024 * 1024)/4=262144个数据块,即需要262144个指针,创建文件的时候需要初始化这些指针,删除文件的时候需要回收这些指针,影响性能。现代的文件系统都支持Extents的功能,简单点说,Extent就是数据块的集合,以前一次分配一个数据块,现在可以一次分配一个Extent,里面包含很多数据块,同时inode里面只需要分配指向Extent的指针就可以了,从而大大减少了指针的数量和层级,提高了大文件操作的性能。

inode数量固定: 在ext2/3/4系列的文件系统中,inode的数量都是固定的,坏处是如果存很多小文件的话,有可能造成inode被用光,但磁盘还有很多剩余空间无法被使用的情况,不过它也有一个好处,就是一旦磁盘损坏,恢复起来要相对简单些,因为数据在磁盘上布局相对要固定简单。

xfs

和ext4相比,xfs不支持下面这些功能

但xfs有下面这些特性

btrfs

btrfs是一个和ZFS类似的文件系统,支持的功能非常多,据说将来会替换ext4成为Linux下的默认文件系统。这里列举一些重要的功能

btrfs***的缺点就是由于其COW的实现方式,导致碎片化问题比较严重,不太适合频繁写的场景,比如数据库、虚拟机的磁盘文件等。不过大部分场合不需要担心,btrfs有在线的碎片整理工具。

如何选择

下表仅供参考

文件系统适用场景原因
ext2U盘U盘一般不会存很多文件,且U盘的文件在电脑上有备份,安全性要求没那么高,由于ext2不写日志(journal),所以写U盘性能比较好。当然由于ext2的兼容性没有fat好,目前大多数U盘格式还是用fat
ext3对稳定性要求高的地方有了ext4后,好像没什么原因还要用ext3,ext4现在的问题是出来时间不长,还需要一段时间变稳定
ext4小文件较少ext系列的文件系统都不支持inode动态分配,所以如果有大量小文件需要存储的话,不建议用ext4
xfs小文件多或者需要大的xttr空间,如openstack swift将数据文件的元数据放在了xttr里面xfs支持inode动态分配,所以不存在inode不够的情况,并且xttr的***长度可以达到64K
btrfs没有频繁的写操作,且需要btrfs的一些特性btrfs虽然还不稳定,但支持众多的功能,如果你需要这些功能,且不会频繁的写文件,那么选择btrfs

另外,ext系列文件系统内部结构相对简单一些,出问题后恢复相对容易。

感谢你能够认真阅读完这篇文章,希望小编分享的“Linux下常见文件系统的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网行业资讯频道,更多相关知识等着你来学习!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯