Linux磁盘管理与文件系统、LVM逻辑卷管理及实战指南
在现代计算机系统中,磁盘管理是系统管理员必须掌握的核心技能之一。合理的磁盘管理不仅能提高存储效率,还能增强数据的安全性和系统的稳定性。本文综合了磁盘基础、文件系统、LVM逻辑卷管理以及RAID磁盘阵列配置等内容,旨在为系统管理员和IT专业人员提供全面的参考指南。本文内容涵盖了从基础的磁盘结构认识,到高级的LVM动态卷管理和RAID配置实践,同时包含了磁盘配额管理等实用技术。通过清晰的层次结构和表格
文章目录
前言
在现代计算机系统中,磁盘管理是系统管理员必须掌握的核心技能之一。合理的磁盘管理不仅能提高存储效率,还能增强数据的安全性和系统的稳定性。本文综合了磁盘基础、文件系统、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 fdisk
与gdisk
命令对比表
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 实操:创建多分区硬盘并挂载
gdisk
和fdisk
的实操方式类似,此处仅展示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系统中的磁盘管理与文件系统技术,核心内容涵盖:
-
磁盘基础:深入解析磁盘物理结构及分区机制,重点对比MBR与GPT分区表的特性及适用场景。
-
文件系统:系统比较XFS、EXT4、SWAP等文件系统优劣,并附实用操作命令,包括格式化与挂载等。
-
LVM应用:展示如何通过逻辑卷管理实现存储资源弹性扩展,结合磁盘配额实现精细化管理。
-
RAID技术:分析各RAID级别的性能特点,提供软件RAID配置实例,指导平衡系统性能与数据安全。
最佳实践建议:
- 超大容量存储(2TB以上)采用GPT分区方案
- 高性能应用优先选择XFS文件系统
- 动态存储环境推荐使用LVM架构
- 关键业务系统建议部署RAID5或RAID10
掌握这些技术可帮助管理员构建高效、可靠且易于维护的存储系统。实际部署时需综合考虑性能指标、预算限制及数据重要性等因素,选择最优的磁盘管理策略。
最后,希望大家能够多多实践,夯实基础并且不断探索,保有一颗学徒之心,与君共勉之!
更多推荐
所有评论(0)