linux初级_磁盘管理

TJCcc 发布于 2025-11-07 26 次阅读


第一部分:磁盘分区

1. 分区基础概念

为什么要分区?

  • 隔离与组织:分离系统、程序、数据
  • 性能优化:减少I/O竞争
  • 安全控制:不同挂载选项增强安全
  • 简化备份:针对性备份重要数据
  • 多系统共存:支持多个操作系统
  • 限制影响:防止单个分区问题影响整个系统

2. 分区表类型

MBR(主引导记录)

# 查看MBR磁盘信息
sudo fdisk -l /dev/sda

# 特点:
# - 兼容性好,所有系统都支持
# - 最多4个主分区(或3主分区+1扩展分区)
# - 最大支持2.2TB磁盘
# - 分区表存储在第一个扇区

GPT(GUID分区表)

# 查看GPT磁盘信息
sudo gdisk -l /dev/sda

# 特点:
# - 现代标准,适用于UEFI
# - 最多128个分区(Linux默认)
# - 支持大于2.2TB的磁盘
# - 具有冗余校验,更健壮

3. 分区工具使用

fdisk(用于MBR)

# 进入交互式分区界面
sudo fdisk /dev/sdb

# 常用命令:
# n - 创建新分区
# d - 删除分区
# p - 显示分区表
# t - 更改分区类型
# w - 保存并退出
# q - 不保存退出

gdisk(用于GPT)

# 进入交互式分区界面
sudo gdisk /dev/sdb

# 常用命令与fdisk类似
# 分区类型代码:
# 8300 - Linux文件系统
# 8200 - Linux交换分区
# 8e00 - Linux LVM
# ef00 - EFI系统分区

parted(通用工具)

# 查看分区信息
sudo parted /dev/sda print

# 创建GPT分区表
sudo parted /dev/sda mklabel gpt

# 创建主分区
sudo parted /dev/sda mkpart primary ext4 0% 20G

# 创建交换分区
sudo parted /dev/sda mkpart primary linux-swap 20G 22G

4. 分区实战示例

创建GPT分区

# 1. 启动gdisk
sudo gdisk /dev/sdb

# 2. 创建新分区
Command: n
Partition number: [回车默认]
First sector: [回车默认]
Last sector: +20G  # 创建20G分区
Hex code: 8300     # Linux文件系统

# 3. 保存退出
Command: w

# 4. 重新读取分区表
sudo partprobe /dev/sdb

创建MBR分区

# 1. 启动fdisk
sudo fdisk /dev/sdb

# 2. 创建主分区
Command: n
Select: p    # 主分区
Partition number: 1
First sector: [回车默认]
Last sector: +20G

# 3. 更改分区类型(如需要LVM)
Command: t
Hex code: 8e  # Linux LVM

# 4. 保存退出
Command: w

第二部分:文件系统格式化

1. 常见文件系统类型

文件系统特点适用场景
ext4稳定可靠,功能完善通用Linux系统
XFS高性能,支持大文件大型文件服务器
Btrfs高级功能,写时复制需要快照功能的系统
swap交换分区虚拟内存

2. 格式化命令

创建文件系统

# 格式化为ext4
sudo mkfs.ext4 /dev/sdb1

# 格式化为XFS
sudo mkfs.xfs /dev/sdb1

# 创建交换分区
sudo mkswap /dev/sdb2
sudo swapon /dev/sdb2

# 带标签格式化(便于识别)
sudo mkfs.ext4 -L "mydata" /dev/sdb1

检查文件系统

# 检查ext4文件系统
sudo fsck.ext4 /dev/sdb1

# 检查XFS文件系统
sudo xfs_repair /dev/sdb1

# 查看文件系统信息
sudo blkid /dev/sdb1
sudo file -s /dev/sdb1

3. 挂载与管理

手动挂载

# 创建挂载点
sudo mkdir /mnt/mydata

# 临时挂载
sudo mount /dev/sdb1 /mnt/mydata

# 指定文件系统类型挂载
sudo mount -t ext4 /dev/sdb1 /mnt/mydata

# 卸载分区
sudo umount /mnt/mydata

自动挂载(/etc/fstab)

# 编辑fstab文件
sudo vim /etc/fstab

# 添加以下行(使用设备名):
/dev/sdb1   /mnt/mydata   ext4   defaults   0   0

# 推荐使用UUID(更稳定):
# 首先获取UUID
sudo blkid /dev/sdb1

# 然后在fstab中添加:
UUID=1234-5678   /mnt/mydata   ext4   defaults   0   0

# 验证fstab配置
sudo mount -a

常用挂载选项

# 只读挂载
/dev/sdb1   /mnt/mydata   ext4   ro   0   0

# 禁止执行程序
/dev/sdb1   /mnt/mydata   ext4   noexec   0   0

# 用户挂载
/dev/sdb1   /mnt/mydata   ext4   user,rw   0   0

# 性能优化选项
/dev/sdb1   /mnt/mydata   ext4   defaults,noatime,nodiratime   0   0

第三部分:RAID技术

1. RAID级别对比

级别最小磁盘容错容量读性能写性能场景
RAID 02N临时数据
RAID 12N/2系统盘
RAID 53N-1文件服务器
RAID 64N-2重要数据
RAID 104N/2数据库

2. mdadm工具使用

安装mdadm

# Ubuntu/Debian
sudo apt update && sudo apt install mdadm

