Linux文件系统初识
文件系统是一种用于向用户提供数据访问的机制,我们的硬盘,U盘等存储设备会被文件系统分割为特定大小的块,系统中的文件就被存储在数据块中,而我们平常接触到的分区,目录,文件等正是文件系统通过组织整合之后才呈现在我们面前的,我们无需去关心我们的数据到底存储在硬盘的那个扇区,只需关注目录,文件名等即可。通过这种机制,大大提高了我们的效率。
在我们熟悉的windows系统中,经历了FAT>>FAT32>>NTFS的进化过程,以我们平常接触最多的winXP,win7,win8,win10为例,都采用了NTFS文件系统,支持日志和跟踪权限,对windows友好。还有我们遇到的苹果设备,采用的是HFS+文件系统,虽然它已经算元老级的的文件系统,但是与优化较好的MAC系统搭配起来使用,拥有不俗的实力,不用像windows下那样经常去清理磁盘碎片。在2017苹果全球开发者大会上发布了新的文件系统APFS,专门针对闪存、SSD进行了优化,可以全面提升设备的存储性能和数据安全。
接下来,就该我们的主角登场了,在我们学习linux的过程中,我们会经常听到一句话:“一切皆文件”,这是linux的核心思想,在linux下,目录,文件地位同等,程序、服务、文本、图片等等,都是文件。对于系统来说,输入和输出设备,基本上所有的设备,都被当做是文件。
如上图所示,目录树正如其名,在根/目录下悬挂着我们熟悉的二级目录,接下来,介绍几个熟悉的目录给大家。
1. /bin binary的缩写,二进制可执行命令。
2. /dev device的缩写,保存设备文件。
3. /etc etcetra等等的缩写,系统管理和配置文件,相当重要的一个目录。
4. /home 用户的家(主)目录,比如用户mg的家目录就是/home/mg,root的家目录为/root。
5. /lib library缩写,标准程序设计库,又叫动态链接共享库,作用类似Windows里的.dll文件。
6. /sbin super bin缩写,系统管理命令,这里存放的是系统管理员使用的管理程序。
7. /tmp temporary缩写,公用的临时文件存储点。
8. /root 系统管理员的主目录。
9. /mnt mount缩写,系统提供这个目录是让用户临时挂载其他的文件系统。
10. /lost+found 这个目录平时是空的,系统非正常关机而留下一些信息损坏的文件会放在这里。
11. /proc process缩写,虚拟的目录,是系统内存的映射。可直接访问这个目录来获取系统信息。
12. /var vary缩写,存放经常变动的文件,比方说各种服务的日志文件。
13. /usr user缩写,要用到的应用程序和文件几乎都在这个目录。
对于我们而言,“文件和目录是一个有序的类树结构”是可以接受的。但是对于只认0和1的的计算机而言,树结构,文件名,元数据,数据等都会回归的inode(索引节点),这是一种包含着构建文件的实际数据信息的序列号:这些数据表示文件是属于谁的,还有它在硬盘中的位置。每个inode都表示着一种在硬盘上的数据结构,保存着文件的属性,包括文件数据的物理地址。每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的找到相对应的文件。
最后,让我们来解一下linux文件系统的发展历史,Minix>>EXT>>EXT3>>EXT4>>XFS.虽然 EXT 文件系统是为 Linux 编写的,但其真正起源于 Minix 操作系统和 Minix 文件系统,而 Minix 最早发布于 1987,早于 Linux 5 年。当 Linux Torvalds 在写最初的 Linux 内核的时候,他需要一个文件系统但是他又不想自己写一个。于是他简单地把 Minix 文件系统 加了进去。
原生的 EXT 文件系统 (意即拓展的)是由 Rémy Card 编写并于 1992 年与 Linux 一同发行。主要是为了克服 Minix 文件系统中的一些文件大小限制的问题。EXT2 文件系统有着和 EXT 文件系统基本相同的元数据结构。然而 EXT2 更高瞻远瞩,因为其元数据结构之间留有很多供将来使用的磁盘空间。EXT3 文件系统是应一个目标而生的,就是克服 fsck 程序需要完全恢复在文件更新操作期间发生的不正确关机而损坏的磁盘结构所需的大量时间。它对 EXT 文件系统的唯一新增功能就是 日志,它将提前记录将对文件系统执行的更改。 EXT3 的磁盘结构的其余部分与 EXT2 中的相同。EXT4 文件系统主要提高了性能、可靠性和容量。为了提高可靠性,它新增了元数据和日志校验和。同时为了满足各种关键任务要求,文件系统新增了纳秒级别的时间戳。XFS,一种高性能的日志文件系统,最早于1993年,由Silicon Graphics为他们的IRIX操作系统而开发,是IRIX 5.3版的默认文件系统。2000年5月,Silicon Graphics以GNU通用公共许可证发布这套系统的源代码,之后被移植到Linux内核上。XFS特别擅长处理大文件,同时提供平滑的数据传输。目前CentOS 7也将XFS+LVM作为默认的文件系统。采用XFS文件系统,当意想不到的宕机发生后,首先,由于文件系统开启了日志功能,所以磁盘上的文件不再会意外宕机而遭到破坏了。不论目前文件系统上存储的文件与数据有多少,文件系统都可以根据所记录的日志在很短的时间内迅速恢复磁盘文件内容。这也算是运维工程师的神器啊!
文件系统没有好坏之分,各有优缺点,不同的操作系统可能采用不同的文件系统,适合自己的就是最好的!随着不同文件系统的更新迭代,不同文件系统的短板被补上,用户体验越来越好!
菜鸟初识linux,望大佬们多多指点!
原创文章,作者:LinuxWalker,如若转载,请注明出处:http://www.178linux.com/80732