系统盘容量通常不大,日志、数据库文件和上传素材积累几个月就能占满。单独加一块数据盘,业务数据和系统就分开了。数据盘可以单独扩容、做快照、迁移,系统盘出问题时,数据也不至于跟着受影响。下面以 Linux 实例为主,走一遍阿里云服务器挂载数据盘的完整流程,最后补充 Windows 的做法。

挂载前先确认三件事
动手之前,有三处容易出岔子。
- 地域和可用区要一致。云盘只能挂到同可用区的实例上,跨可用区无法直接挂载。
- 实例状态以控制台为准。多数云盘支持实例运行中挂载,但是否支持,看控制台的提示。
- 已有业务的机器先做快照。挂载本身不改动系统盘,风险主要在后面的格式化步骤。给系统盘打个快照,出了问题还能回退。
在控制台创建并挂载云盘
进入 ECS 控制台,左侧选择“存储与快照”下的“块存储”,点击“创建云盘”。有三个参数要留意:
- 可用区:和实例保持一致。
- 云盘类型:一般业务选 ESSD 就够用,性能和可靠性比较均衡。
- 容量:按数据增长速度估算,留一些余量。后续可以在线扩容,不必一步到位。
创建完成后,在云盘列表的操作栏点击“挂载”,选中目标实例并确认。状态变为“使用中”,说明已经挂到实例上了。这时系统能识别到新磁盘,但还不能直接存文件,要登录实例继续处理。
Linux 实例:分区、格式化、挂载
用 SSH 登录实例,执行 lsblk 查看磁盘列表。假设系统盘是 vda,新盘显示为 vdb,且没有分区。较新的机型可能使用 NVMe 接口,设备名会是 nvme1n1 之类,以 lsblk 的输出为准。
- 分区。容量不超过 2TB,执行 fdisk /dev/vdb,依次输入 n、p、1,回车接受默认的起止位置,最后输入 w 写入。超过 2TB 则要用 GPT,改用 parted /dev/vdb,先执行 mklabel gpt,再用 mkpart 创建分区。
- 格式化。对 /dev/vdb1 执行 mkfs.ext4 /dev/vdb1。格式化会清空分区内容,回车之前把设备名再核对一遍。
- 创建挂载点并挂载。执行 mkdir -p /data,再运行 mount /dev/vdb1 /data,用 df -h 确认 /data 已显示容量。
- 设置开机自动挂载。重启后设备名可能变化,所以用 UUID 更稳。执行 blkid /dev/vdb1 拿到 UUID,在 /etc/fstab 末尾追加一行:UUID=拿到的值 /data ext4 defaults,nofail 0 2。nofail 的作用是磁盘异常时系统仍能正常启动,不至于卡在开机阶段。
- 验证。先执行 umount /data,再运行 mount -a。若 df -h 又能看到 /data,说明 fstab 没问题。fstab 写错,系统可能开机进入紧急模式,所以改完先验证,确认无误再重启。
一个拆分日志盘的示意场景
下面的数字为示例。某电商团队的实例是 4 核 8GB,系统盘 40GB。Nginx 访问日志和应用日志每天约增长 3GB,三个月后系统盘使用率到了 95%,数据库开始频繁报写入错误。团队的处理方式是:
- 在控制台创建一块 200GB 的 ESSD,挂到同一实例上。
- 按上文完成分区、格式化,挂载到 /data,并写入 fstab。
- 迁移 Nginx 日志前先停止 Nginx,避免边写边移。把 /var/log/nginx 迁到 /data/nginx-log,再在原位置建立软链接指向新目录。
- 用 logrotate 设置每日切割,保留 14 天,避免日志无限增长。
调整后,系统盘使用率降到 60% 以下,数据库不再受日志写入拖累。后来业务量上来,团队在控制台把云盘扩到 300GB,再在系统内执行 growpart /dev/vdb 1 和 resize2fs /dev/vdb1,文件系统容量才随之增加。
Windows 实例怎么做
Windows 在“磁盘管理”里完成初始化。右键开始菜单,选择“磁盘管理”,新盘会以“未初始化”状态出现,按下面的顺序处理:
- 右键磁盘,选择“初始化磁盘”,分区形式一般选 GPT。
- 右键未分配的空间,选择“新建简单卷”,按向导设置容量和盘符。
- 文件系统选 NTFS,勾选“执行快速格式化”,完成后盘符即可使用。
常见问题
- 挂载后看不到新盘。多半是还没分区或格式化。用 lsblk 或磁盘管理看一下,磁盘是否仍显示为未分配。
- 重启后挂载丢失。通常是没写 fstab,或者写的是设备名而不是 UUID。
- 扩容后容量没变。控制台扩容只改了云盘大小,系统内的分区和文件系统还需要单独扩展。