跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 升級指南 / 準備升級
適用範圍 SUSE Linux Enterprise Server 15 SP4

3 準備升級

在開始升級程序之前,請先確認您的系統已準備妥當。除了其他工作以外,準備工作還包括備份資料和檢查版本說明。下一章將引導您完成這些步驟。

3.1 確定系統是最新的

僅支援從最新的修補層級升級系統。執行 zypper patch 或啟動 YaST 模組 Online-Update,以確定已安裝最新的系統更新。

3.2 閱讀版本說明

如需所有變更、新功能和已知問題的清單,請參閱版本說明。安裝媒體上的 docu 目錄中也提供了版本說明。

版本說明通常僅包含兩個連續版本之間的變更。如果您跳過了一或多個 Service Pack,另請檢查所跳過 Service Pack 的版本說明。

查看版本說明以確定:

  • 您的硬體是否有特殊注意事項

  • 目前所使用的任何軟體套件是否發生了重大變更

  • 您的安裝是否需要特殊預防措施

3.3 製作

升級前,將現有組態檔案複製到另一個媒體 (例如磁帶裝置、抽取式硬碟等),以備份資料。此作業主要適用於儲存在 /etc 中的檔案,以及 /var/opt 中的一些目錄和檔案。您最好也將 /home (即 HOME 目錄) 中的使用者資料複製到備份媒體。

root 身分備份所有資料。只有 root 對所有本地檔案具有足夠的權限。

如果您在 YaST 中選取了更新現有系統做為安裝模式,則可以選擇稍後執行 (系統) 備份。您可以選擇包含所有已修改的檔案以及 /etc/sysconfig 目錄中的檔案。不過,這並不是一個完整備份,因為缺少上述的所有其他重要目錄。您可在 /var/adm/backup 目錄中找到該備份。

3.4 檢查可用磁碟空間

軟體通常會隨著版本更新而擴增。因此在更新之前,請先檢視可用的分割區空間。如果您懷疑磁碟空間不足,請先備份資料,再透過調整分割區大小等方法來增大可用空間。每個分割區應該佔用多大空間並沒有常規可循。空間需求將依特定的磁碟分割設定檔和選取軟體而有差異。

注意
注意:在 YaST 中自動檢查是否有足夠空間

在更新過程中,YaST 會檢查可用磁碟空間的容量,並在安裝大小可能超出可用空間時向使用者顯示警告。在此情況下,執行更新可能會導致系統無法使用!除非您有執行的把握 (透過事先測試取得),您才可以跳過該警告並繼續進行更新。

3.4.1 檢查非 Btrfs 檔案系統上的磁碟空間

請使用 df 指令列出可用的磁碟空間。例如,在 範例 3.1 「使用 df -h 來列示」 中,根分割區為 /dev/sda3 (掛接位置是 /)。

範例 3.1︰ 使用 df -h 來列示
Filesystem     Size  Used Avail Use% Mounted on
     /dev/sda3       74G   22G   53G  29% /
     tmpfs          506M     0  506M   0% /dev/shm
     /dev/sda5      116G  5.8G  111G   5% /home
     /dev/sda1       44G    4G   40G   9% /data

3.4.2 檢查 Btrfs 根檔案系統上的磁碟空間

在 Btrfs 檔案系統上,df 的輸出可能有誤導性,因為除了原始資料配置的空間以外,Btrfs 檔案系統也會配置並使用中繼資料的空間。

因此,即使看上去仍有大量的可用空間,Btrfs 檔案系統也可能會報告空間不足。在這種情況下,為中繼資料配置的所有空間均會用盡。如需如何檢查 Btrfs 檔案系統上已用和可用空間的詳細資料,請參閱第 1.2.2.3 節 「檢查可用空間」如需詳細資訊,請參閱 man 8 btrfs-filesystemhttps://btrfs.wiki.kernel.org/index.php/FAQ

