admin管理员组

文章数量:1561026

1.Linux文件系统简介

在Linux操作系统中,所有被操作系统管理的资源,例如网络接口卡、磁盘驱动器、打印机、输入输出设备、普通文件或是目录都被看作是一个文件。

也就是说在LINUX系统中有一个重要的概念:一切都是文件。其实这是UNIX哲学的一个体现,而Linux是重写UNIX而来,所以这个概念也就传承了下来。在UNIX系统中,把一切资源都看作是文件,包括硬件设备。UNIX系统把每个硬件都看成是一个文件,通常称为设备文件,这样用户就可以用读写文件的方式实现对硬件的访问。

2. 文件类型与目录结构

Linux支持5种文件类型 :

  • 普通文件(-)
  • 目录(d) dir
  • 链接(字符链接L) link
  • 套接字文件(S) socket
  • 字符设备© char
  • 块设备(B) block
  • 管道文件(命名管道P) pipe

管道文件

管道分为匿名管道和命名管道。管道都是一端写入、另一端读取,它们是单方向数据传输的,它们的数据都是直接在内存中传输的,管道是进程间通信的一种方式,例如父进程写,子进程读

套接字(Socket)

套接字用来实现两端通信,正如上面分析的,可以实现双向管道的进程间通信功能。不仅如此,套接字还能通过网络实现跨主机的进程间通信功能。

套接字需要成对才有意义,也就是分为两端,每一端都有用于读、写的文件描述符(或文件句柄),相当于两根双向通信的管道。

块设备和字符设备

块设备是硬件设备,通过随机(不一定是顺序)访问固定大小的数据块(chunk)来区分。固定大小的chunk称为块(block)。最常见的块设备是硬盘,但也存在许多其他块设备,如软盘驱动器、蓝光阅读器和闪存。注意,这些都是挂载文件系统的设备,文件系统就像是块设备的通用语言。

软连接和硬链接

软链接和硬链接是我们常见的两种概念:

硬连接:是给文件一个副本,同时建立两者之间的连接关系。修改其中一个,与其连接的文件同时被修改。如果删除其中[color=red]任意一个[/color]其余的文件将不受影响。

软连接:也叫符号连接,他只是对源文件在新的位置建立一个“快捷(借用一下wondows常用词)”,所以,当源文件删除时,符号连接的文件将成为无源之水->仅仅剩下个文件名了,当然删除这个连接,也不会影响到源文件,但对连接文件的使用、引用都是直接调用源文件的。

具体关系可以看下图:

3.常见目录解释

Linux各种发行版的目录结构基本一致,各个目录简单介绍如下:

目录描述
/根目录
/bin做为基础系统所需要的最基础的命令就是放在这里。比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的,普通用户都可以使用的命令。
/bootLinux的内核及引导系统程序所需要的文件,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录;启动装载文件存放位置,如kernels,initrd,grub。一般是一个独立的分区。
/dev一些必要的设备,声卡、磁盘等。还有如 /dev/null. /dev/console /dev/zero /dev/full 等。
/etc系统的配置文件存放地. 一些服务器的配置文件也在这里;比如用户帐号及密码配置文件;/etc/opt:/opt对应的配置文件/etc/X11:Xwindows系统配置文件/etc/xml:XML配置文件……
/home用户工作目录,和个人配置文件,如个人环境变量等,所有的账号分配一个工作目录。一般是一个独立的分区。
/lib库文件存放地。bin和sbin需要的库文件。类似windows的DLL。
/media可拆卸的媒介挂载点,如CD-ROMs、移动硬盘、U盘,系统默认会挂载到这里来。
/mnt临时挂载文件系统。这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。
/opt可选的应用程序包。
/proc操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。
/rootRoot用户的工作目录
/sbin和bin类似,是一些可执行文件,不过不是所有用户都需要的,一般是系统管理所需要使用得到的。
/tmp系统的临时文件,一般系统重启不会被保存。
/usr包含了系统用户工具和程序。/usr/bin:非必须的普通用户可执行命令/usr/include:标准头文件 /usr/lib:/usr/bin/ 和 /usr/sbin/的库文件 /usr/sbin:非必须的可执行文件/usr/src:内核源码/usr/X11R6:X Window System, Version 11, Release 6.
/srv该目录存放一些服务启动之后需要提取的数据

3.文件系统的理解

如何选择文件系统:EXT4、Btrfs 和 XFS

老实说,人们最不曾思考的问题之一是他们的个人电脑中使用了什么文件系统。Windows 和 Mac OS X 用户更没有理由去考虑,因为对于他们的操作系统,只有一种选择,那就是 NTFS 和 HFS+。相反,对于 Linux 系统而言,有很多种文件系统可以选择,现在默认的是广泛采用的 ext4。然而,现在也有改用一种称为 btrfs 文件系统的趋势。那是什么使得 btrfs 更优秀,其它的文件系统又是什么,什么时候我们又能看到 Linux 发行版作出改变呢?

文件系统是干什么的?

