前言
磁盘管理是 Linux 服务器运维中最基础也最重要的技能之一。无论你是管理一台 VPS 还是维护企业的服务器集群,理解磁盘分区、文件系统以及 LVM(Logical Volume Manager,逻辑卷管理器)都是必备技能。
本文将系统地介绍 Linux 磁盘管理的基础知识,并深入讲解 LVM 的配置与管理方法。
一、磁盘管理基础
1.1 查看磁盘信息
在操作磁盘之前,首先需要了解系统中有哪些磁盘设备:
1 2 3 4 5 6 7 8 9 10 11
| lsblk
fdisk -l
df -h
iostat -x 1
|
lsblk 输出示例:
1 2 3 4 5 6
| NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1G 0 part /boot ├─sda2 8:2 0 49G 0 part / ├─sda3 8:3 0 10G 0 part /var └─sda4 8:4 0 40G 0 part /home
|
1.2 磁盘分区工具
Linux 提供了多种分区工具:
fdisk:传统 MBR 分区工具,支持最大 2TB 磁盘
gdisk / parted:GPT 分区工具,支持 2TB 以上磁盘
partprobe:通知内核分区表变更
示例:使用 fdisk 创建新分区
1 2 3 4 5 6 7 8 9
| sudo fdisk /dev/sdb
|
二、文件系统管理
2.1 创建文件系统
分区创建完成后,需要格式化并创建文件系统:
1 2 3 4 5 6 7 8
| sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb2
sudo mkfs.btrfs /dev/sdb3
|
2.2 挂载与卸载
1 2 3 4 5 6 7 8
| sudo mount /dev/sdb1 /mnt/data
mount | grep sdb1
sudo umount /mnt/data
|
2.3 配置开机自动挂载
编辑 /etc/fstab 文件实现开机自动挂载:
1 2 3 4 5
| sudo blkid /dev/sdb1
|
三、LVM 基础概念
LVM 是 Linux 内核提供的逻辑卷管理器,它在物理磁盘和文件系统之间增加了一层抽象,使得磁盘空间管理更加灵活。
3.1 LVM 的核心组件
| 组件 | 全称 | 说明 |
| PV | Physical Volume | 物理卷,即物理磁盘或分区 |
| VG | Volume Group | 卷组,由一个或多个 PV 组成 |
| LV | Logical Volume | 逻辑卷,从 VG 中划分,相当于传统分区 |
| PE | Physical Extent | 物理块,LVM 的最小存储单位(默认 4MB) |
| LE | Logical Extent | 逻辑块,与 PE 一一对应 |
3.2 LVM 的架构示意图
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| +--------+ +--------+ +--------+ | PV sdb | | PV sdc | | PV sdd | <- 物理卷 +--------+ +--------+ +--------+ \ | / \ | / +------------------+ | VG data_vg | <- 卷组 +------------------+ / | \ / | \ +----------+ +----------+ +----------+ | LV data | | LV logs | | LV backup| <- 逻辑卷 +----------+ +----------+ +----------+ /mnt/data /var/log /mnt/backup <- 挂载点
|
四、LVM 实战配置
4.1 安装 LVM 工具
1 2 3 4 5
| sudo apt install lvm2
sudo dnf install lvm2
|
4.2 创建物理卷
假设我们有两块新磁盘 /dev/sdb 和 /dev/sdc:
1 2 3 4 5 6
| sudo pvcreate /dev/sdb /dev/sdc
sudo pvs sudo pvdisplay
|
4.3 创建卷组
1 2 3 4 5 6
| sudo vgcreate data_vg /dev/sdb /dev/sdc
sudo vgs sudo vgdisplay
|
4.4 创建逻辑卷
1 2 3 4 5 6 7 8 9
| sudo lvcreate -n data_lv -L 100G data_vg
sudo lvcreate -n data_lv -l 100%FREE data_vg
sudo lvs sudo lvdisplay
|
4.5 格式化并挂载逻辑卷
1 2 3 4 5 6 7 8 9
| sudo mkfs.ext4 /dev/data_vg/data_lv
sudo mkdir -p /mnt/data sudo mount /dev/data_vg/data_lv /mnt/data
df -h | grep data_lv
|
4.6 配置开机挂载
1 2 3 4 5 6 7 8
| sudo blkid /dev/data_vg/data_lv
|
五、LVM 动态扩展与缩减
LVM 最大的优势在于可以在线调整逻辑卷大小,无需停机。
5.1 扩展逻辑卷
当空间不足时,可以轻松扩展:
1 2 3 4 5 6 7 8 9 10 11
| sudo lvextend -L +50G /dev/data_vg/data_lv
sudo lvextend -L 200G /dev/data_vg/data_lv
sudo lvextend -l +100%FREE /dev/data_vg/data_lv
sudo resize2fs /dev/data_vg/data_lv
|
5.2 扩展流程速查
1 2 3 4
| sudo lvextend -L +20G /dev/data_vg/data_lv sudo resize2fs /dev/data_vg/data_lv df -h
|
5.3 向卷组中添加新磁盘
当整个 VG 空间不够时,可以加入新磁盘:
1 2 3 4 5 6 7 8 9
| sudo pvcreate /dev/sdd
sudo vgextend data_vg /dev/sdd
sudo lvextend -l +100%FREE /dev/data_vg/data_lv sudo resize2fs /dev/data_vg/data_lv
|
5.4 缩减逻辑卷(谨慎操作)
重要:缩减操作有数据丢失风险,必须先卸载卷!xfs 文件系统不支持缩减。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
sudo umount /mnt/data
sudo e2fsck -f /dev/data_vg/data_lv
sudo resize2fs /dev/data_vg/data_lv 80G
sudo lvreduce -L 80G /dev/data_vg/data_lv
sudo mount /dev/data_vg/data_lv /mnt/data
|
六、LVM 快照
快照是 LVM 的另一个强大功能,可以在秒级创建数据的时间点副本,非常适合备份。
6.1 创建快照
1 2
| sudo lvcreate -s -n data_snap -L 10G /dev/data_vg/data_lv
|
6.2 使用快照进行备份
1 2 3 4 5 6 7 8 9 10
| sudo mkdir -p /mnt/snap sudo mount -o ro /dev/data_vg/data_snap /mnt/snap
sudo rsync -av /mnt/snap/ /backup/data/
sudo umount /mnt/snap sudo lvremove /dev/data_vg/data_snap
|
6.3 快照恢复
1 2 3 4 5
|
sudo umount /mnt/data sudo lvconvert --merge /dev/data_vg/data_snap
|
七、常用 LVM 管理命令速查
| 命令 | 说明 |
pvcreate /dev/sdb | 创建物理卷 |
pvdisplay | 查看物理卷详情 |
pvs | 简略查看物理卷 |
vgcreate vg1 /dev/sdb /dev/sdc | 创建卷组 |
vgdisplay | 查看卷组详情 |
vgs | 简略查看卷组 |
vgextend vg1 /dev/sdd | 扩展卷组 |
lvcreate -n lv1 -L 10G vg1 | 创建逻辑卷 |
lvdisplay | 查看逻辑卷详情 |
lvs | 简略查看逻辑卷 |
lvextend -L +10G /dev/vg1/lv1 | 扩展逻辑卷 |
lvreduce -L 20G /dev/vg1/lv1 | 缩减逻辑卷 |
lvremove /dev/vg1/lv1 | 删除逻辑卷 |
lvcreate -s -n snap -L 1G /dev/vg1/lv1 | 创建快照 |
lvconvert --merge /dev/vg1/snap | 合并快照 |
八、磁盘管理最佳实践
8.1 分区方案建议
- 系统盘(/):50-100GB,使用 ext4,分开挂载
/boot(1GB)
- 数据盘:使用 LVM 管理,分配全部剩余空间,按需创建 LV
- 日志分区:建议单独分区
/var/log,避免日志写满根分区
- swap:物理内存不足 2GB 时建议配置 swap 分区
8.2 LVM 使用建议
- 生产环境务必使用 LVM:便于未来扩容
- 预留一定比例的 VG 空闲空间:为紧急扩容留有余地
- 快照大小要合理:预计数据变化的 20-30% 即可
- 定期监控磁盘使用率:设置告警(>80%)
- xfs 文件系统只能扩展不能缩减:计划好初始大小
- 操作前先备份重要数据:特别是缩减操作
8.3 磁盘监控脚本
1 2 3 4 5 6 7 8 9 10 11 12 13
| #!/bin/bash
THRESHOLD=80
df -h | grep -vE '^Filesystem|tmpfs|devtmpfs' | awk '{print $5 " " $1}' | while read output; do usage=$(echo $output | awk '{print $1}' | sed 's/%//') partition=$(echo $output | awk '{print $2}')
if [ $usage -ge $THRESHOLD ]; then echo "警告: $partition 使用率已达 ${usage}%" fi done
|
结合 crontab 实现定期监控:
1 2
| */30 * * * * /usr/local/bin/disk_monitor.sh | mail -s "磁盘告警" admin@example.com
|
九、常见问题排查
9.1 磁盘空间不足
1 2 3 4 5 6
| du -sh /* 2>/dev/null | sort -rh | head -10 du -sh /var/* 2>/dev/null | sort -rh | head -10
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
|
9.2 磁盘 I/O 性能分析
1 2 3 4 5 6 7 8
| iostat -x 1 5
iotop
dstat -d --top-io --top-bio
|
9.3 LVM 元数据修复
1 2 3 4 5 6
| sudo vgck data_vg
sudo pvscan sudo vgcfgrestore data_vg
|
总结
本文系统地介绍了 Linux 磁盘管理的基础知识,从分区、文件系统到 LVM 的完整配置流程。LVM 作为 Linux 服务器磁盘管理的利器,其灵活的扩容缩容能力和快照功能可以极大地提升运维效率。
建议所有生产环境的服务器都使用 LVM 管理磁盘,这将在未来的扩容需求中为你节省大量时间和精力。
本文由AI辅助生成,内容仅供参考