尧图精选

虚拟机新硬盘挂载全攻略:从分区、格式化到开机自动挂载

🕒 发布时间:2026/10/2 2:52:29 📁 来源:尧图网络
1. 为什么虚拟机加硬盘总在“最后一步”卡住先说个现象很多人装好虚拟机、跑起系统之后发现磁盘不够用了于是打开虚拟机设置点“添加”选硬盘一路下一步启动系统之后却发现——新硬盘根本不见踪影。Windows里“此电脑”还是老样子Linux里df -h也看不到新增的容量。然后就开始怀疑人生是不是我虚拟机软件装得有问题是不是硬盘坏了其实九成情况跟硬件没关系问题出在“添加硬盘”和“挂载硬盘”是两件事。虚拟机软件帮你把一块虚拟磁盘接到了虚拟主机的总线上相当于你给一台物理电脑插上了一块新硬盘的SATA线线插好了但系统还没分区、没格式化、没告诉操作系统“这块盘给你用”。物理机上你插了硬盘开机进系统磁盘管理里照样不显示盘符得手动初始化、分区、格式化、分配盘符虚拟机里是同一个道理。这块内容主要面向两类读者一是刚入门虚拟机、用VMware Workstation或VirtualBox装好Linux虚拟机后想扩存储的新手二是需要在虚拟机里做存储测试、但不想频繁重建虚拟机的运维或开发同学。看完这篇你能独立完成从“把盘加进虚拟机”到“系统里正常读写”的完整链路同时我还会把分区表选MBR还是GPT、文件系统用ext4还是xfs、开机能不能自动挂载这些容易含糊的点一次性讲清楚。2. 添加虚拟硬盘前的两个关键决策2.1 存储控制器类型SCSI还是NVMe在VMware Workstation里打开虚拟机设置点“添加”到选择磁盘类型这一步你会看到IDE、SCSI、SATA、NVMe这些选项。默认通常建议SCSI因为VMware的虚拟SCSI控制器性能稳定Linux和Windows都有现成驱动。但如果你的虚拟机要装新版本Windows比如Win10/11或者跑数据库这类频繁读写的小文件IO场景NVMe虚拟磁盘在延迟表现上会比SCSI略好一点原因不复杂——NVMe协议本身就是为SSD这种低延迟存储设计的虚拟化层模拟NVMe控制器时排队和中断开销更少。不过这里有个很容易踩的坑如果虚拟机系统较老比如Windows Server 2008或者CentOS 6选NVMe可能开机直接蓝屏因为系统里缺驱动。所以我的建议很保守——日常用SCSI除非你对性能有明确要求并且确认系统支持NVMe驱动再上NVMe。VirtualBox那边则默认SATA选项叫“SATA控制器”它也支持NVMe但VirtualBox的NVMe虚拟控制器兼容性不如VMware碰到问题的概率更大。2.2 磁盘模式与容量规划确定完控制器下一步是设置容量和磁盘模式。对话框里会有几项需要注意“立即分配所有磁盘空间”如果勾选虚拟磁盘文件会立刻占用物理机上的全部容量好处是性能更好不需要随着写入逐渐扩容坏处是物理机空间被瞬占满。日常用不建议勾用默认的“拆分多个文件”或“动态分配”即可。“将虚拟磁盘存储为单个文件/拆分成多个文件”这个取决于你物理机文件系统的限制。如果虚拟磁盘放在NTFS下两G都行如果放在某些老旧的FAT32分区上单文件不能超过4G这时就必须拆分成多个2GB的分片文件。现在基本都用NTFS或ext4选单个文件最简单后期迁移也方便。存储位置和文件名建议放在虚拟机默认的存储目录内不要随意放到U盘或网络盘上。虚拟磁盘文件对IO连续性要求高放U盘上轻则卡顿重则损坏。容量规划上我给一个在实操中比较稳的经验值如果虚拟机跑的是普通服务系统盘给40到60GB足够了数据盘按业务规模给。但有一个细节很多人不在意——虚拟磁盘文件是“稀疏”的也就是动态分配模式下你给它设了200GB只要没写入数据物理机占用就几十MB。正因为这样规划容量时不要过分保守宁可在虚拟层给大一点也不要等到跑了一半再扩容。扩容虽然可行但过程和直接加一块新盘相比麻烦不少。2.3 添加完成后的硬件状态检查添加硬盘的操作完成后不要急着开机。先回到虚拟机设置的主界面确认一下新硬盘出现在正确控制器下面以及它的文件名跟已有磁盘不重名。如果发现盘符显示异常或者控制器上有黄色感叹号之类的提示先解决再开机。这一步基本没人注意但我在帮别人排查问题时见过不少因为控制器选错、导致虚拟机起不来的案例。3. Linux虚拟机挂载新硬盘的完整实操3.1 系统内识别新硬盘lsblk和fdisk启动Linux虚拟机登录进去后第一步不要直接fdisk先用lsblk看一眼系统是否认出了新设备。lsblk我加了一块20GB的虚拟盘输出大概长这样NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ├─sda1 8:1 0 1G 0 part /boot └─sda2 8:2 0 59G 0 part / sdb 8:16 0 20G 0 disk注意sdb这一行20G大小TYPE是diskMOUNTPOINT为空——这就是我们刚加的盘。为什么它叫sdb而不是sda因为sd代表SCSI/SATA磁盘即使用NVMe在较新内核中看到的是nvme0n1命名规则稍后讲后面的字母是按系统识别顺序排的第一块盘是sda第二块是sdb。如果你选的是NVMe控制器看到的名字会是nvme0n1这种nvme0n1p1这种格式代表第1个NVMe硬盘的第1个分区跟sda1是一个层级的概念。如果执行lsblk没看到新盘不要急着怀疑盘坏了先检查几个地方虚拟机设置里的硬盘是否处于“已连接”状态——VMware里如果取消勾选“启动时连接”系统里就看不到。控制器类型是否被系统识别——可以执行lspci | grep -i scsi或lspci | grep -i nvme看控制器是否枚举出来。如果以上都没问题执行dmesg | tail -20看看内核有没有报IO错误。3.2 分区操作fdisk全程详解确认系统识别到sdb后下一步就是分区。分区不是必须的吗如果你只想把整块20GB都用成一个区理论上也可以不建分区表直接格式化整块盘但我不建议这种做法原因有两条一是很多工具和后续管理脚本默认从分区读取不建立分区表会给运维带来额外麻烦二是如果以后想在这块盘上再切一个区没分区表就得重来。分区表相当于书的目录——先告诉系统这本书有几个章节、每章从哪里开始后面读写才按规矩来。执行fdisk /dev/sdb注意操作对象是/dev/sdb不是/dev/sdb1因为分区还没建sdb1这名字还不存在。进入交互界面后输入m可以看帮助我用的是下面的步骤输入n新建分区按提示选p主分区分区编号默认1起始扇区默认2048不用改结束扇区直接按回车代表使用剩余全部空间。输入t改分区类型如果只是做普通数据盘这一步可以跳过如果要当交换分区或者LVM物理卷这里才需要改。Linux的数据分区在fdisk里默认类型是Linux filesystem即代码83。输入w保存退出。如果磁盘容量超过2TB用fdisk默认会转出MBR分区表MBR最大只支持约2TB地址空间所以这里建议使用GPTparted /dev/sdb mklabel gpt或者用gdisk /dev/sdb如果系统装了gdisk方式跟fdisk类似但默认用GPT。现在新出的Linux发行版对GPT支持都很完善所以不用太担心2TB的盘用GPT就好小于2TB的盘用MBR还是GPT就看习惯。分区完成后再执行lsblk应该能看到sdb1出现了sdb 8:16 0 20G 0 disk └─sdb1 8:17 0 20G 0 part这里有个小细节parted和fdisk创建的分区默认起始扇区都已对齐到2048这在SSD上能避免分区起始位置跟闪存块不对齐带来的性能损耗。老教程里手动指定起始扇区为63的做法在现代工具中已经不再需要默认值就是最优值。3.3 格式化ext4和xfs的选择分区表建好后要对分区做文件系统格式化。Linux里两个主流的文件系统是ext4和xfs选择逻辑主要看使用场景ext4历史久、兼容性最好CentOS 6/7系统和各种工具链默认支持适合中小型数据盘、单文件大小不极端的场景。xfs大文件和高并发场景表现更好RHEL/CentOS 7及以后版本默认就是xfs支持在线扩容xfs_growfs对于以后想在不卸载盘的情况下扩分区非常友好。我的建议是如果系统是CentOS 7/RHEL 7以上或较新的Ubuntu数据盘直接上xfs如果是老的CentOS 6、Ubuntu 14这类系统用ext4稳妥。格式化命令# ext4 mkfs.ext4 /dev/sdb1 # xfs mkfs.xfs /dev/sdb1格式化过程中终端会刷一堆输出最后出现“done”字样就成功了。这里有个经验要记牢格式化会清空分区上的所有数据所以操作前务必确认盘符没有搞错。有人说“我确认了好几遍还是格式化错了”这种情况多发生在原本就有数据盘的系统里——新盘插入后盘符可能不是你预期的sdb比如原来有sda、sdb新盘可能变成sdc但如果你在虚拟机里把两块盘顺序调整过Linux内核枚举顺序也会跟着变。稳妥做法是格式化前先看lsblk的SIZE列确认容量跟你新加的那块盘一致再动手。3.4 挂载到系统目录并验证读写格式化完成后创建一个挂载目录然后挂载mkdir -p /data mount /dev/sdb1 /data执行df -h应该能看到/dev/sdb1挂载到/data容量和用量都正常。为了验证读写没问题我在实际踩坑后习惯执行这三步echo test /data/test.txt cat /data/test.txt rm /data/test.txt如果能写、能读、能删说明这一层没问题。然后要处理一个很多人忽略的权限问题根用户能写不代表普通用户能写。如果这台虚拟机有别的业务账号要往/data写数据要么把目录属主改了要么考虑用ACL。chown -R 用户名:用户组 /data3.5 开机自动挂载fstab的正确配置重启虚拟机会发现/data不见了因为刚才的mount只是临时挂载没有写入任何启动配置。开机自动挂载有两个常用方式。方法一/etc/fstab最常用先查UUID不要直接写/dev/sdb1blkid /dev/sdb1输出类似/dev/sdb1: UUIDa1b2c3d4-1234-5678-9abc-def012345678 TYPExfs然后把下面这行追加到/etc/fstab末尾UUIDa1b2c3d4-1234-5678-9abc-def012345678 /data xfs defaults 0 0字段分别对应设备标识符、挂载点、文件系统类型、挂载选项、是否dump备份、fsck检查顺序。数据盘最后两个字段写0 0即可。为什么用UUID而不是/dev/sdb1因为Linux设备名在重启或拔插之后可能变化而UUID是文件系统创建时生成的随机标识只要分区不重新格式化它就固定不变。用UUID写fstab可以避免“开着开着盘符变了导致挂载失败”的情况。方法二systemd的.mount单元适用于较新的systemd系统但日常使用完全没必要fstab写着简单、大家都认识没必要引入额外复杂度。配置fstab完成后不要直接重启验证有一个更安全的做法mount -a这条命令会按fstab的配置把没挂载的都挂一遍。如果输出错误说明fstab写的有问题趁现在改还来得及如果没有任何报错再执行df -h确认挂载成功这时候再重启也放心了。这个习惯是真金白银换来的——我见过有人改完fstab直接重启结果因为路径写错系统启动进不了桌面卡在急救模式处理起来相当难受。注意fstab如果写错挂载点或者UUID启动时会报“failed to mount”并进入emergency mode修复时要用mount -o remount,rw /恢复根分区写权限这个细节放到后面“常见问题”部分再细说。3.6 LVM方案简述如果你打算拿新盘给虚拟机里已有的LVM卷组扩容那分区之后不需要mkfs而是直接把分区变成物理卷并加入卷组pvcreate /dev/sdb1 vgextend 你的卷组名 /dev/sdb1 lvextend -l 100%FREE /dev/你的卷组名/你的逻辑卷名 resize2fs /dev/你的卷组名/你的逻辑卷名 # ext4 用这个 xfs_growfs /挂载点 # xfs 用这个注意resize2fs和xfs_growfs不能混用要看你的文件系统类型。LVM的好处是在线扩容不需要卸载分区适合生产环境但如果你只是个人练手或者搭个测试机普通分区 fstab 已经足够简单直接不用为了“高级”而“高级”。4. Windows虚拟机添加硬盘后的处理方式4.1 磁盘管理里的初始化、分区、格式化Windows虚拟机加盘后的操作跟物理机完全一致因为Windows“认盘”的逻辑就在磁盘管理控制台里。按WinR输入diskmgmt.msc打开磁盘管理系统会弹出一个“初始化磁盘”的向导让你选择MBR还是GPT分区表。如果你是在VMware里新建的虚拟磁盘Windows一般会识别为“脱机”或“未初始化”。此时要考虑的事只有一个和Linux那边一样的规则磁盘容量大于2TB选GPT小于2TBMBR和GPT都行。Win10/11的新机器建议直接GPT因为UEFI引导的虚拟机和物理机对GPT兼容更好但如果你拿这个虚拟磁盘去老机器上引导MBR可能更稳妥。实际上虚拟机内调整分区表类型后重装的成本很低不用过度纠结。初始化完成后右键“未分配”区域选“新建简单卷”向导里会让你分配驱动号比如E盘、选文件系统NTFS默认、设置卷标。我建议把“执行快速格式化”勾上速度很快不勾反而会走一次完整格式化流程浪费时间。到这一步Windows的新盘就能在“此电脑”里看到了。4.2 Windows下“动态磁盘”和“跨区卷”Windows磁盘管理还有一种玩法是“动态磁盘”。右键磁盘空白处可以把基本磁盘转换为动态磁盘之后你就可以创建跨区卷、带区卷或者镜像卷。比如把新加的虚拟盘和原有虚拟盘合并成一个跨区卷逻辑上看起来是一个大分区数据顺序写入两段空间里。但我的态度是虚拟化环境里尽量别用Windows动态磁盘。原因有两个第一是动态磁盘仅Windows自己认迁移到Linux虚拟机或物理机后数据读不出来第二是虚拟机快照、备份工具跟动态磁盘的兼容性时好时坏扩容时一旦出问题恢复成本很高。日常用基本磁盘 NTFS就够了需要跨盘扩展时直接给虚拟机再加一块盘然后移动数据、重新分区比玩动态磁盘稳得多。4.3 VMware虚拟磁盘扩容与Windows的C盘扩展如果你不是新加盘而是想把原来的系统盘比如C盘所在的虚拟磁盘调大VMware里可以直接在“硬盘”选项中“扩展”容量。但Windows这边有个流行痛C盘空间不足扩展容量后“此电脑”里的C盘还是老大小。这是因为Windows不能在线扩展“系统卷”以后的所有卷吗其实不是Windows的磁盘管理只允许对“同一磁盘上、C盘右侧”的未分配空间做扩展如果扩展出来的空间在物理上排列在C盘分区之后就能右键C盘点击“扩展卷”如果排列在前面就需要第三方分区工具比如DiskGenius这类来移动分区边界。虚拟化下的排序问题VMware扩展虚拟磁盘容量时新增空间是追加在虚拟磁盘文件末尾的所以Windows看到的未分配空间恰好落在原分区之后大多数情况下可以直接右键扩展卷搞定。但如果你之前对分区做过压缩、前方已无可用空间就只能借助第三方工具了。我自己遇到这种情况时一般直接新建一个分区挂成D盘或者数据盘比强行扩容C盘更省事。5. 挂载过程中的常见故障与排查实录5.1 Linux重启后进不了系统emergency mode症状改完/etc/fstab重启后系统直接进入emergency模式命令行提示有failed unit敲回车进不了正常的桌面。原因fstab里某一行的UUID写错、挂载点目录不存在、或者文件系统类型写错了。处理办法在emergency模式里先把根分区变成可读写mount -o remount,rw /编辑/etc/fstab把错误行注释掉或修正。如果不知道哪行错就执行findmnt --verify它会逐行检查fstab里的配置指出哪个挂载点有问题。修正后执行reboot。这个故障我见过太多人栽在上边包括我自己第一次配fstab时也中过招。之所以强调“先用mount -a测一次再重启”就是为了避免这种折腾。5.2 Windows虚拟磁盘显示“脱机”症状Windows磁盘管理里新加盘是脱机状态右键没有“联机”的选项或者有但点了没反应。原因和解决思路依次排查如果磁盘显示“脱机”最常见的原因是Windows策略限制多磁盘。打开CMD管理员执行diskpart list disk select disk 1 online disk执行后再回磁盘管理刷新一般就好了。如果显示的是“未初始化”参照前面第4.1节的初始化流程。如果显示“其他”比如“没有介质”——检查虚拟机设置里光驱和硬盘的连接方式确认虚拟硬盘文件路径没有破损或被移走。5.3 Linux挂载时报“wrong fs type”症状mount /dev/sdb1 /data时提示wrong fs typebad optionbad superblock。原因分区上还没有文件系统没格式化或者格式化的文件系统与mount时指定的类型不一致。比如你mkfs.xfs了但挂载命令写mount -t ext4 /dev/sdb1 /data自然报错。处理办法执行blkid /dev/sdb1看它到底是什么文件系统。要么直接去掉-t参数让系统自识别要么用跟blkid一致的-t。5.4 VirtualBox增强功能安装失败导致共享目录不可用这条其实跟挂载新盘关系不大但很多人习惯用共享文件夹来传数据装了新盘后反而共享目录不可用了。VirtualBox下需要安装“增强功能”Guest Additions如果安装失败较新版本Linux系统常因为内核头文件没装。解决方法是先在虚拟机系统里装linux-headers-$(uname -r)再重新安装增强功能。如果你刚给虚拟机加了新盘或者升级了内核这个情况会更常见因为内核变了驱动自然要重编。6. 挂载完成后的几个实用习惯6.1 新目录尽量放在根目录不要乱放挂载点目录名不要用/mnt下随便建的临时目录除非你确实只是临时访问。我个人习惯是根目录下建业务相关的目录比如/data、/backup、/logs每个目录都有明确含义后面写自动化脚本、做备份恢复时看目录名就知道用途。如果随便挂到一个嵌套很深的路径时间久了连自己都忘了那块盘挂了哪儿。6.2 定期检查磁盘使用率虚拟机加盘只是第一步后面还要监控使用率。Linux下可以用df -h看每个挂载点的使用百分比配合crontab mail或直接接告警类工具做阈值提醒。虚拟磁盘是稀疏文件物理机上看并不直观所以虚拟机内部的使用率监控更靠谱。另外注意动态分配的虚拟磁盘文件会持续增长物理机磁盘空间规划也要留出余量别等虚拟机里还在50%使用率、物理机磁盘却先满了。6.3 快照与虚拟磁盘文件的联动加完盘、配好挂载之后如果你打算给虚拟机做快照先确认快照功能是否支持新增的虚拟磁盘。VMware Workstation里新建一个快照它会捕捉所有虚拟硬盘的当前状态包括你刚添加的这块。恢复快照时这块新盘也会恢复到快照点的状态后续写入的数据会丢失——所以快照不是备份拿快照当备份用的教训我见过很多次。重要的数据还是要单独做备份流程。VirtualBox类似快照恢复后新盘的状态同样会被回滚。7. 把新盘挂成独立存储后还能怎么扩展如果你挂载数据盘的目标不只是临时用后面很可能要面对扩容问题。Linux下xfs支持在线扩容ext4也支持但步骤不同。xfs的在线扩容流程适合虚拟机底层文件增长、逻辑分区不变大的场景lvextend -l 100%FREE /dev/mapper/你的卷组-逻辑卷 xfs_growfs /挂载点注意xfs不需要卸载分区就能扩容这也是xfs被选为RHEL默认文件系统的原因之一。ext4则用resize2fs /dev/xxx如果在普通分区上做扩容得先删除分区重建再保留数据文件系统这个操作比较危险容易翻车不建议新手尝试。更稳妥的办法是直接再添一块虚拟硬盘挂到已有目录或做成LVM扩展把新盘纳入卷组。虚拟机环境加盘的代价比物理机小得多只要虚机离线或停机状态下改配置添加硬盘、启动、pvcreate、vgextend就能完成不用碰原有数据。对于Windows如果你用的是GPT分区磁盘管理里也能通过“扩展卷”把同一块盘上的未分配空间合并到已有分区前提还是未分配空间紧跟分区后面。不同分区方案灵活性确实有差异这也是为什么我前面反复强调容量规划时别抠得太死。8. 我在实际操作中的一点体会虚拟机里挂载新硬盘这件事难度不算高但它非常考验细心程度。我见过有人把sda当成新盘格式化把系统盘整没了也见过有人fstab写错重启进不了系统一着急差点重装虚拟机。这些不是技术能力的问题而是操作前没有做小验证。我给新手的建议是每一步都停留一下看一眼lsblk的输出确认容量、盘符、分区名都跟预期一致再执行下一步。格式化前查一次盘符挂载前查一次文件系统类型配置fstab前用blkid查一次UUID——看似多花几秒钟实际能省下几个小时的排障时间。虚拟机的好处在于可以随便折腾坏了就回滚快照或者直接重建但这个便利性反而容易让人养成不看盘符就动手的坏习惯。物理机上你要是敲错盘符数据可能就找不回来了所以趁在虚拟机里练习时就把规范动作养成后面切到物理机才不至于踩坑。如果你刚开始接触虚拟机建议找一台不重要的测试虚拟机按着这篇文章的步骤完整走一遍添加硬盘、分区、格式化、挂载、配fstab、重启验证。把这个流程走顺了后面给生产环境加盘时你心里就有底了。另外最后再分享一个小技巧添加完硬盘、还没开机之前先看一眼虚拟机的.vmx配置文件VMware或者.vbox文件VirtualBox确认新增硬盘的条目里没有异常路径。有时候移动过虚拟机的文件夹磁盘文件路径变了启动时会报“找不到磁盘”。这种故障跟挂载无关但排查起来容易让人误以为新硬盘没挂好。提前看一眼配置文件里的绝对路径能省去很多猜测。
上一篇/下一篇内容由系统自动关联 返回资讯列表 →