Linux 的存储 ☁️
上一篇文章链接:【Linux学习笔记②】——基础入门(下)⭐【进程管理 备份与恢复 元字符与正则表达式】⭐.
下一篇文章链接:【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】.
● 磁盘:磁盘由若干盘片组成。
● 盘片:每个盘片有两个盘面。
● 盘面:每个盘面都有一个读写磁头。如果有 N 个盘面,则有 2N 个盘面,对应 2N 个磁头,并按照 0、1、2、… 的顺序编号。
● 磁道:每个盘面都被划分成若干个同心圆磁道(图例是 14 个)。
● 扇区:对于每个同心圆磁道,都会被划分入若干个扇区。(图例是 8 个)。
◆ 说明:不同磁道上的扇区虽然半径不同,但是容量是相同的,一般的容量为 512字节。(这样做是为了方便计算机硬件处理。故内圈的容量单元密集一点,外圈容量单元稀疏一点)
● 柱面:半径相同的所有盘面上的磁道构成柱面。
● 磁盘容量: 容 量 大 小 = 柱 面 数 × 磁 头 数 × 每 根 磁 道 的 扇 区 数 × 512 字 节 容量大小 = 柱面数 \times 磁头数 \times 每根磁道的扇区数 \times 512字节 容量大小=柱面数×磁头数×每根磁道的扇区数×512字节(上图计算得 344064 字节 ≈ ≈ ≈ 0.34 MB)
● 磁盘分区与硬件体系结构有着密切的关系,在基于 X86 体系结构的计算机系统中,常采用主引导记录 MBR (MAster Boot Record) 来记录磁盘的分区信息。
● 主引导记录(MBR,也被称为主引导扇区):它是计算机开机以后访问硬盘时所必须要读取的第一个扇区。它记录着硬盘本身的相关信息以及硬盘各个分区的大小及位置信息。如果它受到破坏,硬盘上的基本数据结构信息将会丢失。
● 主引导扇区内的信息可以通过任何一种基于某种操作系统的分区软件写入,但和某种操作系统没有特定的关系,即只要创建了有效的主引导记录就可以引导任意一种操作系统。(也就是说 主引导扇区 是所有不同类别操作系统的“发动机” )
● 主引导记录位于硬盘的 0 柱面 0 磁头 l 扇区处。该扇区除了包括主引导记录 MBR 外,还包括分区表 DPT 以及结束标志 “55AA”, 这部分数据总共占 512 字节。其中 MBR 占其中的 446 个字节,另外的 64 个字节交给了分区表 DPT(内容包括 4 个 16 字节的 “磁盘分区表” ),最后 2 个字节 “55AA” 是分区的结束标志。
◆ 说明:在使用 “主引导记录” 这个术语的时候,需要根据具体情况判断其到底是指整个主引导扇区,还是主引导扇区的前 446 字节。
● 磁盘最多有 4 个分区。但为了满足实际需要,需将其中一个作为扩展分区,扩展分区再进一步分成若干个逻辑分区。
● 每个磁盘一般有 “4 个主分区”、或者有 “3 个主分区加一个扩展分区” 。每个分区的第一个扇区作为引导扇区。 每个分区可以通过格式化建立某种类型的文件系统,不同分区的文件系统可以不同。
● 在 Linux 系统中,磁盘设备和分区有一定的命名规则:
① hd 代表 IDE 硬盘
② sd 代表 SCSI 硬盘
③ 同类型设备从字符 a 开始编号,a 代表第一个硬盘,b 代表第二个硬盘,依次类推。
④ 主分区和扩展分区的编号从 1 到 4 。扩展分区中的逻辑分区从编号 5 开始。
◆ 例如:第一个 IDE 硬盘的四个分区分别是 hda1、hda2、hda3、hda4。hda 中的第一个逻辑分区是 hda5,第二个逻辑分区叫做 hda6。【注:hd 的全称为 hard disk】
● Linux 系统安装一般需要三个分区:
① 第一个分区:用于存放引导加载程序的信息和 Linux 内核的二进制映像(boot目录)。
② 第二个分区:是 Linux 的根文件系统(/),用于存放各种各种工具和应用软件,例如 bash、gcc 和 vi 等。
③ 第三个分区:交换分区,当可用的物理内存降到一定程度时,将暂时不用的物理页缓存至交换分区(swap),作虚拟内存用。
◆ 说明:上图以一块 SCSI(小型计算机系统接口) 硬盘为例,介绍磁盘分区:
① 磁盘被分为 3 个主分区和 1 个扩展分区,它们分别是 sda1、sda2、sda3 和 sda4,它们的信息都保存在主引导记录中。
② 扩展分区 sda4 进一步划分出一个逻辑分区 sda5,。
③ 分区 sda3 被格式化为 ext2 文件系统(EXT2第二代扩展文件系统,后面细讲)。
④ sda1、sda2、sda3 和 sda5 都可以作为 Linux 的系统分区。
■ 语法:fdisk [选项] 块设备文件
▶功能:在块设备上建立、查询、修改和删除分区。
常用命令 |
含义 |
---|---|
n | 创建一个分区 |
d | 删除一个分区 |
q | 退出但不保存 |
w | 保存退出 |
p | 显示分区信息 |
m | 显示帮助信息 |
t | 改变分区的类型号码 |
… | … |
● 经过分区的磁盘在使用之前,必须进行格式化,即在分区上建立文件系统。分区可选择不同类型的文件系统(例如 ext2、fat 和 ufs 等),所选类型可根据组织和管理文件的方式不同而有所区别。
■ 语法:mkfs [选项] [设备名称] [区块数]
▶功能:在块设备上建立某种类型的文件系统。
常用选项 |
含义 |
---|---|
-t | 选择文件系统类型 |
-c | 检查设备中是否有坏块 |
-v | 详细显示模式 |
-N | 说明 i-节点 的数量,适用于 ext2 |
-m | 为超级用户预留的块数,默认 5% 。用于 ext2 |
-L | 说明文件系统的卷标,适用于 ext2 |
… | … |
● linux 内核支持的文件系统:
文件系统类型 | 特点 |
---|---|
ext2 / ext3 | Linux 系统下的文件系统 |
iso9660 / cdfs | 标准 CDROM 文件系统 |
vfat | 微软操作系统使用的文件系统格式 |
sysv | System V 文件系统 |
nfs | Sun 公司推出的网络文件系统 |
NTFS | 微软 Windows NT 的文件系统 |
… | … |
● 举例如下:(显示当前 mkfs 所支持的文件系统格式)
■ 语法:mkswap/swapon/swapoff 分区
▶mkswap 的功能:缓存物理内存暂时不用的内容。
"举例:"
mkswap /dev/sda6 # 创建分区 sda6 为 swap 交换分区
swapon /dev/sda6 # 加载分区 sda6 至交换分区
swapoff /dev/sda6 # 关闭交换分区 sda6
● ext2 是 Linux 系统默认的的文件系统,支持 Unix 文件系统的特征。例如,目录、设备文件和链接文件等。
● 从文件系统内部数据结构的角度,可将 ext2 分为 超级快、i-节点表和数据区 三个部分。
● 超级块包含整个文件系统的布局信息和参数设置。例如,逻辑块大小、i-节点表的区域、文件系统类型和卷标等。
● 可使用 dumpe2fs 工具来查看文件系统的超级块信息。
"举例"
dumpe2fs -h /dev/sda2 # 查看分区 /dev/sda2 中文件系统的超级快信息
● i-节点表包含了文件系统中所有的 i-节点。i-节点的功能:用于存放文件的管理信息。例如,文件类型、权限、大小、数据在数据区的分布信息等
● 但 i-节点 中不包含文件名,文件名及其对应的 i-节点号 以目录项的形式保存在目录文件中。
● 数据区存放文件的内容,其基本单位为逻辑块。
● 一个文件包含若干个逻辑块,这些逻辑块以编号的形式存放于文件所对应的 i-节点 中。在读写文件时,根据读写指针的位置,即可计算出当前数据所在的逻辑块。
◆ 说明:上图为 ext2 文件系统。文件 demo.c 在 i-节点表 中的编号为 102609 ,该 i-节点 中存放了 demo.c 文件的属性。其中,块号为 208 的数据块中存放了该文件的内容。使用 “ l s − i l ls \,\,\, -il ls−il” 命令可显示 demo.c 相关信息。
"举例:"
ls -il demo.c
● 文件系统在使用前,必须将文件系统挂载至某个目录。在 Linux 系统启动时,已将某些分区中的文件系统自动挂载至根目录,用户可直接访问这些文件系统。但是,对于像光盘和 U 盘等未挂载的块设备,在使用前必须先挂载。
● Linux 专门建立了目录 “/mnt”,用于挂载文件系统。 例如:可将光盘挂载至目录/ mnt/cdrom,在成功挂载后,用户可在 /mnt/cdrom 目录下访问光盘。挂载和卸载文件系统的工具分别为 mount 和 umount 。
■ 语法:mount [选项] [设备文件] [目录]
▶功能:将 “设备文件” 对应的文件系统挂载至 “目录”。
常用选项 |
含义 |
---|---|
-t | 指定文件系统类型 |
-w | 安装有读/写权限的文件系统 |
-r | 安装只读文件系统 |
-N | 安装/etc/fstab中定义的文件系统 |
… | … |
"举例:"
mount # 显示当前文件系统的挂载状况
mount /dev/sdb1 /mnt/usb # 将 usb 挂载至目录 /mnt/usb (在挂载usb设备时,应先通过命令fdisk –l查 看当前USB设备对应的设备名。)
mount /dev/sda6 /mnt # 将第 1 个 SCSI 磁盘扩展分区第 2 个逻辑分区(第 6 个分区)挂载至 /mnt 目录
mount -t iso9660 /dev/cdrom /mnt/cdrom/ # 将光盘挂载至目录/mnt/cdrom
◆ 说明:除了根文件系统外,其他所有文件系统都挂载在根文件系统的某个子目录下,形成一颗目录树,/etc/fstab 文件定义了 Linux 系统在启动时应挂载的文件系统。
■ 语法:umount <挂载点|设备>
▶功能:断开设备与挂载点目录的链接。
"举例:"
umount /dev/cdrom # 卸载光盘
umount /mnt/cdrom # 卸载光盘, 若 /mnt/cdrom 为光盘的挂载点
umount /dev/floppy # 卸载软盘
umount /dev/usb # 卸载usb盘
◆ 注意:在卸载某文件系统前,如果有用户正在使用该文件系统,则必须等所有用户结束了对该文件系统的访问后,该文件系统才能被成功卸载。
● 引导加载程序的功能就是:引导和加载。
● Linux 系统通电过后,系统将自动把控制权交给引导加载程序。该程序会引导系统完成一系列初始化工作,例如获得内核所需的参数等。然后该程序会将加载 Linux 内核至内存的适当位置,并将控制权交给内核,并向其传送必要的参数,至此引导加载程序的任务完成。(打个比方,在用洗衣机洗衣服的时候,引导加载程序就像 “我们的手”,先把衣服【类比参数】放进去,需要先手动按几下按钮,选择哪种洗衣模式【类比选操作系统】,然后洗衣机就会自动开始 “初始化”…,然后我们就不用管了【类比 “引导加载程序的任务完成”】)
● 在 Linux 系统中,有多种引导加载程序,例如 LiLo(Linux Loader)和 grub 等。
● grub(GRand Unified Bootloader) 是一个来自 GNU 项目的多操作系统启动程序。GRUB 是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。GRUB 可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。
[1] 《GNU/Linux编程》
人民邮电出版社
[1] 百度百科——GRUB
链接: https://baike.baidu.com/item/Grub/4072057.
上一篇文章链接:【Linux学习笔记②】——基础入门(下)⭐【进程管理 备份与恢复 元字符与正则表达式】⭐.
下一篇文章链接:【Linux学习笔记④】——Shell程序设计【变量 输入与输出 条件表达式 判断语句 循环语句 Shell函数】.
⭐️ ⭐️