11.3 減少軟體 RAID 的大小

開始之前,請參閱節 11.1, 瞭解調整大小處理程序 中的準則。

11.3.1 減少檔案系統的大小

當要減少 RAID 設備上檔案系統的大小時,請確定新大小滿足下列條件︰

  • 新大小必須大於現有資料的大小;否則資料會遺失。

  • 新大小不得超過目前 RAID 的大小,因為檔案系統大小無法超過可用空間大小。

在 SUSE Linux Enterprise Server SP1 中,只有 Ext2、Ext3 及 ReiserFS 提供減少檔案系統大小的公用程式。請使用下文中相應的程序減少檔案系統的大小。

本節所述的程序使用的 RAID 設備名稱為 /dev/md0。請務必修改指令,以使用您自己的設備名稱。

Ext2 或 Ext3

掛接或卸載 Ext2 與 Ext3 檔案系統時,可調整其大小。

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。

  2. 輸入以下指令,減少 RAID 上檔案系統的大小

    resize2fs /dev/md0 <size>
    

    使用所需大小的整數值 (以 KB 計) 取代 size。(1 KB = 1024 B。)

    請等候直至完成大小調整,然後再繼續。

  3. 如果未掛接檔案系統,請立即掛接。例如,若要在掛接點 /raid 為名為 /dev/md0 的 RAID 掛接 Ext2 檔案系統,請輸入

    mount -t ext2 /dev/md0 /raid
    
  4. 請輸入以下指令,以檢查在已掛接檔案系統上調整大小的效果

    df -h
    

    可用磁碟空間 (df) 指令可顯示磁碟的總大小、使用的區塊數以及檔案系統上可用的區塊數。-h 選項會以較易理解的格式列印大小,如 1K、234M 或 2G。

ReiserFS

僅當卸載磁碟區時才能減少 ReiserFS 檔案系統的大小。

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。

  2. 輸入以下指令卸載設備

    umount /mnt/point
    

    如果您嘗試要減少其大小的分割區包含系統檔案 (例如根 (/) 磁碟區),僅當系統從可開機的 CD 或磁片開機時,才可以進行卸載操作。

  3. 輸入以下指令,減少位於軟體 RAID 設備 /dev/md0 上檔案系統的大小

    resize_reiserfs -s size /dev/md0
    

    用所需大小 (以位元組計) 取代 size。您也可以指定值的單位,例如 50000K (KB)、250M (MB) 或 2G (GB)。您也可以使用減號 (-) 為該值加上字首,以指定為目前大小減少的值。例如,以下指令可將 /dev/md0 上檔案系統的大小減少 500 MB︰

    resize_reiserfs -s -500M /dev/md0
    

    請等候直至完成大小調整,然後再繼續。

  4. 輸入以下指令掛接檔案系統

    mount -t reiserfs /dev/md0 /mnt/point
    
  5. 請輸入以下指令,以檢查在已掛接檔案系統上調整大小的效果

    df -h
    

    可用磁碟空間 (df) 指令可顯示磁碟的總大小、使用的區塊數以及檔案系統上可用的區塊數。-h 選項會以較易理解的格式列印大小,如 1K、234M 或 2G。

11.3.2 減少元件分割區的大小

每次調整 RAID 的一個元件分割區大小。對於每個元件分割區,您可以將其從 RAID 移除,修改其分割區的大小,將分割區返回至 RAID,然後等待 RAID 穩定下來。移除分割區時,RAID 在降級模式下操作,此時不具備磁碟容錯功能或會降低此功能。即使對於那些可以容許多個磁碟失敗同時發生的 RAID 而言,您也決不能一次即移除一個以上的元件分割區。

警告: 如果 RAID 不具備磁碟容錯功能或只是不一致,則移除任何分割區都會導致資料遺失。移除分割區時要非常小心,並確保已備份可用資料。

此節的程序使用下表顯示的設備名稱。請務必修改指令,以使用您自己的設備名稱。

表 11-4 增加元件分割區大小的案例

RAID 設備

元件分割區

/dev/md0

/dev/sda1

/dev/sdb1

/dev/sdc1

若要調整 RAID 元件分割區的大小,請執行下列步驟︰

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。

  2. 輸入以下指令,以確保 RAID 陣列具有一致性且經過同步

    cat /proc/mdstat
    

    如果 RAID 陣列仍在根據指令的輸出進行同步,您必須等候同步完成,然後才能繼續。

  3. 從 RAID 陣列移除一個元件分割區。例如,若要移除 /dev/sda1,請輸入

    mdadm /dev/md0 --fail /dev/sda1 --remove /dev/sda1
    

    為了操作成功,必須執行容錯和移除動作。

  4. 執行下列操作之一,增加在步驟 3 中移除之分割區的大小︰

    • 使用 fdiskcfdiskparted 等磁碟分割程式增加分割區的大小。

    • 用其他設備取代分割區所在的磁碟。

      僅當原始磁碟上的其他檔案系統沒有被系統存取時,該選項才可用。被取代的設備重新新增到 RAID 時,同步化資料所需的時間會更長。

  5. 再次將分割區新增至 RAID 陣列。例如,若要新增 /dev/sda1,請輸入

    mdadm -a /dev/md0 /dev/sda1
    

    請等候直至 RAID 實現同步和一致性,然後再繼續下一分割區。

  6. 對陣列中的每個剩餘元件設備重複執行步驟 2步驟 5 的操作。確保為正確的元件分割區修改指令。

  7. 如果您收到一條訊息,告知核心無法重新讀取 RAID 的分割區表,則您必須在調整所有元件分割區的大小後將電腦重新開機。

  8. 請繼續執行節 11.3.3, 減少 RAID 陣列的大小

11.3.3 減少 RAID 陣列的大小

當您調整了 RAID 中各元件分割區的大小後,RAID 陣列組態會繼續使用原始的陣列大小,除非您強制讓其瞭解到可用的新空間。使用 --grow 選項可強制 RAID 讀取可用磁碟大小的變更。您可以指定 RAID 的大小,或使用最大可用空間。

在本節的程序中,使用 RAID 設備的設備名稱 /dev/md0。請務必修改指令,以使用您自己的設備名稱。

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。

  2. 請輸入以下指令,以檢查陣列的大小及陣列可識別的設備大小

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
    
  3. 請執行下列其中一個步驟︰

    • 輸入以下指令將陣列大小減少至最大可用大小

      mdadm --grow /dev/md0 -z max
      
    • 輸入以下指令將陣列大小減少至指定值

      mdadm --grow /dev/md0 -z size
      

      使用所需大小的整數值 (以 KB 計) 取代 size。(1 KB = 1024 B。)

  4. 請輸入以下指令,以重新檢查陣列的大小及陣列可識別的設備大小

    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
    
  5. 請執行下列其中一個步驟︰

    • 如果陣列的大小成功調整,那麼您即完成了全部操作。

    • 如果陣列未調整到預期大小,您必須重新開機,然後再次嘗試執行此程序。