Linux基础

Linux磁盘管理

2019-07-11  本文已影响0人  千幻流光

一,机械硬盘的结构和工作原理简述

以下内容部分图片和文字来自知乎 @随风 的知乎回答

机械硬盘主要由盘片,磁头,盘片转轴以及控制电机,磁头控制器等几个部分组成。

机械硬盘内部结构(图1.1)

磁盘由一个或多个盘片组成,每个盘片上下两面各有一个磁头,通过磁头臂控制磁头运动:

磁盘读写原理示意图(图1.2)

二,机械硬盘有关的几个基本概念

磁盘示意图(图2.1) 图2.2
  1. 磁道 track:

当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道。

  1. 扇区 sector:

磁盘上的每个磁道被等分为若干个弧段,这些弧段便是磁盘的扇区,每个扇区可以存放512个字节的信息,磁盘驱动器在向磁盘读取和写入数据时,以扇区为单位。(可参考上图2.1,2.2)

  1. 柱面 cylinder

硬盘通常由重叠的一组盘片构成,每个盘面都被划分为数目相等的磁道,并从外缘的"0"号磁道开始编号,从上面的硬盘结构示意图(图2.1)我们可以看出,具有相同编号的磁道形成一个圆柱,称之为磁盘的柱面。磁盘的柱面数与一个盘面上的磁道数是相等的。

  1. CHS

所谓硬盘的CHS,即Cylinder(柱面)、Head(磁头)、Sector(扇区),只要知道了硬盘的CHS的数目,即可确定硬盘的容量,硬盘的容量=柱面数×磁头数×扇区数×512B。


三,Linux磁盘管理

一切皆文件,这是Linux的基本理念之一。在Linux中,所有的硬件包括磁盘,也都是作为文件来管理的,通常我们称呼这类文件为设备文件。

在类Unix操作系统中,设备文件是设备驱动程序的接口,允许应用程序通过标准输入/输出系统调用使用其设备驱动程序与设备进行交互。使用标准系统调用简化了许多编程任务,并且无论设备的特性和功能如何,都可以实现一致的用户空间I / O机制。

可以粗略的认为,设备文件就是关联至一个设备驱动程序,进而能够跟对应的硬件设备进行通信的文件。

Linux中的设备文件通常存放在/dev目录下,在ll /dev | grep -v "^[dsl]"查询返回的结果中可以看到类似下图的内容

部分结果
结果说明:

设备文件的主要类型

  1. 字符设备(Character Devices):指在I/O传输过程中,必须按照先后顺序存取数据的设备,以字符为单位进行传输。通常字符设备不使用缓冲区。例如键盘
  2. 块设备(Block Devices):是一种具有一定结构的随机存取设备,对这种设备的读写是以块为单位进行的。它使用缓冲区来暂时存放数据,待条件成熟后,从缓冲区一次性写入设备或从设备中一次性读出放入到缓冲区。例如硬盘
  3. 伪设备(Pseudo-devices):没有对应的物理设备,而是操作系统虚拟出来,用于实现某些特定功能的设备。

最常用的伪设备是 /dev/null/dev/zero

  • /dev/null,也称为位桶(bit bucket),外号无底洞,黑洞。任何输出到它的数据都会被丢弃。如果不想让消息以标准输出显示或写入文件,那么可以将消息重定向到位桶。
    如果试图从它读取数据,那么永远都只会得到EOF(End Of File)信号。
  • 验证:
ls  #用于和下方比较执行结果
ls &> /dev/null  #将结果重定向到/dev/null
echo $?  #验证命令是否执行成功,0表示成功,其他数字表示错误码
输出到/dev/null的结果
  • /dev/zero,无论从该设备读多少次,每次都会获得一个二进制数字0(即ASCII码为0的字符,在vim里显示为^@),因此也有人形象的称呼它泡泡机,吐零机。
    而如果试图输出数据到它,也会像输出到/dev/null一样被全部丢弃。
  • 验证:
dd if=/dev/zero of=a.txt count=1 bs=1  #从/dev/zero复制一个字符到a.txt
从/dev/zero复制一个字符成功
vi a.txt  #查看a.txt的内容
vi中查看a.txt的内容
上一篇下一篇

猜你喜欢

热点阅读