Linux存储与文件系统
磁盘分区管理
分区工具
# fdisk分区工具(MBR分区表)
fdisk -l # 列出所有磁盘分区
fdisk /dev/sda # 对sda进行分区
# fdisk交互命令
# n - 新建分区
# d - 删除分区
# p - 打印分区表
# w - 写入分区表
# q - 退出不保存
# t - 修改分区类型
# gdisk分区工具(GPT分区表)
gdisk /dev/sda # GPT分区
# parted分区工具(支持两种分区表)
parted /dev/sda print # 打印分区信息
parted /dev/sda mklabel gpt # 创建GPT分区表
parted /dev/sda mkpart primary 0% 100% # 创建分区
分区类型
| 类型代码 | 类型名称 | 说明 |
|---|
| 83 | Linux | 默认Linux分区 |
| 82 | Linux swap | 交换分区 |
| 8e | Linux LVM | LVM物理卷 |
| fd | Linux RAID | 软RAID分区 |
| 07 | HPFS/NTFS | Windows NTFS分区 |
| EF00 | EFI System | EFI系统分区(GPT) |
文件系统管理
文件系统类型
| 文件系统 | 特点 | 适用场景 |
|---|
| ext4 | 日志式、稳定、兼容性好 | 通用场景 |
| XFS | 高性能、大文件支持好 | 大文件、高并发 |
| Btrfs | 快照、压缩、校验 | 需要数据保护 |
| NTFS | Windows兼容 | 双系统 |
| FAT32 | 兼容性最好 | U盘、共享 |
创建文件系统
# 格式化分区
mkfs.ext4 /dev/sda1 # 创建ext4文件系统
mkfs.xfs /dev/sda2 # 创建XFS文件系统
mkfs.vfat /dev/sdb1 # 创建FAT32文件系统
# 指定参数格式化
mkfs.ext4 -L "data" /dev/sda1 # 设置卷标
mkfs.ext4 -b 4096 /dev/sda1 # 设置块大小
# 创建交换分区
mkswap /dev/sda3 # 创建交换分区
swapon /dev/sda3 # 启用交换分区
swapoff /dev/sda3 # 禁用交换分区
文件系统检查
# 检查文件系统
e2fsck /dev/sda1 # 检查ext2/3/4文件系统
xfs_repair /dev/sda2 # 修复XFS文件系统
fsck /dev/sda1 # 通用检查命令
# 强制检查
e2fsck -f /dev/sda1 # 强制检查
e2fsck -y /dev/sda1 # 自动修复所有错误
查看文件系统信息
# 查看文件系统属性
dumpe2fs /dev/sda1 # 显示ext文件系统信息
xfs_info /dev/sda2 # 显示XFS文件系统信息
blkid # 显示所有块设备信息
lsblk -f # 显示文件系统类型
挂载管理
挂载命令
# 基本挂载
mount /dev/sda1 /mnt/data # 挂载分区
mount -t ext4 /dev/sda1 /mnt/data # 指定文件系统类型
# 挂载选项
mount -o ro /dev/sda1 /mnt/data # 只读挂载
mount -o noexec /dev/sda1 /mnt/data # 禁止执行
mount -o remount,rw /mnt/data # 重新挂载为读写
# 挂载ISO文件
mount -o loop image.iso /mnt/iso
# 卸载
umount /mnt/data # 卸载
umount -l /mnt/data # 懒卸载(强制)
/etc/fstab配置
# fstab格式
# <设备> <挂载点> <文件系统> <挂载选项> <dump> <fsck顺序>
/dev/sda1 / ext4 defaults 1 1
/dev/sda2 /home ext4 defaults 1 2
/dev/sda3 swap swap defaults 0 0
tmpfs /tmp tmpfs defaults 0 0
# 常用挂载选项
defaults # 默认选项(rw, suid, dev, exec, auto, nouser, async)
noatime # 不更新访问时间,提高性能
nodiratime # 不更新目录访问时间
user # 允许普通用户挂载
noauto # 不自动挂载
自动挂载(autofs)
# 安装autofs
apt install autofs # Debian/Ubuntu
yum install autofs # RHEL/CentOS
# 配置文件 /etc/auto.master
/mnt/net /etc/auto.nfs --timeout=60
# 配置文件 /etc/auto.nfs
data -fstype=nfs,rw 192.168.1.100:/data
# 重启服务
systemctl restart autofs
LVM逻辑卷管理
LVM基本概念
物理磁盘 (PV) → 卷组 (VG) → 逻辑卷 (LV) → 文件系统
PV物理卷管理
# 创建物理卷
pvcreate /dev/sda1 # 创建PV
pvcreate /dev/sdb1 /dev/sdc1 # 批量创建
# 查看物理卷
pvdisplay # 显示所有PV
pvs # 简要显示
pvdisplay /dev/sda1 # 显示指定PV
# 删除物理卷
pvremove /dev/sda1
VG卷组管理
# 创建卷组
vgcreate vg_data /dev/sda1 # 创建VG
vgcreate vg_data /dev/sda1 /dev/sdb1 # 使用多个PV
# 扩展卷组
vgextend vg_data /dev/sdc1 # 添加PV到VG
# 缩减卷组
vgreduce vg_data /dev/sdc1 # 从VG移除PV
# 查看卷组
vgdisplay # 显示所有VG
vgs # 简要显示
# 删除卷组
vgremove vg_data
LV逻辑卷管理
# 创建逻辑卷
lvcreate -L 100G -n lv_data vg_data # 创建100G逻辑卷
lvcreate -l 100%FREE -n lv_data vg_data # 使用所有剩余空间
# 扩展逻辑卷
lvextend -L +50G /dev/vg_data/lv_data # 扩展50G
lvextend -l +100%FREE /dev/vg_data/lv_data # 使用所有剩余空间
# 扩展文件系统
resize2fs /dev/vg_data/lv_data # 扩展ext4
xfs_growfs /mnt/data # 扩展XFS
# 缩减逻辑卷(需要先缩减文件系统)
resize2fs /dev/vg_data/lv_data 50G # 缩减ext4
lvreduce -L 50G /dev/vg_data/lv_data # 缩减LV
# 查看逻辑卷
lvdisplay # 显示所有LV
lvs # 简要显示
# 删除逻辑卷
lvremove /dev/vg_data/lv_data
LVM快照
# 创建快照
lvcreate -L 10G -s -n lv_snap /dev/vg_data/lv_data
# 恢复快照
lvconvert --merge /dev/vg_data/lv_snap
# 删除快照
lvremove /dev/vg_data/lv_snap
RAID磁盘阵列
软RAID配置
# 创建RAID阵列
mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sda1 /dev/sdb1 # RAID 0
mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sda1 /dev/sdb1 # RAID 1
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sda1 /dev/sdb1 /dev/sdc1 # RAID 5
mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sd[a-d]1 # RAID 10
# 查看RAID状态
cat /proc/mdstat # 查看RAID状态
mdadm --detail /dev/md0 # 详细信息
# 停止和启动RAID
mdadm --stop /dev/md0
mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1
# 添加热备盘
mdadm --add /dev/md0 /dev/sdd1
# 移除故障盘
mdadm --remove /dev/md0 /dev/sda1
# 标记故障盘
mdadm --fail /dev/md0 /dev/sda1
RAID级别对比
| RAID级别 | 最少磁盘 | 容错能力 | 空间利用率 | 性能 |
|---|
| RAID 0 | 2 | 无 | 100% | 最高 |
| RAID 1 | 2 | 有 | 50% | 读快写慢 |
| RAID 5 | 3 | 1盘 | (n-1)/n | 较好 |
| RAID 6 | 4 | 2盘 | (n-2)/n | 一般 |
| RAID 10 | 4 | 每组1盘 | 50% | 高 |
磁盘配额
启用配额
# 挂载时启用配额
mount -o usrquota,grpquota /dev/sda1 /home
# 或在fstab中添加
/dev/sda1 /home ext4 defaults,usrquota,grpquota 0 0
# 初始化配额数据库
quotacheck -cug /home
quotaon /home # 启用配额
设置配额
# 编辑用户配额
edquota username
# 配额格式
# Filesystem blocks soft hard inodes soft hard
# /dev/sda1 1000 8000 10000 100 800 1000
# 编辑组配额
edquota -g groupname
# 复制配额设置
edquota -p reference_user target_user
# 查看配额使用情况
quota username
repquota -a # 报告所有配额
磁盘性能监控
# 磁盘I/O统计
iostat # 基本统计
iostat -x # 扩展统计
iostat -x 1 # 每秒刷新
# 磁盘使用情况
df -h # 文件系统使用情况
du -sh /path # 目录大小
du -h --max-depth=1 /path # 一级子目录大小
# 查找大文件
find / -type f -size +100M 2>/dev/null | xargs ls -lh
# 磁盘性能测试
hdparm -t /dev/sda # 读取速度测试
💡 存储管理建议:
- 生产环境推荐使用LVM,便于动态扩展
- 重要数据使用RAID 1/5/10保护
- 定期检查文件系统健康状态
- 合理设置磁盘配额,防止用户占满磁盘
🔗 相关笔记: 02.03_系统管理 02.07_进程管理 11.01_性能优化