目录

1. 文件系统特性

1.1 概述

1.1.1 操作系统相关性

1.1.2 磁盘与文件系统的关系

1.2 文件数据的存放

1.2.1 索引式

1.2.2 链表式

2. Linux的Ext2文件系统

2.1 Ext2文件系统构成

2.1.1 管理方式

2.1.2 启动扇区(boot sector)

2.1.3 data block(数据块)

2.1.4 inode table

2.1.5 superblock

2.1.6 Filesystem description(文件系统描述)

2.1.7 block map(块对照表)

2.1.8 inode map(inode对照表)

2.2 dumpe2fs命令

3. Ext2文件系统中的目录文件

3.1 新建目录文件

3.2 读取目录树

4. Ext2/Ext3文件的访问与日志文件系统的功能

4.1 在Ext2文件系统中新增文件的步骤

4.2 日志文件系统的引入

5. Linux文件系统的操作

5.1 异步处理

5.2 操作内存

5.3 数据写回磁盘的时机

6. Linux支持的其他文件系统与VFS

6.1 Linux支持的文件系统

6.2 VFS

7. df和du命令

7.1 df命令

7.2 du命令

7.3 du和df命令的区别

8. 链接文件与ln命令

8.1 ln命令

8.2 硬链接

8.3 软链接

9. 向系统添加硬盘详解

9.1 向系统中添加硬盘需要做什么

9.2 步骤详解

9.2.1 添加新硬盘

9.2.2 查看新硬盘

9.2.3 使用fdisk命令分区

9.2.4 使用partprobe重新读取分区表信息

9.2.5 格式化分区

9.2.6 磁盘检验(可选)

9.2.7 建立挂载点并挂载

9.2.8 卸载

9.3 注意事项

10. 硬盘参数修改

10.1 mknod

10.2 e2lable

10.3 tune2fs

11. 设置开机挂载

11.1 系统挂载限制

11.2 /etc/fstab文件内容

11.3 /etc/fstab文件修复

12. 特殊设备loop挂载(镜像文件挂载)

12.1 挂载光盘/DVD镜像文件(iso格式文件)

12.2 新建大型文件以制作loop设备文件

12.2.1 新建大型文件

12.2.2 格式化

12.2.3 挂载

13. swap分区的构建

13.1 使用free命令查询内存与swap分区使用情况

13.2 使用物理分区构建swap

13.3 使用文件构建swap

14. 如何使Linux支持NTFS分区(一般移动硬盘为NTFS格式)

14.1 解决方法

14.2 使用NTFS-3G步骤


1. 文件系统特性

1.1 概述

1.1.1 操作系统相关性

每种操作系统能够使用的文件系统是不同的(e.g. Linux对NTFS文件系统的支持就有所欠缺)

1.1.2 磁盘与文件系统的关系

① 传统关系

一个分区只能够被格式化成一个文件系统,所以一个文件系统就是一个分区

② 新技术的引入

一个分区可以格式化为多个文件系统(e.g. LVM)

多个分区可以合并成一个文件系统(e.g. LVM、RAID)

③ 新的观点

一个可被挂载的数据称为一个文件系统

1.2 文件数据的存放

1.2.1 索引式

说明1:相关组件

superblock:记录文件系统的整体信息,包括inode/block的总量、使用量和剩余量,以及文件系统的格式及相关信息等

inode:记录文件的属性与权限,一个文件占用一个inode,同时记录此文件的数据占用的block编号

block:实际记录文件的内容,若文件太大,会占用多个block。但每个block仅能记录一个文件的内容,所以没有用完的部分会造成浪费。

说明2:索引式文件系统的好处是查找到文件对应的inode后,可以一次性读取所有data block,因此读写效率较高。

1.2.2 链表式

说明1:工作方式

FAT文件系统没有inode,管理data block的方式类似于链表,后一个block的编号在前一个block中

说明2:磁盘碎片整理

这种文件系统管理方式的缺点就是读写效率低,而且当data block存储太过分散时需要进行碎片整理,即将同一个文件所属的block汇合起来。

2. Linux的Ext2文件系统

2.1 Ext2文件系统构成

2.1.1 管理方式

① 文件系统一开始就将inode和block规划好了,除非重新格式化或者利用resize2fs等命令更改系统大小,否则inode和block就固定不动了

② Ext2文件系统实际上在格式化时将文件系统分为多个块组(block group)来管理,每个块组有独立的superblock / inode / block系统

2.1.2 启动扇区(boot sector)

① 文件系统最前面是一个启动扇区,可以安装引导装载程序(bootloader),因为这种设计使得不同的bootloader可以安装到个别文件系统最前端,而不用覆盖整块硬盘唯一的MBR,可以用于实现多重引导

