Linux文件系统

Linux文件系统

文件系统

计算机的文件系统是一种存储和组织计算机数据的方法,借助于文件系统,用户或程序对文件的访问和查找变得容易。 Linux支持的文件系统格式有:Ext2, Ext3, Ext4, ReiserFS, Xfs, Btrfs, FAT, FAT32, NTFS等。本文中,我并不打算展开对这些文件系统的详细解释,只是简单说出以下这些结论:

Ext2, Ext3, Ext4是Linux系统上最常用的文件系统,发展到Ext4时已经十分稳定,没有特别要求时,一般都可以使用;

ReiserFS是用B+树作为数据结构的文件系统,在处理小文件时有较好的性能,在实践中,ReiserFS在处理文件小于1k小文件时,甚至效率可以比ext3快约10倍;

XFS使用64位管理空间,在多文件、大文件系统、空间利用率等方面相比Ext4更有优势。从CentOS 7开始,默认的文件系统就由此前的Ext4改为XFS了,由于文件规模的不断增大,日后Ext4可能会被XFS所取代。

Btrfs官方宣称其为“下一代文件系统”,虽然从理念上看Btrfs确实可能存在不错的效果,但截至目前,它的性能表现还是太差了,不建议使用。

【Ext4、XFS、Btrfs的详细对比,感兴趣的读者可以看看这篇Benchmark:EXT3 vs EXT4 vs XFS vs BTRFS linux filesystems benchmark

Linux虽然支持FAT、FAT32、NTFS,但仅仅是为了兼容性,这三个文件系统很容易产生磁盘碎片(尽管NTFS上已有不小改善),Linux系统下一般是不会轻易使用的。

挂载点

挂载点是linux中的磁盘文件系统的入口目录。

挂载点与其功能描述如下:

/根目录,存放系统命令和用户数据等(如果下面挂载点没有单独的分区,它们都将在根目录的分区中)
/bootboot loader 的静态链接文件,存放与Linux启动相关的程序
/home用户目录,存放普通用户的数据
/tmp临时文件
/usr是Red Hat Linux系统存放软件的地方,如有可能应将最大空间分给它: /usr/local 自已安装程序安装在此 /usr/X1186 X-Windows目录,存放一些X-Windows的配置文件 /usr/include 系统头文件,存储一些C语言的头文件 /usr/src Linux内核源代码,Linux系统所安装的内核源代码都保存在此 /usr/bin 对/bin目录的一些补充 /usr/sbin 对/sbin目录的一些补充 /usr/share/doc 用户文档
/var不断变化的数据,服务器的一些服务、日志放在下面: /var/www:一般WEB存放网页的目录 /var/mail:postfix邮件的存放邮件的目录 /var/log:系统日志记录 /var/spool:存放一些邮件、新闻、打印队列等。
/opt(Option可选的)附加的应用程序软件包
/bin基本命令执行文件
/dev设备文件
/etc主机特定的系统配置
/lib基本共享库以及内核模块
/media用于移动介质的挂载点
/mnt用于临时挂载文件系统或者别的硬件设备(如光驱、软驱)
/proc系统信息的虚拟目录(2.4 和 2.6 内核),这些信息是在内存中,由系统自己产生的。
/rootroot 用户的目录
/sbin基本系统命令执行文件
/sys系统信息的虚拟目录(2.6 内核)
/srv系统提供的用于 service 的数据
/lost+found这个目录在大多数情况下都是空的。但是如果你正在工作突然停电,或是没有用正常方式关机,在你重新启动机器的时候,有些文件就会找不到应该存放的地方,对于这些文件,系统将他们放在这个目录下。

当然上面这么多挂载点,实际上是没有比较每个目录都单独进行挂载,我们只需要根据自己的实际使用需要对个别目录进行挂载,这样系统结构看起来也会精简很多。最少的时候,我们只需要挂载/就可以了(当然这样并不好)。

分区

根据挂载点的不同,对磁盘进行分区,选择最合适的文件系统,可以使计算机的性能、管理达到最优。

分区有很多的优点,例如:

1)保护数据;假如误操作,有分区的情况下就可能保护一部分数据免受误操作的影响;重装操作系统时,如果原先的系统中/home与/两个挂载点是对应着两个不同分区时,/home目录就不会受到影响;

2)针对不同挂载点的特性选择文件系统,开启不同的挂载选项(如是否需要即时同步,是否开启日志,是否启用压缩)以更好地发挥性能,比如对/var使用Reiserfs(这里面的文件通常小而繁杂),对/home使用XFS(超大容量支持可能是用户文件比较需求的),对/使用Ext4(更加稳定)。

3)分区可以缩小硬盘搜索范围,提高效率。

我举一例比较典型的分区方案:

挂载点分区文件系统分配详情
/boot启动分区Ext4只需要几百m即可,可以容纳下两三个内核足矣。
/swap交换分区Swap物理内存的1.5-2倍,物理内存够大也可不分配
/根分区Ext4桌面系统给个100G~200G足矣。
/home家分区XFS剩下的可以全部分配给家分区

参考文献

https://linux.cn/article-7083-1.html

http://my.oschina.net/leejun2005/blog/290073

http://wuchong.me/blog/2014/07/19/linux-file-system/

Author

Forskamse

Posted on

2018-07-17

Updated on

2022-03-29

Licensed under

Comments