# CentOS/RHEL
sudo yum install mdadm

创建RAID阵列

# 创建RAID 1
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc

# 创建RAID 5(3块数据盘+1块热备)
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde

# 查看创建进度
cat /proc/mdstat

管理RAID阵列

# 查看详细信息
sudo mdadm --detail /dev/md0

# 停止RAID阵列
sudo mdadm --stop /dev/md0

# 重新组装RAID
sudo mdadm --assemble /dev/md0 /dev/sdb /dev/sdc

# 扫描并组装所有RAID
sudo mdadm --assemble --scan

故障处理

# 标记磁盘故障
sudo mdadm /dev/md0 --fail /dev/sdb

# 移除故障磁盘
sudo mdadm /dev/md0 --remove /dev/sdb

# 添加新磁盘
sudo mdadm /dev/md0 --add /dev/sdd

# 查看重建进度
watch cat /proc/mdstat

3. RAID配置持久化

保存配置

# 扫描并保存配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf

# 更新initramfs
sudo update-initramfs -u

# 对于CentOS/RHEL
sudo mdadm --detail --scan > /etc/mdadm.conf
sudo dracut -H -f /boot/initramfs-$(uname -r).img $(uname -r)

自动挂载RAID

# 格式化RAID设备
sudo mkfs.ext4 /dev/md0

# 在fstab中添加
/dev/md0   /mnt/raid   ext4   defaults   0   0

第四部分:LVM逻辑卷管理

1. LVM基本概念

  • 物理卷:磁盘或分区
  • 卷组:物理卷的集合
  • 逻辑卷:从卷组划分的逻辑空间

2. LVM操作流程

# 1. 创建物理卷
sudo pvcreate /dev/sdb1 /dev/sdc1

# 2. 创建卷组
sudo vgcreate my_vg /dev/sdb1 /dev/sdc1

# 3. 创建逻辑卷
sudo lvcreate -L 50G -n my_lv my_vg

# 4. 格式化
sudo mkfs.ext4 /dev/my_vg/my_lv

# 5. 挂载使用
sudo mount /dev/my_vg/my_lv /mnt/lvm_data

3. LVM扩展操作

# 扩展物理卷(添加新磁盘)
sudo pvcreate /dev/sdd1
sudo vgextend my_vg /dev/sdd1

# 扩展逻辑卷
sudo lvextend -L +20G /dev/my_vg/my_lv

# 扩展文件系统(ext4)
sudo resize2fs /dev/my_vg/my_lv

# 扩展文件系统(XFS)
sudo xfs_growfs /mnt/lvm_data

第五部分:综合实战流程

完整的分区→格式化→挂载流程

# 1. 查看磁盘信息
lsblk
sudo fdisk -l

# 2. 创建分区(以GPT为例)
sudo gdisk /dev/sdb
# 在gdisk中:n → [回车] → [回车] → +20G → 8300 → w

# 3. 重新读取分区表
sudo partprobe /dev/sdb

# 4. 格式化分区
sudo mkfs.ext4 /dev/sdb1

# 5. 创建挂载点并挂载
sudo mkdir /mnt/mydata
sudo mount /dev/sdb1 /mnt/mydata

# 6. 配置自动挂载
sudo blkid /dev/sdb1
sudo vim /etc/fstab
# 添加:UUID=xxx /mnt/mydata ext4 defaults 0 0

# 7. 验证配置
sudo mount -a
df -h /mnt/mydata

完整的RAID创建流程

# 1. 为多块磁盘创建分区
for disk in sdb sdc sdd; do
    echo "分区磁盘 /dev/$disk"
    sudo gdisk /dev/$disk <<EOF
n
1


8300
w
Y
EOF
done

# 2. 创建RAID 5
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

# 3. 监控创建进度
watch cat /proc/mdstat

# 4. 持久化配置
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
sudo update-initramfs -u

# 5. 格式化和挂载
sudo mkfs.xfs /dev/md0
sudo mkdir /mnt/raid5
sudo mount /dev/md0 /mnt/raid5

# 6. 自动挂载
echo "/dev/md0 /mnt/raid5 xfs defaults 0 0" | sudo tee -a /etc/fstab

第六部分:最佳实践

1. 分区规划建议

  • 根分区:至少20-30GB
  • /home分区:用户数据,尽量大
  • /var分区:日志文件,中等大小
  • 交换分区:物理内存的1-2倍(现代系统可用交换文件)
  • EFI分区:512MB(UEFI系统必需)

2. 监控与维护命令

# 查看磁盘使用情况
df -h
lsblk

# 查看磁盘健康状态
sudo smartctl -a /dev/sda

# 检查文件系统
sudo fsck -f /dev/sdb1

# 监控RAID状态
cat /proc/mdstat
sudo mdadm --detail /dev/md0

# 查看LVM信息
sudo pvs
sudo vgs
sudo lvs

3. 重要提醒

  1. 操作前备份数据:分区、格式化会破坏数据
  2. 谨慎使用fdisk/gdisk的w命令:确认无误后再保存
  3. 验证fstab配置:使用mount -a测试
  4. RAID不是备份:仍需定期备份重要数据
  5. 监控磁盘健康:定期检查SMART状态

这份笔记涵盖了从基础分区到高级RAID配置的完整知识体系,建议在测试环境中实际操作以加深理解。