Oracle Solaris 10 9/10 安裝指南:Solaris Live Upgrade 與升級規劃

第 11 章 Solaris Live Upgrade 和 ZFS (簡介)

您可以使用 Solaris Live Upgrade,將 UFS 檔案系統遷移至 ZFS 根池,以及從現有 ZFS 根池建立 ZFS 根檔案系統。


備註 –

使用 Solaris Live Upgrade 建立啟動環境是 Solaris 10 10/08 發行版本的新功能。針對 UFS 檔案系統執行 Solaris Live Upgrade 時,指令行參數和 Solaris Live Upgrade 的作業均維持不變。若要在具有 UFS 檔案系統的系統上執行 Solaris Live Upgrade,請參閱本書的第 1 部分使用 Solaris Live Upgrade 升級


下列各節提供這些作業的簡介:

Solaris 10 10/09 發行版本中的新增功能

從 Solaris 10 10/09 發行版本開始,您可以設定 JumpStart 描述檔來識別 ZFS 根池的 Flash 歸檔。

Flash 歸檔可以建立在執行 UFS 根檔案系統或 ZFS 根檔案系統的系統上。ZFS 根池的 Flash 歸檔含有整個池階層,但交換和傾印磁碟區以及任何其他排除的資料集除外。安裝 Flash 歸檔時,會建立交換和傾印磁碟區。

您可以使用下列 Flash 歸檔安裝方法:

如需詳細指示和限制,請參閱 「Oracle Solaris ZFS Administration Guide」中的「Installing a ZFS Root File System (Oracle Solaris Flash Archive Installation)」

使用 Solaris Live Upgrade 搭配 ZFS 簡介

如果您有 UFS 檔案系統,Solaris Live Upgrade 的運作方式與舊版中的運作方式相同。您現在可以從 UFS 檔案系統遷移至 ZFS 根池,以及在 ZFS 根池中建立新啟動環境。對於這些作業,lucreate 指令已藉由搭配 -p 選項而獲得增強。指令語法如下:


# lucreate [-c active_BE_name] -n BE_name [-p zfs_root_pool]

-p 選項會指定新啟動環境常駐的 ZFS 池。如果來源啟動環境和目標啟動環境位於同一個池中,則可以省略此選項。

ZFS 不支援 lucreate 指令 -m 選項。其他 lucreate 指令選項仍可如常地使用,但有一些例外。如需相關限制,請參閱使用 Solaris Live Upgrade 的系統需求和限制

從 UFS 檔案系統遷移至 ZFS 根池

如果您是從目前執行中的系統建立啟動環境,則 lucreate 指令會將 UFS 根 (/) 檔案系統複製到 ZFS 根池。複製程序可能需要一些時間,實際情況取決於您的系統。

當您從 UFS 檔案系統進行遷移時,來源啟動環境可以是磁碟片段上的 UFS 根 (/) 檔案系統。您無法從 ZFS 根池上的來源啟動環境,在 UFS 檔案系統上建立啟動環境。

從 UFS 根 (/) 檔案系統遷移至 ZFS 根池

下列指令會從 ZFS 根池中的 UFS 根 (/) 檔案系統建立 ZFS 根池和新啟動環境。在 lucreate 作業之前,ZFS 根池必須存在,且必須使用磁碟片段 (而非整個磁碟) 加以建立,才能升級及啟動。磁碟不能有 EFI 標籤,但必須是 SMI 標籤。如需更多限制的資訊,請參閱使用 Solaris Live Upgrade 的系統需求和限制

圖 11–1 顯示 zpool 指令將會在獨立磁碟片段 c0t1d0s5 上建立根池 rpool。磁碟片段 c0t0d0s0 包含 UFS 根 (/) 檔案系統。在 lucreate 指令中,-c 選項會命名目前執行中的系統 c0t0d0,即 UFS 根 (/) 檔案系統。-n 選項會將名稱指定給要建立的啟動環境 new-zfsBE-p 選項會指定新啟動環境 rpool 的放置位置。UFS /export 檔案系統和 /swap 磁碟區不會複製到新啟動環境。

圖 11–1 從 UFS 檔案系統遷移至 ZFS 根池

上下文說明圖例。


範例 11–1 從 UFS 根 (/) 檔案系統遷移至 ZFS 根池

此範例顯示的指令與圖 11–1 中的指令相同。這些指令會建立新根池 rpool,並且從 UFS 根 (/) 檔案系統在池中建立新啟動環境。在此範例中,zfs list 指令會顯示 zpool 指令所建立的 ZFS 根池。下一個 zfs list 指令會顯示 lucreate 指令所建立的資料集。


# zpool create rpool c0t1d0s5
# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool

# lucreate -c c0t0d0 -n new-zfsBE -p rpool
# zfs list
NAME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool
rpool/ROOT                 5.38G  57.6G    18K  /rpool/ROOT
rpool/ROOT/new-zfsBE       5.38G  57.6G   551M  /tmp/.alt.luupdall.110034
rpool/dump                 1.95G      -  1.95G  - 
rpool/swap                 1.95G      -  1.95G  - 