② boot sector需要占用文件系统最前面的1024B

注意:一定要区分整块硬盘的MBR扇区和每个文件系统的启动扇区

2.1.3 data block(数据块)

① Ext2文件系统支持1KB、2KB、4KB的data block

block的大小会影响该文件系统能够支持的最大硬盘容量与最大单一文件容量(原因见inode介绍)

② 格式化后block的大小、数量一般不变,每个block均有编号,方便inode记录

③ 每个block只能存放一个文件的数据,所以会造成空间浪费

假设block规格为4KB,要存放10KB的文件,那么会占用3个block,所以最后一个block只使用了2KB(浪费了2KB)。

如果data block规划的太小,那么大型文件会占用数量更多的block,因此inode要记录更多的block编号,此时可能导致文件系统读写性能欠佳

启示:要根据存储文件的特性规划data block的大小,在默认安装的CentOS中,/boot分区为1KB,其他分区为4KB。

④ Ext2文件系统的所有内容均存储在blcok

需要特别注意的是,superblock 、inode等文件系统的组件也是要存储在block中的,所以即使是新建立的文件系统,也会发现已经占用了部分空间

即构造文件系统本身也是耗费存储空间的

2.1.4 inode table

① inode中存储什么?

文件的访问模式(rwx)

文件的属主和属组(owner/group)

注:使用上述2个属性可以实现权限检查

文件的大小

文件的三种时间(mtime/atime/ctime)

文件特性标志,如SetUID

文件内容的指向

② inode自身特性

a. 每个文件仅占用一个inode,所以文件系统能创建的文件数量与inode数量相关(绝大多数情况下inode用不完~~)

b. 每个inode为128B

注意:根据后面的实验,Ext4已有改进,inode的大小会因分区特性而不同

c. 文件系统中最大单一文件限制

inode只有128B,但每记录一个block需要4B(即block编号为32位),所以inode记录block编号的区域定义了12个直接、1 个间接、1 个双间接和1 个三间接记录区。所谓间接,就是用一个block作为记录block编号的记录区。(总共15个记录,60B)

下面假设block规格为1KB,计算一下单个文件的最大容量

12个直接:12 * 1KB = 12KB

1 个间接:即使用一个block存储block的编号。此处block为1KB,记录一个编号需要4B,即可以记录1KB / 4B = 256个block编号,256 * 1KB = 256KB

1 个双间接:256 * 256 * 1KB = 2^16KB = 64MB

1 个三间接:256 * 256 * 256 *1KB = 2^24KB =  16GB

因此当block格式化为1KB时,最大单一文件约为16GB

特别注意:这个方法不能用于2KB和4KB block的文件系统计算(会受到Ext2文件系统自身的限制)

③ 系统读取文件时先找到文件对应的inode,并分析inode所记录的权限与用户是否符合,若符合才能够读取block的内容。

2.1.5 superblock

① superblock为1024B

② superblock记录了整个文件系统的相关信息,没有superblock就没有这个文件系统

③ superblock中的主要信息

block与inode的总量 / 已使用量

block size与inode size

文件系统的挂载时间、最近一次写入时间、最后一次检测磁盘(fsck)时间

④ 一个文件系统应该仅有一个superblock,但每个block group都可能含有superblock。此时除了第一个block group内的superblock,其余均为其备份,以便恢复

2.1.6 Filesystem description(文件系统描述)

描述每个block group的开始与结束block编号,以及每个区段(superblock、bitmap、inodemap、data block)分别介于哪个block区域

2.1.7 block map(块对照表)

标识哪些block已使用,哪些未使用(位图形式)

2.1.8 inode map(inode对照表)

标识哪些inode已使用,哪些未使用(位图形式)

2.2 dumpe2fs命令

命令名称:dumpe2fs

命令所在路径:/sbin/dumpe2fs

执行权限:所有用户

功能描述:输出文件系统superblock和block group的信息(prints the super block and blocks group information for the file system)

语法:dumpe2fs  分区设备文件名

选项:

-h:只显示superblock信息

先查看一下系统的分区情况

我们先查看一下/boot分区(即/dev/sda1)的情况

关键信息解析:

① /boot分区的block size为1KB,inode size为128B

/boot分区使用1KB的block是因为启动相关的文件都比较小,使用较小的block size可以减少空间浪费

② /boot分区共有51200个inode,204800个block

结合每个block为1KB,204800个block共200MB,与装机时分配的空间一致

③ 整个分区按照block Group进行组织,且每个Group均有superblock,但只有Group 0中的为主superblock,其余Group中的为备份superblock

