• 於單顆硬碟的系統加上另一顆硬碟, 做成 Software RAID 1
  • 狀況測試:
    • 指令熱插拔
    • 摘除一顆硬碟
    • 掛回摘除的硬碟
    • 摘除其中一顆硬碟, 以另一顆全新硬碟取代
  • 取消 Software RAID 1, 回到最原始的單顆硬碟環境

環境

  • Fedora Core 6 (on VMware Server)
  • /etc/sysconfig/selinux → SELINUX=disabled
  • fdisk -l
<span style="color: #c0c0c0;">Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         456     3662788+  83  Linux
/dev/sda2             457         521      522112+  82  Linux swap / Solaris
Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
(第二顆硬碟是空的, 尚未分割磁區)</span>
			

操作步驟

#安裝所需工具
yum -y install mkinitrd mdadm

#將第一顆硬碟的磁碟分割表複製給第二顆硬碟
sfdisk -d /dev/sda | sfdisk /dev/sdb

fdisk -l

<span style="color: #c0c0c0;">Disk /dev/sda: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1         456     3662788+  83  Linux
/dev/sda2             457         521      522112+  82  Linux swap / Solaris
Disk /dev/sdb: 4294 MB, 4294967296 bytes
255 heads, 63 sectors/track, 522 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1         456     3662788+  83  Linux
/dev/sdb2             457         521      522112+  82  Linux swap / Solaris</span>
			

fdisk /dev/sdb

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): w

#清除 RAID superblock
mdadm --zero-superblock /dev/sdb1
mdadm --zero-superblock /dev/sdb2

#Fedora Core 6 預設只有 /dev/md0, 但我們有兩個 partition, 所以手動再建一個 md1
mknod /dev/md1 b 9 1

#建立 RAID 1
mdadm --create /dev/md0 --level=1 --raid-disks=2 missing /dev/sdb1
mdadm --create /dev/md1 --level=1 --raid-disks=2 missing /dev/sdb2

#查看 RAID 狀態: RAID 1 已經建立, 目前只有 /dev/sdb 掛入 ARRAY
cat /proc/mdstat

<span style="color: #c0c0c0;">Personalities : [raid1] 
md1 : active raid1 sdb2[1]
      522048 blocks [2/1] [_U]
md0 : active raid1 sdb1[1]
      3662720 blocks [2/1] [_U]
unused devices: <none></span>
			

#產生 RAID 設定檔
cp /usr/share/doc/mdadm-2.5.4/mdadm.conf-example /etc/mdadm.conf
mdadm --examine --scan >> /etc/mdadm.conf

#格式化第二顆硬碟的磁區, 並將第二顆硬碟的 root ( / ) 掛載到 /mnt/md0
mkfs.ext3 /dev/md0
mkswap /dev/md1
mkdir /mnt/md0
mount /dev/md0 /mnt/md0

#修改相關設定, 準備以第二顆硬碟 (/dev/md0) 開機
vi /etc/fstab

/dev/md0 / ext3 defaults 1 1
/dev/md1 swap swap defaults 0 0

vi /boot/grub/menu.lst

default=0
timeout=5
title Fedora Core (2.6.18-1.2798.fc6)
    root (hd<span style="color: #ff00ff;">1</span>,0)
    kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=<span style="color: #ff00ff;">/dev/md0</span>
    initrd /boot/initrd-2.6.18-1.2798.fc6<span style="color: #ff00ff;">-raid</span>.img
			

#將 Software RAID Module 載入 initrd.img
mkinitrd --preload raid1 /boot/initrd-`uname -r`-raid.img `uname -r`

#將第一顆硬碟裡的資料全數複製到第二顆硬碟
cp -ax / /mnt/md0

#將 GRUB 寫入第二顆硬碟
grub

grub>root (hd1,0)
grub>setup (hd1)
grub>quit

reboot

#將第一顆硬碟的 Partition Type 改為 Linux RAID
fdisk /dev/sda

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): w

#把第一顆硬碟的磁區加入 RAID
mdadm --add /dev/md1 /dev/sda2
mdadm --add /dev/md0 /dev/sda1

#監看 RAID Recovery 的進度
watch cat /proc/mdstat

完成後↓

<span style="color: #c0c0c0;">Personalities : [raid1]
md1 : active raid1 sda2[0] sdb2[1]
      522048 blocks [2/2] [UU]
md0 : active raid1 sda1[0] sdb1[1]
      3662720 blocks [2/2] [UU]
