给Kylin V10 SP3虚拟机加块‘数据盘’:从VMware添加硬盘到fstab永久挂载/data的保姆级流程

张开发
2026/4/20 21:01:12 15 分钟阅读

分享文章

给Kylin V10 SP3虚拟机加块‘数据盘’:从VMware添加硬盘到fstab永久挂载/data的保姆级流程
麒麟V10 SP3虚拟机扩容实战从VMware添加硬盘到永久挂载全指南在虚拟化开发环境中为运行中的麒麟系统动态扩容存储空间是运维工程师的常见需求。想象这样一个场景你的Kylin V10 SP3虚拟机原本配置的存储空间已经捉襟见肘而项目需要额外50GB空间来存放测试数据。本文将带你完整走通从VMware添加虚拟硬盘到系统永久挂载的全流程特别针对容易踩坑的环节提供解决方案。1. 虚拟机环境准备与硬盘添加在开始操作前确保你的VMware Workstation版本支持热添加硬盘功能Pro版15以上。虽然VMware允许在不关机状态下添加硬盘但为了确保麒麟系统能正确识别新设备建议先完成以下准备工作虚拟机快照右键点击目标虚拟机 → 选择快照 → 拍摄快照为当前状态建立恢复点硬件兼容性检查虚拟机设置 → 选项 → 高级 → 确认固件类型为UEFIKylin V10推荐存储控制器SCSI控制器类型建议选择LSI Logic SAS兼容性最佳注意如果虚拟机正在运行重要服务请先完成正常关机流程再添加硬件。添加新硬盘的具体步骤右键虚拟机 → 设置 → 点击添加按钮选择硬盘 → 下一步 → 保持SCSI类型 → 创建新虚拟磁盘设置容量为50GB → 选择将虚拟磁盘存储为单个文件指定磁盘文件位置建议与原有磁盘同目录完成前检查摘要信息确认无误后点击完成# 验证VMware虚拟机配置 vmware-toolbox-cmd stat hardware2. 麒麟系统识别与硬盘初始化启动或重启虚拟机后需要通过命令行工具确认系统是否识别到新硬盘。Kylin V10使用udev设备管理器新磁盘通常会被分配为/dev/sdb设备假设已有sda。# 查看块设备列表 lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT,UUID典型输出应显示新添加的50GB磁盘如sdb无文件系统类型和挂载点。如果未显示新磁盘尝试以下排查步骤检查内核消息缓冲区dmesg | grep -i scsi重新扫描SCSI总线echo - - - /sys/class/scsi_host/host*/scan确认模块加载lsmod | grep sd_mod确认磁盘存在后需要对其进行分区和格式化。虽然现代Linux支持无分区直接格式化但创建分区表仍是推荐做法# 使用parted工具创建GPT分区表 sudo parted /dev/sdb mklabel gpt # 创建单个分区占用全部空间 sudo parted -a opt /dev/sdb mkpart primary xfs 0% 100%XFS作为高性能文件系统特别适合大数据场景# 格式化分区为XFS带元数据校验和 sudo mkfs.xfs -m crc1 /dev/sdb1 # 启用文件系统写屏障保证数据安全 sudo xfs_admin -l /dev/sdb13. 挂载配置与UUID最佳实践临时挂载可用于快速测试文件系统sudo mkdir -p /data sudo mount -t xfs /dev/sdb1 /data df -hT /data但更关键的是配置永久挂载。传统方案使用设备路径如/dev/sdb1但这在硬件变动时可能导致挂载错误。现代Linux系统推荐使用UUID方式# 获取分区UUID注意是PARTUUID还是UUID sudo blkid -o value -s UUID /dev/sdb1编辑/etc/fstab文件时建议采用以下格式UUID你的UUID值 /data xfs defaults,noatime,nodiratime 0 2各字段含义noatime/nodiratime减少元数据更新提升性能0dump备份工具忽略此文件系统2非根文件系统的fsck检查顺序重要修改fstab后务必使用mount -a测试配置避免系统启动失败。4. 高级调优与故障排查为获得最佳性能可以针对XFS文件系统进行优化# 查看当前挂载参数 mount | grep /data # 添加allocsize参数优化大文件写入 sudo umount /data sudo mount -o defaults,noatime,nodiratime,allocsize1G /dev/sdb1 /data常见问题解决方案启动时出现emergency mode在GRUB菜单选择恢复模式注释掉fstab中问题行使用systemctl default或exit继续启动UUID不匹配# 重新生成UUID会格式化分区 sudo xfs_admin -U generate /dev/sdb1空间未完全利用# 检查分区是否占满磁盘 lsblk # 扩展XFS文件系统假设磁盘已扩容 sudo xfs_growfs /data对于生产环境还应考虑以下安全措施# 设置/data目录权限示例 sudo chown root:datausers /data sudo chmod 2770 /data # 安装quota支持 sudo yum install xfsprogs sudo mount -o remount,usrquota,grpquota /data sudo xfs_quota -x -c report -h /data5. 自动化部署方案对于需要频繁部署的场景可以编写自动化脚本#!/bin/bash DISK/dev/sdb MOUNT_POINT/data # 分区格式化 parted -s $DISK mklabel gpt parted -s -a opt $DISK mkpart primary xfs 0% 100% mkfs.xfs -f ${DISK}1 # 获取UUID UUID$(blkid -o value -s UUID ${DISK}1) # 配置fstab echo UUID$UUID $MOUNT_POINT xfs defaults,noatime 0 2 | tee -a /etc/fstab # 创建挂载点并挂载 mkdir -p $MOUNT_POINT mount -a将此脚本保存为add_disk.sh后可通过SSH批量执行# 使用ansible批量部署示例 ansible all -m copy -a srcadd_disk.sh dest/tmp mode755 ansible all -m shell -a /tmp/add_disk.sh实际项目中我曾遇到过一个典型案例开发团队需要为CI/CD流水线动态添加存储空间。通过结合VMware API和上述脚本我们实现了按需自动扩容将原本需要人工干预的流程缩短到了5分钟内完成。关键点在于确保脚本包含足够的错误处理比如检查磁盘是否已存在分区、挂载点是否被占用等条件判断。

更多文章