Skip to main content
Enterprise applications
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

Solaris

貢獻者 kaminis85

適用於 Solaris 作業系統和ASA r2 ONTAP 的設定主題。

Solaris UFS 掛載選項

NetApp 強烈建議您使用記錄掛載選項、以便在 Solaris 主機當機或 FC 連線中斷時保留資料完整性。記錄掛載選項也可保留 Snapshot 備份的使用性。

Solaris ZFS

必須仔細安裝和設定 Solaris ZFS 、才能提供最佳效能。

mvector

Solaris 11 變更了 IT 處理大型 I/O 作業的方式、可能會在 SAN 儲存陣列上造成嚴重的效能問題。此問題記錄在 NetApp 追蹤錯誤報告 630173 「 Solaris 11 ZFS 效能回歸」中。

這不是 ONTAP 錯誤。這是在 Solaris 瑕疵 7199305 和 7082975 下追蹤的 Solaris 瑕疵。

您可以諮詢 Oracle 支援部門、瞭解您的 Solaris 11 版本是否受到影響、或者您也可以變更為較小的值來測試因應措施 zfs_mvector_max_size

您可以以 root 執行下列命令來達成此目的:

[root@host1 ~]# echo "zfs_mvector_max_size/W 0t131072" |mdb -kw

如果這項變更發生任何非預期的問題、您可以以 root 執行下列命令、輕鬆地將其還原:

[root@host1 ~]# echo "zfs_mvector_max_size/W 0t1048576" |mdb -kw

核心

可靠的 ZFS 效能需要修補 Solaris 核心、以因應 LUN 對齊問題。此修正程式是隨 Solaris 10 中的修補程式 147440-19 和適用於 Solaris 11 的 SRU 10.5 一起推出的。只能將 Solaris 10 及更新版本與 ZFS 搭配使用。

LUN 組態

若要設定 LUN 、請完成下列步驟:

  1. 建立類型的 LUN solaris

  2. 安裝所指定的適當主機公用程式套件( Huk ) "NetApp互通性對照表工具IMT (不含)"

  3. 請依照 Huk 中的說明進行操作、完全符合上述說明。以下概述基本步驟、但請參閱 "最新文件" 以瞭解正確的程序。

    1. 執行 host_config 更新的公用程式 sd.conf/sdd.conf 檔案:這樣做可讓 SCSI 磁碟機正確探索 ONTAP LUN 。

    2. 請遵循所提供的指示 host_config 啟用多重路徑輸入 / 輸出( MPIO )的公用程式。

    3. 重新開機。此步驟是必要步驟、以便在整個系統中辨識任何變更。

  4. 分割 LUN 並確認它們已正確對齊。請參閱「附錄 B : WAFL 校準驗證」、瞭解如何直接測試及確認校準。

zPools

只有在中的步驟之後才應建立 zpool "LUN 組態" 執行。如果程序未正確執行、可能會因為 I/O 對齊而導致嚴重的效能降低。ONTAP 的最佳效能要求 I/O 必須與磁碟機上的 4K 邊界對齊。在 zpool 上建立的檔案系統使用有效的區塊大小、並透過稱為的參數加以控制 ashift,您可以執行命令來檢視 zdb -C

的價值 ashift 預設為 9 、表示 2^9 或 512 位元組。為了獲得最佳效能 ashift 值必須為 12 ( 2^12=4K )。此值是在創建 zpool 時設置的,不能更改,這意味着 zpool 中的數據 ashift 除 12 個以外、應將資料複製到新建立的 zPool 、以進行移轉。

建立 zPool 之後、請驗證的值 ashift 繼續之前。如果值不是 12 、則表示未正確探索到 LUN 。銷毀 zpool 、確認相關主機公用程式文件中顯示的所有步驟均已正確執行、然後重新建立 zPool 。

zPools 和 Solaris LDoms

Solaris LDoms 還需要確保 I/O 對齊正確無誤。雖然 LUN 可能會被正確發現為 4K 裝置、但 LDOM 上的虛擬 vdsk 裝置不會繼承 I/O 網域的組態。以該 LUN 為基礎的 vdsk 預設為 512 位元組區塊。