unused devices: <none></span>
			

#修改 GRUB root device
#其實完成 RAID 1 後, 不管是 root (hd0,0) 還是 root (hd1,0) 都能開機, 但改成 hd0 較好, 因為若其中有一顆掛點, 只剩一顆硬碟開機的時候, 那顆硬碟就是 hd0 啦!

vi /boot/grub/menu.lst

default=0
timeout=5
title Fedora Core (2.6.18-1.2798.fc6)
    root (hd<span style="color: #ff00ff;">0</span>,0)
    kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/md0
    initrd /boot/initrd-2.6.18-1.2798.fc6-raid.img
			


狀況測試

  1. 指令熱插拔:
    mdadm --manage /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
    mdadm --add /dev/md0 /dev/sdb1
    watch cat /proc/mdstat 觀察 recovery 進度
  2. 摘除其中一顆硬碟, 開機後一樣可以正常運作
  3. 掛回剛剛摘除的硬碟, 開機後查看 /proc/mdstat, 把缺少的那顆再掛載進來:
    例如: mdadm --add /dev/md0 /dev/sda1
    掛載後, cat /proc/mdstat 可看到系統正在進行 recovery
  4. 摘除其中一顆硬碟, 以另一顆全新硬碟取代 (新硬碟當第二顆), 開機後執行:
    sfdisk -d /dev/sda | sfdisk /dev/sdb
    mdadm --add /dev/md1 /dev/sdb2
    mdadm --add /dev/md0 /dev/sdb1
    watch cat /proc/mdstat 靜候 recovery 作業完成


附錄: 取消 RAID 1, 回到最原始的單顆硬碟環境

#設定以第二顆硬碟開機
vi /boot/grub/menu.lst

default=0
timeout=5
title Fedora Core (2.6.18-1.2798.fc6)
    root (hd<span style="color: #ff00ff;">1</span>,0)
    kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=<span style="color: #ff00ff;">/dev/sdb1</span>
    initrd /boot/<span style="color: #ff00ff;">initrd-2.6.18-1.2798.fc6.img </span><span style="color: #808080;">(不是 -raid 那個)</span>
			

vi /etc/fstab

/dev/sdb1 / ext3 defaults 1 1
/dev/sdb2 swap swap defaults 0 0

#刪除 Software RAID 設定檔
rm /etc/mdadm.conf

#所有的 partition 都改回 83 (linux)、82 (swap)
fdisk /dev/sda && fdisk /dev/sdb

reboot

#清除 RAID superblock
mdadm --zero-superblock /dev/sda1
mdadm --zero-superblock /dev/sda2

mount /dev/sda1 /mnt

chroot /mnt

#改回以第一顆硬碟開機
vi /etc/fstab

/dev/sda1 / ext3 defaults 1 1
/dev/sda2 swap swap defaults 0 0

vi /boot/grub/menu.lst

default=0
timeout=5
title Fedora Core (2.6.18-1.2798.fc6)
    root (hd<span style="color: #ff00ff;">0</span>,0)
    kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=<span style="color: #ff00ff;">/dev/sda1</span>
    initrd /boot/initrd-2.6.18-1.2798.fc6.img
			


1.2 增加軟體 RAID 的大小

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

11.2.1 增加元件分割區的大小

套用此節中的程序以增加 RAID 1、4、5 或 6 的大小。對於 RAID 中的每個元件分割區,請先將它從 RAID 移除,修改其大小,然後將它傳回 RAID,RAID 需要一定的穩定時間,隨後就可以繼續。移除分割區時,RAID 在降級模式下操作,此時不具備磁碟容錯功能或會降低此功能。即便對於能夠容許多個磁碟同時發生故障的 RAID,也不要一次移除多個元件分割區。

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

此節的程序使用下表顯示的設備名稱。確保修改名稱以使用自己設備的名稱。

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

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 中移除之分割區的大小︰
    • 使用磁碟分割程式,如 fdisk(8)cfdisk(8) 或 parted(8),增加分割區的大小。通常選擇此選項。
    • 用更大容量的設備取代分割區所在的磁碟。僅當原始磁碟上的其他檔案系統沒有被系統存取時,該選項才可用。當取代設備被新增回 RAID 時,它需要更久的時間來同步資料,因為此時必須重建原始設備上的所有資料。
  5. 再次將分割區新增至 RAID 陣列。例如,若要新增 /dev/sda1,請輸入
    mdadm -a /dev/md0 /dev/sda1
    					
    請等候直至 RAID 實現同步和一致性,然後再繼續下一分割區。
  6. 對陣列中的每個剩餘元件設備重複執行步驟 2 到步驟 5 的操作。確保為正確的元件分割區修改指令。
  7. 如果系統發出訊息告知您核心無法重新讀取 RAID 的分割區表,則必須在調整所有分割區大小之後重新開機電腦,以強制更新分割區表。
  8. 請繼續執行節 11.2.2, 增加 RAID 陣列的大小

