云网牛站
所在位置:首页 > Linux培训 > Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

2017-12-03 11:03:42作者:博客园稿源:mingc

本文接着上一文介绍的Linux入门记录一:Bash基本,文件结构,文件操作,常用命令,vim编辑器

 

Linux 入门记录:Linux 硬件相关概念(硬盘、磁盘、磁道、柱面、磁头、扇区、分区、MBR、GPT)

一、硬盘

硬盘的功能相当简单但很重要,它负责记录系统所需要的各种数据。硬盘记录数据有两个方面,一个是硬件方面的存储原理和结构,另外一方面则是软件方面的数据和文件系统。硬盘的主要行为就是数据的存放和取出。

构成硬盘的基本元件,主要可以分为实际存储数据用的磁盘(Plat Platter)、读取数据用的磁头(Head)、帮助磁头搜寻读取位置的马达等等,这些元件构成一个能够在不同磁盘上的任意位置读取数据的结构体。

二、磁盘(Plat Platter)

磁盘是硬盘中真正用来存储信息的部分,外观上如同圆盘一样,中间有孔可供马达运转轴通过(硬盘必须经过不断旋转磁盘才能找到数据),每个硬盘都有至少一个以上的磁盘。

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

一般来说硬盘中磁盘的大小,目前主要有 3.5 英寸和 5.25 英寸两种,而笔记本计算机所使用的磁盘大小一般为 2.5 英寸,有些甚至只有 1 英寸,大型磁盘防震的能力较差,而且一般来说磁盘越大硬盘的性能越差(因为磁盘的旋转速度降低,在磁盘上搜寻数据的时间会变长),不过因为表面积较大,所以能够存放的数据也就较多。

大部分磁盘都是以铝合金制成,而由于磁盘运转的速度较高,磁盘表面必须相当光滑,而重量的分布也必须相当均匀。而磁盘铝合金的表面,则涂了一层磁性物质,以供数据写入之用(写入或读取数据事实上都是在这层磁性物质上,与铝合金无关),这个磁性物质是利用电镀或溅镀的方法涂上,因此分布相当均匀,最后在磁性物质上,会再加上一层薄薄的保护膜,以提供润滑作用,避免磁头与磁盘不正常接触所造成的损坏。磁盘的两面都可以使用,因此每个磁盘上下共有两个磁头来读取数据。

在磁盘上可以感应到数字信息,是因为在磁盘上可以针对特定区域进行磁性的变动,因此我们只需要利用一些可以感应磁性变化的装置,可以依照磁盘上特定区域的磁性变化,来读取其中的内容。

三、硬盘数据单位

1.磁道(Track)

一个磁盘划分为多个磁道,事实上一个磁道也就是指磁盘上的一圈数据区域(也就是说同一磁盘撒和国内所有的磁道都会以同心圆环的方式来排列),就像树木年轮中的一环。因此最靠近内圈的磁道上所能记录的数据量最小(由于越靠近内圈则圆圈越小)。

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

2.柱面(Cylinder)

绕马达旋转轴旋转的多个磁盘,每个磁盘有两个盘面(片),每个盘面里有多个磁道(Track)。多个磁盘上相同大小的磁道在竖直空间上构成了一个柱面,类似于相同大小的一堆呼啦圈(磁道)从脚套到头,视觉上构成了一个空心筒(柱面)。

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

3.磁头(Header)

当需要使用磁盘中的数据时,需要利用磁头来读取或写入数据。因此磁头可以说是磁盘与计算机中其他数字设备之间的接口。磁头负责把数字的位数据转换为磁性的变动,以便将数据写入磁盘之中,而反过来的动作就可以把数据由磁盘中读取出来。磁头的质量严重影响整个硬盘的性能,例如当我们增加磁盘的密度以及磁盘旋转的速度来增加数据传输的速率时,一定要有精密的磁头才能将这些数据正确地读取出来,因此每当发展出新技术的磁头时,通常都会带动整个硬盘效率的提高。

4.扇区(Sector)

事实上仅把数据分为磁道,还不能达到细分数据区的目的(一个磁道中的数据容量还是相当大,即使是最内圈最小的磁道也是一样),因此我们再把磁道分为许多的扇区。由于内圈磁道的数据容量较少,因此内圈磁道所分割出来的扇区数码会比外圈磁道要少。扇区是磁盘上能读取数据的最小单位,大小为 512Bytes,也就是说 1 个 Byte 的文件,无论如何都要占据一个扇区的大小,无论这个扇区的数据量是 2KB 还是 16KB 都是一样。每个扇区内部的数据被视为连续的数据,因此实际存取时,需要再指定扇区中数据的地址,就可以找到所需要的数据。

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

四、硬盘在Linux中的表示

Linux 的所有设备都被抽象为一个文件,保存在 /dev 目录下。

根据接口可以分为:IDE、SATA、SAS、SCSI、USB。

硬盘名称一般为:设备类型 + [a-z],其中 [a-z] 表示第几块硬盘。

