如何为网站服务器添加第二块或更多数据盘?

在云计算环境下,为服务器(通常指 ECS、CVM 等实例)添加数据盘与物理机插硬盘的逻辑完全不同。云厂商提供的“磁盘”本质上是网络存储块设备,你需要经历 购买/创建 -> 挂载/关联 -> 系统内识别与格式化 -> 配置自动挂载 这几个核心步骤。

以下以国内主流云厂商(阿里云、腾讯云、华为云等)通用的 Linux 和 Windows 环境为例,提供标准化的操作指南。


一、 云平台控制台操作(前置步骤)

无论后续在操作系统里做什么,首先必须在云厂商的控制台上完成资源分配。

  1. 购买/创建云盘

    • 进入云服务器控制台,找到目标实例。
    • 选择“更多” -> “云盘” -> “创建云盘”。
    • 关键参数选择:
      • 类型:普通云盘(性价比高)、SSD(高性能)、ESSD(极高 IOPS)。网站数据库建议选 SSD 或 ESSD。
      • 大小:根据业务预估选择,注意部分云厂商支持在线扩容,但初始容量不宜过小。
      • 可用区:必须与服务器所在可用区一致,否则无法挂载。
      • 挂载方式:大多数云厂商支持“自动挂载”,但为了稳妥,建议先手动创建,待系统内配置好后再设置开机自动挂载,避免重启后文件系统未就绪导致启动失败。
  2. 挂载磁盘

    • 创建完成后,在云盘列表中找到新磁盘,点击“挂载”。
    • 选择目标实例进行绑定。
    • 等待状态变为“已挂载”。

注意:Windows 实例通常需要在控制台上执行“初始化磁盘”操作才能看到盘符;Linux 实例则需要在操作系统内部进行分区和格式化。


二、 Linux 系统配置详解

这是最常见的场景。假设你的第二块盘被识别为 /dev/vdb(不同云厂商命名可能不同,如 xvdb, sdb 等,请以实际命令输出为准)。

1. 查看磁盘状态

登录 SSH,使用以下命令确认磁盘是否可见:

lsblk
# 或者
fdisk -l

你会看到一个未分区的磁盘,例如 vdb,大小为 100G 或其他数值。

2. 分区(可选,推荐)

虽然可以直接格式化整块磁盘,但为了管理灵活性和未来扩展性,建议先分区。

# 使用 fdisk 对 /dev/vdb 进行分区
fdisk /dev/vdb

交互过程:

  • 输入 n (新建分区)
  • 输入 p (主分区)
  • 输入 1 (分区号)
  • 默认回车(起始扇区)
  • 默认回车(结束扇区,使用全部空间)
  • 输入 w (保存并退出)

此时磁盘名为 /dev/vdb1。

3. 格式化文件系统

将分区格式化为 ext4 或 xfs(推荐 xfs,性能更好且支持在线扩容)。

# 格式化为 ext4
mkfs.ext4 /dev/vdb1

# 或者格式化为 xfs
mkfs.xfs /dev/vdb1

4. 创建挂载点并挂载

# 创建目录作为挂载点
mkdir -p /data

# 临时挂载测试
mount /dev/vdb1 /data

# 验证是否成功
df -h

如果看到 /dev/vdb1 挂载在 /data 下,说明临时挂载成功。

5. 配置开机自动挂载(关键!)

如果不配置此项,重启服务器后数据盘会丢失挂载,网站若依赖该路径会导致服务异常。
编辑 /etc/fstab 文件:

vi /etc/fstab

在文件末尾添加一行(假设使用 ext4,若是 xfs 请将 ext4 改为 xfs):

/dev/vdb1 /data ext4 defaults 0 0
  • 安全提示:添加前建议先备份 fstab:cp /etc/fstab /etc/fstab.bak。
  • 验证配置是否正确:mount -a。若无报错,说明配置无误。

三、 Windows Server 系统配置