如果你不清楚文件系统是干什么的,一句话总结起来也非常简单。文件系统主要用于控制所有程序在不使用数据时如何存储数据、如何访问数据以及有什么其它信息(元数据)和数据本身相关,等等。听起来要编程实现并不是轻而易举的事情,实际上也确实如此。文件系统一直在改进,包括了更多的功能、更高效地完成它需要做的事情。总而言之,它是所有计算机的基本需求、但并不像听起来那么简单。ext2\ext3\ext4,xfs,btrfs 都是针对服务器系统越来越高效实用的日志文件系统

为什么要分区?

由于每个操作系统都能创建或者删除分区,很多人对分区都有模糊的认识。Linux 操作系统即便使用标准安装过程,在同一块磁盘上仍使用多个分区,这看起来很奇怪,因此需要一些解释。拥有不同分区的一个主要目的就是为了在灾难发生时能获得更好的数据安全性。

通过将硬盘划分为分区,数据会被分隔以及重组。当事故发生的时候,只有存储在被损坏分区上的数据会被破坏,很大可能上其它分区的数据能得以保留。这个原因可以追溯到 Linux 操作系统还没有日志文件系统、任何电力故障都有可能导致灾难发生的时候。

使用分一区也考虑到了安全和健壮性原因,因此操作系统部分损坏并不意味着整个计算机就有风险或者会受到破坏。这也是当前采用分区的个最重要因素。举个例子,用户创建了一些会填满磁盘的脚本、程序或者 web 应用,如果该磁盘只有一个大的分区,如果磁盘满了那么整个系统就不能工作。如果用户把数据保存在不同的分区,那么就只有那个分区会受到影响,而系统分区或者其它数据分区仍能正常运行。

意思就是不把鸡蛋放在一个篮子里

日志文件系统

日志文件系统是一种即使在断电或者是操作系统崩溃的情况下保证文件系统一致性的途径。XFS对文件系统元数据提供了日志支持。当文件系统更新时,元数据会在实际的磁盘块被更新之前顺序写入日志。XFS的日志被保存在磁盘块的循环缓冲区上,不会被正常的文件系统操作影响。XFS日志大小的上限是64k个块和128MB中的较大值,下限取决于已存在的文件系统和目录的块的大小。在外置设备上部署日志会浪费超过最大日志大小的空间。XFS日志也可以被存在文件系统的数据区(称为内置日志),或者一个额外的设备上(以减少磁盘操作)。

Ext4 文件系统

ext4 还有一些明显的限制。最大文件大小是 16 tebibytes(大概是 17.6 terabytes),这比普通用户当前能买到的硬盘还要大的多。使用 ext4 能创建的最大卷/分区是 1 exbibyte(大概是 1,152,921.5 terabytes)。通过使用多种技巧, ext4 比 ext3 有很大的速度提升。类似一些最先进的文件系统,它是一个日志文件系统,意味着它会对文件在磁盘中的位置以及任何其它对磁盘的更改做记录。纵观它的所有功能,它还不支持透明压缩、重复数据删除或者透明加密。技术上支持了快照,但该功能还处于实验性阶段。

XFS 文件系统

XFS 文件系统是扩展文件系统(extent file system)的一个扩展。XFS 是 64 位高性能日志文件系统。对 XFS 的支持大概在 2002 年合并到了 Linux 内核,到了 2009 年,红帽企业版 Linux 5.4 也支持了 XFS 文件系统。对于 64 位文件系统,XFS 支持最大文件系统大小为 8 exbibytes。XFS 文件系统有一些缺陷,例如它不能压缩,删除大量文件时性能低下。从centos7开始,xfs成为了默认的文件系统

centos8中的xfs

1,最大单文件大小:500TB

最大分区大小: 1024TB

2,相比较之下,centos6 的ext4:

最大单文件大小:16TB

最大分区大小: 16TB

fdisk分区外部挂载磁盘

1、首先使用fdisk -l 发现待分区磁盘/dev/vdb 大小为1TB

2、fdisk /dev/vdb 对该磁盘进行分区,输入m并回车

3、输入n并回车,n是“new”新建分区的意思

4、出现两个菜单e表示扩展分区,p表示主分区,按"p"键出现提示:"Partition number (1-4): "选择主分区号

5、直接按回车表示1柱面开始分区,提示最后一个柱面或大小。输入+500G 按回车,表示第一个分区为500G空间(采用默认值一直回车会将整个1TB都分给/dev/vdb1)

6、输入w "write"并回车,意思是对刚才的结果进行保存,新建第二块分区(/dev/vdb2)时候,输入‘w’以后会出现报错信息,使用lsblk命令查看的时候不会出现新建分区,重启机器后正常

7、再次使用lsblk查看分区的结果,如图分的新区为/dev/vdb1,,创建的新区格式化后就可以挂载使用了

8、利用mkfs -t ext4 /dev/vdb1命令创建文件格式

9、利用mount /dev/vdb1 /data 命令把目录挂载到新建分区下面

10、为了保持挂载的持久性,需要修改配置/etc/fstab文件中的配置文件 fstab:fire system tables > /dev/vdb1 /data ext4 defaults 0 0

本文标签: 文件系统Linux