一、Linux系统的文件存储结构
在Linux系统中,对计算机中的数据和硬件资源进行管理都是以文件的形式,目录、字符设备、套接字、硬盘、光驱、打印机等都被抽象成文件形式(“Linux系统一切皆文件”)。既然平时我们打交道的都是文件,那么又应该如何找到它们呢?
在Windows操作系统中,想要找到一个文件,要依次进入该文件所在的磁盘分区(也叫盘符),然后再进入该分区下的具体目录,最终找到这个文件。
但是在Linux系统中并不存在C、D、E、F等盘符,Linux系统中的一切文件都是从“根”目录(/)开始的,并按照文件系统层次标准(FHS)采用倒树状结构来存放文件,以及定义了常见目录的用途。
FHS是根据以往无数Linux系统用户和开发者的经验而总结出来的,是用户在Linux系统中存储文件时需要遵守的规则,用于指导用户应该把文件保存到什么位置,以及告诉用户应该在何处找到所需的文件。FHS对于用户来讲只能算是一种道德上的约束,并非必须遵循。
Linux系统中的文件和目录名称是严格区分大小写的。例如,root、rOOt、Root、rooT均代表不同的目录,并且文件名称中不得包含斜杠(/)。
(1) Linux系统中的文件存储结构

(2)Linux系统中常见的目录名称以及相应内容
| 目录名称 | 应放置文件的内容 |
| /boot | 开机所需文件—内核、开机菜单以及所需配置文件等 |
| /dev | 以文件形式存放任何设备与接口 |
| /etc | 配置文件 |
| /home | 用户主目录 |
| /bin | 存放单用户模式下还可以操作的命令 |
| /lib | 开机时用到的函数库,以及/bin与/sbin下面的命令要调用的函数 |
| /sbin | 开机过程中需要的命令 |
| /media | 用于挂载设备文件的目录 |
| /opt | 放置第三方的软件 |
| /root | 系统管理员的家目录 |
| /srv | 一些网络服务的数据文件目录 |
| /tmp | 任何人均可使用的“共享”临时目录 |
| /proc | 虚拟文件系统,例如系统内核、进程、外部设备及网络状态等 |
| /usr/local | 用户自行安装的软件 |
| /usr/sbin | Linux系统开机时不会使用到的软件/命令/脚本 |
| /usr/share | 帮助与说明文件,也可放置共享文件 |
| /var | 主要存放经常变化的文件,如日志 |
| /lost+found | 当文件系统发生错误时,将一些丢失的文件片段存放在这里 |
(3) 路径
Linux系统的路径指如何定位到某个文件,分为绝对路径和相对路径。
- 绝对路径:从根目录(/)开始写起的文件或目录名称
- 相对路径:相对于当前路径的写法
(4)常见的物理(硬件)设备及其文件名称
在Linux系统中一切都是文件,硬件设备也不例外。既然是文件,就必须有文件名称。系统内核中的udev设备管理器会自动把硬件名称规范起来,目的是让用户通过设备文件的名字可以猜出设备大致的属性以及分区信息等;这对于陌生的设备来说特别方便。另外,udev设备管理器的服务会一直以守护进程的形式运行并侦听内核发出的信号来管理/dev目录下的设备文件。
常用的硬件设备及其文件名称:
| 硬件设备 | 文件名称 |
| IDE设备 | /dev/hd[a-d] |
| SCSI/SATA/U盘 | /dev/sd[a-z] |
| virtio设备 | /dev/vd[a-z] |
| 软驱 | /dev/fd[0-1] |
| 打印机 | /dev/lp[0-15] |
| 光驱 | /dev/cdrom |
| 鼠标 | /dev/mouse |
| 磁带机 | /dev/st0或/dev/ht0 |
一般的硬盘设备都是以“/dev/sd”开头。而一台主机上可以有多块硬盘,因此系统采用a~z来代表26块不同的硬盘(默认从a开始分配)。
磁盘的分区:
- 主分区或扩展分区的编号从1开始,到4结束;
- 逻辑分区从编号5开始(逻辑分区的个数依操作系统而不同,在 linux 系统中, IDE 硬盘最多有 59 个逻辑分区( 5 号到 63 号), SATA 硬盘最多有 11 个逻辑分区( 5 号到 15 号);)。
【注意】对于分区名称sda3只能表示是编号为3的分区,而不能判断sda设备已经存在了3个分区。
示例:/dev/sda5
表示“这是系统中第一块被识别到的硬件设备中分区编号为5的逻辑分区的设备文件”
二、硬盘设备及分区
硬盘的基础概念
磁盘组成主要包括:盘片、磁头、磁头臂、盘片主轴、步进电机(马达、永磁铁等)、空气过滤片
- 一个硬盘有多张盘片叠成,每张盘片都有两个盘面,一般每个盘面都会利用,都可以存储数据,成为有效盘片,也有个别磁盘盘面数为单数。每个有效盘面有一个盘面编号(至上而下,从0开始依次编号)。每个有效盘面上都有可以读写数据的磁头(header)。磁头号与盘面号对应。磁头是利用气流漂浮在盘面上,没有接触到盘面。任何异物或尘埃都可能使得磁头摩擦到盘面而造成数据永久性损坏。
- 每张盘片上的存储颗粒成环形一圈圈地排布,每一圈称为磁道(track),每个磁道都有编号(由外至内,从0开始依次编号),每个盘面有300~1024个磁道。
- 每条磁道上都有一圈存储颗粒,每512*8bit(512字节,0.5KB)个存储颗粒作为一个扇区(sector),扇区是硬盘上存储的最小物理单位。扇区从1开始编号。不可能发生读半个或1/4个扇区的情况,因为磁头只能定位到某个扇区的开头或结尾,而不能在扇区内部定位。
- N个扇区可以组成簇,N取决于不同的文件系统或是文件系统的配置,簇是此文件系统中的最小存储单位
- 所有盘面上的同一磁道构成一个圆柱,称为柱面(cylinder),柱面是系统分区的最小单位
- 磁盘存储原理是通过读写头去改变磁盘表面上磁性粒子簇的N、S极,N极表示1,S表示0.

