运维专题2——分区、挂载、扩容及问题排查

文章目录

  • [v1 分区](#v1 分区)
    • [v1-1 主流文件系统](#v1-1 主流文件系统)
    • [v1-2 分区表](#v1-2 分区表)
      • [MBR 与 GPT 分区表对比](#MBR 与 GPT 分区表对比)
  • [v2 挂载](#v2 挂载)
    • [v2-1 mount 命令](#v2-1 mount 命令)
    • [v2-2 自动挂载fstab](#v2-2 自动挂载fstab)
      • [fstab 陷阱](#fstab 陷阱)
  • [v3 LVM管理](#v3 LVM管理)
    • [v3-1 LVM 基本概念](#v3-1 LVM 基本概念)
    • [v3-2 LVM 创建完整流程](#v3-2 LVM 创建完整流程)
  • [v4 inode 问题](#v4 inode 问题)

v1 分区

v1-1 主流文件系统

Linux 支持多种文件系统,不同文件系统在性能、可靠性、功能和适用场景上有显著差异:

文件系统 最大单文件 最大分区 日志功能 企业级特性 适用场景
ext4 16TB 1EB 延迟分配、快速 fsck 通用服务器、系统盘
xfs 8EB 8EB 高并发、大文件、在线扩容 数据库、大数据、云盘
btrfs 16EB 16EB 写时复制、快照、内置 RAID 备份服务器、容器存储
ext3 2TB 32TB 兼容性好 老旧系统

建议

  • 系统盘优先使用 ext4,兼容性最好,故障恢复工具最成熟
  • 数据盘优先使用 xfs,特别是在云环境中,xfs 对大文件和高并发 IO 支持更好,且更好地处理云盘的动态扩容, xfs_growfs 无须卸载
  • 所有生产环境必须使用带日志功能的文件系统,防止意外断电导致数据损坏

v1-2 分区表

MBR 与 GPT 分区表对比

分区表是磁盘的 "目录",记录了分区的位置和大小信息:

特性 MBR GPT
最大支持磁盘 2TB 18EB
主分区数量 最多 4 个 最多 128 个
扩展分区 需要 不需要
备份机制 头部和尾部各有一份备份
兼容性 所有 BIOS 系统 UEFI 系统,部分 BIOS 系统

建议

  • 所有大于 2TB 的磁盘必须使用 GPT 分区表
  • 生产环境避免使用扩展分区和逻辑分区,直接使用主分区
    parted 工具分区
    fdisk 不支持 GPT 分区表,生产环境推荐使用 parted 工具:
bash 复制代码
# 进入 parted 交互模式
parted /dev/sdb

# 创建 GPT 分区表
(parted) mklabel gpt

# 创建一个使用全部空间的分区
(parted) mkpart primary xfs 0% 100%

# 查看分区信息
(parted) print

# 退出 parted
(parted) quit

# 格式化分区为 xfs 文件系统
mkfs.xfs /dev/sdb1

v2 挂载

v2-1 mount 命令

简化点说,挂载是将文件系统与目录树关联的过程:

复制代码
# 基本挂载命令
mount /dev/sdb1 /data

# 挂载时指定选项
mount -o noatime,nodiratime /dev/sdb1 /data

常用挂载选项:

  • noatime:不更新文件的访问时间,提高 IO 性能
  • nodiratime:不更新目录的访问时间
  • defaults:默认选项,包含 rw,suid,dev,exec,auto,nouser,async
  • ro:只读挂载
  • remount:重新挂载已挂载的文件系统

v2-2 自动挂载fstab

fstab 陷阱

务必使用 UUID 而不是设备名(如 /dev/vdb1)。因为在云环境发生热迁移或设备变动时,内核分配的设备名可能会改变(vdb 变成 vdc),而 UUID 是文件系统的唯一指纹,永远不会变。

/etc/fstab 是系统启动时自动挂载文件系统的配置文件,格式如下:

复制代码
UUID=xxxx-xxxx  /data  xfs  defaults,noatime  0  0

字段说明:

  1. 设备标识:推荐使用 UUID,而不是设备名(/dev/sdb1),因为设备名可能会在重启后变化
  2. 挂载点:必须是一个已存在的目录
  3. 文件系统类型
  4. 挂载选项
  5. dump 备份:0 表示不备份,1 表示每天备份
  6. fsck 检查:0 表示不检查,1 表示最先检查(根分区),2 表示其次检查

注意项:

  • 必须使用 UUID 配置 /etc/fstab,避免设备名变化导致系统无法启动
  • 挂载选项中添加 noatime 和 nodiratime 提高性能
  • 新配置的 fstab 必须使用 mount -a 命令测试,确保没有错误
  • 数据盘的 fsck 检查设置为 0,避免系统启动时长时间检查大磁盘

v3 LVM管理

LVM(Logical Volume Manager)是 Linux 下的逻辑卷管理工具,它将物理磁盘抽象为逻辑卷,实现了磁盘空间的动态管理,

v3-1 LVM 基本概念

  • PV(Physical Volume):物理卷,是 LVM 的基本存储单元,可以是整个磁盘、磁盘分区或 RAID 阵列
  • VG(Volume Group):卷组,由一个或多个 PV 组成,是一个逻辑上的大磁盘
  • LV(Logical Volume):逻辑卷,从 VG 中划分出来的空间,可以格式化和挂载
  • PE(Physical Extent):物理扩展块,是 PV 中最小的存储单元,默认大小为 4MB

v3-2 LVM 创建完整流程

复制代码
# 1. 创建物理卷 PV
pvcreate /dev/sdb /dev/sdc

# 查看 PV 信息
pvdisplay

# 2. 创建卷组 VG
vgcreate vg_data /dev/sdb /dev/sdc

# 查看 VG 信息
vgdisplay

# 3. 创建逻辑卷 LV
lvcreate -n lv_data -L 100G vg_data

# 查看 LV 信息
lvdisplay

# 4. 格式化逻辑卷
mkfs.xfs /dev/vg_data/lv_data

# 5. 挂载逻辑卷
mkdir /data
mount /dev/vg_data/lv_data /data

# 6. 配置自动挂载
echo "UUID=$(blkid -s UUID -o value /dev/vg_data/lv_data) /data xfs defaults,noatime 0 0" >> /etc/fstab

注意事项

  • 扩容前一定要备份重要数据
  • 优先使用 lvextend -L +大小 而不是 lvextend -L 总大小,避免计算错误
  • 云环境中,先在云平台扩容云盘,然后在系统中执行上述步骤

v4 inode 问题

v4-1 inode 耗尽

inode 概念与问题现象

每个文件都会消耗一个 inode(索引节点),记录文件的元数据。df -h 看的是块容量,df -i 看的才是 inode 数量。当 inode 用尽时,即使磁盘尚有大量剩余空间,系统也会提示 "No space left on device",新建文件失败。

常见场景:

  • 日志文件没有及时清理,产生了大量的小日志文件
  • 临时文件目录(/tmp)没有定期清理
  • 邮件服务器的邮件队列堆积
  • 应用程序产生的大量缓存文件

排查步骤

bash 复制代码
# 1. 检查 inode 使用情况
df -i

# 2. 找到占用 inode 最多的目录
find / -xdev -type f | cut -d "/" -f 2 | sort | uniq -c | sort -n

# 3. 深入排查具体目录
find /var/log -type f | wc -l
find /tmp -type f | wc -l

# 4. 批量删除大量小文件
# 当文件数量太多时,rm 命令会报错"参数列表过长",应该使用 find 命令
find /path/to/directory -type f -delete

# 或者使用 xargs
find /path/to/directory -type f | xargs rm -f

预防措施

  • 日志轮转 :合理配置 logrotate,避免历史日志堆积海量小文件。
  • 定期巡检:在监控系统添加 inode 使用率指标采集,设置 ≥80% 告警。
  • 文件系统规划 :为存放海量小文件的分区单独划分,并适当增加 inode 数量(mkfs.xfs -i size=256 减小 inode 大小,从而提升 inode 总数;或在创建时指定 -i maxpct)。但须明白 inode 数量越多,可用块空间越少,需权衡。
  • 告警联动:当 inode 告警触发时,可通过自动化脚本快速找出目录并清理临时文件,或直接通知相关团队。

自动化脚本

待二期补充

相关推荐
程序猿编码1 小时前
藏在TCP握手里的暗号:一种基于序列号触发的加密回连后门
linux·网络·网络协议·tcp/ip
minji...1 小时前
Linux 网络基础之传输层协议TCP(八)拥塞控制,延迟应答,捎带应答,TCP粘包问题,异常退出问题
linux·服务器·网络·网络协议·tcp/ip·http·智能路由器
王璐WL1 小时前
【Linux】基础指令
linux·服务器
Stark-C1 小时前
Obsidian官方同步贵?在NAS上自建服务器,实现多端笔记完美同步
运维·服务器·笔记
步十人1 小时前
【Linux】基础命令
linux·运维·服务器
Languorous.1 小时前
Linux 开关机、重启、注销命令(新手安全操作指南)
linux·运维·安全
clear sky .1 小时前
[freeRTOS源码阅读]list.c/h
linux·服务器·windows
tudoSearcher1 小时前
服务器蓝屏了远程连不上?工业级IP KVM的硬件级抢救实战
运维·服务器·tcp/ip
JiaWen技术圈2 小时前
从零认识 OpenTelemetry (OTel)
运维·前端·安全