2026-01-23
最近更新:Linux基础教程 第18课:Linux云计算基础
2026-01-23
2026-01-23
2026-01-23
最近更新:Linux基础教程 第15课:Linux内核和驱动管理
2026-01-21
浏览量:25 次 发布时间:2026-01-18 14:49 作者:明扬工控商城 下载docx
2026-01-23
最近更新:Linux基础教程 第18课:Linux云计算基础
2026-01-23
2026-01-23
2026-01-23
最近更新:Linux基础教程 第15课:Linux内核和驱动管理
2026-01-21
好的,我们继续第九课。今天学习Linux的磁盘管理和文件系统,这是系统管理的重要技能。
第一部分:磁盘基础概念
1.1 磁盘设备命名
在Linux中,一切皆文件,磁盘设备也以文件形式存在。
bash
# 查看所有磁盘设备
ls /dev/sd* # SATA/SCSI磁盘
ls /dev/hd* # IDE磁盘(老式)
ls /dev/nvme* # NVMe固态硬盘
# 设备命名规则:
# /dev/sda 第一块SATA磁盘
# /dev/sda1 第一块磁盘的第一个分区
# /dev/sda2 第一块磁盘的第二个分区
# /dev/sdb 第二块SATA磁盘
1.2 查看磁盘信息
bash
# 查看所有磁盘和分区
sudo fdisk -l
# 查看磁盘使用情况(最常用)
df -h
df -Th # 显示文件系统类型
# 以可读格式显示磁盘空间
du -sh /home # 查看目录大小
du -ah /home | sort -rh | head -10 # 查看最大文件
# 查看磁盘和分区树状结构
lsblk
lsblk -f # 显示文件系统信息
# 查看磁盘详细信息
sudo hdparm -I /dev/sda # 查看SATA磁盘信息
第二部分:磁盘分区
2.1 使用fdisk分区
fdisk是传统的分区工具,支持MBR分区表(最多4个主分区)。
bash
# 查看磁盘分区
sudo fdisk -l /dev/sda
# 对磁盘进行分区(以/dev/sdb为例)
sudo fdisk /dev/sdb
fdisk交互命令:
m:显示帮助菜单
p:显示分区表
n:创建新分区
d:删除分区
t:更改分区类型
w:保存并退出
q:不保存退出
实际操作演示:
bash
# 假设我们要在/dev/sdb上创建两个分区
sudo fdisk /dev/sdb
# 在fdisk中依次输入:
# n (新建分区)
# p (主分区)
# 1 (分区号1)
# 回车 (起始扇区,默认)
# +10G (分区大小,10GB)
# n (再新建分区)
# p (主分区)
# 2 (分区号2)
# 回车 (起始扇区,默认)
# 回车 (使用所有剩余空间)
# w (保存并退出)
# 让内核重新读取分区表
sudo partprobe /dev/sdb
2.2 使用parted分区
parted支持GPT分区表,适合大容量磁盘(>2TB)。
bash
# 启动parted
sudo parted /dev/sdb
# parted常用命令:
(parted) print # 显示当前分区
(parted) mklabel gpt # 创建GPT分区表(会清除所有数据!)
(parted) mkpart primary ext4 1MiB 10GiB # 创建分区
(parted) set 1 boot on # 设置启动标志
(parted) quit # 退出
# 或使用命令行模式
sudo parted /dev/sdb mklabel gpt
sudo parted /dev/sdb mkpart primary ext4 1MiB 10GiB
2.3 使用gdisk分区
gdisk是专门用于GPT分区表的工具。
bash
sudo gdisk /dev/sdb
# 操作类似fdisk,但支持GPT
第三部分:文件系统创建与管理
3.1 创建文件系统(格式化)
分区后需要创建文件系统才能使用。
bash
# 创建ext4文件系统(最常用)
sudo mkfs.ext4 /dev/sdb1
# 创建xfs文件系统(高性能)
sudo mkfs.xfs /dev/sdb1
# 创建FAT32文件系统(兼容Windows)
sudo mkfs.fat -F32 /dev/sdb1
# 创建NTFS文件系统(需要安装ntfs-3g)
sudo apt install ntfs-3g
sudo mkfs.ntfs /dev/sdb1
# 创建交换分区
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2 # 启用交换分区
3.2 查看文件系统信息
bash
# 查看文件系统类型
sudo blkid /dev/sdb1
# 查看ext4文件系统详细信息
sudo tune2fs -l /dev/sdb1
# 查看xfs文件系统信息
sudo xfs_info /dev/sdb1
# 检查文件系统错误
sudo fsck /dev/sdb1
sudo e2fsck -f /dev/sdb1 # ext文件系统检查
3.3 调整文件系统大小
bash
# 扩展ext2/3/4文件系统(需要先扩展分区)
sudo resize2fs /dev/sdb1
# 扩展xfs文件系统
sudo xfs_growfs /mount/point
# 缩小ext文件系统(危险!需要先卸载)
sudo umount /dev/sdb1
sudo e2fsck -f /dev/sdb1
sudo resize2fs /dev/sdb1 5G # 缩小到5G
第四部分:挂载文件系统
4.1 手动挂载
bash
# 创建挂载点
sudo mkdir /mnt/mydisk
# 挂载分区
sudo mount /dev/sdb1 /mnt/mydisk
# 查看挂载情况
mount | grep /mnt/mydisk
df -h /mnt/mydisk
# 卸载分区
sudo umount /mnt/mydisk
# 或
sudo umount /dev/sdb1
4.2 自动挂载(/etc/fstab)
编辑fstab文件让系统启动时自动挂载。
bash
# 备份fstab
sudo cp /etc/fstab /etc/fstab.backup
# 编辑fstab
sudo vim /etc/fstab
fstab文件格式:
text
设备文件 挂载点 文件系统类型 挂载选项 dump fsck
示例:
text
# 使用设备名(不推荐,可能变化)
/dev/sdb1 /mnt/mydisk ext4 defaults 0 0
# 使用UUID(推荐)
UUID=12345678-1234-1234-1234-123456789012 /mnt/mydisk ext4 defaults 0 0
# 使用卷标
LABEL=MyData /mnt/mydisk ext4 defaults 0 0
获取UUID:
bash
sudo blkid
ls -l /dev/disk/by-uuid/
测试fstab配置:
bash
# 挂载所有fstab中的分区
sudo mount -a
# 检查是否有错误
sudo mount -a 2>&1 | grep -i error
4.3 挂载选项
bash
# 只读挂载
sudo mount -o ro /dev/sdb1 /mnt/mydisk
# 允许执行二进制文件
sudo mount -o exec /dev/sdb1 /mnt/mydisk
# 禁止执行二进制文件(安全)
sudo mount -o noexec /dev/sdb1 /mnt/mydisk
# 允许用户挂载
sudo mount -o user /dev/sdb1 /mnt/mydisk
# 多个选项组合
sudo mount -o defaults,noexec,nosuid /dev/sdb1 /mnt/mydisk
第五部分:交换空间管理
5.1 创建交换文件
bash
# 创建交换文件(2GB大小)
sudo fallocate -l 2G /swapfile
# 如果fallocate失败,使用dd
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
# 设置权限
sudo chmod 600 /swapfile
# 格式化为交换空间
sudo mkswap /swapfile
# 启用交换文件
sudo swapon /swapfile
# 查看交换空间
free -h
swapon --show
5.2 永久启用交换文件
bash
# 编辑fstab
sudo vim /etc/fstab
# 添加一行
/swapfile none swap sw 0 0
# 或者用UUID
sudo findmnt -no SOURCE /swapfile | xargs sudo swaplabel -U | cut -d' ' -f3
# 将输出的UUID添加到fstab
5.3 调整交换空间使用倾向
bash
# 查看当前swappiness值(0-100)
cat /proc/sys/vm/swappiness
# 临时修改
sudo sysctl vm.swappiness=10
# 永久修改
sudo vim /etc/sysctl.conf
# 添加:vm.swappiness=10
sudo sysctl -p
第六部分:逻辑卷管理(LVM)
6.1 LVM基本概念
PV:物理卷(Physical Volume)
VG:卷组(Volume Group)
LV:逻辑卷(Logical Volume)
6.2 创建LVM
bash
# 安装LVM工具
sudo apt install lvm2
# 创建物理卷
sudo pvcreate /dev/sdb1
sudo pvcreate /dev/sdc1
# 查看物理卷
sudo pvdisplay
sudo pvs
# 创建卷组
sudo vgcreate myvg /dev/sdb1 /dev/sdc1
# 查看卷组
sudo vgdisplay
sudo vgs
# 创建逻辑卷
sudo lvcreate -L 20G -n mylv myvg # 创建20G的逻辑卷
sudo lvcreate -l 100%FREE -n datalv myvg # 使用所有剩余空间
# 查看逻辑卷
sudo lvdisplay
sudo lvs
# 创建文件系统
sudo mkfs.ext4 /dev/myvg/mylv
6.3 扩展LVM
bash
# 扩展卷组(添加新物理卷)
sudo vgextend myvg /dev/sdd1
# 扩展逻辑卷
sudo lvextend -L +10G /dev/myvg/mylv # 增加10G
sudo lvextend -l +100%FREE /dev/myvg/mylv # 使用所有空闲空间
# 扩展文件系统(ext4)
sudo resize2fs /dev/myvg/mylv
# 扩展文件系统(xfs)
sudo xfs_growfs /dev/myvg/mylv
6.4 缩小LVM(谨慎!)
bash
# 先备份数据!
# 卸载文件系统
sudo umount /dev/myvg/mylv
# 检查文件系统
sudo e2fsck -f /dev/myvg/mylv
# 缩小文件系统
sudo resize2fs /dev/myvg/mylv 10G
# 缩小逻辑卷
sudo lvreduce -L 10G /dev/myvg/mylv
# 重新挂载
sudo mount /dev/myvg/mylv /mnt/mylv
第七部分:磁盘配额
7.1 启用磁盘配额
bash
# 安装配额工具
sudo apt install quota
# 编辑fstab,在挂载选项中添加usrquota,grpquota
# 例如:UUID=... /home ext4 defaults,usrquota,grpquota 0 0
# 重新挂载文件系统
sudo mount -o remount /home
# 创建配额数据库
sudo quotacheck -cug /home
sudo quotacheck -avugm
# 启用配额
sudo quotaon -av
7.2 设置用户配额
bash
# 编辑用户配额
sudo edquota -u username
# 会打开编辑器,内容类似:
# Disk quotas for user username (uid 1000):
# Filesystem blocks soft hard inodes soft hard
# /dev/sda1 24 0 0 3 0 0
# blocks: 已使用的磁盘空间(单位:KB)
# soft: 软限制(超过会有警告,宽限期后禁止)
# hard: 硬限制(绝对禁止超过)
# inodes: 文件数量限制
# 设置示例(限制100MB软限制,120MB硬限制):
# /dev/sda1 24 102400 122880 3 0 0
# 设置宽限期(默认7天)
sudo edquota -t
# 复制配额设置到其他用户
sudo edquota -p username user2 user3 user4
7.3 查看配额信息
bash
# 查看用户配额
sudo quota -u username
# 查看所有用户配额报告
sudo repquota /home
# 查看自己的配额
quota
第八部分:RAID管理
8.1 软件RAID
bash
# 安装mdadm
sudo apt install mdadm
# 创建RAID1(镜像)
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
# 创建文件系统
sudo mkfs.ext4 /dev/md0
# 查看RAID状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0
# 保存RAID配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u
# 挂载使用
sudo mkdir /mnt/raid1
sudo mount /dev/md0 /mnt/raid1
8.2 管理RAID
bash
# 添加热备盘
sudo mdadm /dev/md0 --add /dev/sdd
# 从RAID中移除故障磁盘
sudo mdadm /dev/md0 --remove /dev/sdb
# 停止RAID
sudo mdadm --stop /dev/md0
# 重新组装RAID
sudo mdadm --assemble /dev/md0 /dev/sdb /dev/sdc
第九部分:练习任务
练习1:磁盘分区和挂载
使用fdisk在第二块磁盘上创建三个分区:
一个10G的ext4分区
一个5G的xfs分区
一个2G的交换分区
创建文件系统并挂载到不同目录
配置自动挂载
练习2:LVM实践
创建两个物理卷
创建一个卷组
创建两个逻辑卷(一个10G,一个使用剩余空间)
扩展第一个逻辑卷
创建快照(lvcreate -s)
练习3:磁盘配额
在/home分区启用配额
为两个用户设置不同的磁盘限制
测试配额是否生效
练习4:RAID配置
创建RAID0(条带化,提高性能)
创建RAID1(镜像,提高可靠性)
比较两者的性能和容错能力
第十部分:故障排除
10.1 磁盘空间不足
bash
# 查找大文件
sudo find / -type f -size +100M 2>/dev/null | xargs ls -lh
# 查找大目录
sudo du -sh /* 2>/dev/null | sort -rh | head -20
# 清理缓存
sudo apt clean # 清理软件包缓存
sudo journalctl --vacuum-time=7d # 清理7天前的日志
# 查找并删除重复文件
sudo fdupes -r /home
10.2 文件系统损坏
bash
# 检查文件系统(必须先卸载)
sudo umount /dev/sdb1
sudo fsck /dev/sdb1
# 修复ext文件系统
sudo e2fsck -f -y /dev/sdb1
# 修复xfs文件系统
sudo xfs_repair /dev/sdb1
# 检查磁盘坏道
sudo badblocks -v /dev/sdb
10.3 恢复误删文件
bash
# 安装恢复工具
sudo apt install extundelete # 用于ext文件系统
sudo apt install testdisk # 通用恢复工具
# 停止写入数据,立即恢复
sudo umount /dev/sdb1
sudo extundelete /dev/sdb1 --restore-all
今日总结
今天我们学习了:
磁盘基础知识:设备命名、查看磁盘信息
磁盘分区:使用fdisk、parted、gdisk
文件系统:创建、管理、调整大小
挂载管理:手动挂载、自动挂载、挂载选项
交换空间:创建和管理swap
LVM:物理卷、卷组、逻辑卷的管理
磁盘配额:限制用户磁盘使用
RAID:软件RAID的配置和管理
重要提醒:
操作磁盘前一定要备份重要数据
修改分区表可能造成数据丢失
LVM缩小操作要特别小心
生产环境操作前先在测试环境练习
这些技能对于系统管理员来说至关重要。建议在虚拟机中多加练习,熟悉每个命令的用法。
有问题吗?完成练习后,我们可以继续第十课:安全基础和权限管理。
将本文的Word文档下载到电脑
推荐度: