前言

在现代计算机系统中,磁盘管理是系统管理员必须掌握的核心技能之一。合理的磁盘管理不仅能提高存储效率,还能增强数据的安全性和系统的稳定性。本文综合了磁盘基础、文件系统、LVM逻辑卷管理以及RAID磁盘阵列配置等内容,旨在为系统管理员和IT专业人员提供全面的参考指南。

本文内容涵盖了从基础的磁盘结构认识,到高级的LVM动态卷管理和RAID配置实践,同时包含了磁盘配额管理等实用技术。通过清晰的层次结构和表格化的信息展示,帮助读者快速理解和掌握这些关键技术。


一、磁盘基础与文件系统

1.1 磁盘物理结构

以下是硬盘相关术语的表格整理:

术语 定义
盘片 硬盘由多个盘片组成,每个盘片有正反两个可读写面
磁头 每个盘面配备一个独立的磁头,用于数据的读写操作
扇区 盘片划分的最小存储单元,每个扇区固定存储512字节数据(最小存储单位)
磁道 单个盘片上不同半径的同心圆轨迹,数据沿磁道存储
柱面 所有盘片上相同半径的磁道组成的虚拟圆柱结构

注:现代硬盘采用区域位记录(ZBR)技术,外圈磁道扇区数可能多于内圈。

1.2 磁盘存储容量计算

硬盘存储容量计算公式

硬盘存储容量=磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

示例计算
1柱面 = 512 × 扇区数/磁头数 × 磁道 = 512×120×255 = 14.94MB

1.3 磁盘接口类型

接口类型 描述
IDE 并行接口,价格低廉,兼容性强
SATA 串行ATA接口,主流硬盘接口
SCSI 小型计算机系统接口,高性能
SAS 新一代SCSI技术,兼容SATA
光纤通道 高性能存储网络接口

1.4 分区表示与MBR和GPT对比

1.4.1 Linux设备命名规则

/dev/sdb5 解析:

  • sd:表示SCSI设备(hd表示IDE设备)
  • b:硬盘顺序号(a,b,c…)
  • 5:分区顺序号(主分区1-4,逻辑分区从5开始)

1.4.2 MBR和GPT结构对比

对比项 MBR GPT
分区支持 最多4个主分区(或3主分区+1扩展分区,扩展分区内可划分逻辑分区) 最多128个主分区(无需扩展分区)
硬盘容量 最大支持2.2TB 理论支持9.4ZB(上亿TB)
数据冗余 分区表无备份,损坏后可能导致数据丢失 分区表在硬盘首尾均有备份,可靠性高
引导模式 仅支持传统BIOS引导 支持UEFI引导,兼容现代操作系统
分区表结构 32位分区信息,分区表占64字节(4个分区记录区,每区16字节) 64位分区信息,分区表更灵活,支持更多元数据
兼容性 兼容旧系统(如Windows XP) 需现代操作系统支持(如Windows 10、Linux)
适用场景 小容量硬盘(≤2TB)或传统BIOS系统 大容量硬盘(>2TB)、UEFI系统及现代操作系统

补充说明

  • MBR:结构简单但扩展性差,适合老旧设备或小容量存储。
  • GPT:功能强大且可靠,是大容量硬盘和现代系统的首选分区方案。

1.5 文件系统类型

文件系统 特点 适用场景
XFS 高性能日志文件系统,支持大文件(百万TB) CentOS 7默认
SWAP 交换分区,虚拟内存 内存扩展
EXT4 第4代扩展文件系统,日志型 Linux通用
NTFS Windows专有,Linux默认只读 Windows兼容

1.6 磁盘管理命令

1.6.1 fdisk将磁盘已MBR结构进行分区

常用交互指令:

指令 功能
-n 新建分区
-d 删除分区
-t 更改分区类型
-p 显示分区表
-w 保存并退出
-q 不保存退出

1.6.2 fdiskgdisk命令对比表

gdisk将磁盘以GPT结构进行分区

