磁盘管理与系统

前言

本文详细介绍了Linux系统中磁盘管理与文件系统的相关知识,包括硬盘存储原理、分区管理、文件系统类型、常用命令操作等内容。

一、磁盘结构与分区

1.1 硬盘的物理结构

  • 盘片:硬盘有多个盘片,每盘片2面
  • 磁头:每面一个磁头

1.2硬盘的数据结构

  • 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据,硬盘的最小存储单位 。
  • 磁道:同一盘片不同半径的同心圆。
  • 柱面:不同盘片相同半径构成的圆柱面,由同一半径圆的多个磁道组成。

1.3 Linux设备命名

Linux中将硬盘、分区等设备表示为文件,命名格式为/dev/sdXN或/dev/hdXN,具体规则如下:

部分说明
sd表示SCSI设备
hd表示IDE设备
X硬盘顺序号,从a开始
N分区顺序号,主分区为1-4,逻辑分区从5开始

二、分区表:MBR vs GPT

2.1 MBR

  • 位置:磁盘第 1 个物理扇区(512B)。
部分字节范围说明
主引导记录前446字节包含引导程序
分区表447-510字节记录分区信息
结束标志511-512字节固定为0x55AA
  • 限制:最大卷约 2 TiB;最多 4 个主分区(或 3 主 + 1 扩展 + 多逻辑)

2.2 GPT

  • 优势:支持超大容量(理论至 ZB 级)、多达 128 分区(视实现),头尾双副本,冗余更好。
  • 适配:UEFI 启动友好,现代 OS默认优先。

三、常见文件系统

  • XFS:日志型,高性能,擅长大文件/大容量;断电可快速恢复。适合大文件存储、高吞吐场景
  • EXT4:日志型,通用稳定;许多发行版默认(如 CentOS7默认 XFS)。
  • SWAP:交换分区(虚拟内存);一般建议≈物理内存 1.5–2 倍(大内存服务器可不设)。
  • NTFS:微软专有文件系统,Linux默认只读,需借助NTFS-3G实现写入。

四、分区工具与交互命令

4.1 fdisk

fdisk是显示硬盘整体情况和分区表。

4.1.1常用交互

fdisk指令说明:

命令功能说明
m显示帮助菜单
p打印当前分区表信息
n创建新分区
d删除指定分区
t改变一个分区的系统号码
a切换可引导标记
l列出已知分区类型
w保存修改并退出程序
q退出程序且不保存修改

4.2 gdisk(GTP专用)

4.2.1 常用交互

命令功能说明
o创建一个新的空白的GPT分区表
p显示当前磁盘的分区表
n增加一个新的分区
d删除一个分区
t改变分区的类型(常见8300 Linux FS,8200swap,8e00 LVM)
i显示分区详细信息
v验证磁盘分区表
w将分区表写入磁盘并退出(保存修改)
q退出gdisk程序且不保存任何修改

五、格式化(创建系统文件)mkfs

  • XFS: mkfs.xfs /dev/sdb1
  • vFAT32:mkfs.vfat -F 32 /dev/sdb6
  • Swap:mkswap /dev/sdb5
  • 查UUID: blkid /dev/sdb1

格式化为XFS
在这里插入图片描述
查看UUID用blkid
在这里插入图片描述

六、挂载

6.1 临时挂载

mount [ -t 类型 ] 存储设备 挂载点目录
mount -o loop ISO镜像文件 挂载点目录
mount /dev/sdb1 /opt/wjk0710/  #挂载到/opt/wjk0710

在这里插入图片描述

6.2 卸载(umont)

umount 存储设备位置
umount 挂载点目录
umount /opt/wjk0710 #卸载

6.3 开机自动挂载 /etc/fstab

在/etc/fstab文件中,每一行记录对应一个分区或设备的挂载配置信息

vim /etc/fstab #修改配置信息
blkid #查看UUID
mount -a #验证是否有错误

在这里插入图片描述
在这里插入图片描述

