为了区分存储内容的不同,以及快速定位寻址文件,也需要采取分区的形式。

硬盘分区和文件系统

分区标准

最重要的是分区表。分区表用于记录硬盘怎么分的一张表。

现在的主流标准是MBRGPT

image-20230617180625050

MBR分区

image-20230617180831611

MBR的分区表存储在硬盘最开始的512字节,但是还有别的东西,例如系统启动加载器。MBR真正能用的是64字节。所以最多只有四个分区。

随着硬盘容量变大,人们需要更多的分区,但是最多只有四个分区。这个时候,拿出其中一个分区作为扩展部分,分区表里面不再记录分区信息,而是记录另一张分区表的信息。

image-20230617181515947

为了避免原先分区和扩展部分的分区混淆,之前的叫做主分区,扩展的叫做扩展分区。因为有了之前64字节的坑,所以扩展分区可以记录无数的分区,这些新的分区,就叫做逻辑分区。

image-20230617181531893

缺点:无法支持2TB的大硬盘。

GPT

GPT舒服的多,没有那么多乱七八糟的分区,只有一种分区——主分区。

分区数量没有限制,支持2TB以上的。

GPT是UEFI的一部分,使用GUID或者Linux中的UUID来定义分区和分区类型。

GPT会分出一个ESP分区,用来做系统引导启动。

文件系统

分好区之后,需要格式化,格式化的时候,需要选择一个文件系统。

文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构,即在存储设备上组织文件的方法。

常见的文件系统类型

FAT

在Win 9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬件和应用的不断提高,FAT16文件系统已不能很好地适应系统的要求。在这种情况下,推出了增强的文件系统FAT32。

NTFS

NTFS文件系统是一个基于安全性的文件系统,是Windows NT所采用的独特的文件系统结构,它是建立在保护文件和目录数据基础上,同时照顾节省存储资源、减少磁盘占用量的一种先进的文件系统。使用非常广泛的Windows NT 4.0采用的就是NTFS 4.0文件系统,相信它所带来的强大的系统安全性一定给广大用户留下了深刻的印象。Win 2000采用了更新版本的NTFS文件系统NTFS 5.0,它的推出使得用户不但可以像Win 9X那样方便快捷地操作和管理计算机,同时也可享受到NTFS所带来的系统安全性。

exFAT

全称Extended File Allocation Table File System,扩展FAT,即扩展文件分配表,是Microsoft在Windows Embeded 5.0以上(包括Windows CE 5.0、6.0、Windows Mobile5、6、6.1)中引入的一种适合于闪存的文件系统,为了解决FAT32等不支持4G及其更大的文件而推出。

RAW

RAW文件系统是一种磁盘未经处理或者未经格式化产生的文件系统,一般来说有这几种可能造成正常文件系统变成RAW文件系统:没有格式化、格式化中途取消操作、硬盘出现坏道、硬盘出现不可预知的错误、毒所致。

解决RAW文件系统的最快的方法是立即格式化,并且使用杀毒软件全盘杀毒。当然,如果文件很重要的话可以用迷你兔数据恢复软件先救出数据,然后再格式化和杀毒。

Ext

Ext2:Ext是GNU/Linux 系统中标准的文件系统,其特点为存取文件的性能极好,对于中小型的文件更显示出优势,这主要得利于其簇快取层的优良设计。

Ext3:是一种日志式文件系统,是对ext2系统的扩展,它兼容ext2。日志式文件系统的优越性在于:由于文件系统都有快取层参与运作,如不使用时必须将文件系统卸下,以便将快取层的资料写回磁盘中。因此每当系统要关机时,必须将其所有的文件系统全部shutdown后才能进行关机。

Ext4:Linux kernel 自 2.6.28 开始正式支持新的文件系统 Ext4。Ext4 是 Ext3 的改进版,修改了 Ext3 中部分重要的数据结构,而不仅仅像 Ext3 对 Ext2 那样,只是增加了一个日志功能而已。Ext4 可以提供更佳的性能和可靠性,还有更为丰富的功能。

HFS

分层文件系统(Hierarchical File System,HFS)是一种由苹果电脑开发,并使用在Mac OS上的文件系统。最初被设计用于软盘和硬盘,同时也可以在在只读媒体如CD-ROM上见到。

image-20230617182229744

Linux的存储结构

Linux的根目录是’/‘

image-20230617182843459 image-20230617182917364 image-20230618113456182

Linux的文件系统

上面也介绍过文件的作用。文件系统就是如何对磁盘空间管理,如何组织和如何访问的方式。

