资讯动态

fdisk命令详解:如何为你的Linux服务器添加新硬盘并分区

发布时间:2026/8/15 8:19:39 来源:尧图企业网站定制
fdisk命令实战指南Linux服务器磁盘分区与管理的艺术想象一下当你负责的在线服务突然因为磁盘空间不足而告急或者需要为数据库单独配置高性能存储时能否快速、安全地完成磁盘扩容这就是每位Linux系统管理员必须掌握的fdisk技能。本文将带你深入理解这个强大的分区工具从基础操作到高级技巧让你在服务器运维中游刃有余。1. 认识Linux磁盘分区基础在开始操作之前我们需要理解几个关键概念。Linux系统中磁盘设备通常以/dev/sdX或/dev/vdX的形式命名其中X从a开始按字母顺序递增。每个物理磁盘最多可以有4个主分区或者3个主分区加1个扩展分区扩展分区内可再划分逻辑分区。常见磁盘设备命名规则设备名称类型说明/dev/sda第一块SCSI/SATA磁盘/dev/sdb第二块SCSI/SATA磁盘/dev/vda第一块虚拟化磁盘如KVM/dev/nvme0n1第一块NVMe固态硬盘提示在云服务器环境中磁盘设备名可能有所不同例如阿里云ECS通常使用/dev/vdX的命名方式。fdisk作为最经典的磁盘分区工具具有以下特点支持MBRMS-DOS分区表交互式操作界面功能全面但操作需谨慎适用于大多数传统硬盘分区场景MBR分区限制最大支持2TB磁盘最多4个主分区或3主分区1扩展分区分区信息存储在磁盘开头风险集中2. 准备工作识别新磁盘在开始分区前首先要确认系统已经正确识别了新添加的磁盘。这可以通过以下几种方式实现# 查看所有块设备信息 lsblk # 查看详细的磁盘和分区信息 fdisk -l # 查看SCSI设备列表适用于物理服务器 lsscsi假设我们新增了一块磁盘系统识别为/dev/sdb。在操作前强烈建议先备份重要数据并确认操作的是正确的磁盘设备。关键检查点确认磁盘容量与预期一致检查磁盘是否已有分区或数据确保没有误选系统盘进行操作3. 使用fdisk进行分区操作现在我们以/dev/sdb为例演示完整的fdisk分区流程# 启动fdisk交互界面 fdisk /dev/sdb进入fdisk后你会看到命令提示符Command (m for help):。输入m可以查看所有可用命令。常用fdisk交互命令命令功能描述n创建新分区d删除分区p显示当前分区表t更改分区类型w写入分区表并退出q不保存退出3.1 创建主分区输入n创建新分区选择p创建主分区设置分区号1-4指定起始扇区通常直接回车使用默认值设置分区大小如20G表示20GB分区Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-20971519, default 2048): Last sector, /-sectors or /-size{K,M,G,T,P} (2048-20971519, default 20971519): 20G3.2 创建扩展分区和逻辑分区如果需要超过4个分区可以创建扩展分区输入n创建新分区选择e创建扩展分区使用剩余所有空间创建扩展分区再次输入n此时会提示创建逻辑分区Command (m for help): n Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): e Partition number (2-4, default 2): 2 First sector (41945088-20971519, default 41945088): Last sector, /-sectors or /-size{K,M,G,T,P} (41945088-20971519, default 20971519): Command (m for help): n All space for primary partitions is in use. Adding logical partition 5 First sector (41947136-20971519, default 41947136): Last sector, /-sectors or /-size{K,M,G,T,P} (41947136-20971519, default 20971519): 10G3.3 设置分区类型某些情况下需要更改分区类型例如创建swap分区Command (m for help): t Partition number (1,2,5, default 5): 5 Hex code (type L to list all codes): 82 Changed type of partition Linux to Linux swap / Solaris.3.4 保存分区表完成所有操作后输入w保存并退出Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.4. 分区后的必要操作创建分区后还需要几个步骤才能使分区可用4.1 重新读取分区表有时内核不会自动识别新的分区表需要手动通知内核# 重新读取分区表 partprobe /dev/sdb # 如果partprobe无效可以尝试以下命令 blockdev --rereadpt /dev/sdb # 最后手段重启系统 reboot4.2 格式化分区根据用途选择合适的文件系统进行格式化# 创建ext4文件系统 mkfs.ext4 /dev/sdb1 # 创建XFS文件系统适合大文件 mkfs.xfs /dev/sdb5 # 创建swap分区 mkswap /dev/sdb2 swapon /dev/sdb2常见文件系统比较文件系统适用场景最大文件大小最大卷大小ext4通用文件系统16TB1EBXFS大文件、高性能8EB8EBBtrfs高级功能需求16EB16EBswap内存扩展--4.3 挂载分区临时挂载重启后失效mkdir /data mount /dev/sdb1 /data永久挂载编辑/etc/fstab# 获取分区的UUID blkid /dev/sdb1 # 在/etc/fstab中添加如下行 UUIDyour-uuid-here /data ext4 defaults 0 2注意修改/etc/fstab前务必备份错误的配置可能导致系统无法启动。5. 高级分区技巧与最佳实践5.1 分区对齐优化对于现代磁盘特别是SSD正确的分区对齐可以显著提高性能# 创建对齐分区通常从2048扇区开始 fdisk -ucylinders -H 32 -S 32 /dev/sdb5.2 使用sfdisk进行批量分区对于需要自动化部署的场景可以使用sfdisk# 导出现有分区表 sfdisk -d /dev/sdb sdb-partition.txt # 导入分区表到新磁盘 sfdisk /dev/sdc sdb-partition.txt5.3 分区恢复技巧误删分区时可以使用以下方法尝试恢复# 使用testdisk工具扫描丢失的分区 testdisk /dev/sdb # 使用gpart尝试重建分区表 gpart /dev/sdb5.4 性能优化建议为数据库等IO密集型应用单独分区将日志目录放在独立分区避免填满根分区考虑使用LVM代替传统分区获得更大灵活性对SSD启用TRIM支持fstrim -v /mount-point6. 替代工具与未来趋势虽然fdisk功能强大但在某些场景下可能需要考虑替代方案parted支持GPT分区表适用于大于2TB的磁盘parted /dev/sdb (parted) mklabel gpt (parted) mkpart primary ext4 0% 100% (parted) quitgdisk专门为GPT分区设计操作类似fdiskgdisk /dev/sdbLVM逻辑卷管理提供更灵活的存储方案# 创建物理卷 pvcreate /dev/sdb1 # 创建卷组 vgcreate vg_data /dev/sdb1 # 创建逻辑卷 lvcreate -L 50G -n lv_data vg_data # 格式化并挂载 mkfs.ext4 /dev/mapper/vg_data-lv_data mount /dev/mapper/vg_data-lv_data /data在实际生产环境中根据磁盘大小和需求选择合适的分区方案小于2TBMBRfdisk大于2TBGPTparted/gdisk需要灵活扩容LVM

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价