简介:本文详细讲解Linux系统下新增硬盘的分区、文件系统创建及挂载使用的完整流程,包含fdisk/gdisk工具使用、ext4/XFS文件系统特性对比、自动挂载配置等关键技术点。
当服务器新增物理硬盘后,首先需要通过系统工具确认设备是否被正确识别。使用lsblk命令可查看当前所有块设备:
$ lsblk -o NAME,MAJ:MIN,RM,SIZE,RO,FSTYPE,MOUNTPOINTNAME MAJ:MIN RM SIZE RO FSTYPE MOUNTPOINTsda 8:0 0 500G 0 ext4 /sdb 8:16 0 2T 0 # 新增未分区硬盘
或通过dmesg | grep sda查看内核日志中的设备检测记录。对于NVMe固态硬盘,设备名通常为nvme0n1,需注意设备命名差异。
fdisk /dev/sdb进行操作gdisk /dev/sdb操作
$ fdisk /dev/sdbCommand (m for help): n # 创建新分区Partition type: p (primary)Partition number: 1First sector: 2048Last sector: +1T # 分配1TB空间Command (m for help): w # 写入分区表
关键参数说明:
n:新建分区d:删除分区t:修改分区类型(83为Linux,8e为LVM)w:保存更改
$ gdisk /dev/sdbCommand (? for help): n # 创建分区Partition number: 1First sector: 34Last sector: +2T # 分配全部空间Hex code: 8300 # Linux文件系统Command (? for help): w # 写入并退出
GPT特有操作:
| 文件系统 | 最大容量 | 日志功能 | 扩展性 | 适用场景 |
|---|---|---|---|---|
| ext4 | 16TB | 是 | 差 | 通用Linux系统 |
| XFS | 8EB | 是 | 优 | 大文件存储、数据库 |
| Btrfs | 16EB | 是 | 优 | 快照、子卷管理 |
$ mkfs.ext4 -L data_vol /dev/sdb1# 高级选项示例$ mkfs.ext4 -m 1 -O ^has_journal /dev/sdb1 # 禁用日志,1%预留空间
关键参数:
-L:设置卷标-m:预留空间百分比(默认5%)-O:启用/禁用特性(如^has_journal禁用日志)
$ mkfs.xfs -L backup_vol /dev/sdb1# 性能调优示例$ mkfs.xfs -f -d su=128k,sw=4 -n ftype=1 /dev/sdb1
XFS特有参数:
su:分配单元大小sw:条带宽度ftype:启用目录项类型(对Docker等重要)
$ mkdir /mnt/newdisk$ mount -t ext4 /dev/sdb1 /mnt/newdisk$ df -hT /mnt/newdiskFilesystem Type Size Used Avail Use% Mounted on/dev/sdb1 ext4 1.9T 20M 1.8T 1% /mnt/newdisk
编辑/etc/fstab文件,添加如下行:
/dev/sdb1 /data ext4 defaults,noatime,nodiratime 0 2
关键选项说明:
noatime:禁用访问时间更新nodiratime:禁用目录访问时间更新discard:启用TRIM(SSD必备)_netdev:网络存储设备使用
$ chown -R user:group /data$ chmod 755 /data# 特殊权限设置示例$ setfacl -R -m u:backup:rwx /data # 设置ACL权限
# ext4健康检查$ dumpe2fs -h /dev/sdb1 | grep "Filesystem state"$ fsck -n /dev/sdb1 # 非破坏性检查# XFS健康检查$ xfs_repair -n /dev/sdb1$ xfs_info /dev/sdb1
# ext4调整预留空间$ tune2fs -m 2 /dev/sdb1 # 预留空间改为2%# XFS调整日志大小$ xfs_admin -l logdev=/dev/sdc1 /dev/sdb1 # 使用外部日志设备
$ echo 1024 > /sys/block/sdb/queue/nr_requests$ echo deadline > /sys/block/sdb/queue/scheduler
$ echo 4096 > /proc/sys/fs/xfs/filestream_centisecs
挂载失败(设备忙):
$ lsof /dev/sdb1 # 查看占用进程$ fuser -vm /dev/sdb1 # 终止占用进程
文件系统损坏修复:
# ext4修复$ fsck -y /dev/sdb1# XFS修复(需卸载)$ xfs_repair /dev/sdb1
分区表错误恢复:
$ testdisk /dev/sdb # 交互式修复工具
# 查看系统日志$ journalctl -k | grep -i disk$ dmesg | grep -i error# XFS特定日志$ cat /var/log/messages | grep xfs
生产环境建议:
fsck检查(通过/etc/fstab的lastcheck)备份策略:
sfdisk -d /dev/sdb > sdb_partition.bak)dd备份引导扇区(dd if=/dev/sdb of=mbr.bak bs=512 count=1)性能监控:
$ iostat -x 1 /dev/sdb # 实时监控I/O性能$ sar -d 1 10 # 历史I/O统计
通过本文的详细讲解,开发者可以系统掌握Linux环境下从硬盘识别到文件系统挂载的完整流程。实际工作中,建议先在测试环境验证分区方案,特别是对于生产环境的关键存储设备,应制定完善的备份和恢复预案。