接上篇文章阿里云ECS服务器磁盘扩容后,宝塔面板不显示新容量?手把手教你解决

如图所示,我的服务器有2个磁盘,一个系统盘一个数据盘。而且数据盘我用的是便宜的 高效云盘,系统盘用的是高速读写的SSD云盘
问题背景
最近网站上传的很多文件比较大,查看宝塔面板发现系统盘使用率已经达到90%以上。
考虑到网站数据还在不断增长,特别是资料下载栏目的文件随着时间一定会越来越多,所以就去了解了目前下载站文件存储有什么解决方案。
基本就是OSS云储存、磁盘扩容、新增云盘这3种方式了。网上很多说OSS比较好,但是我测试后发现在线管理有点麻烦,特别是我需要RPA来处理文件上传下载和删除,思来想去还是服务器本地磁盘比较适合我。
之前服务器的磁盘既是系统盘又是数据盘,为了维护便利和风险分散,所以决定把系统盘和数据盘隔离开来,新增一个数据盘单独给网站的上传文件夹用,决定给服务器添加数据盘,并将WordPress上传目录uploads文件夹挂载到数据盘上。
经过一番折腾和踩坑,终于搞定了这个问题,今天把完整的配置过程和踩坑经验总结出来并分享给大家。

如图所示,这个数据盘的挂载点是/www/wwwroot/www.amazon888.com/wp-content/uploads,专门存储整个网站的上传文件,包括图片这些的。和网站程序文件以及运行系统的系统文件隔离开储存。
适用环境
- 服务器:阿里云ECS
- 控制面板:宝塔面板
- 网站:WordPress
- 数据盘:40GB
- 网站路径:/www/wwwroot/your-domain.com/
技术原理
什么是数据盘挂载?
数据盘挂载就是将额外的存储空间(数据盘)连接到服务器的文件系统中,让系统可以像使用本地文件夹一样使用这个存储空间。
为什么需要挂载数据盘?
- 系统盘空间有限:系统盘通常较小,不适合存储大量文件
- 数据安全:数据盘可以独立备份和管理
- 性能优化:将频繁访问的文件分离到不同磁盘
WordPress上传机制
WordPress默认将上传的文件存储在 wp-content/uploads/ 目录下,这个目录通常位于网站根目录中。我们需要将这个目录挂载到数据盘上。
磁盘挂载方式详解
在实际配置过程中,我发现有多种挂载方式可以选择,每种方式都有其特定的应用场景和优劣势。经过多次测试和踩坑,我总结出了以下5种主要的挂载方式:
1. 直接挂载(推荐)
定义:将数据盘直接挂载到目标目录
命令示例:
优点:
- ✅ 简单可靠:配置简单,不容易出错
- ✅ 性能最佳:没有额外的文件系统开销
- ✅ FTP兼容:FTP客户端可以正常访问
- ✅ 维护简单:配置清晰,易于理解和修改
- ✅ 稳定性高:系统重启后自动挂载
缺点:
- ❌ 路径长度限制:某些环境下可能遇到路径长度限制
- ❌ 灵活性较低:挂载点固定,难以动态调整
适用场景:标准WordPress网站、需要FTP访问的场景、对性能要求较高的应用、新手用户
2. 符号链接
定义:将数据盘挂载到短路径,然后创建符号链接指向目标目录
命令示例:
mount /dev/vdb1 /mnt/wp-uploads
# 创建符号链接
ln -sf /mnt/wp-uploads /www/wwwroot/your-domain.com/wp-content/uploads
优点:
- ✅ 解决路径长度限制:可以绕过路径长度限制
- ✅ 配置灵活:可以轻松更改挂载点
- ✅ 易于管理:可以统一管理多个挂载点
缺点:
- ❌ FTP不兼容:FTP客户端可能无法正常访问符号链接
- ❌ 性能略差:有轻微的文件系统开销
- ❌ 配置复杂:需要额外的符号链接配置
适用场景:遇到路径长度限制的环境、不需要FTP访问的场景
3. 绑定挂载
定义:将一个目录挂载到另一个目录,使两个目录内容相同
命令示例:
mount /dev/vdb1 /mnt/uploads
# 绑定挂载到目标目录
mount –bind /mnt/uploads /www/wwwroot/your-domain.com/wp-content/uploads
优点:
- ✅ 性能好:接近直接挂载的性能
- ✅ 透明访问:对应用程序完全透明
- ✅ 解决路径限制:可以绕过路径长度限制
缺点:
- ❌ 配置复杂:需要两步操作
- ❌ fstab复杂:需要配置两行fstab
- ❌ 容易出错:配置错误容易导致系统启动失败
- ❌ 维护困难:故障排除相对复杂
适用场景:高级用户、对性能要求高但遇到路径限制
挂载方式选择指南
选择建议:
场景 | 推荐方式 | 原因 |
---|---|---|
标准WordPress网站 | 直接挂载 | 简单可靠,FTP兼容 |
遇到路径长度限制 | 符号链接 | 解决限制,配置相对简单 |
高性能要求 | 直接挂载 | 性能最佳 |
高级用户 | 绑定挂载 | 性能好,透明访问 |
解决方案
方案选择
经过多次测试和问题解决,最终采用直接挂载的方案:
- 数据盘挂载:将数据盘直接挂载到WordPress上传目录
- 权限配置:设置正确的文件权限
- PHP配置:修改open_basedir允许访问数据盘
- FTP兼容:确保FTP客户端可以正常上传
为什么选择直接挂载?
- 简单可靠:不需要复杂的符号链接或绑定挂载
- FTP兼容:FTP客户端可以正常访问
- 易于维护:配置清晰,容易理解和修改
- 性能更好:减少文件系统开销
配置步骤
第一步:数据盘分区和格式化
操作说明:
首先需要对新添加的数据盘进行分区和格式化,才能使用。
1.1 查看磁盘状态
lsblk# 查看磁盘使用情况
df -h# 查看分区表
fdisk -l
1.2 创建分区
fdisk /dev/vdb# 在fdisk中的操作步骤:
# 1. 输入 ‘n’ 创建新分区
# 2. 输入 ‘p’ 选择主分区
# 3. 输入 ‘1’ 分区号
# 4. 按回车使用默认起始扇区
# 5. 按回车使用默认结束扇区(使用全部空间)
# 6. 输入 ‘w’ 保存并退出
1.3 格式化分区
mkfs.ext4 /dev/vdb1
第二步:备份现有数据
重要提醒:
在操作之前,一定要先备份现有的数据,避免数据丢失。
mkdir -p /backup# 备份现有uploads目录
cp -r /www/wwwroot/your-domain.com/wp-content/uploads /backup/uploads_backup_$(date +%Y%m%d_%H%M%S)
第三步:直接挂载数据盘
3.1 卸载现有目录(如果已挂载)
mount | grep vdb1# 如果已挂载,先卸载
umount /dev/vdb1
3.2 删除现有uploads目录
rm -rf /www/wwwroot/your-domain.com/wp-content/uploads
3.3 直接挂载到WordPress目录
mount /dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads
3.4 设置开机自动挂载
nano /etc/fstab# 在文件末尾添加以下行:
/dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads ext4 defaults 0 0
第四步:恢复数据和设置权限
4.1 恢复数据
cp -r /backup/uploads_backup_*/uploads/* /www/wwwroot/your-domain.com/wp-content/uploads/
4.2 设置权限
chown -R www:www /www/wwwroot/your-domain.com/wp-content/uploads
chmod -R 755 /www/wwwroot/your-domain.com/wp-content/uploads
第五步:配置PHP访问权限
5.1 修改.user.ini文件
cd /www/wwwroot/your-domain.com/# 备份原文件
cp .user.ini .user.ini.backup# 修改.user.ini文件
cat > .user.ini << ‘EOF’
open_basedir=/www/wwwroot/your-domain.com/:/tmp/
EOF
5.2 重启PHP服务
bt restart
第六步:验证配置
6.1 检查挂载状态
df -h | grep vdb1# 查看uploads目录
ls -la /www/wwwroot/your-domain.com/wp-content/uploads
6.2 检查PHP配置
php -r “echo ‘open_basedir: ‘ . ini_get(‘open_basedir’) . PHP_EOL;”
6.3 测试WordPress上传
- 登录WordPress后台
- 进入”媒体” → “添加新媒体”
- 尝试上传图片
- 检查文件是否出现在数据盘中
6.4 测试FTP上传
- 使用FTP客户端连接服务器
- 导航到 /www/wwwroot/your-domain.com/wp-content/uploads/
- 尝试上传文件
- 确认上传成功
故障排除
在实际操作过程中,可能会遇到一些问题,这里总结一下常见的问题和解决方法。我整理了16个最常见的问题,并提供详细的解决方案:
快速诊断检查清单
df -h | grep vdb1# 2. 检查WordPress目录
ls -la /www/wwwroot/your-domain.com/wp-content/uploads# 3. 检查PHP配置
php -r “echo ‘open_basedir: ‘ . ini_get(‘open_basedir’) . PHP_EOL;”# 4. 检查权限
ls -la /www/wwwroot/your-domain.com/wp-content/uploads# 5. 检查磁盘空间
df -h /www/wwwroot/your-domain.com/wp-content/uploads
问题1:服务器启动失败(急救模式)——我之前遇到了,折腾好久才解决的~
现象:服务器重启后进入急救模式,无法正常启动
原因:fstab配置错误,特别是绑定挂载配置问题
解决方案:
# 以读写模式重新挂载根文件系统
mount -o remount,rw /# 备份fstab
cp /etc/fstab /etc/fstab.backup.$(date +%Y%m%d_%H%M%S)# 编辑fstab,删除有问题的绑定挂载行
nano /etc/fstab# 删除类似这样的行:
# /wp-uploads /www/wwwroot/your-domain.com/wp-content/uploads none bind 0 0# 重启服务器
reboot
问题2:WordPress无法上传——这个坑我也踩了~
现象:提示”无法创建目录,父目录是否可写”
原因:open_basedir限制或权限问题
解决方案:
cat /www/wwwroot/your-domain.com/.user.ini# 确保配置正确
open_basedir=/www/wwwroot/your-domain.com/:/tmp/# 检查权限
chown -R www:www /www/wwwroot/your-domain.com/wp-content/uploads
chmod -R 755 /www/wwwroot/your-domain.com/wp-content/uploads# 重启PHP服务
bt restart
问题3:FTP客户端上传失败
现象:FTP客户端提示”Error while uploading the file to the server”
原因:符号链接与FTP客户端不兼容
解决方案:
ls -la /www/wwwroot/your-domain.com/wp-content/uploads# 如果显示符号链接(l开头),需要改为直接挂载
# 卸载符号链接
rm -rf /www/wwwroot/your-domain.com/wp-content/uploads# 直接挂载数据盘
mount /dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads# 设置权限
chown -R www:www /www/wwwroot/your-domain.com/wp-content/uploads
chmod -R 755 /www/wwwroot/your-domain.com/wp-content/uploads
问题4:数据重复存储
现象:系统盘空间没有释放,数据同时存在于系统盘和数据盘
原因:备份文件或数据迁移不完整
解决方案:
du -sh /backup/*# 删除备份文件(确认数据已迁移后)
rm -rf /backup/uploads_backup_*# 检查系统盘使用情况
df -h /# 清理系统盘上的重复数据
find /www/wwwroot/your-domain.com/wp-content/uploads -type f -exec ls -la {} \; | head -10
问题5:数据盘空间不足
现象:上传失败,提示磁盘空间不足
原因:数据盘空间已满
解决方案:
df -h /www/wwwroot/your-domain.com/wp-content/uploads# 查找大文件
du -sh /www/wwwroot/your-domain.com/wp-content/uploads/* | sort -hr | head -10# 清理旧文件(删除1年以上的文件)
find /www/wwwroot/your-domain.com/wp-content/uploads -type f -mtime +365 -delete# 清理空目录
find /www/wwwroot/your-domain.com/wp-content/uploads -type d -empty -delete# 如果空间仍然不足,考虑扩容数据盘
实际案例
案例1:FTP上传失败问题
问题描述:配置符号链接后,FTP客户端无法上传文件到wp-content/uploads/erphpdown文件夹
错误信息:Error while uploading the file to the server. See InnerException for more info.
解决方案:
- 识别问题:符号链接与FTP客户端不兼容
- 改为直接挂载:mount /dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads
- 设置权限:chown -R www:www /www/wwwroot/your-domain.com/wp-content/uploads
- 验证:FTP上传成功
案例2:服务器启动失败
问题描述:修改fstab后服务器重启进入急救模式
错误信息:Failed to mount /www/wwwroot/your-domain.com/wp-content/uploads
解决方案:
- 通过VNC登录服务器
- 重新挂载根文件系统:mount -o remount,rw /
- 编辑fstab删除有问题的绑定挂载行
- 重启服务器恢复正常
案例3:数据重复存储
问题描述:系统盘空间没有释放,数据同时存在于系统盘和数据盘
原因分析:备份文件占用系统盘空间
解决方案:
- 检查备份目录:du -sh /backup/*
- 确认数据已迁移到数据盘
- 删除备份文件:rm -rf /backup/uploads_backup_*
- 验证系统盘空间释放
维护指南
日常检查
1. 检查挂载状态
df -h | grep vdb1# 查看WordPress目录
ls -la /www/wwwroot/your-domain.com/wp-content/uploads
2. 检查磁盘使用情况
df -h /# 数据盘使用情况
df -h /www/wwwroot/your-domain.com/wp-content/uploads
3. 检查PHP配置
php -r “echo ‘open_basedir: ‘ . ini_get(‘open_basedir’) . PHP_EOL;”
定期维护
1. 备份重要配置
mkdir -p /backup/config# 备份关键配置文件
cp /www/wwwroot/your-domain.com/.user.ini /backup/config/.user.ini.backup
cp /etc/fstab /backup/config/fstab.backup
2. 清理临时文件
rm -rf /tmp/*# 清理PHP临时文件
rm -rf /www/server/php/*/var/tmp/*
3. 监控日志
tail -f /var/log/php-fpm/error.log# 查看Nginx错误日志
tail -f /var/log/nginx/error.log
数据迁移
1. 备份数据
tar -czf /backup/uploads_$(date +%Y%m%d).tar.gz /www/wwwroot/your-domain.com/wp-content/uploads
2. 迁移到新服务器
mount /dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads# 恢复数据
tar -xzf uploads_$(date +%Y%m%d).tar.gz -C /# 设置权限
chown -R www:www /www/wwwroot/your-domain.com/wp-content/uploads
chmod -R 755 /www/wwwroot/your-domain.com/wp-content/uploads
常见问题
这里整理了15个最常见的问题和详细解答,涵盖配置、故障排除和维护各个方面:
Q1:为什么选择直接挂载而不是符号链接?
A:符号链接与FTP客户端不兼容,会导致FTP上传失败。直接挂载更简单可靠,兼容性更好。
Q2:数据盘挂载失败怎么办?
A:
- 检查磁盘是否已分区:fdisk -l
- 检查分区是否已格式化:file -s /dev/vdb1
- 检查挂载点是否存在:ls -la /www/wwwroot/your-domain.com/wp-content/uploads
Q3:WordPress上传仍然失败?
A:
- 检查open_basedir配置:php -r “echo ini_get(‘open_basedir’);”
- 检查挂载状态:df -h | grep vdb1
- 检查权限:ls -la /www/wwwroot/your-domain.com/wp-content/uploads
Q4:如何卸载数据盘?
A:
umount /www/wwwroot/your-domain.com/wp-content/uploads# 删除fstab中的挂载配置
nano /etc/fstab
# 删除 /dev/vdb1 /www/wwwroot/your-domain.com/wp-content/uploads ext4 defaults 0 0 这一行
Q5:数据盘空间不足怎么办?
A:
- 检查大文件:du -sh /www/wwwroot/your-domain.com/wp-content/uploads/* | sort -hr
- 清理旧文件:find /www/wwwroot/your-domain.com/wp-content/uploads -type f -mtime +365 -delete
- 考虑扩容数据盘
Q6:如何选择合适的挂载方式?
A:根据具体需求选择:
- 标准WordPress网站:推荐直接挂载(简单可靠,FTP兼容)
- 遇到路径长度限制:推荐符号链接(解决限制问题)
- 高性能要求:推荐直接挂载(性能最佳)
- 需要灵活管理:推荐符号链接(易于调整)
- 高级用户:推荐绑定挂载(性能好,透明访问)
Q7:各种挂载方式的性能如何?
A:性能对比(从高到低):
- 直接挂载:⭐⭐⭐⭐⭐(性能最佳,无额外开销)
- 绑定挂载:⭐⭐⭐⭐⭐(接近直接挂载性能)
- 符号链接:⭐⭐⭐⭐(轻微文件系统开销)
- 网络挂载:⭐⭐(网络延迟影响)
Q8:FTP兼容性如何?
A:FTP兼容性对比:
- 直接挂载:⭐⭐⭐⭐⭐(完全兼容)
- 绑定挂载:⭐⭐⭐⭐⭐(完全兼容)
- 网络挂载:⭐⭐⭐(基本兼容)
- 符号链接:⭐(不兼容,FTP客户端无法访问)
路径长度限制问题分析
在配置过程中,我发现了一个重要问题:挂载点路径长度限制。这可能是很多用户会遇到的问题。
我们遇到的具体情况
问题背景:在配置WordPress数据盘挂载时,我们使用的挂载点路径为:
路径长度分析:
# 输出:52(包含结尾的换行符,实际为51个字符)
遇到的限制情况:
- 标准Linux限制:理论上支持4096字符,但实际使用中可能遇到更严格的限制
- 特定环境限制:在某些云服务器或特定配置下,可能遇到32字符、64字符等限制
- 文件系统限制:不同文件系统对路径长度有不同要求
- 工具限制:某些挂载工具或脚本可能有自己的路径长度限制
解决方案对比:
方案 | 优点 | 缺点 | 适用场景 |
---|---|---|---|
短路径+符号链接 | 简单可靠,FTP兼容 | 需要额外配置 | 推荐方案 |
绑定挂载 | 性能好,透明 | 配置复杂 | 高级用户 |
修改网站路径 | 根本解决 | 影响现有配置 | 新项目 |
总结
通过这次数据盘挂载配置,我学到了几个重要的知识点:
1. 数据盘挂载的重要性
系统盘空间有限,不适合存储大量文件。将WordPress上传目录挂载到数据盘,可以有效解决存储空间不足的问题。
2. 直接挂载的优势
直接挂载比符号链接更简单可靠,兼容性更好,特别是与FTP客户端的兼容性。
3. 配置的关键点
配置过程中需要注意权限设置、PHP配置、开机自动挂载等关键点,任何一个环节出错都可能导致功能异常。
4. 故障排除的重要性
在实际操作过程中,可能会遇到各种问题,需要根据错误信息进行诊断和解决。
5. 挂载方式选择的重要性
不同的挂载方式有不同的优劣势,选择合适的挂载方式对系统的稳定性和性能都有重要影响。直接挂载是最佳选择,但在特殊情况下需要考虑其他方案。
6. 路径长度限制问题
在某些环境下,挂载点路径长度可能受到限制,需要根据具体情况选择合适的解决方案。
7. 维护建议
配置完成后,需要定期检查挂载状态、磁盘使用情况、PHP配置等,确保系统正常运行。
8. 故障排除经验
在实际操作过程中,可能会遇到各种问题,需要根据错误信息进行诊断和解决。建立完善的故障排除流程非常重要。
本文由AI帮我润色生成,希望这篇文章能帮助到遇到同样问题的朋友。如果大家在操作过程中遇到问题,欢迎在评论区留言讨论。
原文链接:https://www.amazon888.com/blog/24343.html,转载请注明出处和链接。
评论0