LUCKVM / CLOUD INFRASTRUCTURE

探索 LuckVM

首页 域名注册 帮助中心 新闻中心 关于我们

VPS磁盘挂载与扩容完整教程:新数据盘挂载+系统盘扩容不丢数据,新手也能操作

很多新手第一次挂载磁盘、扩容系统盘的时候,要么操作错了把数据格没了,要么fstab配置错了导致服务器开不了机,要么挂载完重启发现目录空了——这篇文章把所有坑都踩过了,照着一步步来,新手也能安全完成,不会丢数据。

很多人买了VPS加数据盘,或者升级配置扩容系统盘,一看到命令行就慌,怕操作错了数据没了。其实磁盘挂载和扩容是VPS最基础的操作之一,只要按正确步骤来,再提前做好快照备份,几乎不会出问题。

这篇文章从最基础的磁盘概念讲起,到新数据盘完整挂载、把数据盘挂载到/www目录、系统盘在线扩容、常见错误排查,每一步都配好可直接复制的命令,新手照着做10分钟就能搞定。

💡 操作前最重要的一句话:不管做什么磁盘操作,先去VPS控制台打一个系统快照!操作错了随时可以回滚,这是你最大的保险。LuckVM所有节点控制台一键打快照,几秒钟就好,不要省这一步。


一、先搞懂基础概念,再动手操作

很多人上来就复制命令,连sda和sdb都分不清,不格错盘才怪。先花2分钟搞懂几个基础概念,后面操作就不会懵:

Linux磁盘结构与挂载点示意图

1.1 Linux下磁盘怎么命名

Linux里磁盘命名规则很简单: - 第一块磁盘/dev/sda,一般是系统盘 - 第二块磁盘/dev/sdb,一般是后来加的数据盘 - 第三块/dev/sdc,以此类推

磁盘上的分区就是后面加数字:/dev/sda1 是第一块盘的第一个分区,/dev/sdb1 是第二块盘的第一个分区。

1.2 什么是挂载?

Linux里没有Windows那种C盘D盘的概念,所有磁盘都要"挂载"到一个目录下才能用,这个目录就叫"挂载点"。 - 比如系统盘一般挂载到根目录 / - 1Panel/宝塔的网站数据一般放在 /www 目录 - 你可以把新加的数据盘挂载到 /www,这样所有网站数据、数据库就都存在数据盘上,系统盘重装也不影响数据

1.3 什么是文件系统?

格式化就是给磁盘创建文件系统,就像给新硬盘分区格式化一样。Linux现在最常用的是 ext4 文件系统,稳定可靠,新手直接用这个就行,不用折腾xfs/btrfs那些。


二、第一步:先查看当前磁盘情况

不管是挂载新盘还是扩容,第一步永远是先看清楚当前磁盘情况,别上来就操作。

SSH连接到服务器,执行这三个命令:

# 查看所有块设备(磁盘和分区)
lsblk

# 查看当前已挂载分区和使用情况
df -h

# 查看磁盘分区表
fdisk -l

正常输出大概是这样的:

lsblk命令查看磁盘信息(终端截图)

从输出里你需要看清楚: 1. 哪块是系统盘(sda,已经挂载到/、/boot这些目录的) 2. 哪块是新加的数据盘(sdb,下面没有分区、也没有挂载点的就是新盘) 3. 磁盘大小对不对,别把盘认错了

⚠️ 特别注意:一定要看清楚磁盘名!sda是系统盘,sdb才是新数据盘,后面格式化的时候千万不要格错sda,不然系统直接没了。


三、新数据盘完整挂载流程(5步走)

新数据盘挂载5步流程图

假设你新加了一块200G的数据盘,要挂载到 /www 目录(1Panel/宝塔默认网站目录),按下面5步来:

3.1 第一步:磁盘分区(新盘必须做)

新磁盘没有分区表,先给它分一个区,执行:

# 注意把sdb换成你自己的磁盘名!不要照抄!
fdisk /dev/sdb

进入fdisk交互界面后,依次按: 1. 输入 n → 回车(新建分区) 2. 输入 p → 回车(主分区) 3. 分区号直接回车(默认1) 4. 起始扇区直接回车(默认从2048开始) 5. 结束扇区直接回车(默认用全部空间) 6. 输入 w → 回车(保存分区表并退出)

执行完之后再输入 lsblk,就能看到sdb下面多了一个sdb1分区,说明分区成功了。

3.2 第二步:格式化分区

分区完要格式化才能用,执行:

# 格式化为ext4文件系统,注意sdb1,是分区不是整块盘!
mkfs.ext4 /dev/sdb1

⚠️ 警告:格式化会清空这个分区上的所有数据!确认这是新盘、确认盘名没错再执行,格错了数据就没了。

格式化过程大概几秒钟,完成后会输出UUID,记一下,后面fstab要用,或者后面用blkid命令查也行。

3.3 第三步:创建挂载点并挂载