七、磁盘/文件系统使用情况

  • df:查看已挂载文件系统容量
  • 常用:df -h (人类可读), -T (含类型), -i (inode)
  • lsblk-f:看设备、类型、LABEL、UUID、挂载点
    在这里插入图片描述

八、示例

8.1 MBR分区

8.1.1 先给虚拟机分配20G磁盘

  • 首先打开虚拟机设置,点击添加
    请添加图片描述
  • 选择硬盘

请添加图片描述

  • 保持默认选择

请添加图片描述

  • 选择创建虚拟磁盘

请添加图片描述

  • 设置磁盘大小

请添加图片描述

  • 指定磁盘文件,然后点击完成

请添加图片描述

  • 新硬盘添加成功

请添加图片描述

8.1.2 重启或执行以下指令加载新建的硬盘

echo "- - -" > /sys/class/scsi_host/host0/scan #加载新硬盘
fdisk -l #列出系统中所有磁盘及其分区的详细信息

在这里插入图片描述
请添加图片描述

8.1.3 使用fdisk命令开始分区

[root@simon ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x19c2ae1b 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n  # 增加一个新的分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p   # p表示主分区
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G    # 设置分区大小5g
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):
起始 扇区 (20973568-41943039,默认为 20973568):
将使用默认值 20973568
Last 扇区, +扇区 or +size{K,M,G} (20973568-41943039,默认为 41943039):+5G
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (3 primary, 0 extended, 1 free)
   e   extended
Select (default e): e    # e表示拓展分区
已选择分区 4
起始 扇区 (31459328-41943039,默认为 31459328):
将使用默认值 31459328
Last 扇区, +扇区 or +size{K,M,G} (31459328-41943039,默认为 41943039):
将使用默认值 41943039
分区 4 已设置为 Extended 类型,大小设为 5 GiB

命令(输入 m 获取帮助):p  #打印分区
磁盘 /dev/sdb:21.5 GB,21474836480 字节, 41943040个扇区 
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512字节 /512 字节
I/O大小(最小/最佳):512字节/512 字节
磁盘标签类型:dos
磁盘标识符:0xbde93fb0
设备 Boot    Start         End           Blocks     Id     System 
/dev/sdb1     2048         10487807      5242880    83     Linux
/dev/sdb2     10487808     20973567      5242880    83     Linux
/dev/sdb3     20973568     31459327      5242880    83     Linux
/dev/sdb4     31459328     41943039      5241856     5     Extended

命令(输入 m 获取帮助):w
正在同步磁盘。

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

8.1.4 文件格式化

mkfs.xfs /dev/sdb1

在这里插入图片描述

8.1.5 使用 mount 命令进行挂载

mkdir wjk0710  #创建挂载目录
mount /dev/sbd1 /opt/wjk0710  #这是临时挂载

请添加图片描述
请添加图片描述

8.1.6 查看磁盘使用情况

df -Th

在这里插入图片描述

8.1.7 永久挂载

blkid  #查看UUID
vim /etc/fstab  #修改配置文件
mount -a   #验证是否有错

请添加图片描述
在这里插入图片描述
请添加图片描述
在这里插入图片描述

8.1.8 创建swap分区

  • 将上面的/dev/sdb2更改为swap分区,swap分区的ID为82

在这里插入图片描述

  • 用swapon命令开启swap分区,可以使用swapon -s检测状态。

在这里插入图片描述

8.2 GPT分区

给虚拟机添加一块20G的新磁盘,对这块磁盘创建GPT分区。

  • 为虚拟机分配20g磁盘,和8.1.1步骤相同,请移步上文
  • 使用gdisk命令进行分区
    在这里插入图片描述
  • 格式化与挂载
    在这里插入图片描述
    在这里插入图片描述
    这样就挂载成功了。

总结

(1)磁盘结构:容量计算与区域定位方法。
(2)分区管理:分区表 MBR 、GPT
(3)常见的文件系统:XFS、EXT4、SWAP及格式化操作
(4)分区工具、交互命令:lsblk、df、blkid等工具的使用。
(5)挂载/卸载:注意要设置开启挂载

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