1. 首页
  2. IT资讯

AIX中的裸设备

转自网络
在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 );

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7728585/viewspace-740680/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:深沉的少年,转转请注明出处:http://www.cxybcw.com/183270.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code