分类: LINUX
2007-07-11 19:38:45
所谓裸设备(raw device)就是一种没有经过格式化的分区,也叫原始分区,是一种不需要通过文件系统来访问的特殊字符设备。在Linux下,通过块设备“绑定”到特殊字符设备得到裸设备。因为读写裸设备不需要像访问块设备那样经过内核的块缓冲,所有的I/O读写都是直接在进程的内存空间到物理的寻址空间进行。
此外,由于避免了文件系统处理的开销,所以使用裸设备对于读写频繁的应用(如Oracle、DB2等数据库系统)来说,可以很好地提升应用的性能。然而,随着计算能力的提高,当应用存取数据的I/O瓶颈出现在存储设备的控制器或驱动器上时,通过裸设备的数据访问性能反而不比文件系统的高,同时文件系统的数据组织能力也更强。
创建裸设备方式相对创建软RAID、LVM来说就比较简单了,只需用“raw”命令把裸设备与真实的物理磁盘或分区做一个映射即可。例如,在“/dev/raw/raw1”与“/dev/sdb”之间做一个映射,如下:
# raw /dev/raw/raw1 /dev/sdb /dev/raw/raw1: bound to major 8, minor 16 |
但是以上这种方式创建的裸设备,在系统重启后将不再生效,若要永久生效需要将裸设备的映射关系写到“/etc/sysconfig/rawdevices”文件中,如下:
# vi /etc/sysconfig/rawdevices /dev/raw/raw1 /dev/sdb /dev/raw/raw2 /dev/sdc /dev/raw/raw3 /dev/sdd |
同时还需要启动“rawdevices”这个服务,这时所绑定的裸设备才生效,如下:
# /etc/init.d/rawdevices restart Assigning devices: /dev/raw/raw1 --> /dev/sdb /dev/raw/raw1: bound to major 8, minor 16 /dev/raw/raw2 --> /dev/sdc /dev/raw/raw2: bound to major 8, minor 32 /dev/raw/raw3 --> /dev/sdd /dev/raw/raw3: bound to major 8, minor 48 done |
使用“chkconfig”可以设置该服务在开机时自动启动,即系统启动时自动映射对应关系,对于已创建好的裸设备,可以通过如下命令来查看裸设备的映射信息:
# raw -q /dev/raw/raw1 /dev/raw/raw1: bound to major 8, minor 16 |
“-q”指定存在的裸设备名称,而“major 8”和“minor 16”分别时真实设备的主设备号与从设备号,如果需要查看所有的裸设备信息,那么可使用“raw -qa”,如下:
# raw -qa /dev/raw/raw1: bound to major 8, minor 16 /dev/raw/raw2: bound to major 8, minor 32 /dev/raw/raw3: bound to major 8, minor 48 |