带你了解如何进行Linux磁盘管理

在 Linux 系统中,磁盘管理是系统管理的核心任务之一,涉及存储设备的识别、分区、格式化、挂载以及维护等操作。下面从基础到高级,详细为您下介绍 Linux 磁盘管理的各个方面:

一、磁盘基础概念

1. 物理存储结构

  • 磁盘(Drive):物理存储设备,如 HDD(机械硬盘)、SSD(固态硬盘)。
  • 分区(Partition):磁盘的逻辑划分,可分为主分区(Primary)、扩展分区(Extended)和逻辑分区(Logical)。
  • 文件系统(Filesystem):数据在分区上的组织方式,如ext4XFSNTFS等。

2. 设备命名规则

  • 传统命名/dev/sdX(SCSI/SATA 磁盘,如sdasdb)。
  • NVMe 命名/dev/nvmeXnY(NVMe SSD,如nvme0n1)。
  • 虚拟磁盘/dev/vdX(虚拟机环境,如vda)。

二、查看磁盘信息

1. 识别物理磁盘

# 查看所有块设备(磁盘和分区)
lsblk

# 输出示例:
# NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
# sda      8:0    0 465.8G  0 disk 
# ├─sda1   8:1    0   512M  0 part /boot/efi
# ├─sda2   8:2    0     1G  0 part /boot
# └─sda3   8:3    0 464.3G  0 part /

# 查看详细磁盘信息(包括分区表)
fdisk -l

# 查看磁盘UUID和文件系统
lsblk -f
2. 查看磁盘使用情况
# 查看已挂载磁盘的使用情况(-h:人类可读格式)
df -h

# 查看目录占用空间(-s:汇总,-h:人类可读)
du -sh /path/to/directory
3. 监控磁盘 I/O 性能
# 安装iotop工具(需root权限)
sudo apt install iotop  # Debian/Ubuntu
sudo yum install iotop  # CentOS/RHEL

# 实时监控磁盘I/O
sudo iotop

# 使用iostat查看磁盘I/O统计(需安装sysstat包)
iostat -x 1  # 每秒更新一次
三、磁盘分区

1. MBR vs GPT 分区表

  • MBR(主引导记录)
    • 最大支持 2TB 磁盘
    • 最多 4 个主分区或 3 主 + 1 扩展(包含多个逻辑分区)
  • GPT(GUID 分区表)
    • 支持超过 2TB 的磁盘
    • 最多 128 个分区
    • 包含冗余分区表和 UEFI 支持

2. 使用fdisk分区(MBR/GPT)

# 对/dev/sdb进行分区(需root权限)
sudo fdisk /dev/sdb

# fdisk交互命令:
m    # 显示帮助菜单
n    # 创建新分区
p    # 选择主分区(1-4)
e    # 选择扩展分区
l    # 列出可用分区类型(如83=Linux, 82=Swap)
t    # 更改分区类型
d    # 删除分区
w    # 保存并退出
q    # 不保存退出
3. 使用parted分区(推荐 GPT)
# 对/dev/sdb进行GPT分区(需root权限)
sudo parted /dev/sdb

# parted交互命令:
mklabel gpt       # 创建GPT分区表
mkpart primary    # 创建主分区
    ext4          # 文件系统类型
    1MB           # 起始位置
    100GB         # 结束位置(或100%表示占满)
print             # 显示分区表
quit              # 退出
四、格式化文件系统

1. 常见文件系统类型

  • Linux 原生ext4(稳定)、XFS(高性能)、Btrfs(支持快照)
  • 跨平台NTFS(Windows 兼容)、FAT32(通用但不支持大文件)

2. 格式化命令

# 格式化为ext4文件系统
sudo mkfs.ext4 /dev/sdb1

# 格式化为XFS文件系统(需指定LVM卷组时常用)
sudo mkfs.xfs /dev/sdb1

# 格式化为NTFS(需安装ntfs-3g包)
sudo mkfs.ntfs -f /dev/sdb1

# 格式化时设置卷标
sudo mkfs.ext4 -L "DATA_DISK" /dev/sdb1
五、挂载与卸载磁盘

1. 临时挂载(重启失效)

# 创建挂载点目录
sudo mkdir /mnt/data

# 挂载分区到/mnt/data
sudo mount /dev/sdb1 /mnt/data