功能 fdisk(DOS/MBR) gdisk(GPT)
显示帮助信息 m 显示帮助菜单 ? 显示帮助信息
创建分区表 o 创建新的空DOS分区表 o 创建新的空白GPT分区表
显示分区表 p 显示当前分区表 p 显示当前分区表
新增分区 n 增加新分区 n 增加新分区
删除分区 d 删除分区 d 删除分区
修改分区类型 t 修改分区系统ID(如82为Linux swap) t 修改分区类型(如8200为Linux swap)
列出已知分区类型 l 显示已知分区类型(如82/83) l 列出已知分区类型(如8e00为LVM,8300为Linux文件系统)
设置可引导标记 a 切换可引导标志 无直接对应,GPT使用EFI引导
验证分区表 v 验证分区表 v 验证磁盘分区表
保存并退出 w 保存修改并退出 w 写入分区表并退出
不保存退出 q 退出不保存 q 退出不保存
专家功能 x 额外功能(如调整显示单位u x 额外功能(如恢复转换选项r
备份分区表 无直接对应 b 将GPT数据备份到文件
修改分区名称 无直接对应(MBR不支持) c 更改分区名称
排序分区 无直接对应 s 排序分区
显示分区详细信息 无直接对应 i 显示分区详细信息
1.6.2.1 关键差异说明
  • 分区表类型:fdisk用于传统的MBR分区表,gdisk专为GPT分区表设计。
  • 分区类型标识:fdisk使用两位十六进制(如82)最多设置4个分区,gdisk使用四位(如8200)。
  • 功能扩展:GPT支持更多现代特性如分区名称、备份恢复等,MBR功能较为基础。
  • 引导管理:fdisk的a标记用于MBR引导,GPT依赖EFI引导无直接对应命令。

1.6.3 格式化命令

mkfs -t xfs /dev/sdb1    # XFS格式化
mkfs.xfs /dev/sdb1    #XFS格式化的另一种写法
mkfs -t vfat -F 32 /dev/sdb6 # FAT32格式化
mkfs.ext4 /dev/sdb1      # EXT4格式化

mkswap /dev/sdb5         # 创建交换分区

1.6.4 mount挂载与umount卸载

mount /dev/sdb1 /mnt      # 挂载
umount /mnt               # 卸载
swapon /dev/sdb5 		 # 挂载交换分区

1.6.5 查看磁盘信息

fdisk -l                  # 查看分区
lsblk                     # 树形查看磁盘
df -hT                    # 查看挂载点及使用情况
blkid                     # 查看UUID
swapon -s				  # 查看已启用的交换分区
  • lsblk以树形查看磁盘分区
参数 说明
-a 显示所有设备
-b 以 bytes 方式显示设备大小
-d 不显示 slaves 或 holders
-D 打印 discard 能力
-e 排除设备
-f 显示文件系统信息
-h 显示帮助信息
-i 仅使用 ASCII 字符
-m 显示权限信息
-l 使用列表格式显示
-n 不显示标题
-o 输出列
-P 使用 key=“value” 格式显示
-r 使用原始格式显示
-t 显示拓扑结构信息
  • df查看挂载点及使用情况 :
参数 说明
-s 对每个名称参数只显示占用的总数据块数
-a 递归显示目录及子目录中文件占用的数据块数
-k 以 1024 字节为单位显示磁盘空间使用情况
-x 跳过不同文件系统上的目录统计
-l 计算所有文件大小(硬链接文件多次计算)
-i 显示 inode 信息而非块使用量
-h 以易读格式显示大小(如 KB、MB、GB)
-P 使用 POSIX 输出格式
-T 显示文件系统类型

1.7 修改/etc/fstab进行自动挂载

修改/etc/fstab可以进行开机时自动挂载硬盘。

设备名/UUID   挂载点   文件系统类型   挂载参数   dump备份标记   磁盘检查顺序
  • 示例配置:
/dev/sdb1 /mnt xfs defaults 0 0
  • 各字段含义:
    • 设备名/UUID
    • 挂载点
    • 文件系统类型
    • 挂载参数(defaults,rw,ro等)
    • dump备份标记(0不备份)
    • 启动检查顺序(0不检查,1优先检查)

1.8 实操:创建多分区硬盘并挂载

gdiskfdisk的实操方式类似,此处仅展示fdisk进行MBR结构分区。

echo "- - -" > /sys/class/scsi_host/host2/scan #使用该命令在不重启的情况下加载新的硬盘(已添加新硬盘的情况下)

fdisk /dev/sdb #开始初始化sdb,具体操作看图中显示
#在初始化完成后,共进行了4个分区:三个xsf分区sdb1、sdb2、sdb6,一个交换分区sdb5

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

mkfs.xfs /dev/sdb1 #初始化sdb分区
mkfs.xfs /dev/sdb2
mkfs.xfs /dev/sdb6
mkswap /dev/sdb5 #初始化mkswap分区

在这里插入图片描述

swapon /dev/sdb5
mount /dev/sdb1 /opt/testDisk/sdb1 #挂载分区

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

blkid #查询UUID
vim /etc/fstab #修改/etc/fstab进行自动挂载

UUID=148bd5f1-d5df-4c0b-88a2-82f75c50b1ac swap swap defaults 0 0 
/dev/sdb1 /opt/testDisk/sdb1 xfs defaults 0 0 
UUID=0dbeb634-1835-4701-961a-74befc479d5f /opt/testDisk/sdb2 xfs defaults 0 0
/dev/sdb6 /opt/testDisk/sdb6 xfs defaults 0 0 

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


二、LVM逻辑卷管理

2.1 LVM基本概念

组件 描述 管理命令
PV(物理卷) 基础存储设备,被划分为PE pvcreate/pvscan
VG(卷组) PV的集合,动态可扩展 vgcreate/vgextend
LV(逻辑卷) 从VG划分的逻辑空间 lvcreate/lvextend

PE大小:4MB-64MB(影响VG最大容量)

2.2 LVM操作流程

2.2.1 创建LVM

pvcreate /dev/sdb1 /dev/sdc1           # 创建PV
vgcreate vgname1 /dev/sdb1 /dev/sdc1   # 创建VG
lvcreate -L 20G -n lvname1 vgname1     # 创建LV
mkfs.xfs /dev/vgname1/lvname1          # 格式化
mount /dev/vgname1/lvname1 /opt        # 挂载

2.2.2 扩展LVM

vgextend vgname1 /dev/sdd1             # 扩展VG
lvextend -L +10G /dev/vgname1/lvname1  # 扩展LV
xfs_growfs /dev/vgname1/lvname1        # XFS刷新
resize2fs /dev/vgname1/lvname1         # EXT4刷新

2.2.3 删除LVM

umount /opt                            # 卸载
lvremove /dev/vgname1/lvname1          # 删除LV
vgremove vgname1                       # 删除VG
pvremove /dev/sdb1 /dev/sdc1           # 删除PV

2.2.4 实操:建立LVM逻辑卷并拓展逻辑卷

gdisk /dev/sdb
gdisk /dev/sdc #建立sdb、sdc分区

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

pvcreate /dev/sdb1 /dev/sdc1 #建立pv
vgcreate vgname1 /dev/sdb1 /dev/sdc1 #建立vg,并添加两个pv
lvcreate -L 15G -n lvname1 vgname1 #依据vg建立lv
mkfs.xfs /dev/vgname1/lvname1 #初始化lv
mount /dev/vgname1/lvname1 /opt #挂载lv

在这里插入图片描述

pvcreate /dev/sdd1 #创建pv:sdd1
vgextend vgname1 /dev/sdd1 #将sdd1加入名为vgname1的vg组
lvextend -L +9G /dev/vgname1/lvname1 #拓展名为lvname1的lv逻辑卷
xfs_growfs /dev/vgname1/lvname1 #刷新

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

三、RAID磁盘阵列

3.1 RAID级别对比

RAID级别 最少磁盘 利用率 容错能力 性能特点
RAID0 2 N 读写性能最佳
RAID1 2(偶数) N/2 允许1块故障 读性能好,写性能一般
RAID5 3 (N-1)/N 允许1块故障 读性能好,写需计算校验
RAID6 4 (N-2)/N 允许2块故障 读性能好,写性能较差
RAID10 4(偶数) N/2 允许每组镜像坏1块 读写性能均好

3.2 软RAID配置

3.2.1 创建RAID5

mdadm -Cv /dev/md0 -l5 -n3 /dev/sd[b-d]1 -x1 /dev/sde1

参数说明:

  • -C:创建
  • -v:显示详情
  • -l:RAID级别
  • -n:活动磁盘数
  • -x:备用磁盘数

3.2.2 管理RAID

mdadm -D /dev/md0                # 查看详细信息
mdadm /dev/md0 -f /dev/sdb1      # 模拟故障
mdadm /dev/md0 -r /dev/sdb1      # 移除磁盘
mdadm /dev/md0 -a /dev/sdf1      # 添加磁盘

3.2.3 配置文件

mdadm --detail --scan > /etc/mdadm.conf

3.3 阵列卡配置

3.3.1 接口类型对比

接口 特点 适用场景
IDE 并行,价廉 老旧系统
SCSI 高性能,多任务 服务器
SATA 串行,主流 通用存储
SAS 兼容SATA,高性能 企业存储

3.3.2 缓存重要性

RAID卡缓存:

  • 提高数据传输速度
  • 容量通常几MB到数百MB
  • 需电池保护防止断电丢失

总结

本文全面阐述Linux系统中的磁盘管理与文件系统技术,核心内容涵盖:

  1. 磁盘基础:深入解析磁盘物理结构及分区机制,重点对比MBR与GPT分区表的特性及适用场景。

  2. 文件系统:系统比较XFS、EXT4、SWAP等文件系统优劣,并附实用操作命令,包括格式化与挂载等。

  3. LVM应用:展示如何通过逻辑卷管理实现存储资源弹性扩展,结合磁盘配额实现精细化管理。

  4. RAID技术:分析各RAID级别的性能特点,提供软件RAID配置实例,指导平衡系统性能与数据安全。

最佳实践建议:

  • 超大容量存储(2TB以上)采用GPT分区方案
  • 高性能应用优先选择XFS文件系统
  • 动态存储环境推荐使用LVM架构
  • 关键业务系统建议部署RAID5或RAID10

掌握这些技术可帮助管理员构建高效、可靠且易于维护的存储系统。实际部署时需综合考虑性能指标、预算限制及数据重要性等因素,选择最优的磁盘管理策略。
最后,希望大家能够多多实践,夯实基础并且不断探索,保有一颗学徒之心,与君共勉之!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