linux系统学习(9.文件系统管理)

目录

一、文件系统概述

1.分区类型

2.分区表示方法​编辑

3.分区设备名

4.文件系统

二、文件系统常用命令

1.df,du,dumpe2fs,mkfs命令

(1)df命令

(2)du命令

(3).dumpe2fs命令.dumpe2fs命令)

[🔹 1. inode 是什么?](#🔹 1. inode 是什么?)

[🔹 2. block 是什么?](#🔹 2. block 是什么?)

(4).mkfs

2.挂载与卸载命令

(1)mount

(2)umount

(3)一些注意事项

三、fdisk分区

四、自动挂载


参考链接: 9.1 文件系统管理-回顾分区和文件系统_哔哩哔哩_bilibili

一、文件系统概述

1.分区类型

2.分区表示方法

3.分区设备名

注意即使主分区没有4个,逻辑分区的设备名也是从5开始的。

sd表示SCSI硬盘,a表示第一块硬盘,第二块就是b,1表示第一个分区。

4.文件系统

主要介绍ex4,兼容最大1EB=1024PB=1024*1024TB的文件系统,最大16TB文件。ubuntu使用的就是这个。

二、文件系统常用命令

1.df,du,dumpe2fs,mkfs命令

(1)df命令

一般的用法就不选挂载点,常用就是查看电脑磁盘总的分区情况。查看某个分区是否被挂载,或者挂载到那个地方,有多大,文件系统类型是什么。一般只用

bash 复制代码
df -T -h

在ubuntu中,磁盘通常是NVMe,他与SCSI区别如下图,多了一个命名空间。

(2)du命令

这个命令常用来统计目录的大小。可以使用-s直接查看目录大小,而不查看目录下其他文件的大小。-a不仅查看当前目录,子目录,还查看当前目录下所有文件的大小。通常使用就是

bash 复制代码
du -s -h
bash 复制代码
du -h

注意:df 和 du 都可以查看文件大小。但是有区别,有些程序会占用文件,但是du不统计这些占用,所以有时候du查看的空闲比较大,以df为准。

(3).dumpe2fs命令

这个命令就是查看分区的详细信息。比如inode,block,uuid等。

执行这个会打印很多,我们主要关注超级块的内容,使用下面指令,一页一页显示

bash 复制代码
dumpe2fs 分区 | more

对于下面的信息,我们关注

uuid:分区唯一识别号

block count: 分区中block的数量

block size: 分区中最小储存单位的大小

inode count: 分区中inode数量

inode size:每个inode的大小

free blocks:剩余空闲block的数量

🔹 1. inode 是什么?

inode (index node,索引节点) 是文件系统中的元数据结构,用来存储"文件的信息"。

每个文件都会对应一个 inode。

  • inode 里存什么

    • 文件类型(普通文件、目录、符号链接...)

    • 文件大小

    • 权限 (rwx)

    • 所属用户/组

    • 时间戳(创建、修改、访问时间)

    • 指向数据块 (block) 的地址(直接块、间接块等)

⚠️ 注意:

inode 不存文件名,文件名存在目录项里(目录就是一个映射表:文件名 → inode 号)。

🔹 2. block 是什么?

block(数据块) 是文件内容真正存放的地方。

  • 每个分区会被划分为固定大小的块(常见 1K、2K、4K)。

  • 文件的数据内容就写在 block 里。

举例:

  • 你有一个 6KB 的文件,如果 block 大小是 4KB,那么它会占用 2 个 block(8KB),第二个 block 里最后 2KB 是浪费的(内部碎片)。

(4).mkfs

这个是对磁盘进行格式化的指令。分区完成之后,其实还需要分成一个个block,之后才可以管理,mkfs执行的就是这个操作。

bash 复制代码
mkfs -t ext4 /dev/sdb1

上述命令就是将/dev/sdb1分区格式化成ext4文件类型。有了文件类型之后,linux内核如果有这个文件类型的驱动,那么就可以对这块分区进行管理,如读写,查看分区情况等。如何管理呢?有了磁盘驱动就可以对磁盘进行读写,之后及时更改inode的内容,相当于更改磁盘状态。

2.挂载与卸载命令

(1)mount

一般[]里面的都不用管,只用写设备文件名和挂载点就可以了。文件系统的话linux系统会自动识别,识别不了的话才需要自己指定。

下面介绍-o的参数

常用的只有remount和exec。

exec表示设置可执行文件是否可以执行。如果这个设置noexec,那么即使这个文件有可执行权限,也无法执行。

remount表示重新挂载,当我相对这个分区的挂载参数进行修改的时候用到。

bash 复制代码
mount -o remount,noexec /home

(2)umount

(3)一些注意事项

对于一个磁盘,我首先对磁盘进行分区。分区后是一大坨。之后对它进行格式化,格式化之后就有了文件系统。但是如果想要计算机可以使用,还需要将这个分区挂载到计算机上。而分区的挂载需要知道分区的文件类型,不同的文件类型的管理需要不同的驱动。。如果计算机上没有这个驱动,那么也就没办法对分区进行挂载,如果非要挂载,需要下载插件。

linux系统默认不支持NTFS文件系统的,所以需要下载插件。

下载地址如下

源码安装

使用

三、fdisk分区

一个全新的u盘肯定是没有分区的,我们可以用windows的磁盘管理对它分区,也可以使用linux的fdisk工具对它分区,下面主要阐述后者的方法。

将u盘插上电脑,直接执行df -h。 可以查看u盘的名称,如/dev/sdb,直接执行下面指令,开始分区。

交互指令解释如下

常用的也就是

p:查看分区列表

n:新建分区

这个选择扩展分区和主分区,为啥没有逻辑分区? 只有扩展分区建立之后,才能新建逻辑分区

建立主分区选择分区号,建议顺序执行

之后让选择分区的大小,下面就是从第一个柱面开始,大小为2G,都是第一个主分区。

扩展分区,起始柱面和结束柱面直接回车,表示剩下的全部归扩展分区

扩展分区建立之后,重新n就可以建立逻辑分区了,操作和上面一样。

w:保存退出

d:删除分区

注意:如果有的时候w保存推出报错,说明当前分区表正在被别的进程占用。此时就要重启或者执行一下

四、自动挂载

使用mount指令挂载,重启后就失效了,为了永久生效,还是要把挂载指令写到文件里面。这个配置文件就是/etc/fstab文件。

文件里面内容如下,开机就会根据这个文件内容挂载

第四个字段这个挂载参数就是mount挂载时候的挂载选项,一般defaults设置成默认就好了。

第五个字段不备份吧,不重要

第六个字段,要求一般的磁盘的挂载优先级要比根目录低。

这个文件不要写错了,写错了导致系统启动崩溃,直接进不了系统了,比较麻烦。为了解决这个问题,先别重启,执行下面的这个指令,如果报错,则写错了。