服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-12 简米科技 5,579 字 13 分钟阅读

虚拟机安装asm步骤复杂吗?虚拟机安装asm详细教程是什么?

导读虚拟机安装ASM(Oracle Automatic Storage Management)步骤不复杂,但需要严格遵循环境准备、Grid Infrastructure安装、ASM实例配置三大阶段,全程约30-50分钟即可完成,这套流程的难点不在操作本身,而在于对前置条件的理解——多数失败案例都集中在权限配置、依赖……

虚拟机安装ASM(Oracle Automatic Storage Management)步骤不复杂,但需要严格遵循环境准备、Grid Infrastructure安装、ASM实例配置三大阶段,全程约30-50分钟即可完成。这套流程的难点不在操作本身,而在于对前置条件的理解多数失败案例都集中在权限配置、依赖包缺失和网络参数错乱上,下面这份2026年最新整理的虚拟机ASM安装详细教程,会带你一步步绕开这些坑。

虚拟机安装asm步骤到底难在哪?先搞清三个关键点

很多人一听到ASM就联想到RAC集群,心里先打鼓,实际上这里有个误区:ASM完全可以单机使用,虚拟机里装单实例ASM比装RAC简单得多,真正需要操心的是Linux操作系统的准备阶段。

关于性能损耗,行业共识观点是:虚拟机里跑ASM,I/O性能通常比物理机低15%-20%,但用于功能验证、开发测试完全足够,如果你只是做练习环境,不必担心虚拟化带来的性能折扣。

安装前必须确认的虚拟机硬件基线

在开始折腾ASM之前,先对照这张检查表看看你的虚拟机配置是否达标:

  • 内存:至少4GB,推荐8GB(ASM实例本身只占200MB左右,但Oracle数据库需要基础内存)
  • CPU:2核以上即可,没有特殊限制
  • 磁盘空间:系统盘留出20GB空闲空间(Grid Infrastructure安装包解压需要)
  • 虚拟磁盘:至少附加1块5GB以上的空磁盘作为ASM磁盘组候选(建议20GB)
  • 操作系统:Oracle Linux 7.9或RHEL 7.9 64位(注意:不同Linux发行版的依赖包命令会有差异)

如果你的虚拟机配置达不到这个标准,后续安装中大概率会报错,所以请务必提前确认。

Linux系统初始配置:90%的安装失败发生在这一步

这里要强调的是,ASM安装前的系统配置是整个过程中最需要耐心的一环,也是绝大多数新手翻车的地方,具体需要配置的内容包括:

修改/etc/hosts文件

# 格式示例
192.168.56.101  vmasm.localdomain  vmasm

关闭SELinux和防火墙

setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
systemctl stop firewalld
systemctl disable firewalld

创建Oracle用户和组

groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle  # 设置密码,记住这个密码

配置内核参数

编辑/etc/sysctl.conf,加入以下关键参数:

fs.aio-max-nr=1048576
fs.file-max=6815744
kernel.shmall=2097152
kernel.shmmax=2147483648
net.core.rmem_default=262144
net.core.rmem_max=4194304

然后执行sysctl -p使参数生效。

虚拟机安装asm步骤复杂吗?虚拟机安装asm详细教程是什么?

安装必要依赖包

yum install -y bc binutils compat-libcap1 compat-libstdc++-33 \
  gcc gcc-c++ elfutils-libelf-devel glibc glibc-devel \
  ksh libaio libaio-devel libgcc libstdc++ libstdc++-devel \
  libX11 libXau libXi libXtst libXext make sysstat unixODBC \
  unixODBC-devel smartmontools

有人可能会问,能不能跳过这些依赖包?答案是不能,ASM安装前的Linux配置脚本会对缺失的依赖项逐项检查,缺少任何一个package都会导致安装流程根本无法启动。

asm安装教程:Grid Infrastructure安装实操全流程

系统准备环节结束后,接下来就进入正式安装环节,这里需要有一个清晰的定位:ASM实例不是单独安装的,它随Oracle Grid Infrastructure一起装上,很多人绕了弯路,拼命去搜“ASM单独安装教程”,实际上Grid就是ASM的家。