需要特别注意的是,此处主superblock在block 1,而不是block 0,原因后续会有说明

④ 从Group的存储信息可知,文件系统的所有组件均存储在block中,以Group 0为例,该Group占据block 1 - 8192,共有2048个inode

superblock:block 1

Group description:block 2

Block bitmap:block 259(实际位图存储方式待研究)

Inode bitmap:block 275

Inode table:block 291 - 546,共256个。每个block可以存储8(1024 / 128)个inode,所以共有2048个inode,这也与Group信息一致

作为对比,再来看一下/ 分区(/dev/sda5)的情况

说明1:/ 分区的block size为4KB,inode size为256B

说明2:boot sector与superblock的存储关系

从上文中可以发现,/boot分区的superblock位于block 1,/ 分区的superblock位于block 0。这与boot sector的要求以及分区的block size有关。

空间分配要求:

① superblock为1024B

② superblock之前需要保留1024B,以安装bootloader

如果分区的block size为1KB,则按如下方式排布,

如果分区的block size大于1KB(以4KB为例),则按如下方式排布,

3. Ext2文件系统中的目录文件

3.1 新建目录文件

当我们在Linux下的Ext2文件系统中新建一个目录时,Ext2会分配一个inode与至少一个block给目录。其中,inode记录该目录的权限、属性与分配的block号码;而block记录该目录下的文件名与文件inode编号的对应关系

说明1:这就可以理解新增/删除/重命名文件为什么需要目录文件的w权限,要写的就是记录文件名与inode编号对应关系的目录文件block

说明2:使用ls命令查看目录大小的缺陷

使用ls查看目录大小,得到的大小应该是该目录获得的block的大小,比如/boot目录所在分区的block size为1KB,其余为4KB。也就是说我们得到的并不是目录中内容的大小。后面我们可以用du 命令来统计目录大小

注意:/dev目录大小为3.8K,我目前还不能解释,应该和设备是特殊文件有关

补充:/ 目录中的/..目录就是/ 目录自己(通过inode编号确认)

3.2 读取目录树

读取某个文件时,会经过目录的inode与block,然后才能找到待读取文件的inode编号,最终才会正确读取到文件block中的数据

由于目录树是由根目录开始读起,因此系统通过挂载的信息可以找到挂载点的inode编号(通常一个文件系统最顶层的inode编号为2),此时就可以得到根目录的inode内容,并依据该inode读取目录block内的文件名数据,然后再一层一层地往下读取。

以要读取/root/install.log文件为例,

/ 目录inode --> / 目录block --> /root目录inode --> /root目录block --> install.log文件inode --> install.log文件block

说明1:在读取目录树的过程中,会依据inode检查操作者的权限是否符合要求

说明2:上图中几个inode编号从1开始的文件系统都是虚拟文件系统

4. Ext2/Ext3文件的访问与日志文件系统的功能

4.1 在Ext2文件系统中新增文件的步骤

① 确定用户对于欲添加文件的目录是否有w和x权限(二者缺一不可),若有的话才能添加

② 根据inode bimap找到没有使用的inode编号,并将文件的权限、属性写入

③ 根据block bimap找到没有使用的block编号,并将实际数据写入block中,且更新之前inode的block指向数据

④ 将刚才写入的inode和block数据同步更新inode bimap和block bimap,并更新superblock的内容

在上述过程中,分为两种数据:

a. 数据存放区域

inode table

data block

b. 中间数据(metadata)

superblock

block bitmap

inode bitmap

说明:将superblock / block bitmap / inode bitmap称为中间数据的原因

因为superblock / block bitmap / inode bitmap的数据经常变动,每次添加/删除/编辑都会影响到这三个部分的数据

4.2 日志文件系统的引入

问题:如果最后一个同步更新中间数据没做完时系统因故中断,就会发生中间数据和实际数据不一致

Ext2的解决方法:如果发生上述状况,会在重新启动时通过e2fsck来检测数据一致性,但这种方法效率低下

Ext3的改进:使用日志文件系统(Journaling file system)

日志文件系统工作过程:

① 预备:当系统要写入一个文件时,会先在日志记录块中记录某个文件准备写入的信息

② 实际写入:开始写入文件的权限和数据;开始更新中间数据

③ 完成数据和中间数据的更新后,在日志记录块中完成该文件的记录

这样,只要检查日志记录块就可以知道哪个文件发生了问题,对其进行检查。在dumpe2fs的输出中有日志的相关信息:

5. Linux文件系统的操作

5.1 异步处理

由于各种存储设备读写速度比CPU慢很多,为提高文件系统的读写效率,Linux中使用异步处理(asynchronously)的方式。