Linux支持的文件有很多,常见的有:

  1. Ext家族
  • Ext2:Linux第一个商业级文件系统,最早在1992年。因为不包含日志读写功能,数据丢失的可能性很大,所以能不用就不用
  • Ext3:一款日志文件系统。会把整个硬盘写入动作的细节预先记录下来,然后再实际操作,这样的话,宕机后可以回溯追踪到被中断的部分。但是硬盘容量很大的时候,修复时间会很长,有风险。
  • Ext4:在Ext3的基础上,解决大容量问题。支持的存储容量高达1EB(1,043,741,824GB),无限多的子目录。批量分配block(块),提高读写效率。
  1. XFS

这个是一个高性能的日志文件系统,比Ext4厉害。官方说宕机之后可以快速修复,而且强大的日志功只花费很低的系统资源,最高支持18EB那么牛逼。刘遄老师测试过,性能并没有比Ext4压倒性优势,读者可以去实测一下。

Linux挂载硬件设备

流程:

  1. 首先要有硬件设备,确认硬件设备,可以是设备名字,或者UUID
  2. 使用挂载命令,让Linux系统识别

确认硬件设备

直接看设备名字

如果是网络设备,名字变来变去,不如直接使用“身份证”——UUID

查看UUID: blkid [设备名] (blkid是block id缩写)

image-20230618115942779

或者使用lsblk -f

image-20230618120113714

使用挂载命令

确认好硬件设备之后,我们开始挂载。

临时挂载(重启失效):mount 硬件设备 挂载目录

(其实还有好多参数,读者可以百度一下)

  1. 设别名字挂载
image-20230618121058776
  1. UUID挂载
image-20230618121231484

永久挂载:mount -a

  1. 先要在/etc/fstab写入信息

格式:设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检

  • 设备文件:一般是设备路径+设备名称,也可以是UUID
  • 挂载目录:指定挂载位置,要提前创建好
  • 格式类型:文件系统,可以是Ext4,Ext3,XFS等等
  • 权限设置: defaults就好
  • 是否备份:1表示开机用dump备份,0不备份
  • 是否自检:1开机自检,0不自检

这些记不住没关系,写的时候上面有提示

image-20230618122157130

写完不会立即生效,需要mount -a

  1. 使用mount -a 设备 挂载路径
image-20230618122614105 image-20230618122634340

读者朋友注意: Ext4会报错,直接写ext4就好(Centos7.9测试)

FAT32挂载

这里是属于其他文件系统挂载,以FAT3举例。FAT32是windows系统使用,在Linux系统,你可以不需要驱动,工具,直接挂载即可。

mount -t ntfs /dev/sda1 /home/disk #/dev/sda1需替换为自己的硬盘名

参数-t是指定文件系统,mount有很多参数,我不想长篇大论,所以在具体场景中使用一下。

ext2 :linux目前常用的文件系统

msdos : MS-DOS的fat,就是fat16

vfat : windows98常用的fat32

nfs : 网络文件系统

iso9660 :CD-ROM光盘标准文件系统

ntfs : windows NT/2000/XP的文件系统

auto :自动检测文件系统

卸载设备

命令:umount 设备名字/UUID/挂载目录(三选一即可)

Linux磁盘操作命令

查看磁盘空间使用df

命令:df

image-20230618123842006

看的让人懵逼,加一个参数-h

再来df -h

image-20230618123943903

舒服多了

fdisk -l 磁盘(后面有提)是看硬盘信息,和df区别,大家看图理解。

image-20230618152715721

查看占用大小du

这个命令用来查看分区或者目录所占磁盘容量的大小,建议带上参数

与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看

du -sh 目录名称/分区

eg: du -sh /* 查看Linux系统根目录下所有一级目录分别占用的空间大小

image-20230618124418022

新硬盘格式化

注意:格式化的时候,不能在挂载状态!

新来的硬盘空盘一般不能用,硬盘要先分区,还要格式化。

fdisk分区

fdisk用来新建,修改,转换分区以及删除磁盘分区表信息,全称”format disk”

语法格式:fdisk 磁盘名称

参数如下

  • -m : 查看全部可用参数
  • -n : 添加新的分区
  • -d : 删除分区
  • -l : 列出所有可用分区
  • -t : 改变分区的类型
  • -p : 查看分区表信息
  • -w : 保存并退出
  • -q : 直接退出,不保存

分区信息如果没有同步给Linux内核,可用使用partprobe,再用file 文件名查看信息 。

image-20230618154018113

硬盘格式化

格式化命令:mkfs.xxx 设备名称

例如: mkfs.xfs /dev/sdb

添加硬盘实践

fdisk /dev/sdb

image-20230618152900867 image-20230618153007835

如果在挂载,umount /dev/sdb,然后如下

image-20230618154336852 image-20230618154549020

如果有错误或者更好的建议,请朋友们不吝赐教!

最后感谢:

什么是文件系统

硬盘分区和文件系统

Linuxprobe-[第6章 存储结构与管理硬盘]

挂载ntfs