您好,登录后才能下订单哦!
Linux文件系统的基本原理是什么及常见类型有哪些呢,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
在计算机出现之前其实就有文件系统的概念了,此时的文件系统是指用于管理(存储和检索等)纸质文件的系统。计算机及发明后,文件系统逐渐专指用于管理存储介质的系统。它通过简单的接口给用户,方便用户使用存储设备。
Linux操作系统下的文件系统基本上也是如此。当我们进入Linux操作系统时,首先看到的是各种类型的目录(参考一篇文章学会Linux系统目录管理)和各种文件。Linux有个理念就是“一切皆文件”,在Linux操作系统中几乎所有资源都是以文件的形式呈现的。比如磁盘是文件,套接字是文件,系统配置项也是文件。所有这些内容在Linux都是通过文件系统来管理的。
在操作系统中,文件系统的概念得到了延伸。Linux的文件系统分为两类,一类是真实的文件系统,用于存储数据;另一类是伪文件系统,这些文件系统并不会持久化数据。今天我们将对Linux下的文件系统进行整体的介绍,让大家对文件系统有个概括的了解。
文件系统的使用
在Linux操作系统中文件系统的使用是非常简单的。如果使用的是Ubuntu等有图形界面的操作系统,那么我们可以通过GUI浏览文件系统。这个跟使用Windows和Mac OS操作系统很像。从用户角度来看,文件系统的文件被组织成树形结构。用户可以自由的创建目录和文件。
但是如果是命令行的系统,那么就没有图形界面方便了。但是,从组织形式上来说,也是树形结构。只不过没有那么直观。如图我们通过tree命令可以看到文件系统的内容及结构。
当然,上面说的都是文件系统已经挂载的场景。有些情况下我们有一个新的磁盘,但并没有挂载,这个时候怎么才能使用这块磁盘呢?方法也是非常简单的,只需要做如下几步:
格式化磁盘,由于Linux支持很多种文件系统,我们在使用磁盘之前需要使用某种文件系统进行格式化。比如格式化为Ext4文件系统,mkfs.ext4 /dev/sdc。
挂载文件系统,格式化后并不能马上使用,需要挂载到目录树上才可以使用。具体命令是mount /dev/sdc /mnt/ext4_test。
完成上述步骤后,/mnt/ext4_test目录就是新磁盘的根目录了,我们可以在其中创建子目录或者新文件了。从普通用户的角度来看,它只是一个子目录,并不会感知到其是一个新的磁盘,或者文件系统的具体类型。这一点与Windows有比较大的差异。
文件系统的基本原理
在操作系统层面,文件系统是其最关键的子系统之一,其核心功能是对存储资源的管理。也就是说文件系统是对磁盘(还包括光盘或者磁带等其它类型的存储介质)的空间进行管理的。文件系统对磁盘空间的管理其实还是比较简单的,就是将大的磁盘空间切割为很小的区域(例如4KB),然后通过对这些小区域的分配和释放来使用磁盘空间。
虽然文件系统是一个树形结构,但是磁盘本身的空间却是一个扁平的线性存储空间。以Ext4为例,文件系统将磁盘划分为若干个块组,每个块组又划分为若干磁盘块(可以在格式化时指定,默认是1KB)。
为了管理这些磁盘块,总是需要一些区域来记录哪些磁盘块已经被使用了,哪些还没有被使用。记录这些数据的数据通常在磁盘的特殊区域,我们称这些数据为文件系统的元数据。通过这些元数据文件系统实现了对磁盘空间的管理,最终为用户提供了简单易用的接口(使用接口,非API)。
文件系统的分类
前文我们介绍了基于存储介质的本地文件系统,对其基本原理也做了介绍。其实文件系统发展到现在,其种类也丰富多样。比如基于磁盘的普通本地文件系统除了Ext4外,还包括XFS、ZFS和Btrfs等等。其中Btrfs和ZFS不仅仅可以管理一块磁盘,还可以实现多块磁盘的管理,同时实现数据的冗余管理,这样可以避免磁盘故障导致的数据丢失。
另一个方面,除了对磁盘数据管理的文件系统外,还有一些网络文件系统。也就是说,这些文件系统看似在本地,但其实数据是在远程的专门的设备上。客户端是通过一些网络协议实现数据的传输的。比如NFS和GlusterFS等等文件系统。
几十年的发展,文件系统的种类也非常多,我们没有办法一一进行介绍。今天我们就按照大类对主要的文件系统进行介绍,不足之处还请指教。
1. 本地文件系统
本地文件系统是对磁盘空间进行管理的文件系统。从呈现形态上来看,文件系统就是一个树形的目录结构。前面我们已经介绍了比较多的概念,其本质上就是实现对磁盘空间的管理,实现磁盘线性空间与目录结构的转换。
从普通用户的角度来说,主要方便了对磁盘空的使用,降低了使用难度,提高了利用效率。常见的本地文件系统有Ext4、Btrfs、XFS和ZFS等等。
2. 伪文件系统
伪文件系统是对传统文件系统的延伸。伪文件系统并不会持久化数据,而是在内存中的文件系统。它以文件系统的形态实现用户与内核数据的交互。比如我们常见的伪文件系统包括proc、sysfs和configfs等等。
在Linux操作系统中伪文件系统主要实现内核与用户态的交互。比如获取IPv4协议的参数,我们只需要
3. 网络(分布式)文件系统
网络文件系统是一种将数据存储在远端的文件系统。网络文件系统通常分为客户端和服务端,其中客户端类似本地文件系统,而服务端则是对数据进行管理的系统。网络文件系统的使用与本地文件系统没有任何差别,只需要执行mount命令挂载即可。网络文件系统种类也很多,比如NFS、CephFS和Gluster等。
在用户层面,完成挂载后的网络文件系统与本地文件系统完全一样,看不出任何差异,对用户是透明的。网络文件系统就好像将远程的文件系统映射到了本地。
如图是将文件系统服务中文件系统映射到客户端的示意图。从用户的角度只是某个子目录,但实际上读写请求需要通过网络转发到服务端进行处理。
4. 集群文件系统
集群文件系统也是一种本地文件系统。与普通本地文件系统的差异在于其后端磁盘通常是基于网络的SAN设备,且在多个节点共享(非绝对)。集群文件系统可以实现多个节点对磁盘介质的共同访问。
同时,对于集群文件系统来说,其最大的特点是多个结点可以同时为应用层提供文件系统服务。这种常见特别适合用于应用业务多活的场景,通过集群文件系统提供高可用集群机制,避免宕机造成的服务失效情况。
关于Linux文件系统的基本原理是什么及常见类型有哪些呢问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。