先分区再格式化挂载
虚拟机分区命令的核心操作流程是:用fdisk或parted创建分区表与分区,用mkfs格式化文件系统,再用mount挂载到目录,最后写入fstab实现开机自动挂载。无论你用的是VMware、VirtualBox还是KVM,底层都是这套Linux逻辑,只是分区工具和磁盘设备名略有差异。
虚拟机分区前必须确认的3件事
- 确认磁盘设备名:在虚拟机内执行
lsblk或fdisk -l,新加的磁盘通常显示为/dev/sdb(SCSI/SATA)或/dev/vdb(KVM虚拟化),千万不要搞混/dev/sda(系统盘)和/dev/sdb(数据盘),分区错了可能覆盖系统。 - 确认分区表类型:小于2TB的磁盘用MBR(dos)即可,大于2TB必须用GPT。
parted /dev/sdb print可查看当前分区表格式。 - 确认虚拟机是否已识别磁盘:如果刚在虚拟机设置里加了硬盘,但系统里看不到,执行
echo 1 > /sys/class/scsi_disk/0:0:0:0/device/rescan或直接重启虚拟机。
Linux虚拟机分区命令:fdisk实操步骤
fdisk是传统分区工具,适合MBR分区表,交互式操作直观,以给/dev/sdb分一个主分区为例:
- 执行
fdisk /dev/sdb进入交互界面,输入n新建分区。 - 提示分区类型时,输入
p选主分区(primary),若磁盘没有扩展分区需求,一路回车用默认起始扇区和结束扇区即可占据整块磁盘。 - 输入
w写入分区表并退出,注意:q是不保存退出,千万别写错。 - 执行
partprobe /dev/sdb让内核重新读取分区表,不重启也能生效。 - 确认分区结果:
lsblk /dev/sdb,应看到/dev/sdb1。
上面是新建单个分区,如果想把磁盘分成多个区,在n之后指定起始和结束扇区,比如+100G表示新建一个100GB的分区,剩余空间可以继续分,删除分区用d,改分区类型用t(输入l可查看类型代码,普通数据分区一般用83,Linux LVM用8e)。
关于fdisk与parted的选择:MBR分区表且磁盘小于2TB,用fdisk足够,若磁盘大于2TB,fdisk会报错,这时要用parted工具。
虚拟机磁盘分区怎么操作:parted命令支持GPT
parted既能处理MBR也能处理GPT,更适合大容量虚拟磁盘,操作步骤:
- 安装parted:
yum install -y parted(CentOS/RHEL)或apt install -y parted(Ubuntu/Debian)。 - 指定磁盘并设置GPT分区表:
parted /dev/sdb mklabel gpt - 创建分区:
parted /dev/sdb mkpart primary 0% 100%,将整个磁盘划为一个分区,如果要分多个区,写mkpart primary 0% 50%和mkpart primary 50% 100%。 - 查看分区信息:
parted /dev/sdb print
用parted时,创建分区后同样需要格式化,parted也有交互模式,直接输入parted /dev/sdb进入,然后逐个执行mklabel gpt、mkpart等命令,最后quit退出。
分区完成后必须做的格式化与挂载
分区只是划好了地,没有文件系统没法用,接下来两步不能少。
格式化分区
- 格式化为ext4:
mkfs.ext4 /dev/sdb1 - 格式化为xfs(CentOS/RHEL默认):
mkfs.xfs /dev/sdb1 - 格式化为普通数据盘,建议xfs或ext4,如果给数据库用,ext4或xfs都行;如果给Windows虚拟机共享,需要格式化为NTFS(
mkfs.ntfs,需安装ntfs-3g)。
临时挂载和永久挂载
- 创建挂载点目录:
mkdir /data - 临时挂载:
mount /dev/sdb1 /data,重启后失效。 - 永久挂载:编辑
/etc/fstab,添加一行/dev/sdb1 /data xfs defaults 0 0,然后执行mount -a检查是否有错误,务必用blkid查看分区的UUID,写入UUID代替设备名,避免设备名变化导致挂载失败,例如UUID=xxx /data xfs defaults 0 0。
常见误区:直接改fstab后不测试,如果配置错误会导致系统启动失败,正确姿势是先写一行,然后mount -a测试,再执行reboot验证。
虚拟机分区命令有哪些:常用工具速查表
| 工具 | 用途 | 特点 | 适用场景 |
|---|---|---|---|
| fdisk | 创建/删除MBR分区 | 交互式,容易上手 | 小于2TB磁盘 |
| parted | 创建GPT/MBR分区 | 支持脚本,适合大磁盘 | 大于2TB磁盘,自动化运维 |
| gdisk |
专门处理GPT分区 | 类似fdisk交互风格 | 需要精细控制GPT分区 |
| lsblk / blkid | 查看分区和UUID | 只读工具 | 分区前后确认状态 |
| mkfs | 建立文件系统 | 需指定类型 | 任何分区格式化 |
| mount / umount | 挂载/卸载分区 | 临时操作 | 日常使用 |
如果你不想用fdisk交互式命令,可以利用echo -e "nnpn1nnnw" | fdisk /dev/sdb这种非交互方式批量执行,但前提是你对每个输入的参数含义非常清楚,否则分区表容易搞坏。
虚拟机添加新硬盘的分区完整场景演练
假设你从VMware的虚拟机设置里给一台CentOS 7虚拟机加了一块200GB的虚拟磁盘,想把它作为独立的数据库存储盘,完整命令序列如下:
- 确认磁盘名:
lsblk,看到vdb(VMware默认SCSI也可能是sdb),没用过的盘没有分区。 - 创建GPT分区表(200GB大于2TB吗?小于,但用GPT更现代):
parted /dev/vdb mklabel gpt - 创建分区:
parted /dev/vdb mkpart primary 0% 100% - 查看分区:
parted /dev/vdb print,确认有/dev/vdb1 - 格式化:
mkfs.xfs /dev/vdb1 - 建挂载点:
mkdir /mysql-data - 挂载:
mount /dev/vdb1 /mysql-data - 写入fstab:先用
blkid /dev/vdb1获取UUID,编辑/etc/fstab加一行UUID=xxxx /mysql-data xfs defaults 0 0 - 验证:
mount -a不报错,df -h /mysql-data能看到容量。
虚拟机分区时遇到故障的排查思路
- 分区表无法写入:可能磁盘被系统占用,先卸载所有相关挂载点,再用
lsof +L1 /dev/sdb检查是否被进程占用。 - mkfs时报设备忙:用
umount /dev/sdb1卸载,或用fuser -km /dev/sdb1结束占用进程。 - 重启后挂载丢失:检查fstab中UUID是否正确,用
cat /etc/fstab确认,注意fstab中每段之间用空格或Tab分隔,不要写错。 - 虚拟磁盘扩容后分区不识别:虚拟机设置里把磁盘从200GB扩到300GB,系统内需要执行
growpart /dev/vdb 1(或者用parted的resizepart),然后xfs_growfs /dev/vdb1(ext4用
resize2fs /dev/vdb1)。
业界共识与安全提醒
行业共识认为,无论什么虚拟机平台,分区操作前备份分区表是必要习惯,可以用sfdisk -d /dev/sdb > partition.bak备份MBR分区表,用sgdisk -b backup.gpt /dev/sdb备份GPT分区表,一旦分区出错,能用sfdisk /dev/sdb < partition.bak恢复。
虚拟机磁盘性能与传统物理机有差异,分区时建议启用4K对齐,fdisk和parted默认已经对齐到头和磁道,但手动指定起始扇区时选2048倍数即可(例如mkpart primary 2048s 100%)。
关于分区和LVM的关系:如果你想在虚拟机上做逻辑卷管理,可以先把整块磁盘分区为LVM类型(fdisk里t改成8e,parted里用set 1 lvm on),再创建PV、VG和LV,这样后续扩容磁盘不用动分区表,直接扩展逻辑卷就行,对于需要灵活扩容的虚拟磁盘场景,这是比较推荐的方案。
虚拟机分区后有疑问?看这里
问:fdisk显示磁盘超过2TB无法分区怎么办?
答:fdisk不支持GPT分区表,2TB以上的磁盘必须用parted或gdisk,执行parted /dev/sdb mklabel gpt重新建立GPT分区表,然后用parted /dev/sdb mkpart primary 0% 100%创建分区,注意:转换分区表格式会清空磁盘所有数据,操作前先备份。
问:分区和格式化都成功了,但mount后目录里没有文件,写入也报只读?
答:检查是否以读写方式挂载,执行mount -o remount,rw /dev/sdb1 /data,如果仍然只读,可能是文件系统有错误,用dmesg | tail查看内核日志,或执行fsck /dev/sdb1修复,还有可能是虚拟硬盘的控制器模式问题,VMware里将SCSI控制器改为LSI Logic或PVSCSI,某些老系统对直通设备兼容性差。
问:不想用命令行,虚拟机控制台里有图形分区工具吗?
答:部分Linux发行版安装系统时提供图形化分区界面(如CentOS的Anaconda安装器),但系统装完后图形工具很少,可以安装gparted(yum install gparted),它提供类似Windows磁盘管理的图形界面,支持调整分区大小、创建分区,但对GPT和MBR的切换仍需底层parted支持,在服务器环境中,还是建议掌握命令行分区命令,因为图形工具在最小化安装或无桌面环境时不可用。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/616000.html