Windows 的管理更图形化,但也需注意驱动问题。

  1. 打开磁盘管理

    • 右键“开始菜单” -> “磁盘管理”,或通过 diskmgmt.msc 打开。
    • 你会看到一块“未初始化”的磁盘,显示为黑色条带。
  2. 初始化磁盘

    • 右键该磁盘 -> “初始化磁盘”。
    • 选择 GPT 分区表(推荐,支持大于 2TB 磁盘)或 MBR。
  3. 新建简单卷

    • 右键未分配区域 -> “新建简单卷”。
    • 按照向导一路下一步,分配盘符(如 D:),文件系统选择 NTFS,簇大小默认即可。
  4. 优化设置

    • 对于网站服务器,建议在磁盘属性中关闭“索引此驱动器上的文件内容以便快速搜索”,以提升 I/O 性能。
    • 确保“写入缓存策略”设置为“启用磁盘上的写入缓存”,以提高性能(需配合 UPS 防止断电丢数据)。

四、 高级技巧与最佳实践

1. 多块磁盘 RAID 阵列(软 RAID)

如果你需要更高可靠性或吞吐量,可以将两块或多块云盘组成 RAID。

  • RAID 1:镜像,高可靠,容量减半。适合数据库。
  • RAID 0:条带化,高速度,无冗余。适合静态资源缓存。
  • Linux 实现:使用 mdadm 工具。
    # 示例:创建 RAID 1
    mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/vdb /dev/vdc
    mkfs.xfs /dev/md0
    mount /dev/md0 /data

    同样需要将 RAID 配置写入 /etc/mdadm.conf 和 /etc/fstab。

2. 使用 LVM(逻辑卷管理)

LVM 允许你动态调整分区大小,无需重启或卸载文件系统。

# 创建物理卷
pvcreate /dev/vdb1
# 创建卷组
vgcreate vg_data /dev/vdb1
# 创建逻辑卷
lvcreate -l 100%FREE -n lv_data vg_data
# 格式化并挂载
mkfs.xfs /dev/vg_data/lv_data
mount /dev/vg_data/lv_data /data

优势:未来若需扩容,只需在控制台扩容云盘,然后在 OS 内执行 pvresize 和 lvextend 即可在线扩容,无需重新分区。

3. 性能调优

  • I/O Scheduler:对于 SSD 云盘,Linux 内核推荐使用 none 或 mq-deadline 调度器,而非传统的 cfq。可通过修改 /sys/block/vdb/queue/scheduler 设置。
  • 挂载选项:在 /etc/fstab 中添加 noatime 参数,减少不必要的访问时间更新,提升读取性能。
    /dev/vdb1 /data ext4 defaults,noatime 0 0

4. 数据迁移注意事项

  • 停机操作:在格式化或分区前,务必确认该磁盘无重要数据。
  • 快照备份:操作前对原系统盘和数据盘打快照,以防误操作导致数据丢失。
  • 权限设置:挂载后,检查 Web 服务器用户(如 www-data, nginx, apache)是否有读写权限。
    chown -R www-data:www-data /data
    chmod -R 755 /data

五、 常见问题排查

  1. df -h 看不到新磁盘?

    • 检查是否已完成 mount。
    • 检查云控制台是否已成功“挂载”到实例。
    • 尝试重启服务器(部分云厂商需要重启才能识别新挂载的云盘)。
  2. 重启后挂载失效?

    • 检查 /etc/fstab 是否配置正确。
    • 检查 UUID 是否匹配:使用 blkid 查看磁盘 UUID,并在 fstab 中使用 UUID 代替设备名(更稳定,避免因设备名变化导致挂载错误)。
    • 示例:UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /data ext4 defaults 0 0
  3. Windows 无法初始化磁盘?

    • 检查云控制台是否已执行“初始化”操作。
    • 尝试重启服务器。

总结

为网站服务器添加数据盘的核心流程是:控制台创建并挂载 -> 系统内分区/格式化 -> 挂载点配置 -> 开机自启设置。

对于生产环境,强烈建议使用 LVM 管理磁盘,便于后期扩容;使用 UUID 配置 fstab,避免设备名漂移问题;并始终在执行任何破坏性操作前做好 快照备份。

如有特定云厂商(如阿里云、腾讯云)的详细文档需求,可提供具体厂商名称,我将给出对应的 CLI 或 API 自动化脚本示例。

未经允许不得转载:CLOUD云枢 » 如何为网站服务器添加第二块或更多数据盘?