温馨提示×

centos虚拟机存储方案

小樊
60
2025-10-02 16:29:37
栏目: 云计算

CentOS虚拟机常见存储方案

一、虚拟磁盘类型选择

虚拟磁盘类型决定了虚拟机与物理存储的交互方式,直接影响性能和兼容性。常见的虚拟磁盘类型包括:

  • IDE:传统模拟接口,兼容性最好,但性能最差(仅支持单线程读写),适合老旧系统或测试环境。
  • SATA:模拟SATA控制器,性能优于IDE(支持NCQ命令队列),兼容性较好,适合普通虚拟机使用。
  • SCSI(推荐):模拟SCSI控制器(如virtio-scsi),支持多队列并行读写,性能最优,且支持热插拔,是KVM、VMware等虚拟化平台的推荐选择。
  • Virtio(半虚拟化):需 guest OS 安装 Virtio 驱动(CentOS 默认包含),性能接近物理磁盘,尤其适合I/O密集型场景(如数据库、Web服务器),但需注意:旧版本CentOS可能需要手动安装virtio驱动。

二、磁盘缓存模式优化

缓存模式决定了虚拟机磁盘与宿主机存储之间的数据同步策略,需根据数据安全性与性能需求权衡:

  • Writeback(回写):数据仅写入虚拟机缓存,待缓存满或手动刷新时写入宿主机存储。性能最佳,但若虚拟机突然宕机,未刷新的数据会丢失,适合对性能要求高、能容忍少量数据丢失的场景(如日志收集)。
  • Writethrough(直写):数据同时写入虚拟机缓存和宿主机存储,数据一致性高,但性能略低,适合对数据安全性要求高的场景(如数据库主库)。
  • None(无缓存):虚拟机直接访问宿主机存储,绕过缓存,性能接近物理磁盘,且数据实时同步,适合需要极致性能的场景(如高频交易系统)。

三、逻辑卷管理(LVM)

LVM通过将多个物理磁盘或分区组合成逻辑卷,提供灵活的存储管理能力,适合需要动态调整容量的虚拟机:

  • 优势:支持动态扩展(在线增加磁盘空间)、快照(备份数据)、条带化(提升I/O性能)、镜像(高可用)等功能。
  • 配置步骤
    1. 创建物理卷(PV):pvcreate /dev/sdb(将新磁盘初始化为PV)。
    2. 创建卷组(VG):vgcreate vg_data /dev/sdb(将PV加入VG,VG是逻辑卷的存储池)。
    3. 创建逻辑卷(LV):lvcreate -L 10G -n lv_root vg_data(从VG中分配10G空间给LV)。
    4. 格式化与挂载:mkfs.ext4 /dev/vg_data/lv_rootmount /dev/vg_data/lv_root /mnt/data
  • 扩容方法:添加新磁盘→创建PV→扩展VG→扩展LV→调整文件系统(如resize2fs /dev/vg_data/lv_root)。

四、软件RAID配置

软件RAID通过多块磁盘组合提升性能或可靠性,适合虚拟机环境(无需硬件RAID卡):

  • 常见RAID级别
    • RAID 0:条带化,提升读写性能(无冗余),至少2块磁盘,适合视频编辑、大数据处理等对性能要求高的场景。
    • RAID 1:镜像,数据完全复制到两块磁盘,提供最高可靠性(冗余50%),适合系统盘或关键数据存储。
    • RAID 5:条带化+奇偶校验,允许1块磁盘损坏,容量利用率(n-1)/n,适合需要平衡性能与可靠性的场景(如数据库)。
    • RAID 6:条带化+双奇偶校验,允许2块磁盘损坏,容量利用率(n-2)/n,适合对可靠性要求极高的场景(如金融数据)。
    • RAID 10:RAID 1+RAID 0,兼顾性能与可靠性(允许1块磁盘损坏),容量利用率50%,适合高性能数据库、Web服务器。
  • 配置步骤(以RAID 5为例)
    1. 添加4块SCSI磁盘(如/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde)。
    2. 创建RAID设备:mdadm --create /dev/md0 --level=5 --raid-devices=3 --spare-devices=1 /dev/sdb /dev/sdc /dev/sdd /dev/sde(3块数据盘+1块备用盘)。
    3. 检查RAID进度:cat /proc/mdstat(等待状态变为[UUU])。
    4. 格式化与挂载:mkfs.xfs /dev/md0mount /dev/md0 /mnt/raid5
    5. 设置开机自启:mdadm --detail --scan >> /etc/mdadm.confecho "/dev/md0 /mnt/raid5 xfs defaults 0 0" >> /etc/fstab

五、存储空间扩容

虚拟机存储空间不足时,可通过以下方法扩容:

  • 新增虚拟磁盘
    1. 使用虚拟化管理工具(如VMware vSphere、KVM virsh)添加新磁盘(如/dev/sdb)。
    2. 识别新磁盘:lsblk(查看是否有新设备)。
    3. 分区与格式化:fdisk /dev/sdb → 创建分区(如/dev/sdb1)→ mkfs.ext4 /dev/sdb1
    4. 挂载与开机自启:mkdir /mnt/newdiskmount /dev/sdb1 /mnt/newdisk → 编辑/etc/fstab添加/dev/sdb1 /mnt/newdisk ext4 defaults 0 0
  • 扩展现有虚拟磁盘
    1. 使用虚拟化管理工具扩展磁盘容量(如VMware中右键虚拟机→编辑设置→增加硬盘容量)。
    2. 扩展分区:parted /dev/sdaresizepart 1 → 输入新容量 → quit
    3. 扩展文件系统:resize2fs /dev/sda1(ext4文件系统)或xfs_growfs /mnt/data(XFS文件系统)。

六、存储空间优化(VDO)

VDO(Virtual Data Optimizer)是CentOS 7.5+提供的内核级存储优化技术,通过重删(相同数据仅存储1份)和压缩(减少数据体积)提升存储利用率,适合虚拟机存储资源紧张的场景:

  • 适用场景:VM/容器存储(建议逻辑存储与物理存储比例为10:1)、对象存储(如Ceph,比例为3:1)。
  • 配置步骤
    1. 安装软件包:yum install vdo kmod-kvdo -y
    2. 创建VDO卷:vdo create --name=vdo0 --device=/dev/sdb --vdoLogicalSize=30G(逻辑大小为物理大小的3倍)。
    3. 格式化与挂载:mkfs.ext4 -K /dev/mapper/vdo0(快速格式化)→ mkdir /vdomount /dev/mapper/vdo0 /vdo
    4. 开机自启:编辑/etc/fstab添加UUID=<vdo_uuid> /vdo ext4 defaults,x-systemd.requires=vdo.service 0 0(通过blkid /dev/mapper/vdo0获取UUID)。
  • 验证效果vdostats --human-readable(查看逻辑容量、物理使用量、重删率)。

0