如果在機器上使用 Btrfs 做為根檔案系統,請確定有足夠的可用空間。檢查所有已掛接分割區上的可用空間。在最壞的情況下,升級程序需要將目前根檔案系統的所有磁碟空間 (不含 /.snapshot) 用於存放新快照。

下列建議已證實值得採納:

  • 包括 Btrfs 在內的所有檔案系統都需要有足夠的可用磁碟空間來下載和安裝大型 RPM。只有在安裝新 RPM 之後,舊 RPM 的空間才會釋放。

  • 對於包含快照的 Btrfs,至少需要有目前安裝所需的可用空間。建議提供兩倍於目前安裝大小的可用空間。

    如果沒有足夠的可用空間,您可以嘗試使用 snapper 刪除舊快照:

    # snapper list
          # snapper delete NUMBER

    但是,這種做法並不總是有用。在移轉之前,大部份快照只會佔用極少的空間。

3.5 列出已安裝的套件和儲存庫

例如,在全新安裝某個新的主要 SLE 版本或回復到舊版本時,您可以儲存已安裝套件的清單。

注意
注意

請注意,並非所有已安裝的套件或使用的儲存庫在 SUSE Linux Enterprise 的較新版本中都可用。有些套件或儲存庫可能已被重新命名,有些可能已被取代。還有可能提供的一些套件只是用於舊版,而預設會使用另一個替代它的套件。因此,可能需要手動編輯一些檔案。您可使用任何文字編輯器進行編輯。

  1. 建立包含全部所用儲存庫清單的檔案 repositories.bak.repo

    # zypper lr -e repositories.bak
  2. 此外,建立包含全部已安裝套件清單的檔案 installed-software.bak

    # rpm -qa --queryformat '%{NAME}\n' >
         installed-software.bak
  3. 備份這兩個檔案。使用以下指令可還原儲存庫和已安裝的套件:

    # zypper ar repositories.bak.repo
    # zypper install $(cat installed-software.bak)
    注意
    注意:更新至新的主要版本後,套件數量會相應增加

    升級至新主要版本的系統 (SLE X+1) 包含的套件可能比初始系統 (SLE X) 的多,也會比選取相同模式執行的 SLE X+1 全新安裝所包含的套件多。原因如下:

    • 套件經過分割,以便使用者能更細微地選取套件。例如,SLE 11 上的 37 個 texlive 套件已拆分成 SLE 15 上的 3000 多個套件。

    • 分割套件後,在升級程序中會安裝所有新套件,以與舊版本保持相同的功能。但是,SLE X+1 全新安裝的新預設設定可能不會安裝所有套件。

    • 出於相容原因,可能會保留 SLE X 中的舊套件。

    • 套件相依項和模式範圍可能已發生變化。

3.6 停用 LTSS 延伸

如果您將具有長期 Service Pack 支援 (LTSS) 的 SUSE Linux Enterprise Server 系統升級至只提供一般支援的版本,升級將會失敗,並顯示錯誤沒有適用的移轉。之所以發生此情況,是因為 zypper migration 會嘗試移轉所有儲存庫,但新版本尚無 LTSS 儲存庫。

若要解決該問題,請在升級前先停用 LTSS 延伸。

  1. 檢查是否啟用了 LTSS 延伸:

    > sudo SUSEConnect --list-extensions | grep LTSS
    SUSE Linux Enterprise Server LTSS 12 SP4 x86_64 (Installed)
    Deactivate with: SUSEConnect -d -p SLES-LTSS/12.4/x86_64
  2. 執行上方 SUSEConnect 輸出中顯示的指令以停用 LTSS 延伸:

    > sudo SUSEConnect -d -p SLES-LTSS/12.4/x86_64
    Deregistered SUSE Linux Enterprise Server LTSS 12 SP4 x86_64
    To server: https://scc.suse.com/
  3. 使用 zypper lr 驗證 LTSS 儲存庫已不存在。

3.7 移轉 PostgreSQL 資料庫