5.2 操作内存

当系统加载一个文件到内存后,如果该文件没有被改动过,则内存区段的文件数据会被设置为clean;如果内存中的文件数据被改动过,则将其设置为dirty。此时所有操作都在内存中进行,并没有写入磁盘中。

5.3 数据写回磁盘的时机

① 系统会不定时的将内存中设置为dirty的数据写回磁盘,以保持磁盘与内存数据的一致性。

② 也可以手动执行sync命令,将内存中设置为dirty的数据写回磁盘

③ 当正常关机时,关机命令会调用sync将内存的数据写回磁盘

注意:如不正常关机(如断电、死机等),由于内存中的数据尚未写回磁盘,因此重启时可能花很多时间进行磁盘检测,甚至可能导致文件系统损坏(不是磁盘损坏)

6. Linux支持的其他文件系统与VFS

6.1 Linux支持的文件系统

可以查看Linux源码中的fs目录,确定当前版本内核支持的文件系统

其中uname -r得到的是Linux Kernel的发行版本号

也可以使用cat  /proc/filesystem查看目前加载到内存中支持的文件系统

6.2 VFS

整个Linux都时通过Virtual Filesystem Switch(虚拟文件系统,VFS)的内核功能去读取文件的

整个Linux能识别的文件系统都是VFS在进行管理,用户并不需要知道每个分区的文件系统类型。

注:所谓虚拟,也就是不存在,但能看见~~

7. df和du命令

7.1 df命令

命令名称:df

命令所在路径:/bin/df

执行权限:所有用户

功能描述:查看文件系统信息(report file system disk space usage)

语法:df  [-ahTmk]  [挂载点]

-a:显示所有文件系统信息,包括特殊文件系统(如/proc、/sysfs)

-h:使用习惯单位显示容量,如KB、MB或GB(默认显示为1KB-block的数量)

-T:显示文件系统类型

-m:以MB为单位显示容量

-k:以KB为单位显示容量

注意:如果不加挂载点,就显示当前系统中的所有文件系统信息。

说明:由于df 读取的数据主要针对整个文件系统,所以读取的范围主要在superblock,因此这个命令显示结果的速度很快。

7.2 du命令

命令名称:du

命令所在路径:/usr/bin/du

执行权限:所有用户

功能描述:统计目录或文件大小

语法:du  [-ahs]  [目录或文件名]

-a:显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占用量

-h:使用习惯单位显示磁盘占用量,如KB、MB或GB

-s:统计总占用量,而不列出子目录的子文件的占用量

注意1:如果不加目录或文件名,将统计当前所在目录

注意2:此前已说明使用ls查看目录大小的局限性(一般就是一个block的大小),因此du一般用于查看目录占用磁盘空间的大小

说明:磁盘的整体情况记录在superblock中,但每个文件的容量却是记录在inode中。du命令是直接到文件系统中查找每个文件的大小,所以开销较大,需要计算一段时间才会显示结果。

7.3 du和df命令的区别

① df 命令是从文件系统考虑的,不光要考虑文件占用的空间,还要统计被命令或程序占用的空间(最常见的就是文件已经删除,但是进程仍未释放文件句柄,当然,这是一个异常的场景)

② du命令是面向文件的,只会计算文件或目录占用的空间。

因此,df查看的文件系统占用空间一般比du 查看的对应目录空间要大。这也提示我们,服务器要定期重启。

参考资料:

blog:df和du现实的磁盘空间使用情况不一致的原因及处理

https://www.cnblogs.com/heyonggang/p/3644736.html

8. 链接文件与ln命令

8.1 ln命令

命令名称:ln

命令所在路径:/bin/ln

执行权限:所有用户

功能描述:生成链接文件

语法:ln  [-s]  源文件  目标文件

-s:创建软链接,默认是创建硬链接

8.2 硬链接

ln  /etc/crontab  /root/crontab

hard link只是在某个目录的block中添加了一条关联数据(文件名与inode编号关联),即不会增用inode也不会增用block(除非是block的边界情况)

硬链接优点:如果将一个"文件名"删除,其实文件对应的inode和block都还存在,此时可以通过其他"文件名"来访问该文件

硬链接限制:

A. 不能跨文件系统(因为inode编号仅在本文件系统中有效)

B. 不能链接到目录(此时需要给目录下的所有文件建立硬链接,会造成系统复杂,目前不支持)

8.3 软链接

ln  -s  /etc/crontab  /root/crontab

说明1:软链接文件就是通过记录的文件名找到源文件

说明2:软链接的大小就是记录的文件名的字节数

