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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於裸裝置的ASM磁碟組擴容方案ASM
- ARM64 上的效能怪獸:API 閘道器 Apache APISIX 在 AWS Graviton3 上的安裝和效能測試APIApache
- Linux裝置節點Linux
- AIX中的裸裝置AI
- Linux上的redis的安裝和配置LinuxRedis
- Linux下基於裸裝置建立10g資料庫Linux資料庫
- 基於jmeter的效能全流程測試JMeter
- Linux裸裝置總結Linux
- 實現裝置上的節能影象識別 — Qualcomm Technologies 的方法
- 雲上的移動效能測試平臺
- 關於效能測試時線上介面訪問比例的整理的問題
- 如何進行裝置的非對稱效能測試
- API 閘道器 Apache APISIX 在 Amazon Graviton3 上的安裝與效能測試APIApache
- 基於 appium 的安卓 UI 及多裝置相容測試工具APP安卓UI
- 基於leveldb引擎的高效能Nosql服務ssdb的測試使用SQL
- vmware + 裸裝置 + crs + oracle10g RAC搭建步驟(二):安裝linuxOracleLinux
- 基於TPC-C基準的Python ORM的效能測試PythonORM
- 用於 APP 測試的 10 大 Android 裝置APPAndroid
- 效能測試-基於 Python 的 Linux 伺服器資源監控PythonLinux伺服器
- Linux 下使用 NetLink 檢測裝置的熱插拔Linux
- MariaDB在Linux和Windows上的安裝LinuxWindows
- 軟體測試中的43個功能測試點(上)
- linux udev裸裝置繫結Linuxdev
- 利用rman copy的方法實現儲存上裸裝置資料檔案的遷移ITPUB
- 關於效能測試的這點事,值得收藏~
- 效能測試工具JMeter的安裝及環境配置--Windows和LinuxJMeterWindowsLinux
- 基於LINUX的MySql二進位制本地安裝和部署實施測試LinuxMySql
- 使用Linux 上的 ChromebookvLinuxChrome
- 使用Linux 上的 ChromebookLinuxChrome
- 【PG】PG在linux上的線上和離線安裝Linux
- linux 上 redis的安裝LinuxRedis
- 【RAC】Oracle RAC上線測試場景介紹Oracle
- 在沒有本地安裝的情況下在 Postman 上測試您的端點Postman
- 基於SpringBoot 3.x和WebSocket的線上教育平臺Spring BootWeb
- Windows 和 Linux 上安裝 TTF 字型的方法WindowsLinux
- 記錄一則AIX使用裸裝置安裝OracleRAC的問題AIOracle
- 效能測試工具Lmbench的使用和下載
- 充電樁測試的裝置和工具有哪些?