11.2.2 增加 RAID 陣列的大小

在調整 RAID 中每個元件分割區的大小後 (請參閱節 11.2.1, 增加元件分割區的大小),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 為單位的整數值,1 KB 為 1024 位元組) 取代 size
  4. 請輸入以下指令,以重新檢查陣列的大小及陣列可識別的設備大小
    mdadm -D /dev/md0 | grep -e "Array Size" -e "Device Size"
    					
  5. 請執行下列其中一個步驟︰
    • 如果已成功調整好陣列的大小,請繼續節 11.2.3, 增加檔案系統的大小
    • 如果陣列未調整到預期大小,您必須重新開機,然後再次嘗試執行此程序。

11.2.3 增加檔案系統的大小

在增加陣列的大小後 (請參閱節 11.2.2, 增加 RAID 陣列的大小),您就可以調整檔案系統的大小。

可以將檔案系統的大小增加到最大可用空間大小,或指定一個精確的值。為檔案系統指定精確大小時,請確保新大小符合以下條件︰

  • 新大小必須大於現有資料的大小;否則資料會遺失。
  • 新大小不得超過目前 RAID 的大小,因為檔案系統大小無法超過可用空間大小。

Ext2 或 Ext3

使用 resize2fs 指令掛接或卸載時,可以調整 Ext2 與 Ext3 檔案系統的大小。

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。
  2. 使用下列方法之一增加檔案系統的大小︰
    • 若要將檔案系統的大小擴充至名為 /dev/md0 的軟體 RAID 設備的最大可用大小,請輸入
      resize2fs /dev/md0
      								
      如果未指定大小參數,則預設大小為分割區的大小。
    • 若要將檔案系統擴充至指定大小,請輸入
      resize2fs /dev/md0 size
      								
      size 參數可指定所需的檔案系統新大小。如果未指定單位,則大小參數的單位即為檔案系統的區塊大小。也可以選擇透過下列其中一種單位指示項給大小參數加上字尾︰s 表示 512 位元組磁區;K 表示 KB (1 KB 為 1024 位元組);M 表示 MB;G 表示 GB。
    請等候直至完成大小調整,然後再繼續。
  3. 如果未掛接檔案系統,請立即掛接。例如,若要在掛接點 /raid 為名為 /dev/md0 的 RAID 掛接 Ext2 檔案系統,請輸入
    mount -t ext2 /dev/md0 /raid
    						
  4. 請輸入以下指令,以檢查在已掛接檔案系統上調整大小的效果
    df -h
    						
    可用磁碟空間 (df) 指令可顯示磁碟的總大小、使用的區塊數以及檔案系統上可用的區塊數。-h 選項會以較易理解的格式列印大小,如 1K、234M 或 2G。

ReiserFS

對於 Ext2 與 Ext3,掛接或卸載 ReiserFS 檔案系統時可增加其大小。調整大小的操作是在 RAID 陣列的區塊設備上完成的。

  1. 開啟終端機主控台,以 root 使用者或同等身分登入。
  2. 使用以下其中一種方法,增加名為 /dev/md0 的軟體 RAID 設備上檔案系統的大小︰
    • 若要將檔案系統的大小擴充至設備的最大可用大小,請輸入
      resize_reiserfs /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
      								
    請等候直至完成大小調整,然後再繼續。
  3. 如果未掛接檔案系統,請立即掛接。例如,若要為位於掛接點 /raid 處名稱為 /dev/md0 的 RAID 掛接 ReiserFS 檔案系統,請輸入
    mount -t reiserfs /dev/md0 /raid
    						
  4. 請輸入以下指令,以檢查在已掛接檔案系統上調整大小的效果
    df -h
    						
    可用磁碟空間 (df) 指令可顯示磁碟的總大小、使用的區塊數以及檔案系統上可用的區塊數。-h 選項會以較易理解的格式列印大小,如 1K、234M 或 2G。
arrow
arrow
    全站熱搜

    安德森 發表在 痞客邦 留言(1) 人氣()