Df -F vxfs
  /opt/oracle/db02 (/dev/vx/dsk/ipasdg/db02_vol):55665072 blocks 869766 files
  /opt/oracle/db03 (/dev/vx/dsk/ipasdg/db03_vol):41688928 blocks 651380 files
  /opt/oracle/db04 (/dev/vx/dsk/ipasdg/db04_vol):41688928 blocks 651380 files
  /opt/oracle/arch (/dev/vx/dsk/ipasdg/arch_vol):164632064 blocks 2572348 files
  /backup (/dev/vx/dsk/ipasdg/backup_vol):314529872 blocks 4914519 files

如果想在vxfs上面使用異步I/O,首先必須要安裝一個(gè)叫做Quick I/O的模塊,并且要啟用Quick I/O,這個(gè)模塊是需要單獨(dú)向Veritas公司購(gòu)買(mǎi)license的。默認(rèn)的時(shí)候vxfs文件系統(tǒng)mount的時(shí)候是啟用了Quick I/O的,如果在mount的時(shí)候指定了-o noqio的選項(xiàng),那么Quick IO是被禁用的。

如果想查看在一個(gè)文件系統(tǒng)上是否采用了Quick IO,常用的fsadmin,fstype這些命令都無(wú)法看出來(lái),/etc/mnttab、/etc/vfstab這些文件也沒(méi)有記錄相關(guān)的信息。這里 介紹一種方法可以查看文件是否是Quick I/O的文件:

ls -al 列出所有文件,包括Quick I/O文件和它的鏈接.

以下是代碼片段:
    $ ls -al d* .d*
  -rw-r–r– 1 dba 104890368 Oct 2 13:42 .dbfile
  lrwxrwxrwx 1 dba 17 Oct 2 13:42 dbfile -> .dbfile::cdev:vxfs:

ls -lL 顯示是否Quick I/O被成功安裝和啟用。

以下是代碼片段:
    $ ls -lL dbfile
  crw-r–r– 1 dba 45, 1 Oct 2 13:42 dbfile

第一個(gè)字符c,表明這是一個(gè)裸字符設(shè)備文件,如果沒(méi)有這個(gè)字符則表明Quick I/O沒(méi)有正確安裝或者是沒(méi)有一個(gè)合法的license key。

確認(rèn)文件系統(tǒng)啟用了Quick I/O后,然后就可以給Oracle配置異步I/O了,在Oracle的初始化參數(shù)中配置DISK_ASYNCH_IO = TRUE,然后重啟數(shù)據(jù)庫(kù)讓其生效。

因?yàn)閱⒂昧薗uick I/O后,在OS級(jí)別上是消除了緩沖的,所以數(shù)據(jù)庫(kù)的buffer cache在啟用了Quick I/O后是應(yīng)該需要增加的。

三、 如何檢測(cè)在VXFS文件系統(tǒng)上是否支持異步I/O

對(duì)于Solaris操作系統(tǒng)可以使用下面的一段代碼來(lái)檢測(cè)系統(tǒng)是否支持異步I/O:

原代碼如下:

以下是代碼片段:
??? /*
  * Quick kaio test. Read 1k bytes from a file using async I/O.
  * To compile:
  * cc -o aio aio.c -laio
  * To run:
  * aio file_name
  */
  #include
  #include
  #include
  #include
  #define BSIZE 1024
  main(int argc, char *argv[])
  {
  aio_result_t res;
  char buf[BSIZE];
  int fd;
  if ((fd=open(argv[1], O_RDONLY)) == -1) {
  perror(“open”);
  exit(-1);
  }
  aioread(fd, buf, BSIZE, 0L, SEEK_SET, &res);
  aiowait(0);
  if (res.aio_return == BSIZE) {
  printf(“aio succeeded
“);
  close(fd);
  exit(0);
  }
  perror(“aio”);
  }

然后使用root用戶編譯:

以下是代碼片段:
# cc -o aio aio.c -laio

這樣就可以用來(lái)檢測(cè)系統(tǒng)是否支持異步I/O了。

分享到

wangyao

相關(guān)推薦