IDE 硬盘的名称一般是: hd[a-z] 。SATA 硬盘、SAS 硬盘、SCSI 硬盘和 USB 硬盘的名称一般为: sd[a-z] 。例如,第一块 SATA 硬盘名为 /dev/sda,第二块 SATA 硬盘名为 /dev/sdb,以此类推。

五、分区

把一块硬盘的磁盘逻辑地分为几个区,每个区当作独立磁盘,以方便使用管理。

不同的分区用:“设备名 + 分区号”来表示,如第一块 SATA 硬盘的两个分区 sda1,sda2。

主流的分区机制有 MBR 和 GPT。

六、MBR(Master Boot Record,主引导记录)

MBR 是传统的分区机制,应用于绝大多数使用 BIOS 引导的 PC 设备(苹果使用EFI的方式)

MBR 支持 32 位和 64 位的操作系统

MBR 支持的分区数量有限

MBR 支持不超过 2T 的硬盘,超过 2T 的硬盘只能使用 2T 空间(有第三方解决办法),因为MBR的寻址空间只有 32 位长

1.MBR结构:

占用硬盘最开头的 512 字节,即 0 柱面 0 磁道 1 扇区。前 446 字节是引导代码,不同操作系统的引导代码不一样。然后是 4 个 16 字节的主分区表信息。最后 2 个字节 55 AA,是操作系统的启动标识。

2.MBR分区:

主分区:最多只能创建 4 个主分区。

扩展分区:一个扩展分区占用一个主分区位置。

逻辑分区:逻辑分区是基于扩展分区创建出来的。Linux 最多支持 63 个 IDE 分区和 15 个 SCSI 分区。

七、GPT(GUID Partition Table,全局唯一标识分区表)

GPT 是一个较新的分区机制,解决了 MBR 的很多缺点。

GPT 支持超过 2T 的硬盘

GPT 向后兼容 MBR

GPT 分区必须使用 64 位的系统

Mac、Linux 系统都支持 GPT 分区

Windows 7 64 位、Windows Server 2008 64 位支持 GPT 分区

 

Linux 入门记录:fdisk 分区工具

一、fdisk分区工具

fdisk 是来自 IBM 的老牌分区工具,支持绝大多数操作系统,几乎所有的 Linux 发行版都装有 fdisk,包括在 Linux 的 resuce 模式下依然能够使用。

fdisk 是一个基于 MBR 的分区工具,所以如果需要使用 GPT,则无法使用 fdisk 进行分区。

二、使用fdisk命令

fdisk 命令只有具有超级用户权限才能够运行

使用 fdisk -l 命令可以列出所有安装的硬盘及其分区信息

使用 fdisk /dev/sda 可以对第一块 SATA 硬盘进行分区操作

分区之后需要使用 partprobe 命令让内核更新分区信息,否则需要重启才能识别新的分区

cat /proc/partitions 查看这个文件内容也可以获得分区信息

三、测试

我在 Vitual Box 里安装了 CentOS-x86_64 系统,并添加了一块 10G 的虚拟 SATA 硬盘,测试如下。

安装参考教程:https://ywnz.com/linuxaz/214.html

1.列出分区信息

可以看出,有两块 SATA 硬盘 /dev/sda 和 /dev/sdb。两块硬盘的磁头数、扇区数和柱面数也列举了出来。其中,第一块硬盘有两个分区 /dev/sda1、/dev/sda2,第 2 块硬盘没有分区。

Start 是开始柱面,End 是结束柱面,Blocks 是分区容量(或者大小),Id 是 分区类型 ID,System 是分区类型。

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

2.确认分区信息

下面,我用 fdisk /dev/sdb 命令对第二块 SATA 硬盘进行格式化分区,下图是交互界面:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

3.添加主分区

确认了没有分区,下面添加主分区:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

4.添加扩展分区

添加一个扩展分区:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

5.添加逻辑分区

现在,有了主分区和扩展分区,我在扩展分区里添加一个逻辑分区:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

注意,sdb1 和 sdb5 的分区类型都是 83 号 Linux 类型。

6.内置编码表

具体 id 和 和 System 可以通过 l 或 L 指令查看,以下是 Linux 内置的一些编码表:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

当然,如果需要的话,可以使用 t 指令修改分区 id。

7.写入分区表,退出

最后,用 w 指令保存当前的分区方案:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

8.列出分区信息

好,现在来查看一下新的分区信息:

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

 

Linux 入门记录:Linux 文件系统

一、文件系统

操作系统通过文件系统管理文件及数据,磁盘或分区需要创建文件系统之后,才能被操作系统所用,创建文件系统的过程又称之为格式化。没有文件系统的设备又称之为裸设备(raw),某些环境会需要裸设备,例如安装 Oracle 时会需要裸设备。

1.常见的文件系统类型

常见的文件系统有 fat32、NTFS、ext2、ext3、ext4、xfs、HFS 等。其中,fat32 和 NTFS 是 Windows 中的文件系统,ext2、ext3、ext4、xfs、HFS 是 Linux 中的文件系统。NTFS 是当今 Windows 主流的文件系统,ext3、ext4 是 Linux 中主流的文件系统。

2.不同文件系统之间的区别

是否带有日志

支持的分区大小

支持的单个文件大小

性能

