emc cx500上的基於linux的3節點rac上的裸裝置的使用和效能測試
一直以來只是聽說裸裝置如果能提高效能,如果沒有檔案系統管理方便等等,昨天看了一篇文章後,終於明白什麼叫裸裝置了,下面的例子是在一個3節點的rac環境下的一個節點測試的,盯著一個節點做是為了避免過多的cache fusion而影響效能測試。
環境如下:
儲存:emc cx500
主機:dell 1950
OS:redhat as4u4 64bit
DB:oracle 10.2.0.2
在儲存上劃出一塊空間10G,然後把這個lun分配到已經存在的三個節點共享的STORGE GROUP中,依次重啟每個節點(據說不重啟也可以的,不過我一般選擇重啟,因為是rac環境,所以每次啟動一個也不會使得資料庫當機的),最後保證每個節點都可以看到新新增的lun(這裡使用disk -l)。
對新劃分的空間進行分割槽(這個步驟只要在一個節點上操作就可以了),fdisk /dev/emcpowerk,分割槽後到各節點檢視是否有新的裝置/dev/emcpowerk1生成,新生成的裝置是塊裝置,當時做試驗的時候還不是很理解,就直接把表空間建立到了這個/dev/emcpowerk1裝置上,也可以建立成功,但是因為一個lun在不同的主機上對應的裝置名稱不一定相同,會導致其他的node不能正確讀寫相應的裝置,導致I/O錯誤。因此後來選擇把塊裝置對映到字元裝置上。
執行raw /dev/raw/raw3 /dev/emcpowerk1,把裝置對映關係建立好,併到/dev/raw目錄,把/dev/raw/raw3的屬主和組改變成oracle:dba,把許可權改為777(許可權其實不需要這麼大,偷懶就可以這麼做),然後再其他節點也這樣對映,注意要把同一個lun對映到相同的裸裝置名稱上去。同時應該把此步驟放到開機自動啟動的指令碼中,否則重新啟動後對映關係就消失了。需要做兩個步驟,首先在/etc/sysconfig/rawservice中新增一行/dev/raw/raw3 /dev/emcpowerk1,然後在/etc/rc.d/rc.local中增加修改/dev/raw/raw3的屬主和許可權的指令碼,chown oracle:dba /dev/raw/raw3 chmod 777 /dev/raw/raw3。其他節點也依次做一遍。當時做試驗的時候只在一個node上做完對映就開始建立表空間,
CREATE TABLESPACE tbsraw DATAFILE
'/dev/raw/raw3' SIZE 1024M AUTOEXTEND ON NEXT 10M MAXSIZE 9800M
LOGGING
PERMANENT
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT MANUAL
FLASHBACK ON;
表空間建立成功,但是在其他節點上使用select file_name from dba_data_files查詢是,會報file 7讀寫錯誤,這裡的file 7就是新加的表空間對應的裸裝置,錯誤日誌如下:
Errors in file /u01/app/oracle/admin/billdb/bdump/billdb2_dbw0_9496.trc:
ORA-01157: cannot identify/lock data file 7 - see DBWR trace file
ORA-01110: data file 7: '/dev/raw/raw3'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
因為這個節點還沒有進行裝置間的對映,於是按照上面的步驟操作完畢,重新執行sql查詢,還是報錯,重啟db後,問題解決。在第三個節點上重複此步驟,到最後三個節點都可以看到這個裸裝置,執行sql返回結果如下:
SQL> select file_name from dba_data_files where file_id=7;
FILE_NAME
--------------------------------------------------------------------------------
/dev/raw/raw3
建立一個表,然後開始測試,以下測試全部在一個節點進行。
SQL> alter table test nologging;
Table altered.
Elapsed: 00:00:00.03
SQL> alter table test1 nologging;
Table altered.
Elapsed: 00:00:00.02
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
100000 rows created.
Elapsed: 00:00:02.19
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
200000 rows created.
Elapsed: 00:00:02.33
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
400000 rows created.
Elapsed: 00:00:03.99
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
800000 rows created.
Elapsed: 00:00:10.68
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
1600000 rows created.
Elapsed: 00:00:14.97
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
3200000 rows created.
Elapsed: 00:00:29.37
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
6400000 rows created.
Elapsed: 00:01:14.80
SQL> INSERT /*+ APPEND*/ INTO TEST SELECT /*+ PARALLEL(A,4)*/ * FROM TEST A;
12800000 rows created.
Elapsed: 00:01:55.63
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
100000 rows created.
Elapsed: 00:00:01.55
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
200000 rows created.
Elapsed: 00:00:02.03
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
400000 rows created.
Elapsed: 00:00:05.52
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
800000 rows created.
Elapsed: 00:00:07.79
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
1600000 rows created.
Elapsed: 00:00:12.18
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
3200000 rows created.
Elapsed: 00:00:22.02
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
6400000 rows created.
Elapsed: 00:00:41.80
SQL> INSERT /*+ APPEND*/ INTO TEST1 SELECT /*+ PARALLEL(A,4)*/ * FROM TEST1 A;
12800000 rows created.
Elapsed: 00:01:21.68
這裡可以看到在大資料量時插入速度上的差別。
SQL> select count(*) from test;
COUNT(*)
----------
25600000
Elapsed: 00:01:42.87
SQL> select count(*) from test1;
COUNT(*)
----------
25600000
Elapsed: 00:00:58.66
SQL> select /*+ parallel(test,4)*/ count(*) from test;
COUNT(*)
----------
25600000
Elapsed: 00:00:32.53
SQL> select /*+ parallel(test1,4)*/ count(*) from test1;
COUNT(*)
----------
25600000
Elapsed: 00:00:17.13
這裡可以看到查詢時讀上的差別。
雖然此rac使用的是基於asm的裸裝置,但是和真正的裸裝置速度上還是有差別的,和檔案系統的效能差別估計會更明顯了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25016/viewspace-980163/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux下裸裝置的使用Linux
- linux上建立裸裝置問答Linux
- 【RAC】節點2上不能完全識別節點1上的asmdiskASM
- Linux基於裸裝置建庫Linux
- Solaris裸裝置安裝三節點RAC102(六)
- Solaris裸裝置安裝三節點RAC102(五)
- Solaris裸裝置安裝三節點RAC102(四)
- Solaris裸裝置安裝三節點RAC102(三)
- Solaris裸裝置安裝三節點RAC102(二)
- Solaris裸裝置安裝三節點RAC102(一)
- ARM64 上的效能怪獸:API 閘道器 Apache APISIX 在 AWS Graviton3 上的安裝和效能測試APIApache
- AIX 上建立裸裝置lv出現的問題AI
- Openfiler+RAC的安裝之五--在RAC 節點上配置 iSCSI 卷
- oracle rac在裸裝置下的恢復Oracle
- oracle rac在裸裝置下的備份Oracle
- LINUX下裸裝置的操作Linux
- 基於裸裝置的ASM磁碟組擴容方案ASM
- 3節點rac基礎上配置goldengate(單例項)Go單例
- udev 裸裝置 安裝racdev
- aix5.3上使用裸裝置建立表空間AI
- 3個節點的RAC, 為什麼定期優化統計的JOB老是在節點2上執行優化
- 用裸裝置與Oracle資料庫的效能Oracle資料庫
- goldengate 支援抽取源庫上裸裝置形成存放的redo logGo
- 獲取redhat linux裸裝置的大小RedhatLinux
- 終端裝置上的機器學習: Android裝置上的TensorFlow [session]機器學習AndroidSession
- 關於裸裝置資料的處理
- AIX中的裸裝置AI
- 基於jmeter的效能全流程測試JMeter
- Oracle RAC安裝前的磁碟分割槽及裸裝置配置Oracle
- 雲上的移動效能測試平臺
- Oracle RAC--在Linux中建立裸裝置OracleLinux
- Linux裝置節點Linux
- 軟體測試中的43個功能測試點(上)
- 裸裝置與塊裝置的區別
- API 閘道器 Apache APISIX 在 Amazon Graviton3 上的安裝與效能測試APIApache
- 基於Android裝置的 Kali Linux滲透測試教程(內部資料)AndroidLinux
- linux7上安裝RAC的問題Linux
- Linux上安裝oracle的注意點LinuxOracle