说明3:软链接就是创建一个独立的文件,而这个文件会让数据的读取指向他链接的那个文件名。所以删除源文件后软链接无法打开,因为找不到源文件的文件名

说明4:由于软链接是创建一个独立的新文件,所以会占用inode和block

说明5: 软连接是一种单独的文件类型,他的权限为777,在实际使用中,控制访控属性的是软连接指向的源文件

9. 向系统添加硬盘详解

9.1 向系统中添加硬盘需要做什么

① 对硬盘进行分区

② 对分区进行格式化(format),以创建可用的文件系统

③ 若仔细一点,可以对新建的文件系统进行检验

④ 在Linux系统中,需要创建挂载点并将文件系统挂载上来

下面就根据这个步骤,详细说明添加硬盘的方法及相关知识。

9.2 步骤详解

9.2.1 添加新硬盘

在虚拟机关机的情况下,修改虚拟机配置,添加一块5GB的新硬盘

9.2.2 查看新硬盘

fdisk  -l

该命令可以查看系统中有多少可识别的存储设备(包括硬盘、U盘、软盘、光盘)

说明1:新硬盘的设备文件名为/dev/sdb且无分区信息

说明2:/dev/sda输出信息说明

Device:分区设备文件名

Boot:该分区是否安装了开机引导模块

Start、End:该分区的起始、终止柱面

Blocks:该分区1KB块的数量,也就是分区大小

Id、System:标识该分区类型,83为主分区或逻辑分区、82为swap分区、5为扩展分区

注意:普通用户使用fdisk  -l 没有输出(因为没有权限读取相关配置文件)

9.2.3 使用fdisk命令分区

语法:fdisk  硬盘设备文件名

fdisk  /dev/sdb

说明1:此处是硬盘设备文件名,不是分区设备文件名(目前这块硬盘还木有分区~~)

说明2:执行上述命令后,进入fdisk命令环境,在其中执行相应选项,具体选项有

常用选项为:d、l(代码是16进制的哦~~)、m、n、p、q、t(设置swap分区时会用到)、w

我们将/dev/sdb划分为2个分区,主分区/dev/sdb1,大小为2G;再分2.5G给扩展分区/dev/sdb2,并在其中划分逻辑分区/dev/sdb5,全部使用(剩余512MB供后续的swap实验使用)

说明3:规划分区大小时,是以柱面为单位,可以使用+size(KB/MB/GB)来简化计算

说明4:起始柱面我们使用缺省值,直接按回车即可

注意1:从分区结果看,尚有96个柱面没有分配,可供后续实验使用

注意2:分区完成后需要重新读取分区表

9.2.4 使用partprobe重新读取分区表信息

对于正在使用无法卸载的硬盘(比如含有根目录),使用fdisk分区后无法立即生效,重启后可生效。

另一种方式则是使用partprobe命令:

partprobe is a program that informs the OS kernel of partition table change, by requesting that the OS re-read the partition table.

也就是强制内核重新读一次分区表

但是,根据实验结果,目前系统中使用partprobe无法重新读取正在使用分区的分区表

9.2.5 格式化分区

mkfs  [-t  文件系统格式]  分区设备文件名

mkfs是一个综合命令,根据-t后指明的文件类型会调用不同的格式化工具

至此,刚才分区的/dev/sdb1和/dev/sdb5已被格式化为Ext4文件系统

说明:如果是建立Ext2/Ext3文件系统,还可以使用mke2fs命令

mke2fs  [-b  block大小]  [-i  字节数]  [-L  卷标]  [-cj]  分区设备文件名

-c:检查磁盘

-j:本来mke2fs/用于建立Ext2文件系统,使用-j选项会加入日志系统使其成文Ext3文件系统

注意1:其中的卷标可以用于挂载文件系统

注意2:对-i选项的理解

-i <字节数>指定了字节/inode的比例,相当于设置文件系统中inode的个数

-i 8192,即每8192B分配一个inode

注意3:上述mke2fs的参数也可以加载mkfs -t ext4命令之后

9.2.6 磁盘检验(可选)

文件系统修复命令fsck

fsck  [-t  文件系统类型]  [-ayA]  分区设备文件名

-a:不用显示用户提示,自动修复文件系统

-y:自动修复,和-a 作用一致,不过有些文件系统只支持-y 选项

-A:根据/etc/fstab/,将需要的设备扫描一次

如果检测出问题,会将有问题的数据放在Ext2/Ext3文件系最顶层(即挂载点)的lost+found目录中

特别注意:在正常状况下使用该命令,可能会对系统造成危害。开机时会根据/etc/fstab的设置,调用fsck检测文件系统。

9.2.7 建立挂载点并挂载

① 挂载原则