# 挂载时指定文件系统类型(可选)
sudo mount -t ext4 /dev/sdb1 /mnt/data

# 挂载CD-ROM/DVD
sudo mount /dev/cdrom /media/cdrom
2. 卸载磁盘
# 卸载/mnt/data(确保无人使用)
sudo umount /mnt/data

# 强制卸载(谨慎使用)
sudo umount -f /mnt/data

# 按挂载点路径卸载(推荐)
sudo umount /path/to/mountpoint
3. 查看挂载信息
# 查看当前挂载情况
mount

# 查看更友好的挂载信息
findmnt

# 查看特定设备的挂载点
findmnt /dev/sdb1
六、开机自动挂载(/etc/fstab)

1. 编辑 fstab 文件

# 备份原文件
sudo cp /etc/fstab /etc/fstab.bak

# 编辑fstab(推荐使用UUID而非设备名)
sudo nano /etc/fstab

# 添加一行(格式:<设备> <挂载点> <文件系统> <选项> <转储> <检查>)
UUID=1234-abcd  /mnt/data  ext4  defaults  0 0
2. 获取 UUID
# 方法1:使用blkid命令
blkid /dev/sdb1

# 方法2:从lsblk查看
lsblk -f
3. 测试 fstab 配置
# 检查语法错误
sudo mount -a  # 若无错误,配置正确

# 重新挂载所有分区
sudo mount -a -v  # 详细输出挂载过程
七、高级磁盘管理

1. LVM(逻辑卷管理)

LVM 允许动态调整分区大小,适合经常变化的存储需求。
# 1. 创建物理卷
sudo pvcreate /dev/sdb /dev/sdc

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

# 3. 创建逻辑卷
sudo lvcreate -L 50G -n lv_data vg_data

# 4. 格式化并挂载
sudo mkfs.ext4 /dev/vg_data/lv_data
sudo mount /dev/vg_data/lv_data /mnt/data

# 5. 扩展逻辑卷
sudo lvextend -L +20G /dev/vg_data/lv_data
sudo resize2fs /dev/vg_data/lv_data  # ext4
sudo xfs_growfs /mnt/data            # XFS
2. RAID 配置(mdadm)
RAID 提供数据冗余或性能提升。
# 创建RAID1(镜像)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 格式化并挂载
sudo mkfs.ext4 /dev/md0
sudo mount /dev/md0 /mnt/raid

# 查看RAID状态
sudo mdadm --detail /dev/md0
3. SWAP 空间管理
# 创建swap文件
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 永久启用(添加到fstab)
/swapfile none swap defaults 0 0

# 查看swap使用情况
swapon -s
free -h
八、磁盘维护与故障排除

1. 检查和修复文件系统

# 卸载分区后检查ext4
sudo e2fsck -f /dev/sdb1

# 在线检查XFS(只能修复日志)
sudo xfs_repair /dev/sdb1
2. 坏道检测
# 扫描并尝试修复坏扇区(谨慎使用,可能耗时很久)
sudo badblocks -v -w -s /dev/sdb
3. 磁盘性能优化
  • 调整 I/O 调度器(SSD 推荐noopmq-deadline):
    echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
    
  • 禁用不必要的日志(XFS 默认无日志,ext4 可调整):
    mount -o data=writeback /dev/sdb1
    

九、安全注意事项

  1. 数据备份:操作前务必备份重要数据。
  2. 权限控制:磁盘管理命令通常需要 root 权限,使用sudo时需谨慎。
  3. 生产环境:在生产系统操作前,建议在测试环境验证。
  4. 大磁盘支持:超过 2TB 的磁盘必须使用 GPT 分区表。

十、常用工具速查表

功能 命令示例 备注
查看磁盘信息 lsblkfdisk -ldf -h
分区 fdisk /dev/sdbparted /dev/sdb MBR 用 fdisk,GPT 用 parted
格式化 mkfs.ext4 /dev/sdb1
挂载 / 卸载 mount /dev/sdb1 /mntumount /mnt
自动挂载 编辑/etc/fstab 使用 UUID 而非设备名
LVM 管理 pvcreatevgcreatelvcreate
RAID 管理 mdadm --create /dev/md0
性能监控 iotopiostathdparm -tT
通过以上命令和步骤,你就可以完成 Linux 系统中大部分的磁盘管理任务了。
阅读剩余
THE END