天道酬勤

RDBMS and My Life

Archive for the ‘aix’ tag

AIX下使用 raw 创建 non-rac 的ASM

leave a comment

这几天反反复复的折腾ASM for AIX,深刻体会到书到用时方恨少,故作此文记录之。说来惭愧,学习RAC的时候没彻底搞清CRS、CSS、CLUSTERWARE之间的关系;学习ASM的时候没搞清在NON-RAC for AIX环境下的LV和RAW设备。在AIX上安装NON-RAC选用ASM作为存储的10.2的数据库,先是遇到CSS服务启不来,接着是在ASM创建磁盘组的时候发现不了raw设备,一切原于我没有明白AIX下raw设备是如何使用的,不同平台之间意义是不一样的,照葫芦画瓢是行不通的。废话少说,入正题,以下这段内容来自:http://bbs.chinaunix.net/archiver/?tid-1090407.html thesix’s said

在AIX里,每个LVM设备支持两种操作方式,分别被抽象为 Block Device (块设备)和 Character Device (字符设备),其中Character Device 又被称为 Raw Device (原因往下看):比如:

# ls -l /dev/*hdisk0

brw——-   1 root     system       22,  2 May 15 2007  hdisk0

crw——-   2 root     system       22,  2 May 15 2007  rhdisk0

# ls -l /dev/*hd3

brw-rw—-   1 root     system       10,  7 May 15 2007  /dev/hd3

crw-rw—-   1 root     system       10,  7 May 15 2007  /dev/rhd3

这里文件属性开头的’c'字母代表Character, 文件名开头的’r'字母代表Raw。

字符设备支持不定长的数据传输 (data transfers of arbitrary sizes),最小一个字节(但绝不是每次只能传一个字节或字符!),LVM和存储设备的单次最大I/O只受 LTG (logical track group) 大小的限制,缺省为128KB,可修改。

块设备只能做定长的数据传输,数据必须经过 ‘kernel buffer cache’。这个以512-byte block 为单位的buffer cache是传统的块设备的缓存,千万不要和文件系统的缓存混为一谈!这样的存取方式不仅效率低,而且带来诸多问题,严重影响大数据量传输的性能,所以现代操作系统中几乎不用块设备的方式进行高速存储设备的数据存取。

数据库建议直接使用裸设备,意指避开文件系统和文件系统的缓存管理,直接和字符设备打交道。

(注意:文件系统一定是建在字符设备上的,不可能建到块设备上)

这样做的好处主要是三个:

1. 实现每个I/O的代码大大减少:filesystem 和 virtual memory for filesystem 的代码都规避了。

2. 避免了重复缓存造成的内存浪费(数据库和文件系统都有自己的数据缓存)。

3. 避免了文件锁的问题:文件系统里的文件不能同时被多个进程或线程更新。

坏处也有:

1. 失去了通过对普通文件进行管理的易用性。

2. 不能利用文件系统的 Readahead 的功能,顺序读的速度可能做不到最优

自从有了DIO和CIO之后,基于文件系统的数据库性能得以大大提高。CIO是最接近与裸设备的一种基于文件系统的数据库运行方式,因为它解决了两个问题:

没有文件缓存(就是裸设备优势之2.);

没有文件锁(就是裸设备优势之3.)。

它保持了文件的可见性,所以不存在裸设备劣势之1。

当然DIO和CIO同样不支持Readahead。

综上所述:

-          字符设备和块设备是对同一个物理设备的两种不同的存储方式的抽象。

-          裸设备这个感念是针对其上有无文件系统来说的,和字符及块设备在概念上没有任何实质联系;

-          块设备的block buffer机制和文件系统的缓存是两回事;

-          块设备在现代操作系统中基本没有任何用途。

-          数据库用裸设备或文件系统mount with CIO, 结合AIO (异步I/O),可以达到最佳I/O性能

(在AIX 新版本中raw LV 和 CIO FS 均支持 AIO Fast Path );

注:相关概念或称谓在不同的操作系统中可能不尽相同,但原理是一样的。

现在看看我的环境:(AIX5310 + ORA10.2.0.4.0)

1. 创建可扩展的VG

# mkvg -S -y datavg hdisk1

2. 创建LV,使用raw设备

# mklv -y lv_dg1 -t raw datavg 40 (pp size 128MB)

# mklv -y lv_dg2 -t raw datavg 40

# mklv -y lv_flashback -t raw datavg 16

3. 修改属主、权限

# chown oracle:dba /dev/*lv_dg*