需要額外的組態檔案。首先、必須針對 Oracle 錯誤 15824910 修補個別的 LDOM 、才能啟用其他組態選項。此修補程式已移轉至所有目前使用的 Solaris 版本。一旦 LDOM 獲得修補、就可以依照下列方式設定新的正確對齊 LUN :

  1. 識別要在新的 zPool 中使用的 LUN 或 LUN 。在此範例中、它是 c2d1 裝置。

    [root@LDOM1 ~]# echo | format
    Searching for disks...done
    AVAILABLE DISK SELECTIONS:
      0. c2d0 <Unknown-Unknown-0001-100.00GB>
         /virtual-devices@100/channel-devices@200/disk@0
      1. c2d1 <SUN-ZFS Storage 7330-1.0 cyl 1623 alt 2 hd 254 sec 254>
         /virtual-devices@100/channel-devices@200/disk@1
  2. 擷取要用於 ZFS Pool 的裝置之 VDC 執行個體:

    [root@LDOM1 ~]#  cat /etc/path_to_inst
    #
    # Caution! This file contains critical kernel state
    #
    "/fcoe" 0 "fcoe"
    "/iscsi" 0 "iscsi"
    "/pseudo" 0 "pseudo"
    "/scsi_vhci" 0 "scsi_vhci"
    "/options" 0 "options"
    "/virtual-devices@100" 0 "vnex"
    "/virtual-devices@100/channel-devices@200" 0 "cnex"
    "/virtual-devices@100/channel-devices@200/disk@0" 0 "vdc"
    "/virtual-devices@100/channel-devices@200/pciv-communication@0" 0 "vpci"
    "/virtual-devices@100/channel-devices@200/network@0" 0 "vnet"
    "/virtual-devices@100/channel-devices@200/network@1" 1 "vnet"
    "/virtual-devices@100/channel-devices@200/network@2" 2 "vnet"
    "/virtual-devices@100/channel-devices@200/network@3" 3 "vnet"
    "/virtual-devices@100/channel-devices@200/disk@1" 1 "vdc" << We want this one
  3. 編輯 /platform/sun4v/kernel/drv/vdc.conf

    block-size-list="1:4096";

    這表示裝置執行個體 1 的區塊大小為 4096 。

    另一個範例是假設需要將 vdsk 執行個體 1 至 6 設定為 4K 區塊大小和 /etc/path_to_inst 內容如下:

    "/virtual-devices@100/channel-devices@200/disk@1" 1 "vdc"
    "/virtual-devices@100/channel-devices@200/disk@2" 2 "vdc"
    "/virtual-devices@100/channel-devices@200/disk@3" 3 "vdc"
    "/virtual-devices@100/channel-devices@200/disk@4" 4 "vdc"
    "/virtual-devices@100/channel-devices@200/disk@5" 5 "vdc"
    "/virtual-devices@100/channel-devices@200/disk@6" 6 "vdc"
  4. 最終結果 vdc.conf 檔案應包含下列項目:

    block-size-list="1:8192","2:8192","3:8192","4:8192","5:8192","6:8192";
    警告

    設定 VC.conf 並建立 vdsk 之後、必須重新啟動 LDOM 。無法避免此步驟。區塊大小變更只會在重新開機後生效。繼續使用 zpool 組態、並確保如前所述、移位已正確設定為 12 。

ZFS Intent Log ( ZIL )

一般而言、沒有理由在不同的裝置上找到 ZFS Intent Log ( ZIL )。記錄檔可以與主集區共用空間。獨立 ZIL 的主要用途是使用缺乏現代儲存陣列寫入快取功能的實體磁碟機。

logbias

設定 logbias 託管 Oracle 資料的 ZFS 檔案系統參數。

zfs set logbias=throughput <filesystem>

使用此參數可降低整體寫入層級。根據預設值、寫入的資料會先提交至 ZIL 、然後再提交至主儲存池。此方法適用於使用純磁碟機組態的組態、包括 SSD 型 ZIL 裝置和主儲存池的旋轉媒體。這是因為它允許在可用的最低延遲媒體上、在單一 I/O 交易中進行認可。

使用包含其快取功能的現代化儲存陣列時、通常不需要使用此方法。在極少數情況下、可能需要在單一交易中寫入記錄檔、例如由高度集中、對延遲敏感的隨機寫入所組成的工作負載。寫入放大的形式會產生影響、因為記錄的資料最終會寫入主儲存池、導致寫入活動加倍。

直接 I/O

許多應用程式(包括 Oracle 產品)都可以啟用直接 I/O 、藉此略過主機緩衝區快取此策略無法在 ZFS 檔案系統中正常運作。雖然會略過主機緩衝區快取、但 ZFS 本身仍會繼續快取資料。使用 Fio 或 Sio 等工具執行效能測試時、這項動作可能會產生誤導性的結果、因為很難預測 I/O 是否到達儲存系統、或是是否在作業系統中本機快取。此動作也會讓使用此類模擬測試來比較 ZFS 效能與其他檔案系統的情況變得非常困難。實際上、在真實使用者工作負載下、檔案系統效能幾乎沒有任何差異。

多個 zPools

必須在 zpool 層級執行快照型備份、還原、複製及歸檔 ZFS 型資料、而且通常需要多個 zPools 。zpool 類似於 LVM 磁碟群組、應使用相同的規則進行設定。例如、資料庫的配置最好是存放在資料檔案上 zpool1 以及駐留在上的歸檔記錄、控制檔和重做記錄 zpool2。此方法允許標準熱備份、將資料庫置於熱備份模式、然後是的快照 zpool1。接著會從熱備份模式移除資料庫、強制進行記錄歸檔、並建立快照 zpool2 已建立。還原作業需要卸載 zfs 檔案系統、並在執行 SnapRestore 還原作業之後、將 zPool 完全離線。然後可以重新上線並恢復資料庫。

filesystemio_options

Oracle 參數 filesystemio_options 使用 ZFS 的方式不同。如果 setalldirectio 使用時、寫入作業會同步並略過 OS 緩衝區快取、但讀取會由 ZFS 進行緩衝。此動作會導致效能分析方面的困難、因為有時會被 ZFS 快取攔截和服務 I/O 、使儲存延遲和總 I/O 比預期的要少。