首页 > 数据库 > Oracle > Exadata Flash Cache 简介(二)
在前一篇博客里,我们介绍了Exadata Flash Cache card(智能闪存卡)的基本概念和工作方式,在这篇文章当中,我们会从介绍如何在Exadata上管理和维护智能闪存卡。 由于智能闪存卡在Exadata上可以作为 Flash Cache ,Flash log 和Flash grid disk使用, 本文也会对它们分别进行介绍。
首先,关于flash cache的基本管理命令:
1. 查看当前的flash cache 配置
CellCLI> list flashcache detail;
2. 如何创建flash cache
CellCLI> create flashcache all size=2900.75G
这个命令会在当前cell 节点上的所有闪存卡上创建flash cache, 尺寸为2900.75G
3. 如何删除flash cache 配置
CellCLI> drop flashcache all;
下来是关于flash log 的基本管理命令:
1. 查看当前的flash log的配置
CellCLI> list flashlog detail
2. 创建flash log
CellCLI> create flashlog all size=1G
这个命令会在当前cell 节点上的所有闪存卡上创建flash log, 尺寸为1G
CellCLI> drop flashlog all;
接下来是管理 flash grid disk 的基本的命令。
1. 查看当前的flash griddisk 的信息
CellCLI> list griddisk detail
2. 创建flash griddisk
CellCLI>create griddisk all flashdisk prefix='FLASH' , size=1G;
这个命令会在当前cell 节点上的所有闪存卡上创建griddisk, 前缀为FLASH,尺寸为1G
3. 删除flash griddisk
CellCLI> drop griddisk all flashdisk prefix='FLASH';
对于更多的管理命令,请参考文档: Oracle? Exadata Storage Server Software User's Guide 12c Release 1 (12.1) ==> 8 Using the CellCLI Utility
由于智能闪存卡在Exadata上最常用的用途是flash cache, 接下来介绍一下对flash cache的常见维护操作。
启用write-back flash cache,可以使用rolling和non-rolling 方式完成。
Rolling 方式:
1. 使用root 用户登录到对应的cell 节点上
2. 使用下面的命令查看当前的flash cache 状态
# cellcli -e LIST FLASHCACHE detail
3. 删除当前的flash cache
# cellcli -e DROP FLASHCACHE
4. Inactivate cell 节点上所有的griddisk
# cellcli -e ALTER GRIDDISK ALL INACTIVE
5. 关闭 CELLSRV services
# cellcli -e ALTER CELL SHUTDOWN SERVICES CELLSRV
6. 启动writeback flash cache
# cellcli -e "ALTER CELL FLASHCACHEMODE=writeback"
7. 重新启动cellsrv 服务
# cellcli -e ALTER CELL STARTUP SERVICES CELLSRV
8. 激活cell 节点上的grid disk
# cellcli -e ALTER GRIDDISK ALL ACTIVE
9. 重新创建flash cache
# cellcli -e CREATE FLASHCACHE ALL
10. 查看flash cache 的模式
# cellcli -e LIST CELL DETAIL | grep flashCacheMode
11. 查看griddisks 的asmDeactivationOutcome 和 asmModeStatus 属性,它们的值应该显示为yes 和 online
CellCLI> LIST GRIDDISK ATTRIBUTES name,asmdeactivationoutcome,asmmodestatus
12. 在其他cell 节点上重复上面的步骤。
Non-rolling 方式:
这种方法需要在任意的一个计算节点上运行就可以,并且需要创建一个文件cell_group,其中列出了需要操作的cell 节点名称列表。
例如: cat cell_group
dm01cel05
dm01cel06
dm01cel07
1. 在任意的计算节点,使用root用户关闭GI
# cd $GI_HOME/bin
# ./crsctl stop cluster -all
2. 使用下面的命令删除在所有的cell节点上的flash cache
# dcli -g cell_group -l root cellcli -e DROP FLASHCACHE
3. 使用下面的命令停止cell 节点上的cellsrv 服务
# dcli -g cell_group -l root cellcli -e ALTER CELL SHUTDOWN SERVICES CELLSRV
4. 查看cell 节点上的flash cache 的模式
# dcli -g cell_group -l root "cellcli -e list cell detail | grep -i flashcachemode"
5. 设置 flash cache 的模式为writeback
# dcli -g cell_group -l root cellcli -e "ALTER CELL FLASHCACHEMODE=writeback"
6. 重启cell 节点的cellsrv 服务
# dcli -g cell_group -l root cellcli -e ALTER CELL STARTUP SERVICES CELLSRV
7. 重新创建cell 节点上的flash cache
# dcli -g cell_group -l root cellcli -e CREATE FLASHCACHE ALL
8. 启动集群
# cd $GI_HOME/bin
# ./crsctl start cluster -all
禁用writeback falsh cache的方式同样也分为rolling 和non-rolling两种方式。
Rolling方式
1. 使用root用户登录到需要操作的cell节点。
2. 确认以下命令返回的asmDeactivationOutcome 值为yes。
# dcli -g cell_group -l root cellcli -e "LIST GRIDDISK WHERE
asmdeactivationoutcome != 'Yes' attributes name, asmdeactivationoutcome,
asmmodestatus"
如果上面的命令返回了一些griddiks,说明有些dirty数据仍然被cache 在了flash cache 中,需要使用下面的方式来flush 掉。
查看被cache 的dirty 数据的数量:
# dcli -g cell_group -l root cellcli -e "LIST METRICCURRENT ATTRIBUTES \
name,metricvalue WHERE name LIKE \'FC_BY_DIRTY.*\'"
使用下面的命令flush 掉flash cache 中的dirty 数据。
# dcli -g cell_group -l root cellcli -e ALTER FLASHCACHE ALL FLUSH
当flush结束之后,以下命令的flushstatus 列会显示为completed。
# dcli -g cell_group -l root cellcli -e LIST CELLDISK ATTRIBUTES name, flushstatus, flusherror | grep FD
3. 接下来就可以使用本文之前的“使用rolling 方式启用flash cache” 部分中的步骤来禁用flash cache 了。唯一的区别就在于第六步需要执行的是以下的禁用write back flash cache 命令。
# cellcli -e "ALTER CELL FLASHCACHEMODE=writethrough"
non-rolling 方式:这种方式的过程实际上和rolling 的方式是很类似的。
1. 使用root用户登录到需要操作的cell节点。
2. 查看被cache 的dirty 数据的数量:
# dcli -g cell_group -l root cellcli -e "LIST METRICCURRENT ATTRIBUTES \
name,metricvalue WHERE name LIKE \'FC_BY_DIRTY.*\'"
3. 使用下面的命令flush 掉flash cache 中的dirty 数据。
# dcli -g cell_group -l root cellcli -e ALTER FLASHCACHE ALL FLUSH
当flush结束之后,以下命令的flushstatus 列会显示为completed。
# dcli -g cell_group -l root cellcli -e LIST CELLDISK ATTRIBUTES name, flushstatus, flusherror | grep FD
4. 参照本文之前的“使用non-rolling 方式启用flash cache” 部分中的步骤来禁用flash cache 了。唯一的区别就在于第五步需要执行的是以下的禁用write back flash cache 命令。
# dcli -g cell_group -l root cellcli -e "ALTER CELL FLASHCACHEMODE=writethrough"
通过以上的介绍,希望大家能够对日常的flash cache的维护有一些基本的了解,并有所帮助。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22039464/viewspace-2138499/ ,如需转载,请注明出处,否则将追究法律责任。