本文档全面介绍了服务器磁盘管理的完整流程,包括磁盘分区、文件系统格式化、挂载配置以及性能优化和数据安全最佳实践。
目录
磁盘管理基础 查看磁盘列表 方法一:使用 fdisk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sudo fdisk -lDisk /dev/vda: 107.4 GB, 107374182400 bytes, 209715200 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk label type : dos Disk identifier: 0x000cbc62 Device Boot Start End Blocks Id System /dev/vda1 * 2048 209715166 104856559+ 83 Linux Disk /dev/vdb: 536.9 GB, 536870912000 bytes, 1048576000 sectors
方法二:使用 lsblk 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT vda 253:0 0 100G 0 disk └─vda1 253:1 0 100G 0 part / vdb 253:16 0 500G 0 disk └─vdb1 253:17 0 500G 0 part /data lsblk -d lsblk -o NAME,SIZE,TYPE,MOUNTPOINT,FSTYPE
方法三:使用 df 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 df -lhFilesystem Size Used Avail Use% Mounted on devtmpfs 12G 0 12G 0% /dev tmpfs 12G 0 12G 0% /dev/shm tmpfs 12G 34M 12G 1% /run tmpfs 12G 0 12G 0% /sys/fs/cgroup /dev/vda1 100G 4.7G 96G 5% / /dev/vdb1 493G 12G 456G 3% /data df -Thdf -i
方法四:使用 ls /dev 1 2 3 4 5 ls -l /dev/vd*ls -l /dev/sd*
磁盘分区工具对比
工具
支持磁盘大小
分区数量
分区表类型
适用场景
fdisk
< 2TB
最多 4 个主分区
MBR
传统磁盘,小容量磁盘
parted
> 2TB
最多 128 个主分区
GPT
大容量磁盘,UEFI 启动
gdisk
> 2TB
最多 128 个主分区
GPT
大容量磁盘,MBR 转 GPT
cfdisk
< 2TB
最多 4 个主分区
MBR
交互式分区,界面友好
磁盘分区操作 使用 fdisk 分区 基本分区操作 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 sudo fdisk /dev/vdbn p e l w q d m p t a
自动化分区脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #!/bin/bash DISK="/dev/vdb" sudo fdisk $DISK << EOF n p 1 w EOF sleep 2sudo mkfs -t ext4 ${DISK} 1echo "分区完成: ${DISK} 1"
使用 parted 分区 parted 基本操作 1 2 3 4 5 6 7 8 9 10 sudo parted /dev/vdbmklabel gpt mklabel msdos mkpart primary 0% 100% rm 1 print quit
parted 自动化脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #!/bin/bash DISK="/dev/vdb" sudo parted -s $DISK mklabel gptsudo parted -s $DISK mkpart primary 0% 100%sudo parted -s $DISK set 1 boot onsudo parted $DISK print echo "分区完成"
使用 gdisk 分区 gdisk 基本操作 1 2 3 4 5 6 7 8 9 10 11 sudo gdisk /dev/vdbn p w q d t l
MBR 转 GPT 1 2 3 4 5 6 7 8 sudo gdisk /dev/sdar g w y
文件系统格式化 ext4 文件系统 ext4 特点
稳定性高 :经过长期验证,稳定性好
兼容性好 :几乎所有 Linux 发行版都支持
性能均衡 :在各种场景下都有良好的性能表现
支持大文件 :支持最大 16TB 的文件和 1EB 的文件系统
ext4 格式化命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sudo mkfs.ext4 /dev/vdb1sudo mkfs.ext4 -L data /dev/vdb1sudo mkfs.ext4 -b 4096 /dev/vdb1sudo mkfs.ext4 -I 512 /dev/vdb1sudo mkfs.ext4 -m 1 /dev/vdb1sudo mkfs.ext4 -O ^has_journal /dev/vdb1sudo mkfs.ext4 -E lazy_itable_init=1 /dev/vdb1
xfs 文件系统 xfs 特点
高性能 :特别适合大文件和高并发场景
在线扩展 :支持在线扩展文件系统大小
快速格式化 :格式化速度比 ext4 快
适合大容量磁盘 :适合 1TB 以上的磁盘
xfs 格式化命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sudo mkfs.xfs /dev/vdb1sudo mkfs.xfs -L data /dev/vdb1sudo mkfs.xfs -b size=4096 /dev/vdb1sudo mkfs.xfs -l size=512m /dev/vdb1sudo mkfs.xfs -i size=1024 /dev/vdb1sudo mkfs.xfs -l lazy-count=1 /dev/vdb1
btrfs 文件系统 btrfs 特点
快照功能 :支持创建文件系统快照
压缩功能 :支持透明压缩
校验和 :自动校验数据完整性
在线扩展和收缩 :支持在线调整文件系统大小
多设备支持 :支持 RAID 配置
btrfs 格式化命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 sudo mkfs.btrfs /dev/vdb1sudo mkfs.btrfs -L data /dev/vdb1sudo mkfs.btrfs -c zstd /dev/vdb1sudo mkfs.btrfs -s 4096 /dev/vdb1sudo mkfs.btrfs -d raid1 /dev/vdb1 /dev/vdb2
文件系统选择建议 不同场景的文件系统选择
场景
推荐文件系统
说明
系统盘
ext4
稳定性好,兼容性佳
数据盘
xfs
性能好,适合大文件
数据库
xfs/ext4
根据数据库类型选择
虚拟化
xfs
支持大文件和高性能
备份存储
ext4/btrfs
稳定性优先
媒体存储
xfs
大文件性能好
开发测试
btrfs
快照功能方便
选择建议
系统盘 :推荐使用 ext4,稳定性好,兼容性佳
数据盘 :推荐使用 xfs,性能好,适合大文件
数据库 :MySQL 推荐 ext4,PostgreSQL 推荐 xfs
虚拟化 :推荐使用 xfs,支持大文件和高性能
备份存储 :推荐使用 ext4 或 btrfs,稳定性优先
挂载配置 临时挂载 基本挂载命令 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 sudo mount /dev/vdb1 /datasudo mount -t ext4 /dev/vdb1 /datasudo mount -o ro /dev/vdb1 /datasudo mount -o rw /dev/vdb1 /datasudo mount -o noatime /dev/vdb1 /datasudo mount -o nodiratime /dev/vdb1 /datasudo mount -o noatime,nodiratime /dev/vdb1 /data
挂载选项说明
选项
说明
适用场景
noatime
禁用访问时间更新
高性能场景
nodiratime
禁用目录访问时间更新
性能优化
relatime
相对访问时间更新
平衡性能和兼容性
async
异步写入
性能优先
sync
同步写入
数据安全优先
defaults
默认选项
一般用途
永久挂载 使用 UUID 挂载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 sudo blkid /dev/vdb1/dev/vdb1: UUID="99cfbb8f-0441-4469-a8fd-e85f8d2a2100" TYPE="ext4" sudo vi /etc/fstabUUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime 0 0 sudo mount -adf -lh
使用设备名称挂载 1 2 3 4 5 sudo vi /etc/fstab/dev/vdb1 /data ext4 defaults,noatime 0 0
挂载选项示例 1 2 3 4 5 6 7 8 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,nodiratime 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,data=journal 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,nobarrier 0 0
挂载选项优化 性能优化挂载选项 1 2 3 4 5 6 7 8 9 10 11 noatime,nodiratime noatime,nodiratime,nobarrier noatime,nodiratime,nobarrier,commit=1 noatime,nodiratime,nobarrier,commit=10,readahead=4096
安全挂载选项 1 2 3 4 5 6 7 8 noexec,nosuid,nodev noexec,nosuid,nodev,noatime noexec,nosuid,nodev,noatime,nodiratime
挂载选项组合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 defaults,noatime,nodiratime,nobarrier defaults,noatime,nodiratime,nobarrier,commit=1 defaults,noatime,nodiratime defaults,noatime,data=journal defaults,noatime,readahead=8192
磁盘性能优化 I/O 调度器配置 查看当前 I/O 调度器 1 2 3 4 5 6 cat /sys/block/*/queue/schedulercat /sys/block/vda/queue/schedulercat /sys/block/vdb/queue/scheduler
I/O 调度器类型
调度器
说明
适用场景
noop
简单队列,适合 SSD
SSD、虚拟化
deadline
保证请求响应时间
数据库、虚拟化
cfq
完全公平队列,适合机械硬盘
传统机械硬盘
mq-deadline
多队列 deadline
多队列 SSD
none
无调度器,适合 NVMe
NVMe SSD
修改 I/O 调度器 1 2 3 4 5 6 7 8 9 10 11 12 13 14 echo noop | sudo tee /sys/block/vdb/queue/schedulersudo vi /etc/default/grubGRUB_CMDLINE_LINUX="elevator=deadline" sudo update-grubsudo reboot
不同场景的 I/O 调度器选择
场景
推荐调度器
说明
SSD
noop
简单队列,减少延迟
NVMe
none
无调度器,直接访问
数据库
deadline
保证响应时间
虚拟化
mq-deadline
多队列优化
机械硬盘
cfq
完全公平队列
挂载参数优化 SSD 优化参数 1 2 3 4 5 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,discard 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nodiscard 0 0
数据库优化参数 1 2 3 4 5 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,nobarrier,commit=1 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nobarrier 0 0
Web 服务器优化参数 1 2 3 4 5 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,nodiratime 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,readahead=8192 0 0
SSD 性能优化 TRIM/DISCARD 配置 1 2 3 4 5 6 7 8 9 10 11 12 13 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,discard 0 0 sudo vi /etc/cron.weekly/trimfstrim -v / fstrim -v /data sudo chmod +x /etc/cron.weekly/trim
SSD 优化建议
启用 TRIM :定期清理未使用的块
减少写入 :使用 noatime 减少元数据写入
预留空间 :保留 10% 的空间用于垃圾回收
避免碎片 :定期检查文件系统碎片
云服务器磁盘配置 阿里云磁盘配置 阿里云磁盘类型
磁盘类型
性能特点
适用场景
推荐文件系统
云效盘
高 IOPS,低延迟
数据库、中间件
xfs
云盘
性价比高
通用场景
ext4/xfs
SSD 云盘
高性能
高性能需求
xfs
ESSD
极致性能
极致性能需求
xfs
阿里云磁盘优化 1 2 3 4 5 6 7 8 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nodiratime 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nobarrier,commit=1 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data ext4 defaults,noatime,nobarrier 0 0
腾讯云磁盘配置 腾讯云磁盘类型
磁盘类型
性能特点
适用场景
推荐文件系统
普通云硬盘
性价比高
通用场景
ext4
SSD 云硬盘
高性能
高性能需求
xfs
高性能云硬盘
极致性能
极致性能需求
xfs
腾讯云磁盘优化 1 2 3 4 5 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nodiratime 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nobarrier,commit=1 0 0
AWS 磁盘配置 AWS 磁盘类型
磁盘类型
性能特点
适用场景
推荐文件系统
gp2
通用 SSD
通用场景
xfs
io1
高性能 SSD
高性能需求
xfs
st1
热存储 HDD
大数据量
xfs
sc1
冷存储 HDD
低成本
ext4
AWS 磁盘优化 1 2 3 4 5 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nodiratime 0 0 UUID=99cfbb8f-0441-4469-a8fd-e85f8d2a2100 /data xfs defaults,noatime,nobarrier,commit=1 0 0
数据安全与故障排查 数据备份策略 自动备份脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 #!/bin/bash BACKUP_DIR="/backup" DATA_DIR="/data" DATE=$(date +%Y%m%d) TIME=$(date +%H%M%S) BACKUP_NAME="backup_${DATE} _${TIME} " sudo mkdir -p ${BACKUP_DIR} /${BACKUP_NAME} sudo rsync -avz --delete ${DATA_DIR} / ${BACKUP_DIR} /${BACKUP_NAME} /find ${BACKUP_DIR} -type d -mtime +7 -exec rm -rf {} \; echo "$(date) : Backup completed - ${BACKUP_NAME} " >> ${BACKUP_DIR} /backup.log
定时备份配置 1 2 3 4 5 6 7 8 9 sudo crontab -e0 2 * * * /path/to/backup.sh 0 * * * * /path/to/incremental_backup.sh
磁盘健康检查 SMART 检查 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 sudo apt-get install smartmontoolssudo smartctl -s on /dev/vdbsudo smartctl -a /dev/vdbsudo smartctl -H /dev/vdbsudo smartctl -c /dev/vdbsudo smartctl -t long /dev/vdbsudo smartctl -l selftest /dev/vdb
磁盘性能测试 1 2 3 4 5 6 7 8 9 10 11 sudo dd if =/dev/zero of=/data/testfile bs=1M count=1024 conv=fdatasyncsudo dd if =/data/testfile of=/dev/null bs=1Msudo fio -filename=/data/testfile -direct=1 -rw=randrw -bs=4k -size=1G -numjobs=4 -runtime=60 -group_reporting -name=randtestsudo apt-get install fio
常见问题排查 问题 1:磁盘空间不足 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 df -lhdu -sh /data/*find /data -type f -size +1G -exec ls -lh {} \; sudo journalctl --vacuum-time=7dsudo rm -rf /var/log/*.oldsudo rm -rf /tmp/*
问题 2:磁盘读写慢 1 2 3 4 5 6 7 8 9 10 11 iostat -x 1 iotop cat /sys/block/vdb/queue/nr_requestsecho deadline > /sys/block/vdb/queue/scheduler
问题 3:磁盘挂载失败 1 2 3 4 5 6 7 8 9 10 11 ls -l /dev/vdb*sudo fsck /dev/vdb1sudo mount -t ext4 /dev/vdb1 /datasudo mount -a
问题 4:磁盘只读 1 2 3 4 5 6 7 8 9 sudo mount -o remount,rw /datasudo fsck /dev/vdb1sudo dmesg | grep -i errorsudo journalctl -xe
总结 本文档全面介绍了服务器磁盘管理的完整流程,包括:
1. 磁盘管理基础
查看磁盘列表 :使用 fdisk、lsblk、df 等命令
磁盘分区工具对比 :fdisk、parted、gdisk 的特点和适用场景
2. 磁盘分区操作
使用 fdisk 分区 :交互式和自动化分区
使用 parted 分区 :支持大容量磁盘
使用 gdisk 分区 :MBR 转 GPT
3. 文件系统格式化
ext4 文件系统 :稳定性好,兼容性佳
xfs 文件系统 :高性能,适合大文件
btrfs 文件系统 :快照功能,支持压缩
文件系统选择建议 :根据不同场景选择合适的文件系统
4. 挂载配置
临时挂载 :基本挂载命令和选项
永久挂载 :使用 UUID 和设备名称
挂载选项优化 :性能优化和安全挂载选项
5. 磁盘性能优化
I/O 调度器配置 :不同场景选择合适的调度器
挂载参数优化 :针对不同场景的优化参数
SSD 性能优化 :TRIM/DISCARD 配置和优化建议
6. 云服务器磁盘配置
阿里云磁盘配置 :不同磁盘类型的优化建议
腾讯云磁盘配置 :磁盘类型和优化建议
AWS 磁盘配置 :磁盘类型和优化建议
7. 数据安全与故障排查
数据备份策略 :自动备份脚本和定时备份配置
磁盘健康检查 :SMART 检查和性能测试
常见问题排查 :磁盘空间不足、读写慢、挂载失败、只读等问题的解决方案
通过掌握这些知识,你可以有效地管理服务器磁盘,提高系统性能和数据安全性。