Board logo

标题: 使用内存盘提高OLTP数据库的性能和可用性(1)简介 [打印本页]

作者: look_w    时间: 2018-5-23 15:48     标题: 使用内存盘提高OLTP数据库的性能和可用性(1)简介

简介  本文提供了使用内存盘配置 DB2 数据库服务器的循序渐进的指南。其中包括:
本文假设您熟悉 DB2 Universal Database™(DB2 UDB)引擎,并且系统满足下列要求:
Linux 内存盘 (Ramdisk)Linux 系统可以将一部分内存虚拟成一个驱动器设备。应用程序可以象访问普通的硬盘分区一样访问内存盘。不同的是,写入内存盘的数据在关机时会全部丢失。因此,使用内存盘必须有完整的备份和恢复方案。
内存盘可以明显的提高数据访问速度,特别对需要频繁读写多个不连续扇区的操作,速度提高更明显。
初始化内存盘  内存盘的驱动程序可以直接编译进内核,也可以编译成模块在需要的时候加载。笔者使用的 Red Hat Enterprise Linux AS release 4 (Nahant Update 5) 默认已经加载了内存盘的驱动程序。( 关于如何加载内存盘驱动程序,读者可以参考 Linux 相关文档。)
Linux 内存盘的硬件接口文件在 /dev 目录下,ram0 到 ram15 共 16 个文件。每一个文件都可以初始成一个内存盘。未初始化之前,不占用内存空间。
用户可以使用下面的命令初始化一个内存盘 ( 该命令需要使用 root 用户运行 ):
/sbin/mkfs -t ext3 -b 1024 /dev/ram0
在上面的命令中,-b 1024 指定使用 1024 字节作为单个 block 块的大小,在不同版本的 linux 上,可以尝试修改该值,以保证初始化以后可以挂接 (mount) 到文件系统上。-t ext3 指定使用 ext3 格式初始化内存盘,用户可以根据自己的喜好选用不同的文件系统格式。
以上命令在笔者系统上运行的输出结果是:
图 1. 初始化内存盘输出结果 修改内存盘大小  默认的内存盘大小是 4M( 不同系统上,这个值可能会不同 )。可以通过修改 /etc/grub.conf 文件修改内存盘的大小。使用 root 用户,修改 grub.conf 文件中 kernel 开头的行,在最后添加 ramdisk_size=< 内存盘的大小 >:
kernel /boot/vmlinuz-2.6.9-55.ELsmp ro root=LABEL=/ rhgb quiet ramdisk_size=4194304
内存盘的大小以 K(1024 字节 ) 为单位,转化为 M 时需要除以 1024。另外,文件系统本身还要占用 2% 左右的空间。修改该文件以后,重启机器,并重新初始化内存盘。此时,可以看到内存盘已经修改为新的大小。
为避免内存盘占用太多内存,造成系统运行困难,内存盘的大小不应超过物理内存的 3/4。在内存比较小的机器上,要保证操作系统、数据库和其他应用程序至少有 1G 的可用物理内存。
将内存盘挂接 (mount) 到文件系统  建立内存盘要挂接的目录 ( 可能需要使用 root 用户执行 ):
mkdir /db2data
用户可以使用 mount 命令将初始化之后的内存盘挂接到文件系统中,命令是 ( 该命令需要使用 root 用户运行 ):
mount –t ext3 /dev/ram0 /db2data
在上面的命令中,-t ext3 说明内存盘的格式是 ext3,用户可以选择不同的格式,该格式需要和初始化内存盘时使用的格式相同。/dev/ram0 是经过初始化的内存盘设备,/db2data 是挂接的文件系统目录。
修改目录的权限 ( 需要使用 root 用户执行 ):
chmod –R 777 /db2data
修改内存盘设备的权限 ( 需要使用 root 用户执行 ):
chmod 660 /dev/ram0
另外,使用内存盘的用户,还应在 disk 组中。可以使用以下命令,将特定用户添加到 disk 组中 ( 需要使用 root 用户执行 ):
/usr/sbin/usermod –a –G disk <login>
挂接到文件系统以后,可以使用 df 命令查看挂接的状态:
df –k /db2data
以上命令在笔者系统上运行的输出结果是:
图 2. 修改内存盘大小输出结果 其中,Filesystem 项指出挂接的设备是 /dev/ram0;1K-blocks 项指出该目录下有多少个 1K 字节大小的块;Used 指出已经使用的块数;Available 指出用户可用的块数;Use% 指出使用百分比;Mounted on 指出挂接到目录的位置 /db2data。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0