a. 单一文件系统不应该被重复挂载在不同的挂载点(目录)中

b. 单一目录不应该重复挂载多个文件系统

c. 作为挂载点的目录理论上应该是空目录

② 建立两个挂载点

/root/sdb1  --->  /dev/sdb1

/root/sdb5  --->  /dev/sdb5

③ mount命令的使用

a. 查询系统中已挂载的文件系统

mount  [-l]

注:使用-l 选项可以显示文件系统卷标

b. 自动挂载

mount  -a

根据/etc/fstab配置文件挂载其中所有的文件系统

注意:光盘、U盘和移动硬盘等不能自动挂载,因为不能保证这些存储设备每次都存在

c. 挂载文件系统命令格式

mount  [-t  文件系统类型]  [-L  卷标名]  [-o  特殊选项]  设备文件名  挂载点

-t  文件系统类型:指定挂载的文件系统的类型,可以是ext2/3/4、iso9660等。

-L 文件系统卷标名:按照卷标名而不是设备文件名挂载(卷标名可以用dumpe2fs命令查看)

-o  特殊选项如下所示:

注意:如果有多个选项,用逗号分隔

在这些特殊选项中,我们着重说明一下remount和noexec选项

remount:实现不重启重新挂载文件系统

noexec:使指定的文件系统不能执行命令(即使用户有文件的x权限),可以保护分区安全

示例:mount  -o  remount,noexec  /home

④ 挂载Ext2/Ext3文件系统

mount  /dev/sdb1  /root/sdb1

mount  /dev/sdb5  /root/sdb5

注意:挂载Ext2/Ext3文件系统时可以不用[-t 文件系统类型]选项,因为这类文件系统有super block,Linux可以分析得出文件类型

⑤ 挂载光盘

mkdir  /mnt/cdrom

mount  -t  iso9660  /dev/cdrom  /mnt/cdrom

说明1:现在的CentOS操作系统一般会将光盘自动挂载到/media目录

说明2:/dev/cdrom是一个软链接,因为不同接口的光驱设备文件名 不同,此处做了一个统一

⑥ 挂载U盘

特别注意:Linux默认不支持NTFS文件系统,可以使用vfat(Windows中为FAT32)或fat(Windows中为FAT16)文件系统

说明:U盘的设备文件名命名规则和硬盘一致,是根据Linux识别顺序而定,挂载前需要通过fdisk  -l 命令查看。

mkdir  /mnt/usb
mount  -t  vfat  /dev/sdc4  /mnt/usb

9.2.8 卸载

umount  [-fn]  设备文件名或挂载点

-f:强制卸载文件系统,可用在NFS无法读取的情况下

-n:卸载时不更新/etc/mtab配置文件

特别说明:卸载文件系统前要先退出该文件系统的挂载点以及挂载点的子目录

9.3 注意事项

fdisk无法处理大于2TB的分区,虽然Ext3文件系统支持最大16TB的分区。此时需要使用parted命令

10. 硬盘参数修改

10.1 mknod

① Linux通过设备文件的主、次设备号来识别和管理设备

可见SATA硬盘的主设备号为8,根据不同分区又有各自的次设备号

② mknod命令

mknod  设备文件名  [bcp]  [主设备号]  [次设备号]

b:块设备

c:字符设备

p:管道

作用:创建设备文件

10.2 e2lable

① 使用卷标名挂载的优点和缺点

优点:不论磁盘的设备文件名如何变化,也不论使用SATA/IDE硬盘,只要卷标名正确就可以挂载

缺点:不同磁盘分区的卷标名不能重复

② e2label命令

e2lable  分区设备文件名  卷标名

作用:修改分区设备的卷标名

示例:

目前/dev/sda1分区没有卷标名

此时就设置了卷标名,也就可以用卷标名来挂载文件系统。

10.3 tune2fs

作用:adjust tunable filesystem parameters on ext2/ext3/ext4 filesystem

语法:tune2fs  [-ljL]  分区设备名

-l:类似dumpe2fs  -h的功能,读出super block内的数据

-j:添加日志系统,将ext2文件系统转换为ext3文件系统

-L:类似e2label的功能,修改文件系统的卷标名

11. 设置开机挂载

11.1 系统挂载限制

① 根目录必须挂载,而且要最先挂载

② 其他挂载点必须为已新建的目录,可任意指定,但一定要遵循系统目录架构原则

③ 所有挂载点在同一时间只能挂载一次

④ 所有分区在同一时间只能挂载一次

⑤ 如进行卸载,必须先将工作目录移动到挂载点(及其子目录)之外

11.2 /etc/fstab文件内容

每个挂载项有6个字段,详解如下:

① 分区设备文件名或UUID(硬盘通用唯一识别码,可以用dumpe2fs查看),也可以使用卷标名或分区设备文件名(嵌入式系统中一般采用分区设备文件名)

使用UUID是因为设备文件名随着分区修改会改变,但UUID是不变的

嵌入式系统中广泛使用设备文件名,是因为嵌入式系统中的分区不会随意改动

② 挂载点(特别注意,swap分区的挂载点就是swap,不是/swap)

③ 文件系统类型

④ 挂载参数(和之前介绍的mount  -o的选项相同)

⑤ 指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份

⑥ 指定分区是否被fsck检查,0代表不检查,其他数字代表检查的优先级,1比2先检查。一般只有根目录设置为1,其他需要检查的分区设置为2。

说明:/etc/fstab是开机时使用的配置文件,实际文件系统的挂载是记录到/etc/mtab和/proc/mounts文件中。

11.3 /etc/fstab文件修复

修复前提:根目录可以正常挂载

局限性:只能修复fstab文件错误,因此并不是Linux中常用的修复模式

修复方式:进入单用户模式修复fstab文件(进入单用户模式的方法之前笔记有说明,可参考Linux操作系统使用基础02:Linux系统安装与登陆)

因为系统默认进入修复模式时,根分区被挂载为只读,需要重新将根分区挂载为可读可写

mount  -o  remount,rw  /

12. 特殊设备loop挂载(镜像文件挂载)

12.1 挂载光盘/DVD镜像文件(iso格式文件)

mkdir  /mnt/centos_dvd
mount  -o  loop  /root/centos5.2_x86_64.iso  /mnt/centos_dvd

注意:此处要区分挂载镜像文件和挂载光盘,可以挂载镜像文件就避免了刻录光盘

说明:关于-o loop选项

-o loop是用来挂载loop设备(回环设备)的选项

在类UNIX系统中,loop设备是一种伪设备,他能使我们像块设备一样访问一个文件。在使用之前,一个loop设备必须和一个文件进行连接,这种结合方式给用户提供了一个替代块特殊设备的接口

至于loop设备与文件的连接方式,可以使用losetup命令,注意,只有root用户可以设置/dev目录下的loop设备

12.2 新建大型文件以制作loop设备文件

12.2.1 新建大型文件

使用dd命令(convert and copy a file)

如此,便创建了一个512M的空文件

12.2.2 格式化

12.2.3 挂载

注1:这种挂载loop设备文件的功能类似于Windows中的虚拟光驱

注2:类似VMware这类软件就是配合loop设备文件进行根目录挂载

13. swap分区的构建

13.1 使用free命令查询内存与swap分区使用情况

buffers(缓冲):是指在写入数据时,先把分散的写入操作保存到内存中,当达到一定程度再几种写入硬盘,减少了磁盘碎片和硬盘的反复寻道,加速了数据的写入过程。

cached(缓存):是指把读取出来的数据保存在内存中,当再次读取时,不用读取硬盘而直接从内存中读取,加速了数据的读取过程。

13.2 使用物理分区构建swap

步骤:

① 使用fdisk划分一块分区

② 修改该分区ID为82,即swap分区

③ partprobe强制内核读取分区表

看来要重启了~~

④ 使用mkswap命令格式化该分区

⑤ 使用swapon挂载swap分区

可见swap分区确实扩大了

注1:如要开机自动挂载需要修改/etc/fstab文件

注2:使用swapoff可以卸载swap分区

补充:使用swapon  -s可以查看所有swap分区及其使用情况

13.3 使用文件构建swap

步骤:

① 使用dd命令新建文件

dd  if=/dev/zero  of=/tmp/swap  bs=1M count=128

② 格式化

mkswap  /tmp/swap

③ 挂载

swapon  /tmp/swap

14. 如何使Linux支持NTFS分区(一般移动硬盘为NTFS格式)

14.1 解决方法

①. 重新编译内核,以加入NTFS驱动

②. 使用第三方插件(如NTFS-3G)

14.2 使用NTFS-3G步骤

① 下载NTFS-3G插件

http://www.tuxera.com/community/ntfs-3g-download/

② 安装NTFS-3G

a. 解压

tar  -xvzf  ntfs-3g_ntfsprogs-2013.1.13.tgz

b. 进入解压目录

cd  ntfs-3g_ntfsprogs-2013.1.13

c. 检测系统环境,进行编译准备

./configure

d. 编译(需要GCC)

make

e. 安装

make  install

③ 使用

mount  -t  ntfs-3g  分区设备文件名  挂载点

注意:由于Linux对NTFS文件系统支持不好,目前只能读但不能修改NTFS文件系统中的内容。