SUSE Linux Enterprise Server 15 SP4 隨附 PostgreSQL 資料庫版本 13 和 14。雖然預設版本是 14,但我們仍會透過 Legacy 模組提供版本 13,以便您可以從 SUSE Linux Enterprise Server 的早期版本升級。

由於需要完成資料庫的移轉工作,因此無法使用自動升級程序。您需要以手動方式執行從一個版本到另一個版本的移轉。

透過 pg_upgrade 指令來執行移轉程序,這種方法可替代傳統的傾印和重新載入。與傾印和重新載入方法相比,pg_upgrade 可縮短移轉所需的時間。

每個 PostgreSQL 版本的程式檔案儲存在不同版本的相關目錄中。例如,版本 9.6 的程式檔案儲存在 /usr/lib/postgresql96/ 中;版本 10 的儲存在 /usr/lib/postgresql10/ 中;版本 13 的儲存在 /usr/lib/postgres13/ 中。請注意,PostgreSQL 主要版本 9.6 與 10 的版本控制規則有所不同。如需詳細資料,請參閱https://www.postgresql.org/support/versioning/

重要
重要:從 SLE 11 升級

從 SLE 11 升級時,將會解除安裝 postgresql94,不可用於將資料庫移轉至更高的 PostgreSQL 版本。因此,在這種情況下,請務必先移轉 PostgreSQL 資料庫,然後再升級系統。

以下程序描述如何將資料庫從版本 12 移轉至版本 13。使用不同的版本做為起始或目標時,請相應地取代版本編號。

若要執行資料庫移轉,請執行以下步驟:

  1. 確定滿足以下前提條件:

    • 如果尚未這麼做,請透過維護更新將舊 PostgreSQL 版本的任何套件升級至最新版本。

    • 建立現有資料庫的備份。

    • 安裝新 PostgreSQL 主要版本的套件。對於 SLE 15 SP4,這表示需要安裝 postgresql13-server 及其相依的所有套件。

    • 安裝包含 pg_upgrade 指令的 postgresql13-contrib 套件。

    • 確定 PostgreSQL 資料區域 (預設為 /var/lib/pgsql/data) 中有足夠的可用空間。如果可用空間非常有限,請對每個資料庫使用以下 SQL 指令,以嘗試減少大小 (這可能需要花費很長時間!):

      VACUUM FULL
  2. 使用下列任一指令停止 PostgreSQL 伺服器:

    # /usr/sbin/rcpostgresql stop

    # systemctl stop postgresql.service

    (取決於要用做升級起始版本的 SLE 版本)。

  3. 重新命名舊資料目錄:

    # mv /var/lib/pgsql/data /var/lib/pgsql/data.old
  4. 使用 initdb 手動啟始化新的資料庫例項,或者啟動再停止 PostgreSQL,如此即可自動完成啟始化:

    # /usr/sbin/rcpostgresql start
    # /usr/sbin/rcpostgresql stop

    # systemctl start postgresql.service
    # systemctl stop postgresql.service

    (取決於要用做升級起始版本的 SLE 版本)。

  5. 如果您在舊版本中變更了組態檔案,請考慮將這些變更移至新的組態檔案。可能受影響的檔案包括 postgresql.auto.confpostgresql.confpg_hba.confpg_ident.conf。這些檔案的舊版本位於 /var/lib/pgsql/data.old/ 中,新版本可在 /var/lib/pgsql/data 中找到。

    請注意,不建議複製舊組態檔案,因為這可能會覆寫新選項、新預設值和變更的備註。

  6. postgres 使用者身分啟動移轉程序:

    # su - postgres
    postgres > pg_upgrade \
     --old-datadir "/var/lib/pgsql/data.old" \
     --new-datadir "/var/lib/pgsql/data" \
     --old-bindir "/usr/lib/postgresql12/bin/" \
     --new-bindir "/usr/lib/postgresql13/bin/"
  7. 使用下列任一指令啟動新資料庫例項:

    # /usr/sbin/rcpostgresql start

    # systemctl start postgresql.service

    (取決於要用做升級起始版本的 SLE 版本)。

  8. 檢查移轉是否成功。測試範圍取決於使用案例,沒有任何普通的工具可以自動完成此步驟。

  9. 移除所有舊 PostgreSQL 套件和舊資料目錄:

    # zypper search -s postgresql12| xargs zypper rm -u
    # rm -rf /var/lib/pgsql/data.old