如果你是全新的服务器,还没有/www目录,先创建:

# 创建挂载点目录
mkdir -p /www

# 挂载分区到/www目录
mount /dev/sdb1 /www

挂载完执行 df -h,如果能看到/dev/sdb1挂载到了/www,大小是200G,说明临时挂载成功了。

3.4 第四步:配置开机自动挂载(最重要)

上面的mount命令是临时的,服务器重启就没了,必须配置fstab让它开机自动挂载。

先查一下分区的UUID

blkid /dev/sdb1

输出大概是这样:

/dev/sdb1: UUID="abcdef12-3456-7890-abcd-ef1234567890" TYPE="ext4" PARTUUID="xxxxxx"

复制UUID那一串引号里的内容,然后编辑fstab文件:

nano /etc/fstab

在文件最后加一行:

/etc/fstab配置开机自动挂载

UUID=你刚才复制的UUID  /www  ext4  defaults,noatime  0  2

💡 为什么用UUID不用/dev/sdb1? 因为磁盘顺序可能会变(比如加了第三块盘),UUID是分区唯一标识符,永远不会变,用UUID挂载最稳妥。

加完之后按 Ctrl+O 保存,Ctrl+X 退出nano。

3.5 第五步:验证配置是否正确

这一步绝对不能省! 很多人配置完fstab直接重启,结果配置错了开不了机。配置完一定要执行:

# 重新挂载所有fstab里的分区,没有报错就是配置正确
mount -a

如果执行完没有任何输出,说明配置正确!然后再执行 df -h 确认一下能看到挂载,就可以重启测试了:

reboot

重启完重新连接服务器,执行 df -h,如果还能看到/dev/sdb1挂载到/www,说明开机自动挂载成功了!


四、特殊场景:已经装了面板,怎么把数据盘挂载到已有的/www目录?

很多人是先装了1Panel/宝塔,系统盘用了一段时间发现不够用了,才加数据盘,这时候/www目录已经有数据了,不能直接挂载,不然原来的数据就被覆盖了。按下面步骤操作:

  1. 先停止所有服务:面板、Nginx、MySQL、PHP这些服务都停掉,避免数据写入
# 1Panel用户
systemctl stop 1panel
systemctl stop nginx
systemctl stop mysqld
systemctl stop php-fpm-*

# 宝塔用户
/etc/init.d/bt stop
service nginx stop
service mysqld stop
service php-fpm-* stop
  1. 按上面3.1-3.3步骤分好区、格式化好,先临时挂载到/mnt目录
mkdir -p /mnt
mount /dev/sdb1 /mnt
  1. 把原来/www目录下的所有数据复制到新磁盘
# 用rsync复制,保留权限和属性
rsync -a /www/ /mnt/
  1. 复制完确认数据大小一致
du -sh /www
du -sh /mnt

两个大小差不多说明复制完整了。

  1. 卸载临时挂载,把新盘挂载到/www
umount /mnt
mount /dev/sdb1 /www
  1. 按3.4步骤配置fstab开机自动挂载,执行mount -a验证无报错
  2. 重启服务器,启动所有服务,确认网站正常运行
  3. 确认一切正常后,可以把原来系统盘上的/www_old备份删掉(一定要确认没问题再删!)

五、系统盘扩容教程(升级配置后不丢数据)

如果你是在LuckVM控制台升级了系统盘大小(比如从50G升到100G),重启服务器后发现磁盘还是显示50G,这是因为分区还没扩容,按下面4步操作,不丢数据:

系统盘扩容4步流程(不丢数据)

5.1 第一步:先安装growpart工具

# Debian/Ubuntu
apt update && apt install -y cloud-guest-utils

# CentOS/RHEL
yum install -y cloud-utils-growpart

5.2 第二步:扩容系统分区

假设系统盘是sda,系统分区是sda3(用lsblk看你的系统分区是哪个,一般是最后一个):

# 扩容/dev/sda的第三个分区,注意sda和3之间有空格
growpart /dev/sda 3

执行完再lsblk看,sda3分区大小已经变成新的大小了。

5.3 第三步:扩容文件系统

如果是ext4文件系统:

resize2fs /dev/sda3

如果是xfs文件系统:

xfs_growfs /

5.4 第四步:验证扩容结果

df -h

看到/dev/sda3大小已经变成新的大小,说明扩容成功了!全程不需要重启,在线扩容,不影响运行中的服务。


六、挂载后必做的3个验证

挂载完、扩容完不要急着结束,一定要做这3个验证:

  1. df -h确认分区大小和挂载点正确
  2. 在挂载目录创建一个测试文件,重启后看还在不在
touch /www/test.txt
reboot
# 重启后看文件存在不
ls /www/test.txt
  1. 确认网站和数据库正常:打开网站看看能不能正常访问,后台能不能登录,数据库能不能连接,权限有没有问题。

七、常见错误与解决方案

磁盘挂载/扩容常见错误占比

