Linux学习总结:Linux文件系统

目录

一、文件系统的类型

二、分区&文件系统的目录结构

三、相对路径&绝对路径

四、文件类型

五、文件属性

六、文件存储结构


 

在linux系统中,一切皆为文件。Linux通过文件系统来存储和管理文件,文件系统就是分区或磁盘上的所有文件的逻辑集合。包括硬件设备也是通过文件来访问,而操作系统是管理硬件和应用程序及其文件系统的。

 

一、文件系统的类型

不同Linux发行版本之间的文件系统差别很少,主要表现在系统管理的特色工具以及软件包管理方式的不同,文件目录结构基本上都是一样的。

文件系统有多种类型,如:

ext2 : 早期linux中常用的文件系统;
ext3 : ext2的升级版,带日志功能;
RAMFS : 内存文件系统,速度很快;
iso9660:光盘或光盘镜像;
NFS : 网络文件系统,由SUN发明,主要用于远程文件共享;
MS-DOS : MS-DOS文件系统;
FAT : Windows XP 操作系统采用的文件系统;
NTFS : Windows NT/XP 操作系统采用的文件系统。
 

二、分区&文件系统的目录结构

文件系统位于磁盘分区中;一个硬盘可以有多个分区,也可以只有一个分区;一个分区只能包含一个文件系统。

 

每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:

1、任何一个分区都必须对应到某个目录上,才能进行读写操作,称为“挂载”。

2、被挂载的目录可以是根目录,也可以是其他二级、三级目录,任何目录都可以是挂载点。

3、目录是逻辑上的区分。分区是物理上的区分。

4、根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

 

分区的意义:

1、可以把不同资料,分别放入不同分区中管理,降低风险。

2、大硬盘搜索范围大,效率低。

3、/home、/var、/usr/local 经常是单独分区,因为经常会操作,容易产生碎片。

 

Linux文件系统采用树状级结构图,方便文件的查找和管理。

Linux学习总结:Linux文件系统_第1张图片

/:根目录,位于Linux文件系统目录结构的顶层,类似于Windows系统中的C盘。通常根目录下只存放目录,不存放文件。开机过程中仅有根目录会被挂载, 其他分区则是在开机完成之后才会持续的进行挂载行为。因此根目录下与开机过程有关的目录, 就应该与根目录放在同一个分区里。这些目录分别是:/etc,/bin,/dev,/lib,/sbin。

/bin,/usr/bin:该目录为命令文件目录,也称为二进制目录。包含了供系统管理员及普通用户使用的重要的linux命令和二进制(可执行)文件,包含shell解释器等。

/boot: 该目录中存放系统的内核文件和引导装载程序文件,/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小100M即可。

/dev: 设备(device)文件目录,存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备(终端、磁盘驱动器、光驱及网卡等,包括字符设备和块设备)等,常用的是挂载光驱mount /dev/cdrom/mnt。 

/etc: 系统配置文件目录,该目录存放系统的大部分配置文件和子目录,不建议在此目录下存放可执行文件。该目录下的文件由系统管理员来使用,普通用户对大部分文件有只读权限。

/home: 系统默认的用户宿主目录,新增用户账号时,用户的宿主目录都存放在此目录下,~表示当前用户的宿主目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据。

/lib,/usr/lib,/usr/local/lib:系统最基本的动态连接资源库,内核模块文件目录。几乎所有的应用程序都用到此资源库。/lib目录存放了所有重要的库文件,其他的库文件则大部分存放在/usr/lib目录下。

/lost+fount: 在EXT2或EXT3文件系统中,系统意外崩溃或意外关机时,产生的一些文件碎片放在这里。当系统重新启动时,fsck工具会检查这里,并修复已经损坏的文件系统。

/mnt,/media: mnt目录主要用来临时挂载文件系统,为某些设备提供默认挂载点。

/opt: 给主机额外安装软件所摆放的目录。

/proc: 此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间。

/root:系统管理员root的宿主目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。

/sbin,/usr/sbin,/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。

/tmp: 存放系统产生的临时文件,因此重要文件不要放在此目录下。

/srv: 服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内。

/usr: 应用程序存放目录,/usr/bin 存放应用程序, /usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件,/usr/local 存放软件升级包,/usr/share/doc 系统说明文件存放目录。

/usr/share/man:  程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容。建议单独分区,设置较大的磁盘空间。

/var: 放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log。

/sys:这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。
 

三、相对路径&绝对路径

  • 绝对路径:由根目录(/)开始写起的文件名或目录名称;如/usr/share/doc
  • 相对路径:相对于当前工作目录所在路径;如从/usr/share/doc到/usr/share/doc中,可以写成 cd ../man

几个特殊的目录:

.  :代表当前的目录,也可以使用 ./ 来表示;

.. :代表上一层目录,也可以 ../ 来代表。

~ :代表当前用户身份所在的宿主目录

~account :代表account这个用户的宿主目录

四、文件类型

d:目录文件

b:块设备。就是一些储存数据,以提供系统存取的接口设备。例如你的一号硬盘的代码是 /dev/hda1。

c:字符文件。一些串行端口的接口设备,例如键盘、鼠标等等!

l:符号链接文件,分为软链接和硬链接。类似于windows系统的快捷方式。

p:管道文件,FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。

s:套接字文件,socket。如启动一个MySql服务器时产生的一个mysql.sock文件。

五、文件属性

Linux学习总结:Linux文件系统_第2张图片

六、文件存储结构

大部分的Linux文件系统(如ext2、ext3)规定,一个文件由目录项、inode和数据块组成:

目录项:包括文件名和inode节点号。

目录文件的结构非常简单,就是一系列目录项(dirent)的列表。每个目录项,由两部分组成:所包含文件的文件名,以及该文件名对应的inode号码。

Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector),每个扇区储存512字节(相当于0.5KB)。操作系统读取硬盘的时候,不会一个扇区一个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个block。文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,可以称为"索引节点"。

Inode表可以说是存放除文件名之外的所有文件信息

数据块:包含文件的具体内容。

Linux学习总结:Linux文件系统_第3张图片

具体内容可参考我的另一篇博客可以更好地理解:从Linux文件组成理解硬链接&软链接

 


参考资料

1、《鸟叔的Linux私房菜》

2、https://blog.csdn.net/Michael__One/article/details/84982592

3、https://blog.csdn.net/kyang_823/article/details/73302248

你可能感兴趣的:(Linux)