Step1:下载Oracle Grid Infrastructure安装包

去Oracle官网下载linuxx64_12201_grid.zip(版本号以你实际获取到的为准),下载后解压到本地目录:

unzip linuxx64_12201_grid.zip -d /u01/app/12.2.0/grid
chown -R oracle:oinstall /u01/app/12.2.0/grid
chmod -R 775 /u01/app/12.2.0/grid

Step2:配置Oracle用户环境变量

切换到oracle用户,编辑~/.bash_profile,添加:

export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/12.2.0/grid
export GI_HOME=/u01/app/12.2.0/grid
export ORACLE_SID=+ASM
export PATH=$ORACLE_HOME/bin:$PATH

注意:这里的ORACLE_SID是+ASM,前面有加号,这是ASM实例专属的命名规则。

Step3:运行安装脚本

在Grid安装目录下执行:

./gridSetup.sh

你会看到一个图形化安装界面,按以下顺序操作:

  • 配置选项:选择“Configure Oracle Grid Infrastructure for a Standalone Server”(单节点服务器配置)
  • 语言选择:默认英语即可
  • Oracle基目录:保持自动填写的/u01/app/oracle路径
  • 选择安装类型:选择“Oracle ASM”(注意不要选“Oracle ASM Cluster File System”)
  • 磁盘组配置:输入你想给ASM用的磁盘组名称(例如DATA),冗余级别选择外部冗余(虚拟机环境没有条件做镜像,选外部即可),然后勾选之前附加的那块空磁盘

按照向导提示填写完后,安装程序会自动完成二进制文件复制和root脚本配置,最后系统会提示你以root用户执行两个脚本:

# 在root用户下执行
/u01/app/12.2.0/grid/root.sh
/u01/app/12.2.0/grid/oraInst.loc

这一步务必等待脚本执行完毕,不要中断,root.sh脚本会配置Oracle集群注册表,中断会导致后续无法正常使用ASM。

Step4:验证ASM实例状态

虚拟机安装asm步骤复杂吗?虚拟机安装asm详细教程是什么?

安装完成后,用oracle用户登录,执行以下命令验证ASM是否正常运转:

# 检查ASM实例状态
crsctl stat res -t
# 或者用asmcmd查看磁盘组
asmcmd lsdg

如果看到STATE显示为ONLINE且磁盘组状态为MOUNTED,说明ASM安装成功了,这套asm安装教程的核心环节到这里就全部跑通了。

asm磁盘组配置命令:让ASM真正为你所用

ASM实例启动成功只算走完了半程,另一半是创建并管理磁盘组,多数使用场景下,你需要做的是把新磁盘加入磁盘组,或者创建新的磁盘组来容纳不同业务的数据。

用asmca图形化配置磁盘组

用oracle用户登录,在命令行输入asmca,会弹出ASM配置助手界面,点击“Disk Groups”选项卡,然后点击“Create”按钮:

  • 磁盘组名称:例如DATA或FRA
  • 冗余级别:选External(外部冗余)
  • 成员磁盘:勾选你要加入的候选磁盘

创建完成后,磁盘组会显示状态为“MOUNTED”,这种图形化方式最直观,也适合初学者操作。

用asmcmd命令行直接管理磁盘组

如果你偏好纯命令行操作(比如本地无图形界面的生产服务器),可以这样做:

# 查看当前磁盘组
asmcmd lsdg
# 创建新磁盘组
asmcmd createdg DATA /dev/sdc1
# 挂载磁盘组
asmcmd mount DATA
# 卸载磁盘组
asmcmd umount DATA

磁盘组设计容量在10GB-20GB之间比较合适,既够数据库使用,又不会浪费虚拟机空间,如果磁盘空间较紧张,10GB配置经验指是:多数数据库测试场景下,10GB磁盘组已经能容纳1套业务库+归档日志。