新啟動環境為 rpool/ROOT/new-zfsBE。啟動環境 new-zfsBE 準備就緒,可以升級及啟動。


將配置有 Solaris Volume Manager 磁碟區的 UFS 檔案系統遷移至 ZFS 根檔案系統

如果系統有 Solaris Volume Manager (SVM) 磁碟區,則可遷移 UFS 檔案系統。若要從現有 SVM 配置建立 UFS 啟動環境,您必須從目前執行中的系統建立新啟動環境。然後再從新 UFS 啟動環境建立 ZFS 啟動環境。

Solaris Volume Manager (SVM) 簡介。ZFS 使用儲存池的概念來管理實體儲存。在過去,檔案系統建構於單一實體裝置之上。為了定址多個裝置並提供資料備援,引入磁碟區管理員的概念,以提供單一裝置的影像。因此,不必修改檔案系統,即可利用多個裝置。此設計多添一層複雜度。此複雜度最後阻止了某些檔案系統的進展,因為檔案系統無法控制虛擬化磁碟區上的資料實體放置。

ZFS 儲存池取代了 SVM。ZFS 完全去除了磁碟區管理。ZFS 會將裝置彙總至儲存池,而不強制建立虛擬化磁碟區。儲存池說明儲存裝置配置和資料備援的這類實體特性,並做為可建立檔案系統的任意資料存放區。檔案系統不再受限於個別裝置,使它們能夠與池中所有檔案系統共用空間。您不再需要預先決定檔案系統的大小,因為檔案系統會在分配給儲存池的空間內自動增長。當增加新儲存裝置時,池中的所有檔案系統可以立即使用此增加的空間,而不需再執行其他作業。在許多方面,儲存池都會扮演虛擬記憶體系統的角色。當記憶體 DIMM 增加到系統,作業系統不會強制您呼叫某些指令來配置記憶體,並將其指定給個別程序。系統上的所有程序都會自動使用此增加的記憶體。


範例 11–2 從具有 SVM 磁碟區的 UFS 根 (/) 檔案系統遷移至 ZFS 根池

遷移具有 SVM 磁碟區的系統時,會忽略 SVM 磁碟區。您可以在根池中設定鏡像,如下列範例所示。

在此範例中,使用 lucreate 指令搭配 -m 選項,會從目前執行中的系統建立新啟動環境。磁碟片段 c1t0d0s0 包含配置有 SVM 磁碟區的 UFS 根 (/) 檔案系統。zpool 指令會建立根池 c1t0d0s0 和 RAID-1 磁碟區 (鏡像) c2t0d0s0。在第二個 lucreate 指令中,-n 選項會將名稱指定給要建立的啟動環境 c0t0d0s0-s 選項會識別 UFS 根 (/) 檔案系統。-p 選項會指定新啟動環境 rpool 的放置位置。


# lucreate -n ufsBE -m /:/dev/md/dsk/d104:ufs
# zpool create rpool mirror c1t0d0s0 c2t1d0s0
# lucreate -n c0t0d0s0 -s ufsBE -p zpool

啟動環境 c0t0d0s0 準備就緒,可以升級及啟動。


從 ZFS 根池建立新啟動環境

您可以在同一個根池中或在新的根池上建立新 ZFS 啟動環境。本節包含以下簡介:

在同一個根池中建立新啟動環境

在同一個 ZFS 根池中建立新啟動環境時,lucreate 指令會從來源啟動環境建立快照,然後從該快照建立複製。幾乎在瞬間就會完成快照和複製的建立,因此使用的磁碟空間極少。最終所需的空間量取決於升級程序中替代的檔案數目。雖然快照為唯讀,但是複製是可讀寫的快照副本。對複製啟動環境所做的任何變更不會反映在快照或建立快照的來源啟動環境中。


備註 –

當使用中資料集中的資料變更時,快照會持續參照舊資料而耗用空間。因此,快照會阻止資料釋回池中。如需快照的更多資訊,請參閱「Oracle Solaris ZFS Administration Guide」中的第 7 章「Working With Oracle Solaris ZFS Snapshots and Clones」


當目前啟動環境位於同一 ZFS 池上時,會忽略 -p 選項。

圖 11–2 顯示從 ZFS 根池建立 ZFS 啟動環境。磁碟片段 c0t0d0s0 包含 ZFS 根池 rpool。在 lucreate 指令中,-n 選項會將名稱指定給要建立的啟動環境 new-zfsBE。建立原始根池的快照 rpool@new-zfsBE。該快照會用來建立複製,即新的啟動環境 new-zfsBE。啟動環境 new-zfsBE 準備就緒,可以升級及啟動。

圖 11–2 在同一個根池上建立新啟動環境

上下文說明圖例。


範例 11–3 在同一個 ZFS 根池中建立啟動環境

