在 Linux 系统中,磁盘管理是系统管理的核心任务之一,涉及存储设备的识别、分区、格式化、挂载以及维护等操作。下面从基础到高级,详细为您下介绍 Linux 磁盘管理的各个方面:
- 磁盘(Drive):物理存储设备,如 HDD(机械硬盘)、SSD(固态硬盘)。
- 分区(Partition):磁盘的逻辑划分,可分为主分区(Primary)、扩展分区(Extended)和逻辑分区(Logical)。
- 文件系统(Filesystem):数据在分区上的组织方式,如
ext4
、XFS
、NTFS
等。
- 传统命名:
/dev/sdX
(SCSI/SATA 磁盘,如sda
、sdb
)。
- NVMe 命名:
/dev/nvmeXnY
(NVMe SSD,如nvme0n1
)。
- 虚拟磁盘:
/dev/vdX
(虚拟机环境,如vda
)。
df -h
du -sh /path/to/directory
sudo apt install iotop
sudo yum install iotop
sudo iotop
iostat -x 1
- MBR(主引导记录):
- 最大支持 2TB 磁盘
- 最多 4 个主分区或 3 主 + 1 扩展(包含多个逻辑分区)
- GPT(GUID 分区表):
- 支持超过 2TB 的磁盘
- 最多 128 个分区
- 包含冗余分区表和 UEFI 支持
sudo fdisk /dev/sdb
m
n
p
e
l
t
d
w
q
sudo parted /dev/sdb
mklabel gpt
mkpart primary
ext4
1MB
100GB
print
quit
- Linux 原生:
ext4
(稳定)、XFS
(高性能)、Btrfs
(支持快照)
- 跨平台:
NTFS
(Windows 兼容)、FAT32
(通用但不支持大文件)
sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb1
sudo mkfs.ntfs -f /dev/sdb1
sudo mkfs.ext4 -L "DATA_DISK" /dev/sdb1
sudo mkdir /mnt/data
sudo mount /dev/sdb1 /mnt/data
sudo mount -t ext4 /dev/sdb1 /mnt/data
sudo mount /dev/cdrom /media/cdrom
sudo umount /mnt/data
sudo umount -f /mnt/data
sudo umount /path/to/mountpoint
mount
findmnt
findmnt /dev/sdb1
sudo cp /etc/fstab /etc/fstab.bak
sudo nano /etc/fstab
UUID=1234-abcd /mnt/data ext4 defaults 0 0
sudo mount -a
sudo mount -a -v
LVM 允许动态调整分区大小,适合经常变化的存储需求。
sudo pvcreate /dev/sdb /dev/sdc
sudo vgcreate vg_data /dev/sdb /dev/sdc
sudo lvcreate -L 50G -n lv_data vg_data
sudo mkfs.ext4 /dev/vg_data/lv_data
sudo mount /dev/vg_data/lv_data /mnt/data
sudo lvextend -L +20G /dev/vg_data/lv_data
sudo resize2fs /dev/vg_data/lv_data
sudo xfs_growfs /mnt/data
RAID 提供数据冗余或性能提升。
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
sudo mdadm --detail /dev/md0
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
/swapfile none swap defaults 0 0
swapon -s
free -h
sudo e2fsck -f /dev/sdb1
sudo xfs_repair /dev/sdb1
sudo badblocks -v -w -s /dev/sdb
- 调整 I/O 调度器(SSD 推荐
noop
或mq-deadline
):
echo mq-deadline | sudo tee /sys/block/sda/queue/scheduler
- 禁用不必要的日志(XFS 默认无日志,ext4 可调整):
mount -o data=writeback /dev/sdb1
- 数据备份:操作前务必备份重要数据。
- 权限控制:磁盘管理命令通常需要 root 权限,使用
sudo
时需谨慎。
- 生产环境:在生产系统操作前,建议在测试环境验证。
- 大磁盘支持:超过 2TB 的磁盘必须使用 GPT 分区表。
功能 |
命令示例 |
备注 |
查看磁盘信息 |
lsblk , fdisk -l , df -h |
|
分区 |
fdisk /dev/sdb , parted /dev/sdb |
MBR 用 fdisk,GPT 用 parted |
格式化 |
mkfs.ext4 /dev/sdb1 |
|
挂载 / 卸载 |
mount /dev/sdb1 /mnt , umount /mnt |
|
自动挂载 |
编辑/etc/fstab |
使用 UUID 而非设备名 |
LVM 管理 |
pvcreate , vgcreate , lvcreate |
|
RAID 管理 |
mdadm --create /dev/md0 |
|
性能监控 |
iotop , iostat , hdparm -tT |
|
通过以上命令和步骤,你就可以完成 Linux 系统中大部分的磁盘管理任务了。