磁盘读写原理:
磁盘写入数据时,数据存放顺序是从第一磁道的第一个磁头所有扇区开始,然后是同一柱面的下一磁头,当一个柱面存储空间用完后,将会写入第一盘面相邻的下一磁道,同一柱面的下一磁头,直到文件内容全部写完。
(简而言之,按照从上到下,从外到内,按柱面进行数据读写。柱面、磁头、扇区三者简称CHS,所以扇区地址又称CHS地址。早期小容量磁盘通过磁头读取扇区头标中的CHS地址,进行数据读取。)
目前大容量磁盘使用LBA编址方式(Logical Block Address,逻辑块寻址方式)。LBA编址方式磁盘对外提供的地址全部为线性地址,把磁盘想象成只有一个磁道,这个磁道是无限长的直线,扇区是这条直线上的等长线段,从1开始编号。磁头、磁道、扇区的对应关系保存在磁盘控制电路的ROM芯片中。读取磁盘数据时,系统将数据逻辑地址传给磁盘,磁盘的控制电路按照寻址逻辑地址翻译成物理地址,即确定数据所在柱面号、磁头号、扇区号。
MBR引导分区
硬盘设备是由大量的扇区组成的,每个扇区的容量为512字节。其中第一个扇区最重要,它里面保存着主引导记录(Master boot record,MBR)与磁盘分区表(Disk partition table)信息。
硬盘主引导记录放有最基本的引导加载程序(boot loader),是系统开机启动的关键环节。引导加载程序是一段指令,用以通知计算机如何访问分区表并并定位操作系统的位置。引导程序会因操作系统不同而不同,但是MBR是不属于任何一个操作系统,具有公共引导的特性。利用引导代码可以实现多重系统引导,多系统引导有两种实现方式:①用Windows操作系统在引导分区中设置一段代码,先加载进入用户选择系统的界面,允许用户选择要进入的系统,再进入指定的操作系统;②改变MBR中的引导代码,该代码直接呈现给用户一个选择系统的界面。

最低0.47元/天 解锁文章
631

被折叠的 条评论
为什么被折叠?