二、Linux支持的文件系统

常见的有 ext2、ext3、ext4、fat(msdos)、vfat、nfs、iso9660(光盘的文件系统)、proc(Linux 内存中的虚拟文件系统)、gfs(Linux 中的 global file system,全局文件系统)、jfs (带日志的文件系统)等等,不同的 Linux 发行版本,文件系统略有不同。

三、mke2fs命令

命令 mke2fs 用来创建文件系统:

mke2fs -t ext4 /dev/sda3     给第一块 SATA 硬盘的 3 号分区创建 ext4 文件系统

常用参数:

-b blocksize   指定文件系统块大小(文件系统每次读写数据时的最小单位)

-c             建立文件系统时检查块坏损(check,检查)

-L label       打标签(类似 Windows 的磁盘卷标)

-j             建立文件系统日志(journal,日志),ext3 和 ext4 默认带日志

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

四、mkfs命令

命令 mkfs 也可以用来创建文件系统,相较于 mke2fs 更加简单,但是支持的参数较少,不能进行精细化的控制。

它还有一些子命令:

mkfs.ext3 /dev/sda3

mkfs.ext4 /dev/sda3

mkfs.vfat /dev/sda3

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

五、dumpe2fs命令

命令 dumpe2fs 可以用来查看分区的文件系统信息:

dumpe2fs /dev/sda1

六、journal日志

带日志的文件系统(ext3、ext4)拥有较强的稳定性,主要体现在出错时可以恢复。

使用带日志的文件系统,文件系统会使用一个叫做“两阶段提交”的方式进行磁盘操作,当进行磁盘操作时,文件系统进行以下操作:

1.文件系统将准备执行的事务的具体内容写入日志

2.文件系统进行操作

3.操作成功后,将事务的具体内容从日志删除

这样做的好处是,当事务执行的时候如果出现意外(如断电或磁盘故障),可以通过查询日志进行恢复操作。缺点是会丧失一定的性能(额外的日志读写操作)。

七、e2label命令

命令 e2label 可以用来为文件系统打标签:

e2label /dev/sda2           显示 sda2 的标签

e2label /dev/sda2 MYLABEL   将 sda2 的标签设置为 MYLABEL

Linux入门记录二:硬件概念,fdisk分区工具,文件系统及文件挂载管理

八、fsck命令

命令 fsck 用来检查并修复坏损的文件系统:

fsck /dev/sda2

使用 -y 参数不提示而直接进行修复

默认 fsck 会自动判断文件系统类型,如果文件系统损坏比较严重,请使用 -t 参数指定文件系统类型

对于识别为文件的损坏数据(文件系统无记录),fsck 会将该文件放入 lost+found 目录

系统启动时会对磁盘进行 fsck 操作。

 

Linux 入门记录:Linux 文件系统挂载管理

一、挂载操作

磁盘或分区创建好文件系统后,需要挂载到一个目录才能够使用。

Windows 或 Mac 系统会进行自动挂载,一旦创建好文件系统后会自动挂载到系统上,Windows 上称之为 C 盘、D 盘等。

Linux 需要手动挂载或配置系统进行自动挂载,/mnt 是文件系统的挂载目录(mnt 是 mount “挂载”的缩写)。

二、mount命令

在 Linux 中,我们通过 mount 命令将格式化好的磁盘或分区挂载到一个目录上:

mount /dev/sda3(要挂载的分区) /mnt(挂载点)

常用参数:

不带任何参数的 mount 命令会显示所有已挂载的文件系统

-t 指定文件系统的类型

-o 指定挂载选项

ro、rw      以只读或读写形式挂载,默认是 rw

sync        代表不使用缓存,所有操作直接写入硬盘

async      代表使用缓存,默认是 async

noatime   代表每次访问文件时,不更新文件的访问时间

atime       代表每次访问文件时,更新文件的访问时间

remount   重新挂载文件系统

三、umount命令

命令 umount 用来卸载已挂载的文件系统,相当于 Windows 中的弹出:

umount 设备/分区/挂载点

umount /dev/sda3

umount /mnt

如果出现"device is busy"报错,则表示该文件正在被使用,无法卸载。

可以使用 fuser 命令查看正在使用文件系统的进程:

fuser -m /mnt

也可以使用 lsof 命令查看正在被使用的文件:

lsof /mnt

然后使用 kill 命令杀掉对应 pid 的进程。

四、自动挂载

配置文件 /etc/fstab 用来定义需要自动挂载的文件系统,fstab 中每一行代表一个挂载配置,格式如下:

/dev/sda3 /mnt ext4 defaults 0 0
需要挂载的设备 挂载点 文件系统类型 挂载选项 dump、fsck 的相关选项

要挂载的设备也可以使用 LABEL 标签进行识别,使用 LABEL=LABELNAME 取代设备名 /dev/sda3

mount -a 命令会挂载所有 /etc/fstab 文件里定义的自动挂载项

注意:如果要修改文件系统,请先执行卸载!

 

Linux入门记录系列一:Bash基本,文件结构,文件操作,常用命令,vim编辑器:https://ywnz.com/linuxpx/556.html

精选文章
热门文章