存储单元可以说是让Exadata如此大规模普及并且使用效果优异的核心要素。
I/O性能问题始终是Exadata存储或者存储服务器尽力去解决的问题。
Exadata存储服务器概述
Exadata数据库一体机通常预装了3类硬件:
- 数据库计算节点服务器
- 存储服务器
- 极速的InfiniBand存储交换机。
Exadata存储服务器也不像其他传统的SAN存储设备或者方便和满足存储需求的黑盒。它通过Exadata智能存储软件来提供存储单元的卸载处理(智能扫描)、存储索引、混合列压缩(HCC或者EHCC)、I/O资源管理(IORM)、智能闪存、快速文件创建等特有功能。在后续的章节里将详细介绍Exadata软件功能。
每个系列的Exadata数据库一体机都有多种型号配置。数据库计算节点的数据量和存储服务器的数量完全跟用户购买时选择的Exadata型号配置相关。
图3.1展示了不同型号配置的Exadata存储服务器的数量和空间占用情况,其中:
- 1/4配包含2个数据库计算节点和3个存储服务器。
- 半配包含4个数据库计算节点和7个存储服务器。
- 满配包含8个数据库计算节点和14个存储服务器。
每台Exadata存储服务器都视作独立个体来管理和配置。节点控制命令行接口工具(CellCLI)用来管理本地服务器,分布式命令行接口工具(dcli)用来管理远端的Exadata存储服务器操作。CellCLI通常用来执行管理和维护本节点服务器上的大部分操作,dcli工具(非交互式)可以用来集中管理Exadata一体机内的所有存储节点服务器。
存储服务器架构
除了传统的存储服务器的必备组件:CPU、内存、网卡(NIC)、存储盘等之外,Exadata存储服务器还预装了OEL操作系统和Exadata智能存储软件。
每台Exadata存储服务器配备了统一的12块高性能或者大容量物理磁盘、预装OEL操作系统、Exadata存储软件和3个关键的后台服务。存储服务器可以通过3种途径访问:本地登录、SSH登录和KVM设备登录。
存储节点软件的功能和管理
Exadata存储节点的后台上运行着3个关键的软件,它们提供了存储服务器的核心功能:
- 存储服务(CELLSRV):多线程的进程。
- 管理服务(MS):通过CellCLI工具来提供标准的存储节点配置和管理功能。
定期解析/dev/disk/by-path中的符号链接对应FMOD的Flash硬盘(或称“闪存盘”),验证它们依然存在并对底层操作系统可见
追踪存储节点服务器上硬件层面的变化并且通过ioctl系统调用通知CELLSRV。
收集、计算和管理存储服务器状态指标。
在更换硬盘时重建虚拟驱动器。
一般来说,当一块硬盘性能不佳时,相关的Grid Disk和Cell Disk会被离线,并且MS服务会通知CELLSRV服务。
删除ADR目录、$LOG_HOME和历史指标中超过7天的文件。
在文件使用率达到80%时进行通知。
- 重启服务(RS): 监控存储节点服务器上的其他服务,并且在任何服务需要重启时自动重启它们。此外,重启服务还处理软件更新过程中所需要的计划性服务重启。cellrssrm是重启服务的主要进程,包含3个子进程:cellrsomt、cellrsbmt和cellesmmt。
alter cell shutdown services all[FORCE]命令可关闭节点上的所有服务,alter cell startup services all命令可启动所有服务。停止所有服务或者停止某个节点服务器时,所有Grid Disk及其相关的ASM磁盘分别会变为不活动及离线状态,存储节点和ASM及数据库实例之间的通信会被终止。
查询V$视图
新的Exadata相关的V$动态视图,提供了存储节点和等待事件方面的统计信息,可以用来评估存储节点的状态、已用IP地址等。
- V$CELL ——提供cellip.ora文件中提到的存储节点相关IP地址。
- V$CELL_STATE ——提供所有可以访问存储节点的数据库客户端的信息。
- V$CELL_THREAD_HISTORY ——提供存储节点中存储服务收集的采样线程信息。
- V$CELL_REQUEST_TOTALS——提供存储节点请求的采样历史信息。
存储架构和规划
一个传统的Oracle数据库部署需要3个主要组件:
- Oracle数据库服务器
- 存储服务器
- 网络层
Exadata一体机上的Oracle数据库部署也包含3个关键的硬件组件:
- 数据库节点服务器
- 存储服务器
- 网络
Exadata存储架构相对非Exadata架构在硬件层面有4个基本差异,正是这些差异导致了两种架构其他方面的所有差异,特别是对于存储的可扩展性及性能:
●首先,Exadata存储节点包含闪存模块,可以把它用作快速硬盘,或者是额外的缓存(关于这点,本章后面的内容中会详述)。
●其次,存储服务器运行在Oracle OEL操作系统而不是存储专有操作系统,这可以激活存储软件架构功能,反之则不行(同样,本章后面的内容会详述)。
●再次,在数据库节点和存储节点之间用的不是传统以太网,而是基于InfiniBand的高速、私有网络。
●最后,所有数据库节点之间以及数据库与存储节点之间的通信通过可靠数据报套接字(Reliable Datagram Sockets,RDS)使用iDB协议完成。
非Exadata中的存储架构
传统的Oracle数据库部署环境中使用Oracle ASM,存储服务器架构或者布局通常如图3.5所示。一般情况下,物理硬盘(或者分区)映射成逻辑单元号(Logic Unit Number,LUN),(或者设备),它们被用来创建成Oracle ASM硬盘,包含在ASM磁盘组内。尽管ASM是传统数据库部署中的可选项,但Oracle通常建议在新建数据库时使用ASM,尤其是在RAC环境部署时。当然,使用ASM有一些突出的优势:
●首先,ASM作为一种存储特性已经高度集成到Oracle技术体系里了,因此它工作得更高效。
●其次,ASM消除了过去对OS文件系统和逻辑卷管理(LVM)的依赖。
●再次,新硬盘加入或者删除时,ASM提供动态负载均衡和空间平衡的功能,LVM实现不了。
●最后,ASM的设计起于底层,很好地贴合了Oracle数据库的I/O特征和需求。
Exadata中的存储架构
每个Exadata存储服务器都带有12块同样大小的SAS物理硬盘——要么是高性能盘,要么是大容量盘的配置,还内置了4块闪存卡。前面两块盘使用RAID(mdadm)做了镜像,用于操作系统、swap交换空间、Exadata存储软件二进制文件,还有一些其他的Exadata设置。存储节点上执行df命令会列出文件系统结构;右下方的输出,解释了挂载点和文件系统映射的类型:
●“/”是根(root)文件系统。
●/opt/oracle存放已安装的Exadata存储软件。
●/var/log/oracle存放存储节点操作系统,并记录崩溃(crash)日志。
●/dev/md5和/dev/md6是系统分区、活动(active)和镜像副本。
●/dev/md7和/dev/md8是Exadata安装软件安装点、活动(active)和镜像副本。
●/dev md11挂载给/var/log/oracle。
●在任何给定的时间点,一个存储节点上同时只能挂载4个多设备(multidevice,MD)挂载点。
有几个重要的概念要特别说明一下:
●首先,存储节点中同时包含传统物理硬盘和闪存模块。
●其次,有一个新的硬盘抽象概念叫作Cell Disk,它可以将一个LUN细分成更小的分区,叫作Grid Disk。
●再次,从闪存模块中构建的Cell Disk可以细分为闪存缓存(Flash Cache)或Grid Disk。物理磁盘类的LUN只能细分成Grid Disk。
●最后,只有Grid Disk可以映射成ASM磁盘。
管理存储的系统用户
每个Exadata存储服务器一般会配置3个不同角色的默认用户。这些用户及其权限区别在于:
●root——超级用户权限,用于启停存储服务器。
●celladmin——用于完成存储节点的管理任务,例如,CREATE、ALTER、MODIFY一些存储对象(像Cell Disk、Grid Disk、配置通知等),使用CellCLI和dcli工具。
●cellmonitor——监控用户,用于存储节点监控任务。不像root和celladmin,cellmonitor不能执行CREATE、ALTER或MODIFY命令。