常见错误:asm磁盘组mount时会遇到哪些坑

  • ORA-15032: Not all alterations performed 通常是磁盘权限问题,确认/dev/sdc1的属主是oracle:oinstall
  • ORA-15031: disk '' does not exist 检查磁盘路径是否写对,用lsblk命令确认设备名
  • ORA-15186: ASMLIB error function = [asm_open] 这是ASMLIB模块的问题,建议直接用/dev/路径而不是ASMLIB的/dev/oracleasm/路径

虚拟机asm与管理oracle数据库的衔接:一套完整的实用路径

ASM本身不是数据库,它上面的磁盘组要配合Oracle数据库使用才体现出价值,在安装完ASM后,紧接着建库时需要在DBCA(Database Configuration Assistant)中指定使用ASM存储:

  • 选择“Automatic Storage Management (ASM)”作为存储类型
  • 选择你创建好的磁盘组作为数据库文件的存放位置
  • 输入ASM实例的SYS密码

这样Oracle数据库就运行在ASM之上,数据文件自动分散在磁盘组的各个成员磁盘中,这也是在2026年比较主流的虚拟机学习环境搭建路径先在虚拟机上搞定ASM,再基于ASM搭建Data Guard环境,能一次性掌握存储层和容灾层的核心知识。

虚拟机安装asm步骤复杂吗?虚拟机安装asm详细教程是什么?

虚拟机asm安装容易忽略的细节:内存参数与进程资源限制

有几个细节点不太起眼但影响力很大,这里专门提一下:

  • 内存参数:若虚拟机内存只有2GB,Grid安装程序会告警“Ensure that the system meets minimum memory requirement”,这种条件下强行安装会在后续运行中频繁出现性能问题,给虚拟机加内存是最根本的解法。

  • 进程/文件数限制:编辑/etc/security/limits.conf,添加:

    oracle soft nofile 4096
    oracle hard nofile 65536
    oracle soft nproc 2047
    oracle hard nproc 16384

    这组参数不配置齐全,偶尔会出现“ORA-27102: out of memory”这类莫名其妙的报错。

  • 网络配置:确认主机名能通过hostname -i返回正确IP,如果返回的是0.0.1,Oracle的监听服务将无法正常工作,用Linux命令直接测试是ping -c 3 <你的主机名>,动手配置前先花10分钟检查系统环境,能省下后续排错的大把时间。

Q&A:虚拟机装asm常见问题汇总

问:虚拟机装ASM和物理机装有什么区别?

答:虚拟机安装ASM与物理机安装核心流程一致,差异主要在性能表现上,虚拟磁盘的IOPS和吞吐量受宿主机磁盘性能影响,实际操作时建议为虚拟机分配独立虚拟磁盘而非共享存储,同时将虚拟磁盘类型选为“厚置备延迟置零”,能获得相对稳定的性能,用于学习环境完全没问题,生产环境建议优先评估物理机性能是否达标。

问:安装ASM时遇到“ORA-15063: ASM disk discovered with an invalid header”怎么解决?

答:这个报错说明磁盘曾被其他文件系统格式化过,不满足ASM对磁盘的要求,处理方法是先删除磁盘上的分区表,再用dd if=/dev/zero of=/dev/sdb count=100清理前100个扇区,重新在asmca中扫描磁盘,此时磁盘状态应变为“Candidate”。

问:ASM安装时选“外部冗余”“正常冗余”还是“高冗余”?

答:外部冗余(External)不提供镜像保护最少占用磁盘空间;正常冗余(Normal)镜像数据至少需要两块磁盘;高冗余(High)则要求至少三块磁盘,虚拟机环境下推荐外部冗余,因为虚拟机化存储层已有快照功能,ASM层再做镜像属于重复投资且拖慢I/O性能,生产环境建议使用正常冗余搭配故障组分配,实现存储层面的高可用。

问:虚拟机上安装asm需要提前装Oracle RAC吗?

答:不需要,ASM可以独立安装使用,RAC是在ASM之上追加的集群功能,先装ASM单实例,后续再扩展RAC也是常见的演进路线,不需要重装系统或重建ASM实例。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