如需升級資料庫或使用邏輯複製等替代方法的詳細資訊,請參閱 https://www.postgresql.org/docs/13/upgrading.html 上的官方 PostgreSQL 文件。

3.8 移轉 MySQL 或 MariaDB 資料庫

從 SUSE Linux Enterprise 12 開始,SUSE 使用 MariaDB 而不是 MySQL。在開始任何升級操作之前,強烈建議您備份資料庫。

若要執行資料庫移轉,請執行以下步驟:

  1. 建立傾印檔案:

    # mysqldump -u root -p --all-databases --add-drop-database > mysql_backup.sql

    依預設,mysqldump 不會傾印 INFORMATION_SCHEMAperformance_schema 資料庫。如需詳細資訊,請參閱 https://mariadb.com/kb/en/mariadb-dumpmysqldump/

  2. 將您的傾印檔案、組態檔案 /etc/my.cnf 以及目錄 /etc/mysql/ 儲存在安全位置以供日後調查 (不要用於安裝!)。

  3. 執行 SUSE Linux Enterprise Server 升級。升級後,以前的組態檔案 /etc/my.cnf 仍將保持不變。可以在檔案 /etc/my.cnf.rpmnew 中找到新組態。

  4. 根據需要設定 MariaDB 資料庫。不要使用以前的組態檔案和目錄,只是將其用做提醒,並對其進行改編。

  5. 確定啟動 MariaDB 伺服器:

    # systemctl start mariadb

    如果您希望每次開機時都啟動 MariaDB 伺服器,請啟用以下服務:

    # systemctl enable mariadb
  6. 透過連接到資料庫來驗證 MariaDB 是否正常執行:

    # mariadb -u root -p

3.9 建立用於 Java 應用程式的非 MD5 伺服器證書

做為安全措施,Java 中不再支援以 MD5 為基礎的證書。若您之前建立的證書為 MD5 證書,請執行以下步驟來重新建立證書:

  1. 開啟終端機,並以 root 身分登入。

  2. 建立私密金鑰:

    # openssl genrsa -out server.key 1024

    如需增強式金鑰,請以更大的數字 (例如 4096) 取代 1024

  3. 建立證書簽署申請 (CSR):

    # openssl req -new -key server.key -out server.csr
  4. 自行簽署證書:

    # openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
  5. 建立 PEM 檔案:

    # cat server.key server.crt > server.pem
  6. server.crtserver.csrserver.keyserver.pem 檔案置於可在其中找到金鑰的相應目錄中。例如,對於 Tomcat,此目錄為 /etc/tomcat/ssl/

3.10 關閉虛擬機器客體

如果您的機器用做 KVM 或 Xen 的虛擬機器主機伺服器,請務必在更新前正常關閉所有執行中的虛擬機器客體。否則,您可能會在更新之後無法存取這些客體作業系統。

3.11 調整 SMT 用戶端設定

如果您要升級的機器已註冊為 SMT 伺服器的用戶端,請注意以下事項:

檢查主機上的 clientSetup4SMT.sh 程序檔版本是否最新。較舊版 SMT 的 clientSetup4SMT.sh 無法管理 SMT 12 用戶端。如果您在 SMT 伺服器上定期套用軟體修補程式,那麼位於 <SMT 主機名稱>/repo/tools/clientSetup4SMT.sh 處的 clientSetup4SMT.sh 永遠都是最新版本。

如果將機器升級至更新版本的 SUSE Linux Enterprise Server 失敗,請依程序 3.1中所述,從 SMT 伺服器中取消註冊該機器。然後重新啟動升級程序。

