概要
This blog post explores the impact of disabling Oracle ASM Filter Driver filtering on space reclamation on a FlashArray system.
本文內容是關於 Oracle ASM 篩選驅動程式篩選,原先出現在 Ron Ekins 的部落格上。經作者的認可與同意,重新發表。
我是 Oracle ASM Filter Driver (AFD) 的長期粉絲。AFD 過濾是它的主要優勢之一。
AFD 可確保寫入作業僅由受信任和註冊的 Oracle 流程執行,從而阻止可能造成資料損毀的潛在損壞寫入作業。
遺憾的是,最近的 Linux 核心變更已經影響了 AFD,而 Oracle 的最新建議是停用 AFD 篩選,直到修復可用為止。
在 Oracle 資料庫 19.24 中,預設會停用篩選功能,但對於較早版本,Oracle 提供修補程式 35618858:預設停用 5.15 以上核心的篩選功能。
可用的 Oracle 版本更新 (RU) 修補程式
- Oracle Clusterware 19 版 (19.23.0.0.240416ACFSRU)
- Oracle Clusterware 19 版 (19.24.0.0.0ACFSRU)
- Oracle Clusterware 19 版 (19.25.0.0.0ACFSRU)
在這篇部落格文章中,我會探討停用 AFD 過濾功能對全快閃儲存陣列空間回收的影響。
核心版本
我最近使用 kernel 5.15 將 Oracle RAC 伺服器升級到 Oracle Linux 8.10。您可以使用 uname -r 來檢查核心版本:
[oracle@z-rac1 ~]$ cat /etc/oracle-release
Oracle Linux Server release 8.10
[oracle@z-rac1 ~]$ uname -r
5.15.0-208.159.3.el8uek.x86_64
Oracle ASMFD 狀態
我們可以使用 asmcmd afd_state 命令取得 ASM 篩選驅動程式狀態,例如:
[oracle@z-rac1 ~]$ asmcmd afd_state
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'z-rac1.uklab.purestorage.com'
在 RAC 叢集中,使用 asmcmd afd_state – 所有選項來查看所有節點的狀態。所有節點應具有相同的篩選狀態。
[oracle@z-rac1 ~]$ asmcmd afd_state --all
node 'z-rac1': State of AFD: LOADED and ASMFD Filtering Status: ENABLED
node 'z-rac2': State of AFD: LOADED and ASMFD Filtering Status: DISABLED
停用 ASMFD 篩選
使用 asmcmd afd_filter -d 命令停用篩選:
[oracle@z-rac1 ~]$ asmcmd afd_filter -d
[oracle@z-rac1 ~]$ asmcmd afd_state
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'DISABLED' on host 'z-rac1.uklab.purestorage.com'
啟用 ASMFD 篩選
如果需要,您可以使用 asmcmd -e afd_filter 指令重新啟用篩選,例如:
[oracle@z-rac1 ~]$ asmcmd afd_filter -e
[oracle@z-rac1 ~]$ asmcmd afd_state
ASMCMD-9526: The AFD state is 'LOADED' and filtering is 'ENABLED' on host 'z-rac1.uklab.purestorage.com'
存放空間回收
現在,這引發了一個大問題:如果我停用 ASM 過濾驅動程式,我是否無法將 SCSI UNMAP 指令發送回全快閃儲存陣列,以釋放未使用的空間?
好的,我有一個雙節點 RAC 叢集,並禁用 ASMFD 篩選功能。
[oracle@z-rac1 ~]$ asmcmd afd_state --all
node 'z-rac1': State of AFD: LOADED and ASMFD Filtering Status: DISABLED
node 'z-rac2': State of AFD: LOADED and ASMFD Filtering Status: DISABLED
建立 Oracle 表格空間
為證明這一點,讓我們建立一個 4TB 的表格空間,並等待 Oracle 初始化資料檔案。
我們來確認一下,沒有空間使用我的v$asm_disk查詢:
ASMFD Disks
Disk Disk Disk Total Used Free
Nbr Name Label Header Mount State Path GB GB GB
---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 0 12,288
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 0 12,288
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 0 12,288
3 DATA06 DATA06 MEMBER CACHED NORMAL AFD:DATA06 12,288 0 12,288
並建立 4TB 大檔案的表格空間。
SQL> create BIGFILE tablespace test datafile '+AFDATA' size 4T;
Tablespace created.
使用這個v$asm_disk查詢,我可以看到我的四個 ASMFD 磁碟區已如預期使用總計 4TB。
ASMFD Disks
Disk Disk Disk Total Used Free
Nbr Name Label Header Mount State Path GB GB GB
---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 1,024 11,264
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 1,024 11,264
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 1,024 11,264
3 DATA06 DATA06 MEMBER CACHED NORMAL AFD:DATA06 12,288 1,024 11,264
使用 asm 命令列公用程式 asmcmd 和清單屬性選項,我看到我的 AFDATA 磁碟群組上已啟用了儲存資源隨需配置:
[oracle@z-rac1 ~]$ asmcmd lsattr -G AFDATA -l | grep thin
thin_provisioned TRUE
使用 FlashArray CLI 並執行 purevol 清單
purevol 清單 z-racpod::afd_data* –空間 –總計
pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total
z-racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
(total) 48T 4.00T 92% >100 to 1 >100 to 1 19.79G 0.00 19.79G
放置桌面空間
現在,讓我們使用 DROP TABLESPACE 來捨棄 Oracle 的表格空間,包括內容和資料檔案,並看看對儲存平台和 Oracle 資料庫的影響。 tablespace_name
SQL> DROP TABLESPACE test INCLUDING CONTENTS AND DATAFILES;
Tablespace dropped.
如果我們重新執行v$asm_view查詢,Oracle 現在將報告 4TB 測試表格空間已發佈。
ASMFD Disks
Disk Disk Disk Total Used Free
Nbr Name Label Header Mount State Path GB GB GB
---- ---------- ---------- ------- ------- ------- ---------- -------- -------- --------
0 DATA08 DATA08 MEMBER CACHED NORMAL AFD:DATA08 12,288 0 12,288
1 DATA07 DATA07 MEMBER CACHED NORMAL AFD:DATA07 12,288 0 12,288
2 DATA05 DATA05 MEMBER CACHED NORMAL AFD:DATA05 12,288 0 12,288
3 DATA06 DATA06 MEMBER CACHED NORMAL AFD:DATA06 12,288 0 12,288
回到 Pure Storage® FlashArray 後,我們發現即使刪除 Oracle 的表格空間,我們仍然在消耗空間。
pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total
z-racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
(total) 48T 4.00T 92% >100 to 1 >100 to 1 19.79G 0.00 19.79G
Oracle ASMFD 重新平衡精巧相位
使用 Oracle ASM 篩選驅動程式時,我們可以手動觸發 SCSI UNMAP 命令,使用 ALTER DISKGROUP
我包含了可選的等待選項,僅在完成後才返回。
SQL> ALTER DISKGROUP AFDATA REBALANCE WITH BALANCE COMPACT WAIT;
Diskgroup altered.
如果現在我們回到 FlashArray CLI 並重複 purevol 清單
我們可以看到,即使 AFD 篩選已停用,ASMFD 仍然能夠將 SCSI UNMAP 請求發送到儲存陣列,以釋放空間。
pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total
z-racpod::afd_data05 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data06 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data07 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
z-racpod::afd_data08 12T 1.00T 92% >100 to 1 >100 to 1 4.95G 0.00 4.95G
(total) 48T 4.00T 92% >100 to 1 >100 to 1 19.79G 0.00 19.79G
pureuser@z-x90-a> purevol list z-racpod::afd_data* --space --total
Name Size Virtual Thin Provisioning Data Reduction Total Reduction Unique Snapshots Total
z-racpod::afd_data05 12T 92.00M 100% 6.9 to 1 >100 to 1 9.29M 0.00 9.29M
z-racpod::afd_data06 12T 92.00M 100% 6.6 to 1 >100 to 1 10.47M 0.00 10.47M
z-racpod::afd_data07 12T 92.00M 100% 6.7 to 1 >100 to 1 9.82M 0.00 9.82M
z-racpod::afd_data08 12T 92.00M 100% 7.0 to 1 >100 to 1 8.63M 0.00 8.63M
(total) 48T 368.00M 100% 6.8 to 1 >100 to 1 38.21M 0.00 38.21M
概要
在這篇部落格文章中,我確認停用 ASMFD 篩選功能不會影響空間回收。
Oracle AFD 開發團隊正積極為上述和更新的核心開發新的過濾和保護機制。當新的過濾解決方案推出時,我會試試看並分享我的發現。
如果您想深入了解如何使用 ASM 篩選驅動程式來回收儲存空間,請查看此部落格文章。
Take a Free Test Drive
Explore FlashArray in our virtual lab.