7.1 fstab配置错了,服务器重启开不了机怎么办?

这是最常见的错误,别慌: 1. 去LuckVM控制台打开VNC远程连接 2. 进入单用户模式,或者直接输入root密码登录 3. 编辑fstab把你加错的那行删掉,或者注释掉(前面加#) 4. 执行 mount -a 没报错,重启就能正常进系统了 5. 重新检查UUID和配置,改对了再加回去

💡 这也是为什么反复强调操作前打快照,真配置错了直接回滚快照就行,不用折腾救援模式。

7.2 mount -a报错:wrong fs type, bad option, bad superblock

一般是这几个原因: - UUID写错了,用blkid重新核对 - 文件系统类型写错了,比如你格式化成xfs却写了ext4 - 分区没有格式化,先mkfs.ext4格式化再挂载

7.3 挂载后目录权限不对,www用户无法写入

新挂载的分区默认是root权限,需要改一下权限:

chown -R www:www /www

7.4 重启后挂载消失了

说明fstab没配对,检查: - 是不是加了fstab那行? - UUID对不对? - 执行mount -a有没有报错? - 是不是把配置写到文件最后一行最后面,有没有换行?(fstab最后一行必须有换行,不然不生效)


八、操作前/中/后检查清单

照着这个清单打勾,保证不会出错:

磁盘操作检查清单(打勾再执行)

  • [ ] 操作前:已经在LuckVM控制台打了系统快照
  • [ ] 操作前:用lsblk和fdisk -l确认了目标磁盘,不会格错盘
  • [ ] 操作前:重要数据已经单独备份了一份
  • [ ] 分区时:分区命令里的磁盘名是正确的新数据盘,不是sda系统盘
  • [ ] 格式化前:确认分区名是sdb1之类的数据盘分区,不是系统盘分区
  • [ ] fstab配置:UUID是用blkid查出来的正确UUID,没写错
  • [ ] fstab配置完:执行了mount -a,没有任何报错
  • [ ] 重启前:df -h能看到新挂载的分区
  • [ ] 重启后:df -h依然能看到挂载,没有消失
  • [ ] 重启后:目录权限正确,www用户可以写入
  • [ ] 最后:网站、数据库、面板都能正常访问,没有报错

九、常见问题FAQ

Q1:我可以把数据盘挂载到其他目录吗?比如/home或者/data?

当然可以,挂载点可以是任意空目录,想挂到哪里就创建哪个目录,步骤是一样的。1Panel/宝塔用户推荐挂到/www,因为面板默认数据都在/www。

Q2:Windows系统的NTFS硬盘能直接挂载吗?

可以,但需要安装ntfs-3g:apt install ntfs-3g,然后挂载的时候指定类型ntfs-3g。但VPS上不推荐用NTFS,性能和稳定性都不如ext4,数据盘直接格式化成ext4就行。

Q3:挂载后原来/www目录里的文件不见了?

那是因为你直接mount到了/www,把原来的文件覆盖了,不是丢了。umount /www之后原来的文件就回来了。按第四部分的步骤先把旧数据复制到新盘再挂载就不会有这个问题。

Q4:我有好几块数据盘,可以分别挂载到不同目录吗?

当然可以,每块盘按上面的步骤分区、格式化、挂载、配置fstab就行,互不影响。比如sdb挂/www,sdc挂/backup。

Q5:扩容系统盘会丢数据吗?

按上面的步骤操作不会丢数据,growpart和resize2fs都是在线扩容,不会修改现有数据。但还是强烈建议扩容前打快照,以防万一。

Q6:fstab里用/dev/sdb1和UUID有什么区别?

用/dev/sdb1可能会因为磁盘顺序变化导致挂载错盘,UUID是每个分区唯一的,永远不会变,一定要用UUID。

Q7:新磁盘必须分区吗?能不能整块盘直接格式化用?

也可以,不分区直接mkfs.ext4 /dev/sdb也能用,但还是推荐分一个区,以后管理方便,也符合使用习惯。

Q8:swap分区可以建在数据盘上吗?

可以,但一般swap建在系统盘就行,不需要放在数据盘。

Q9:挂载完磁盘需要重启面板吗?

一般不需要,只要df -h能看到挂载,面板就能自动识别到新的磁盘空间,如果面板里显示的磁盘大小不对,重启一下面板服务就行。

Q10:我不敢自己操作,怕搞坏了怎么办?

没关系,LuckVM新用户购买服务器后,如果需要挂载数据盘或者扩容系统盘,可以联系客服免费协助操作,不用自己折腾。


相关阅读

本文由 LuckVM技术团队 原创发布。LuckVM提供香港CN2 GIA、新加坡Premium、日本东京、美国洛杉矶四大高速节点,全系NVMe SSD+独享带宽,默认开放25端口,自带免费DDoS防护,支持7天无理由退款。新用户购买后可联系客服免费协助磁盘挂载、系统扩容、网站迁移等操作,不用自己折腾。