Linux一切以文件的形式存储在磁盘上,硬盘管理对linux系统至关重要,直接影响数据的完整性及安全性,是运维工程师必备的技能之一。

一、计算机硬盘

1、机械硬盘(HDD)

机械硬盘内部由磁道、柱面、扇区、磁头等部件组成,通过移动磁头完成寻址与数据读写操作。

  • 盘片(Platters)‌:

    • 盘片上有磁道,磁道上再划分扇区,
    • 由铝合金或玻璃制成,表面覆盖磁性材料。
    • 数据以磁信号形式存储在同心圆磁道上,单盘可叠放1–5片。
  • ‌磁头(Read/Write Heads)‌:

    • 悬浮于盘片上方约 ‌5–10纳米‌ 处,通过电磁感应读写数据。
    • 每面一个磁头,配合磁头臂运动。
  • ‌主轴电机与音圈电机‌:

    • 主轴电机驱动盘片高速旋转(常见 ‌5400/7200 RPM‌)。
    • 音圈电机控制磁头臂径向移动,实现精准寻道。
  • ‌其他组件‌:

    • 控制电路板(含缓存DRAM、主控芯片)。
    • 内部常充入过滤空气或氦气,防尘减阻。

工作方式‌:依赖‌机械运动‌——磁头需移动到目标磁道并等待扇区旋转到位,存在‌寻道延迟‌和‌旋转延迟‌

机械盘内部结构如下图:

2、固态硬盘(SSD)

  • NAND闪存芯片‌:

    • 核心存储介质,由‌浮栅晶体管‌构成,通过电荷状态表示二进制数据(0/1)。
    • 采用‌3D堆叠技术‌,垂直堆叠可达100+层,提升容量‌26。
  • ‌主控制器(Controller)‌:

    SSD的“大脑”,负责:
    • 错误校正(ECC)
    • 垃圾回收(GC)
    • 磨损均衡(Wear Leveling)
    • 数据读写调度
  • ‌DRAM缓存(可选)‌:

    • 高端SSD配备,存储FTL(闪存转换层)映射表,加速寻址‌8。
  • ‌接口电路‌:

    • 支持SATA、NVMe(PCIe)等协议,M.2或2.5英寸形态‌8。

‌工作方式‌:‌全电子化操作‌,无任何运动部件,数据以电信号直接读写,‌延迟微秒级‌,支持并行访问‌

二、硬盘inode与block

       文件数据的存放包括两个部分:文件内容、权限及文件属性。

        操作系统文件存放是基于文件系统,文件系统会将文件的实际内容存储到Block中,而将权限与属性等信息存放至Inode中。

        在硬盘分区中,有一个超级块 (SuperBlock) ,SuperBlock会记录整个文件系统的整体信息,包括 Inode、Block 总量、使用大小、剩余大小等信息,每个 inode 与 block 都有编号对应,方便Linux系统快速定位查找文件。

  1. Superblock:记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小, 以及文件系统的格式与相关信息等;
  2. Inode:记录文件的属性,权限,同时会记录该文件的数据所在的block编号;
  3. Block:存储文件的内容,如果文件超过默认Block大小,会自动占用多个Block。

       因为每个 inode 与 block 都有编号,而每个文件都会占用一个 inode ,inode 内则有文件数据放置的 block 号码。如果能够找到文件的 inode,就可以找到该文件所放置数据的block号码,从而读取该文件内容。

三、绝对路径与相对路径

        绝对路径:绝对路径是以根“/”路径为起始的路径,如:/usr/local/

        相对路径:相对路径是与当前路径为起始的路径,如:./test1/testfile.txt   ../../log/test.log

四、软链接与硬链接

硬链接:硬链接是直接再建立一个inode链接到文件放置的块领域,即进行硬连接时该文件内容没有任何变化,只是增加了一个指向这个文件的inode,并不会额外占用磁盘空间,删除文件较为安全,也叫实体链接。

软链接:软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上,相当于 windows 的快捷方式,也叫字符链接。

        硬链接限制:硬链接不能跨分区,因为各个分区有自己的inode table;硬链接不能做目录的硬链接。软链接没有这两个限制。

五、磁盘分区

在实际运维过程中,经常会遇到磁盘更换、添加磁盘等操作,在我们添加了一块新盘后我们要如何使用这块硬盘呢?一般需要经过磁盘分区、分区格式化、挂载分区等操作才能使用新加的磁盘。

磁盘分区主要有以下三种方式进行磁盘分区:

1、fdisk

fdisk:可以通过fdisk查看分区,创建分区、删除分区等操作。

fdisk -l 查看分区

下面添加一块磁盘进行磁盘分区演示:

添加了磁盘还没有分区

执行fdisk /dev/sdb对磁盘进行分区

b 编辑bsd disklabel;

c 切换dos兼容性标志;

d 删除一个分区;

g 创建一个新的空GPT分区表;

G 创建一个IRIX(SGI)分区表;

l 列出已知的分区类型;

m 打印帮助菜单;

n 添加一个新分区;

o 创建一个新空DOS分区表;

p 打印分区表信息;

q 退出而不保存更改;

s 创建一个新的空的Sun磁盘标签;

t 更改分区的系统ID;

u 更改显示/输入单位;

v 验证分区表;

w 将分区表写入磁盘并退出;

x 额外功能。

再次查看分区可以看到新建的一个分区

2、gdisk

gdisk工具和fdisk很类似,都是对磁盘进行分区管理的开源工具。gdisk工具很擅长处理GPT分区方式。

最小化安装的系统需要手动安装gdisk

yum install -y gdisk

使用gdisk /dev/sdc创建分区:

3、parted

         parted 是 Linux 下功能强大的磁盘分区工具,‌支持 GPT 和 MBR 分区表,适合大容量磁盘(超过 2TB)分区。

# 确认磁盘状态
parted -l

parted创建分区可以用交互式和非交互式两种方式。

交互式创建分区:

parted /dev/sdd

mklabel gpt

mkpart primary ext4 0% 100%

print

非交互式创建分区:

创建GPT分区表并分区
parted /dev/sdd mklabel gpt
parted /dev/sdd mkpart primary ext4 0% 100%

parted非交互式创建分区对于通过脚本进行自动化分区非常方便。

六、磁盘格式化

对磁盘/磁盘分区进行格式化,目前磁盘较常用的格式有:ext3,ext4,xfs. 有些地方已经开始使用btrfs

mkfs.ext4 /dev/sdc1

mkfs.xfs /dev/sdd1  

通过以上步骤我们做了分区,进行了分区格式化

可以使用lsblk 和blkid 分别查看磁盘分区与磁盘格式

七、磁盘挂载

磁盘经过分区、格式化后需要挂载到指定的目录才能使用其空间。

挂载方式如下:

临时挂载:

mount 分区 挂载目录

以上使用mount方式只是做临时挂载,系统重启后挂载会丢失,下面做重启后自动挂载,需要将磁盘挂载信息写入/etc/fstab文件中。

挂载信息: 磁盘分区|UUID=uuid  挂载点  分区格式  defaults  0 0

vi /etc/fstab

挂载信息写入后可以使用mount -a 验证是否可以正常挂载,如果执行mount -a 报错,需要对挂载信息进行排查,可能是相关参数写错。重启系统后发现磁盘挂载正常。

       本节介绍了磁盘类型、硬盘superblock/inode/block、相对路径与绝对路径、软硬链接、磁盘分区、格式化与磁盘挂载等内容。下一节将介绍逻辑卷LVM、磁盘阵列与软RAID。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