全面解析裸设备

616阅读 0评论2011-06-02 zhongtang
分类:系统运维

 全面解析裸设备(AIX)

发现oracle对应的表空间对应的数据文件多为裸设备,并不是简单的数据文件。google之,学到了一点东西,遂记之。

----------------------------------------------------------------------------
1、什么是裸设备:

裸设备,也叫裸分区(原始分区),是一种没有经过格式化,不被AIX等操作系统通过文件系统来读取的特殊字符设备。

/dev 目录下,有许多文件,其中有两个大类:字符设备文件和块设备文件



字符设备特殊文件进行I/O操作不经过操作系统的缓冲区,而块设备特殊文件用来同外设进行定长的包传输。字符特殊文件与外设进行I/o操作时每次只传输一个字符。而对于块设备特殊文件来说,它用了cache机制,在外设和内存之间一次可以传送一整块数据。裸设备使用字符特殊文件。在/dev 目录下,可以看到许多这样的文件。

字符设备:对字符设备的读写不需要通过OS的buffer。它不可被文件系统mount。
块设备:对块设备的读写需要通过OS的buffer,它可以被mount到文件系统中。

注:AIX的裸设备跟LINUX有些不一样,建立完LV会在/dev/下生成跟LV名称前加R的文件,它就是LV的裸设备文件

---------------------------------------------------------------------------------------------------------------------
2、使用裸设备的好处:

因为使用裸设备避免了再经过Unix操作系统这一层,数据直接从Disk到Oracle进行传输,所以使用裸设备对于读写频繁的数据库应用来说,可以极大地提高数据库系统的性能。当然,这是以磁盘的 I/O 非常大,磁盘I/O已经称为系统瓶颈的情况下才成立。如果磁盘读写确实非常频繁,以至于磁盘读写成为系统瓶颈的情况成立,那么采用裸设备确实可以大大提高性能,最大甚至可以提高至40%,非常明显。

  而且,由于使用的是原始分区,没有采用文件系统的管理方式,对于Unix维护文件系统的开销也都没有了,比如不用再维护I-node,空闲块等,这也能够导致性能的提高。

---------------------------------------------------------------------------------------------------------------------
3、如何决定是否使用裸设备:


  判断是否使用裸设备要从以下方面进行考虑:首先,数据库系统本身需要已经被比较好的经过了优化。优化是一门很有些技术的话题,很难简单地讲述。其次,使用Unix命令来辨别是否存在磁盘读写瓶颈。比如Unix的vmstat, sar 等命令都可以较好的进行鉴别。如果决定采用裸设备,需要磁盘上还有空闲的分区。否则,就要新添磁盘,或者对原有系统重新规划。

---------------------------------------------------------------------------------------------------------------------
4、可以把整个裸设备都作为Oracle的数据文件么:


  不行。必须让数据文件的大小稍微小于该裸设备的实际大小。至少要空出两个oracle块的大小来。

---------------------------------------------------------------------------------------------------------------------
5、裸设备应该属于那个用户:


  应该由root来创建裸设备,然后再分配给Oracle用户以供使用。同时还要把它归入Oracle用户所在的那个组里边(通常都是DBA)。

---------------------------------------------------------------------------------------------------------------------
6、应该把几个裸设备放到同一个物理磁盘上吗:


  这样做不好。因为使用裸设备就是为了提高磁盘读写速度。而把多个裸设备放到同一个物理磁盘上会导致读写竞争,这样对于提高I/O速度是不利的。应该尽量分散裸设备到不同的物理磁盘上,最好是分散到不同的磁盘控制器上。这是最佳选择。

 

上一篇:pl/sql developer 9.0新特性
下一篇:裸设备研究之简单理解