# chown oracle:dba /dev/rlv_flashback

# chmod 660 /dev/*lv_dg*

# chmod 660 /dev/rlv_flashback

4. 检查

# ls -al /dev/rlv*

crw-rw—-    1 oracle   dba          42,  1 Nov 12 12:36 /dev/rlv_dg1

crw-rw—-    1 oracle   dba          42,  2 Nov 12 12:37 /dev/rlv_dg2

crw-rw—-    1 oracle   dba          42,  3 Nov 12 12:37 /dev/rlv_flashback

做完这些,在ASM创建磁盘组的时候指定相应路径 /dev/rlv_* 即可。

asm_aix

1
2
3
4
5
6
7
8
9
10
11
SQL>select group_number,name,state FROM v$asm_diskgroup;
 
GROUP_NUMBER     NAME                  STATE
 
------------    --------------------- -----------
 
1                 DG1                   CONNECTED
 
2                 DG2                   MOUNTED
 
3                 DG_FLASHBACK          CONNECTED

-The End-

Written by ochef

November 12th, 2009 at 4:52 pm

Posted in Database

Tagged with , , ,

AIX的那些事儿

leave a comment

因为公司客户的关系,需要了解学习IBM产品基础知识:aix、ds storage、informix、websphere、tsm、db2。拜读过<<走入IBM小型机世界>>的作者 Orian写的一点感想及aix如何快速入门到精通的文章,结合自己的一点感受写下这篇博文,仅以此鼓励自己。

一、AIX系统主要管理事件

Devices management 设备管理 (安装/删除,配置等)

Logic volume management 存储管理 (主要是围绕逻辑卷的创建,删除,配置等)

File system management  文件系统管理(文件系统的安装/卸载,删除,备份与恢复,NFS等)

Memory management (主要是关于VMM,paging space的事)

CPC processor Dispatcher management (进程,作业,SRC)

TCP/IP network management  (系统的网络管理,各种稀奇古怪的interface有N多)

User management (用户管理)

DLPAR management(动态逻辑分区管理,这得要玩转HMC啊)

Cluster management(HACMP,HPC)

二、入门导向:二个基本点,一个中心

1.以理论为基础

我党再三强调要理论联系实际,可见基础知识是非常重要的。windows、unix、linux计算机系统其实都差不多。就像我们人一样,男地、女地,大人、小孩,除了外表和一些功能的强弱不同外,内部结构基本上没二样,重要的一点是:心中要有一个大概的系统结构图,它们不是孤立,内部都存在着一定的联系。

2.理论联系实际

想要玩转unix的话,那么命令行的操作是一定要熟悉的(虽然unix也有CDE,),命令多,命令的参数更多,一个命令你不敲上几十上百遍是很熟悉的。TNND,更要命的是么些参数有互斥性和组合性,千万不要死记硬背,要多练习和观察。

3.思考

记得国学大师季老的一句话:

路不空行,行必所思,思必所得。

任何时候任何事,思考都是最重要的。学得再多,事后不总结、不思考,到头来那点东西还是别人的,只不过就是在你身体里过了一遍没被消化掉更别说吸收了。

三、想精通,学编程

我正处在那门槛上,前辈们都说:不去编程是没办法精通的,你的程序编到那,你那一部分就精通了,想精通就照做吧。

四、备注:

1.遇到问题先搜索官方文档,再google、baidu啥的,无果再请教,过程很重要。不要一张口就问,真是问一遍不当回事,自己搞清楚了才算会。

2.学习资料的事

现象一:

大家还记得上中学的时候,一到周末放假,恨不得很把一桌子的书都带回家,满以为二天的时间在家能好好学习,结果是带回家了瞄都没瞄一眼然后又带回学校,到最后袋子都提坏了几个,人也瘦了几斤,想减肥,就这么简单。

现象二:

现在网上资源太多,要做到有的放矢,要有选择。就像我以前一样,不停的在网上下载资料,这样日复一日,哪怕有海量的硬盘也有放满的一天啊,最后苦于没有空间了,就删资料,结果删除的都还是没有解过压的。

我得到的教训,资料不在多,在于精,搞懂一个就是一个,一口气吃不成一个胖子,需要什么资料就找什么资料,及时消化,IBM机器附带的Document CD就够看的了。

IBM常用链接 下载

最后,请大家谨记:不知者无畏,千万不要在生产系统上进行你的libs。

-The End-

Written by ochef

July 23rd, 2009 at 12:49 pm

Posted in Operating System

Tagged with