程序 3.1︰ 從 SMT 伺服器中取消註冊 SUSE Linux Enterprise 用戶端
  1. 登入用戶端機器。

  2. 以下步驟視用戶端的目前作業系統而定:

    • 對於 SUSE Linux Enterprise 11,請執行以下指令:

      > sudo suse_register -E
      > sudo rm -f /etc/SUSEConnect
      > sudo rm -rf /etc/zypp/credentials.d/*
      > sudo rm -rf /etc/zypp/repos.d/*
      > sudo rm -f /etc/zypp/services.d/*
      > sudo rm -f /var/cache/SuseRegister/*
      > sudo rm -f /etc/suseRegister*
      > sudo rm -f /var/cache/SuseRegister/lastzmdconfig.cache
      > sudo rm -f /etc/zmd/deviceid
      > sudo rm -f /etc/zmd/secret
    • 對於 SUSE Linux Enterprise 12,請執行以下指令:

      > sudo SUSEConnect --de-register
      > sudo SUSEConnect --cleanup
      > sudo rm -f /etc/SUSEConnect
      > sudo rm -rf /etc/zypp/credentials.d/*
      > sudo rm -rf /etc/zypp/repos.d/*
      > sudo rm -f /etc/zypp/services.d/*
  3. 登入 SMT 伺服器。

  4. 列出所有用戶端註冊,以檢查是否已成功取消註冊該用戶端:

    > sudo smt-list-registrations
  5. 如果該用戶端的主機名稱仍列在此指令的輸出中,請從第一欄取得該用戶端的唯一 ID。(可能列出了該用戶端的多個 ID。)

  6. 刪除此用戶端的註冊:

    > sudo smt-delete-registration -g UNIQUE_ID
  7. 如果列出了該用戶端的多個 ID,請針對每個唯一 ID 重複上述步驟。

  8. 重新執行以下指令,以檢查現在是否已成功取消註冊該用戶端:

    > sudo smt-list-registrations

3.12 AutoYaST 設定檔中的變更 (從 SLE 12 到 15)

若要瞭解如何移轉 AutoYaST 設定檔,請參閱Appendix D, Differences between AutoYaST profiles in SLE 12 and 15

3.13 升級訂閱管理工具 (SMT) 伺服器

對於執行 SMT 的伺服器,需要執行特殊的升級程序。請參閱《Repository mirror Tool Guide》中的Chapter 3, Migrate from SMT to RMT

3.14 暫時停用核心多版本支援

SUSE Linux Enterprise Server 允許您在 /etc/zypp/zypp.conf 中啟用相應設定來安裝多個核心版本。為了升級到某個 Service Pack,需要暫時停用對此功能的支援。當更新成功完成後,可重新啟用多版本支援。若要停用多版本支援,請在 /etc/zypp/zypp.conf 中為各行加上備註。結果應類似如下內容:

#multiversion = provides:multiversion(kernel)
#multiversion.kernels = latest,running

若要在成功更新後重新啟用此功能,請移除備註符號。如需更多有關多版本支援的詳細資訊,請參閱第 27.1 節 「啟用和設定多版本支援」

3.15 在 IBM Z 上升級

在 IBM Z 上升級 SUSE Linux Enterprise 安裝需要設定 Upgrade=1 核心參數 (例如,透過 parmfile 設定)。請參閱第 5.6 節 「parmfile — 自動進行系統組態」

3.16 IBM POWER:啟動 X 伺服器

在 SLES 12 for IBM POWER 上,顯示管理員設定為預設不啟動本地 X 伺服器。SLES 12 SP1 上的設定則相反,顯示管理員現在會啟動 X 伺服器。

為了避免升級期間出現問題,SUSE Linux Enterprise Server 設定不會自動變更。如果想要在升級後讓顯示管理員啟動 X 伺服器,請依如下所示在 /etc/sysconfig/displaymanager 中變更 DISPLAYMANAGER_STARTS_XSERVER 的設定:

DISPLAYMANAGER_STARTS_XSERVER="yes"