Linux文件系统

Linux系统文件系统相关知识整理,系统为Ubuntu16.04LTS

文件系统

操作系统处理各种数据,这些数据在硬盘上就是二进制,文件系统将这些二进制的数据还原为人类能看懂的文件形式,文件系统的目的就是实现数据的查询和存储。

由于使用场合、使用环境的不同,Linux有多种文件系统,不同的文件系统支持不同的体系。文件系统是管理数据的,而可以存储数据的物理设备有硬盘、U盘、SD卡、NAND FLASH、NOR FLASH、网络存储设备等。不同的存储设备其物理结构不同,不同的物理结构就需要不同的文件系统去管理,比如管理NAND FLASH的话使用YAFFS文件系统,管理硬盘、SD卡的话就是ext文件系统等等。

Linux文件系统类型

Linux下的文件系统主要有ext2、ext3、ext4等文件系统。

ext2文件系统:

ext2是Linux早期的文件系统,但是随着技术的发展ext2文件系统已经不推荐使用了,ext2是一个非日志文件系统,大多数的Linux发行版都不支持ext2文件系统了。

ext3文件系统:

ext3是在ext2的基础上发展起来的文件系统,完全兼容ext2文件系统,ext3是一个日志文件系统,支持大文件,特点有如下:

高可靠性:使用ext3文件系统的话,即使系统非正常关机、发生死机等情况,恢复ext3文件系统也只需要数十秒。

数据完整性:ext3提高了文件系统的完整性,避免意外死机或者关机对文件系统的伤害。

文件系统速度:ext3的日志功能对磁盘驱动器读写头进行了优化,文件系统速度相对与ext2来说没有降低。

数据转换:从ext2转换到ext3非常容易,只需要两条指令就可以完成转换。用户不需要花时间去备份、恢复、格式化分区等,用ext3文件系统提供的工具tune2fs即可轻松的将ext2文件系统转换为ext3日志文件系统。ext3文件系统不需要经过任何修改,可以直接挂载成ext2文件系统。

ext4文件系统:

ext4文件系统是在ext3上发展起来的,ext4相比与ext3提供了更佳的性能和可靠性,并且功能更丰富,ext4向下兼容ext3和ext2,因此可以将ext2和ext3挂载为ext4。

Shell输入以下指令查询当前磁盘挂载的文件系统:

1
df -T –h

Linux文件系统结构

Linux根目录为

1
/

使用tree工具查看目录树结构

安装tree

1
sudo apt install tree

运行tree命令

1
tree /
1
tree -L 1 /		只显示以 / 开头的目录树的第一级。 -L 选项告诉tree你想看到多少层目录

image-20210120154313694

/bin存储一些二进制可执行命令文件,/usr/bin也存放了一些基于用户的命令文件。

/boot存放Ubuntu系统内核和系统启动文件。

/dev存放设备文件,Linux驱动主要跟这个文件夹有关。

/etc保存系统管理所需的配置文件和目录。

/home普通用户默认目录,在该目录下,每个用户都有一个以本用户名命名的文件夹。

/sbin存储了很多系统命令,通常包含可以安装、删除和格式化各种东西的工具。/usr/sbin也存储了许多系统命令。

/lib保存系统程序运行所需的库文件,/usr/lib下存放了一些用于普通用户的库文件。

/lost+found一般为空,当系统非正常关机以后,此文件夹会保存一些零散文件。

/media存放Ubuntu系统自动挂载的设备文件。

/mnt通常包括系统引导后被挂载的文件系统的挂载点。

/opt可选文件和程序的存放目录。

/proc虚拟目录,不实际存储在磁盘上,通常用来保存系统信息和进程信息。

/root超级用户root的根目录文件。

/run系统进程存储临时数据。

/srv包含服务器的数据。如果你正在 Linux 机器上运行 Web 服务器,你网站的 HTML文件将放到 /srv/http(或 /srv/www)。 如果你正在运行 FTP 服务器,则你的文件将放到 /srv/ftp。

/sys系统设备和文件层次结构,并向用户程序提供详细的内核数据信息。

/tmp存储系统和用户的临时文件,该文件夹对所有的用户都提供读写权限。

/var存储一些不断变化的文件,比如日志文件/usr包括与系统用户直接有关的文件和目录,比如应用程序和所需的库文件。

磁盘管理

Linux下挂载点对应Windows下分区

“挂载点”就是将一个硬盘的一部分做成文件夹的形式,这个文件夹的名字就是“挂载点”,

文件/etc/fstab详细的记录了Ubuntu中硬盘分区的情况

image-20210120163339922

“/ was on /dev/sda1 during installation”,说明根目录“/”是在/dev/sda1上的,其中“/”是挂载点,“/dev/sda1”就是我们装Ubuntu系统的硬盘。由于我们的系统是安装在虚拟机中的,因此都是虚拟硬盘。

查看当前系统中的磁盘:

1
ls /dev/sd*

上述命令就是打印出所有以/dev/sd开头的设备文件,

image-20210120164731049 有四个磁盘设备文件,其中sd表示是SATA硬盘或者其它外部设备,最后面的数字表示该硬盘上的第n个分区,比如/dev/sda1就表示磁盘sda上的第一个分区。

图中都是以/dev/sda开头的,说明当前只有一个硬盘。如果再插上U盘、SD卡啥的就可能会出现/dev/sdb,/dev/sdc等等。如果你的U盘有两个分区那么可能就会出现/dev/sdb1、dev/sdb2这样的设备文件。

磁盘管理命令

磁盘分区命令fdisk

格式化命令mkfs

挂载分区命令mount

卸载命令umount

--------------------------本文结束 感谢您的阅读--------------------------
坚持原创技术分享,您的支持将鼓励我继续创作!