Linux操作系统使用基础05:Linux磁盘与文件系统管理相关推荐

  1. 鸟哥的Linux私房菜(基础篇)- 第八章、Linux 磁盘与文件系统管理

    第八章.Linux磁盘与文件系统管理 最近升级日期:2009/08/30 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统,每个分割槽不可太大也不能太小,太大会造成磁盘容量的浪费,太小则会产生文 ...

  2. Linux 操作系统编程基础知识

    Linux操作系统 1.Linux 操作系统编程基础知识 1.3 系统调用和库函数 1.3.1 接口 命令接口:以命令形式呈现在用户面前,方便用户直接或间接控制自己的作业. 程序接口:为应用程序使用系 ...

  3. linux文件系统管理知识导图,Linux磁盘和文件系统管理基础知识自测

    自测简介:本试题为EMC自测专栏第22期,主要考查Linux磁盘和文件系统管理基础知识. 1. Linux系统中,所有设备文件存放在哪一个目录下? A. /etc B. /bin C. /dev D. ...

  4. Linux操作系统6:文件系统及磁盘管理

    Linux操作系统6:文件系统及磁盘管理 一.实验目的: 二.实验内容: 三.实验结果: (1)使用 fdisk 命令进行硬盘分区 (2)用 mkfs 创建文件系统. (3)用 fsck 检查文件系统 ...

  5. Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自:http://vbird.dic.ksu.edu.tw/linux_basic/0230filesystem.php   第八章.Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就 ...

  6. Linux 之旅 5:磁盘与文件系统管理

    Linux 之旅 5:磁盘与文件系统管理 Linux文件系统 文件系统特性 我们知道,对于一个新的存储设备,无论是移动硬盘还是U盘,在第一次连接电脑后一般都会提示要格式化后使用,那格式化是做什么用的呢 ...

  7. Linux 磁盘和文件系统管理1

    一.磁盘介绍 磁盘(disk)是指利用磁记录技术存储数据的存储器. 磁盘是计算机主要的存储介质,可以存储大量的二进制数据,并且断电后也能保持数据不丢失.早期计算机使用的磁盘是软磁盘(Floppy Di ...

  8. Linux知识点整理(五)—— Linux 磁盘与文件系统管理

    一.Linux磁盘与文件系统管理 1.磁盘组成与分割 磁盘的物理组成,整颗磁盘的组成主要有: 圆形的磁盘(主要是记录数据的部分): 机械手臂,与在机械手臂上的磁盘读取头(可读写磁盘盘上的数据): 主轴 ...

  9. 鸟哥的Linux私房菜-第七章、Linux 磁盘与文件系统管理

    第七章.Linux 磁盘与文件系统管理 前言 一.认识 Linux 文件系统 1.文件系统特性 2.Linux 的 EXT2 文件系统 (1)data block (数据区块) (2)inode ta ...

最新文章

  1. springboot之定时任务
  2. iphone开发UITable内嵌不同风格Table
  3. 未来已来:5G将在这88个方面影响我们的工作和生活
  4. i2c- sda挂死分析
  5. 常见软件架构方式的区别
  6. SAP Spartacus focus directive增强之后的两次focus问题
  7. Eureka源码分析
  8. 批量删除html网页,批量删除.html · panghuamama/Clearly Local - Gitee.com
  9. C++:21---仿函数
  10. 企业上云如何对SLS日志审计服务进行权限控制
  11. CentOS7 防火墙关闭
  12. javamelody监控java项目_使用javamelody监控javaEE
  13. Loadrunner脚本函数
  14. html 边框轮廓,CSS Outline(轮廓)
  15. 深入JavaScript之JS引擎如何执行JS代码
  16. 夏普ar2048s打印机驱动安装_无光盘,轻松解决各种打印机的驱动安装
  17. python怎么下载panda包_pandas python下载
  18. Python数据类型——逻辑值详解
  19. JAVA程序练习---小车行走距离
  20. 这些百度搜索技巧,你知道吗?

热门文章

  1. java pfx提取私钥加签,详解pfx证书提取公私钥的方法
  2. poj(2406) kmp
  3. php mysql 多行_php-更新MySQL中的多行而没有循环
  4. vue ----axios
  5. matlab模式识别实验二,模式识别实验二
  6. mysql的max case_MySQL -- 行转列 -- GROUP_CONCAT -- MAX(CASE WHEN THEN)
  7. 京东怎么在线联系客服
  8. 典型的DIV+CSS布局(左中右)
  9. Android开发笔记(一百四十)Word文件的读取与显示
  10. python 字典默认会引用 除非深拷贝