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

3 準備升級

在開始升級程序之前,請先確認您的系統已準備妥當。此外,準備工作還包括備份資料和檢查版本說明。

3.1 確定目前系統是最新的

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

3.2 閱讀版本說明

在版本說明中,您可以找到其他有關自 SUSE Linux Enterprise Server 的上一個版本發行後所進行的變更的資訊。檢查版本說明以瞭解:

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

  • 所用的任何軟體套件是否已發生重大變更;

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

版本說明還會提供無法及時編入手冊的資訊。它們還包含有關已知問題的說明。

如果您跳過了一或多個 Service Pack,另請檢查所跳過 Service Pack 的版本說明。版本說明通常僅包含兩個連續版本之間的變更。如果您只閱讀最新的版本說明,可能會遺漏某些重大變更。

https://www.suse.com/releasenotes/ 中線上尋找最新的版本說明。

您也可在安裝 DVD 上的 docu 目錄中尋找版本說明。

3.3 備份

更新之前,請先將現有的組態檔案複製到單獨的媒體 (例如磁帶裝置、可移除式硬碟等) 中,以便備份資料。此作業主要適用於儲存在 /etc 中的檔案,以及 /var/opt 中的一些目錄和檔案。您最好也將 /home (即 HOME 目錄) 中的使用者資料複製到備份媒體。將此資料備份為 root。只有 root 才有權讀取所有本地檔案。

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

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

儲存已安裝套件清單的做法通常很實用,例如,在全新安裝某個新的主要 SLE 版本,或回復到舊版本時就是如此。

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

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

root # zypper lr -e repositories.bak

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

root # rpm -qa --queryformat '%{NAME}\n' > installed-software.bak

備份這兩個檔案。使用以下指令可還原儲存庫和已安裝的套件:

root # zypper ar repositories.bak.repo
root # 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.5 SUSE Linux Enterprise Server 11 SP4 升級

如果您在 SUSE Linux Enterprise Server 11 SP4 上使用的是 MySQL、PostgreSQL 或 Java MD5 式的證書,請依據以下各節所述準備系統。

3.5.1 移轉 MySQL 資料庫

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

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

  1. 登入到 SUSE Linux Enterprise 11 機器。

  2. 建立傾印檔案:

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

    依預設,mysqldump 不會傾印 INFORMATION_SCHEMAperformance_schema 資料庫。如需詳細資訊,請參閱https://dev.mysql.com/doc/refman/5.5/en/mysqldump.html

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

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

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

  6. 確定啟動 MariaDB 伺服器:

    root # systemctl start mysql

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

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

    root # mysql -u root -p

3.5.2 移轉 PostgreSQL 資料庫

SUSE Linux Enterprise Server 15 SP2 隨附了更高版本的 PostgreSQL 資料庫。由於需要完成資料庫的移轉工作,因此無法使用自動升級程序。您必須手動完成從一個版本到另一個版本的切換。

移轉程序由 pg_upgrade 指令 (可替代傳統的傾印再重新載入方法) 執行。與傾印再重新載入方法相比,pg_upgrade 可以減少移轉所耗費的時間。

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

重要
重要:從 SLE 11 升級

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

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

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

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

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

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

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

    • 安裝套件 postgresql10-contrib, 其中包含指令 pg_upgrade

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

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

    root # /usr/sbin/rcpostgresql stop

    root # systemctl stop postgresql.service

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

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

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

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

    root # systemctl start postgresql.service
    root # 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 使用者身分啟動移轉程序:

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

    root # /usr/sbin/rcpostgresql start

    root # systemctl start postgresql.service

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

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

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

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

3.5.3 為 Java 應用程式建立非 MD5 伺服器證書

從 SP1 升級到 SP2 期間,在進行安全性修復時停用了 MD5 式證書。若您之前建立的證書為 MD5 證書,請執行以下步驟來重新建立證書:

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

  2. 建立私密金鑰:

    root # openssl genrsa -out server.key 1024

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

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

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

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

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

3.6 關閉虛擬機器客體

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

3.7 調整 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,請執行以下指令:

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

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

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

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

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

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

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

    tux > sudo smt-list-registrations

3.8 磁碟空間

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

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

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

3.8.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.8.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 刪除舊快照:

    root # snapper list
    root # snapper delete NUMBER

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

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

對於執行 SMT 的伺服器,需要執行特殊的升級程序。請參閱《Repository Management Tool Guide》(儲存庫管理工具指南) 中的Chapter 2, Migrate from SMT to RMT

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

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

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

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

3.11 在 IBM Z 上升級

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

3.12 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"