裸裝置繞過檔案系統緩衝,讓 Oracle 直接對磁碟分區進行 I/O,是高負載資料庫突破磁碟瓶頸的關鍵技術。本文以 20 個核心問題串聯裸裝置完整知識體系,並補充 CentOS/RedHat 5.x 下綁定裸裝置供 ASM 使用的實戰操作。
| # | 問題 | 核心答案 |
|---|---|---|
| 1 | 什麼是裸裝置? | 未格式化、繞過檔案系統的字元特殊裝置,由應用程式直接讀寫 |
| 2 | 如何辨識? | /dev 下字元裝置檔,ls -l 首字元為 c |
| 3 | 效能提升幅度? | 磁碟 I/O 為瓶頸時最高可提升 40%,並省去 inode/自由區塊維護開銷 |
| 4 | 何時使用? | 資料庫已優化、vmstat/sar 確認磁碟瓶頸、有空閒分區 |
| 5 | 強制使用場景? | Oracle Parallel Server/RAC(所有資料檔、控制檔、Redo 必須裸裝置)、部分 Unix 需異步 I/O |
| 6 | 能用磁碟第一分區? | 舊版 Unix 含磁碟/邏輯卷資訊,覆蓋導致崩潰;新版較安全但仍不建議 |
| 7 | 能用完整分區大小? | 不可,須預留至少 2 個 Oracle 區塊大小 |
| 8 | 擁有者權限? | root 建立 → chown oracle:dba |
| 9 | 建立資料檔語法? | DATAFILE '/dev/raw1' SIZE 30712K(單引號含路徑) |
| 10 | Oracle 區塊與裸裝置關係? | Oracle 區塊大小必須為物理區塊大小的整數倍 |
| 11 | 如何備份? | 唯有 dd 指令(如 dd if=/dev/raw1 of=/dev/rmt0 bs=16k),或先 dd 到檔案系統再備份 |
| 12 | 混合檔案系統與裸裝置? | 非 RAC 可混用,但備份流程複雜化 |
| 13 | 線上 Redo 放裸裝置? | 極佳選擇,寫入頻繁受益最大;RAC 強制要求 |
| 14 | 歸檔日誌放裸裝置? | 不可,必須放檔案系統或磁帶 |
| 15 | 單裸裝置多資料檔? | 不可,一裝置一檔案,規劃需謹慎 |
| 16 | 多裸裝置同物理磁碟? | 不利,產生爭用;應分散至不同磁碟、不同控制器 |
| 17 | 裸裝置大小需統一? | 非強制,但統一利於管理 |
| 18 | 需調核心參數? | 不需,可選擇縮減系統緩衝區 |
| 19 | OS 層面其他提速? | RAID(特別是 RAID 10/0+1)極佳補充 |
| 20 | 極致優化方向? | Oracle 內部調優 + 更多磁碟/控制器分散 I/O |
/dev/sda5 綁定為 /dev/raw/raw1# 1. 分區
fdisk /dev/sda
n → 選擇擴展分區 → n → 建立 Linux 分區 /dev/sda5 → w
reboot
# 2. 即時綁定
raw /dev/raw/raw1 /dev/sda5
# /dev/raw/raw1 及 /dev/raw 目錄會自動建立
# 3. 永久生效 - 方法 A:/etc/sysconfig/rawdevices
echo "/dev/raw/raw1 /dev/sda5" >> /etc/sysconfig/rawdevices
# 4. 永久生效 - 方法 B:/etc/rc.d/rc.local (雙重保險)
cat >> /etc/rc.d/rc.local <<'EOF'
raw /dev/raw/raw1 /dev/sda5
touch /var/lock/subsys/local
chown -R oracle:dba /dev/sda5
chown -R oracle:dba /dev/raw
EOF
# 5. 驗證
ls -l /dev/raw/raw1
# crw-r----- 1 oracle dba 162, 1 ... /dev/raw/raw1
CREATE DISKGROUP DATA EXTERNAL REDUNDANCY
DISK '/dev/raw/raw1' NAME DATA_0001;
現代 Linux (RHEL 6+/Oracle Linux 6+) 推薦使用 udev 規則或 ASMLib 管理 ASM 磁碟,raw 指令已棄用。新部署請參考《Oracle ASM 存儲管理員指南》採用現代方案。