OpenNebula:挂载外部磁盘

完整操作流程

1. 准备工作

1
2
# 关机虚拟机(硬关机)
onevm shutdown <VM_ID> --hard

2. 添加磁盘

  1. 在 OpenNebula Sunstone 控制台:

    • 选择目标虚拟机
    • 进入”存储”选项卡
    • 点击”添加磁盘”
  2. 配置磁盘参数:

    • 类型:临时性磁盘
    • 大小:根据需要设置
    • 总线:virtio (推荐)
    • 目标:vdb (或其他可用设备名)

3. 启动虚拟机

1
onevm resume <VM_ID>

4. 查看磁盘设备

1
2
3
4
5
# 登录虚拟机
ssh <VM_USER>@<VM_IP>

# 查看新添加的磁盘
sudo fdisk -l

5. 格式化并挂载磁盘

1
2
3
4
5
6
7
8
9
10
11
# 创建挂载目录
sudo mkdir -p /vdb

# 格式化磁盘(EXT4 文件系统)
sudo mkfs.ext4 /dev/vdb

# 挂载磁盘
sudo mount /dev/vdb /vdb

# 验证挂载
df -h | grep vdb

6. 配置开机自动挂载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 获取磁盘 UUID
sudo blkid /dev/vdb

# 编辑 fstab 文件
sudo nano /etc/fstab

# 添加以下内容(使用实际 UUID)
UUID=63617792-1ae1-4cb5-8031-9bd78a63c17e /vdb ext4 defaults 0 0

# 测试 fstab 配置
sudo mount -a

# 验证配置
mount | grep vdb

高级配置选项

1. 使用 LVM 管理磁盘

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 创建物理卷
sudo pvcreate /dev/vdb

# 创建卷组
sudo vgcreate vg_data /dev/vdb

# 创建逻辑卷
sudo lvcreate -n lv_data -l 100%FREE vg_data

# 格式化逻辑卷
sudo mkfs.ext4 /dev/vg_data/lv_data

# 挂载逻辑卷
sudo mkdir /data
sudo mount /dev/vg_data/lv_data /data

# 添加到 fstab
echo "/dev/vg_data/lv_data /data ext4 defaults 0 0" | sudo tee -a /etc/fstab

2. 挂载选项优化

1
2
# /etc/fstab 示例(优化选项)
UUID=63617792-1ae1-4cb5-8031-9bd78a63c17e /vdb ext4 defaults,noatime,nodiratime,errors=remount-ro 0 2
选项 说明 适用场景
noatime 不更新文件访问时间 提高性能
nodiratime 不更新目录访问时间 提高性能
errors=remount-ro 错误时以只读方式重新挂载 提高安全性
discard 启用 TRIM 支持 SSD 磁盘
data=ordered 有序的数据写入 提高数据一致性

3. 磁盘性能测试

1
2
3
4
5
6
7
8
9
# 安装测试工具
sudo apt install fio -y # Ubuntu
sudo yum install fio -y # CentOS

# 顺序读写测试
fio --name=seqread --rw=read --direct=1 --ioengine=libaio --bs=128k --numjobs=1 --size=1G --runtime=60 --time_based --group_reporting

# 随机读写测试
fio --name=randwrite --rw=randwrite --direct=1 --ioengine=libaio --bs=4k --numjobs=4 --size=1G --runtime=60 --time_based --group_reporting

故障排查指南

1. 磁盘未识别

1
2
3
4
5
# 重新扫描 SCSI 设备
echo "- - -" | sudo tee /sys/class/scsi_host/host*/scan

# 查看内核日志
dmesg | grep -i scsi

2. 挂载失败

1
2
3
4
5
# 检查文件系统
sudo fsck /dev/vdb

# 查看挂载错误日志
sudo journalctl -xe

3. fstab 配置错误

1
2
3
4
5
6
7
8
# 进入恢复模式
sudo mount -o remount,rw /

# 注释错误行
sudo nano /etc/fstab

# 重新挂载
sudo mount -a

最佳实践建议

  1. 磁盘类型选择

    • 临时磁盘:适合临时数据
    • 持久磁盘:适合重要数据
    • 共享磁盘:多虚拟机共享
  2. 容量规划

    • 预留 20% 空间用于维护
    • 定期监控磁盘使用率
  3. 备份策略

    1
    2
    3
    4
    5
    # 创建快照
    onevm disk-snapshot <VM_ID> <DISK_ID> "Daily Backup"

    # 定期备份
    0 2 * * * onevm disk-snapshot <VM_ID> <DISK_ID> "Daily_$(date +\%Y\%m\%d)"
  4. 性能监控

    1
    2
    3
    4
    5
    # 安装监控工具
    sudo apt install sysstat -y

    # 查看磁盘 IO
    iostat -dx 2

操作流程图

1
2
3
4
5
6
7
8
9
10
11
12
graph TD
A[关机虚拟机] --> B[添加临时磁盘]
B --> C[启动虚拟机]
C --> D[登录虚拟机]
D --> E[查看磁盘设备]
E --> F[创建挂载目录]
F --> G[格式化磁盘]
G --> H[挂载磁盘]
H --> I[获取UUID]
I --> J[配置fstab]
J --> K[测试挂载]
K --> L[完成]