此範例顯示的指令與圖 11–2 中,在同一根池中建立新啟動環境的指令相同。lucreate 指令會搭配 -c zfsBE 選項命名目前執行中的啟動環境,而 -n new-zfsBE 則會建立新啟動環境。zfs list 指令會顯示具有新啟動環境和快照的 ZFS 資料集。


# lucreate -c zfsBE -n new-zfsBE
# zfs list
AME                        USED  AVAIL  REFER  MOUNTPOINT 
rpool                      9.29G  57.6G    20K  /rpool
rpool/ROOT                 5.38G  57.6G    18K  /rpool/ROOT
rpool/ROOT/zfsBE           5.38G  57.6G   551M  
rpool/ROOT/zfsBE@new-zfsBE 66.5K      -   551M  -
rpool/ROOT/new-zfsBE       5.38G  57.6G   551M  /tmp/.alt.luupdall.110034
rpool/dump                 1.95G      -  1.95G  - 
rpool/swap                 1.95G      -  1.95G  - 

在另一個根池上建立新啟動環境

您可以使用 lucreate 指令,將現有 ZFS 根池複製到另一個 ZFS 根池。複製程序可能需要一些時間,實際情況取決於您的系統。

圖 11–3 顯示 zpool 指令會在 c0t1d0s5 上建立 ZFS 根池 rpool2,因為可啟動的 ZFS 根池尚未存在。使用 lucreate 指令搭配 -n 選項會將名稱指定給要建立的啟動環境 new-zfsBE-p 選項會指定新啟動環境的放置位置。

圖 11–3 在另一個根池上建立新啟動環境

上下文說明圖例。


範例 11–4 在不同的 ZFS 根池上建立啟動環境

此範例顯示的指令與圖 11–3 中建立新啟動環境,然後在新建立的根池中建立新啟動環境的指令相同。在此範例中,zpool create 指令會建立 rpool2zfs list 指令顯示在 rpool2 中沒有建立任何 ZFS 資料集。資料集是使用 lucreate 指令建立的。


# zpool create rpool2 c0t2d0s5
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                       5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G   551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

新 ZFS 根池 rpool2 建立於磁碟片段 c0t2d0s5 上。


# lucreate -n new-zfsBE -p rpool2
# zfs list
NAME                             USED    AVAIL   REFER   MOUNTPOINT 
rpool2                           9.29G    57.6G     20K   /rpool2 
rpool2/ROOT/                     5.38G    57.6G     18K   /rpool2/ROOT 
rpool2/ROOT/new-zfsBE            5.38G    57.6G    551M   /tmp/.new.luupdall.109859
rpool2/dump                      3.99G        -   3.99G   - 
rpool2/swap                      3.99G        -   3.99G   - 
rpool                            9.29G    57.6G     20K   /.new.lulib.rs.109262
rpool/ROOT                       5.46G    57.6G     18K   legacy
rpool/ROOT/zfsBE                 5.46G    57.6G   551M  
rpool/dump                       3.99G        -   3.99G   - 
rpool/swap                       3.99G        -   3.99G   - 

新啟動環境 new-zfsBE 會與其他資料集 ROOTdumpswap 建立於 rpool2 上。啟動環境 new-zfsBE 準備就緒,可以升級及啟動。


從目前執行中系統以外的來源建立新啟動環境

如果您要從目前執行中系統以外的來源建立啟動環境,則必須將 lucreate 指令與 -s 選項搭配使用。-s 選項的作用與用於 UFS 檔案系統的方式相同。-s 選項提供替代根 (/) 檔案系統的路徑。此替代根 (/) 檔案系統就是建立新 ZFS 根池的來源。替代根可以是 UFS (/) 根檔案系統或 ZFS 根池。複製程序可能需要一些時間,實際情況取決於您的系統。


範例 11–5 從替代根 (/ ) 檔案系統建立啟動環境

下列指令會從現有 ZFS 根池建立新 ZFS 根池。-n 選項會將名稱指定給要建立的啟動環境 new-zfsBE-s 選項會指定啟動環境 source-zfsBE 用做複製的來源,而非目前執行中的啟動環境。-p 選項會指定將新啟動環境置於 newpool2 中。


# lucreate -n new-zfsBE  -s source-zfsBE -p rpool2

啟動環境 new-zfsBE 準備就緒,可以升級及啟動。


在安裝非全域區域的系統上建立 ZFS 啟動環境

您可以使用 Solaris Live Upgrade,將非全域區域遷移至 ZFS 根檔案系統。如需簡介、規劃及逐步程序,請參閱第 14 章針對已安裝非全域區域的 ZFS 執行 Solaris Live Upgrade

其他資源

如需本章主題的額外資訊,請參閱表 11–1 所列的資源。

表 11–1 其他資源

資源 

位置 

如需 ZFS 資訊,包括簡介、規劃和逐步說明 

「Oracle Solaris ZFS Administration Guide 」

在具有 UFS 檔案系統的系統上使用 Solaris Live Upgrade 

本書的第 1 部分使用 Solaris Live Upgrade 升級