CentOS5.1 mdadm 及 LVM 的試驗 | |
|
|
網友:fengshihua 發佈於: 2008.04.16 10:41 (共有條評論) 查看評論 | 我要評論 | |
有這樣一個需求:爲內部網絡的 PC 提供共享存儲、備份,沒有太強的讀寫壓力,資金投入也有限,但需要夠安全,而且爲逐漸增長的數據量考慮,需要擴容方便。 於是,打算通過 mdadm 和 LVM 來實現。用這樣的硬件:內部空間夠大,電源夠強勁,扇熱要好,支持多個 SATA 接口的塔式機。 爲了不浪費空間,用一塊小硬盤裝系統,比如一塊 20G 的 IDE 硬盤。3塊別的老 PC 上拆下來 80G SATA 硬盤。 在 VMware 上模擬了一下。因爲需要模擬 SATA 硬盤,建立虛擬機時用了 SCSI 硬盤。要選擇 RedHat Enterprise 版才能支持 SCSI 硬盤。 使用 VMware-gsx-server-3.2.1 發現在較大的(試驗了 160G/250G)虛擬硬盤上的 RAID5 recovery 到尾聲時會死機,重啓後又要從頭再來,但依然會死機,周而復始。換成 VMware-server-1.0.3 後就沒有問題了。 在 hda 安裝了 CentOS 5.1 ,最小化安裝。安裝過程沒有對 sda, sdb, sdc 進行分區。 用 mdadm 創建 RAID # mdadm -C /dev/md0 -l5 -n3 -c128 /dev/sd[a,b,c] 參數所代表的意思可以用 man mdadm 查看。 基本命令 # mdadm -A /dev/md0 #啓動陣列 # mdadm -S /dev/md0 #停止陣列(停止前必須先 umount) # mdadm -D /dev/md0 #顯示陣列詳細信息 # watch "cat /proc/mdstat" 可以看到 RAID 的 recovery 過程。 此時 RAID 已經可以使用了。 LVM 初始化 # vgscan 創建 PV # pvcreate /dev/md0 創建 VG # vgcreate vga /dev/md0 創建 LV # lvcreate -l 40959 -n lv1 vga 在 LV 上建立文件系統 # mkfs -t ext3 -L /data /dev/vga/lv1 掛載 # mkdir /data # mount -t ext3 -o defaults /dev/vga/lv1 /data 測試 # cd /data # dd if=/dev/zero of=test bs=1024k count=1k # dd if=test of=/dev/null recovery 結束後,生成 /etc/mdadm.conf 文件,在系統重啓後自動啓用 RAID # mdadm -Ds > /etc/mdadm.conf 編輯 /etc/mdadm.conf 文件,在頂部加入如下一行: DEVICE /dev/sd* 在 /etc/fstab 尾部加入一行 LABEL=/data /data ext3 defaults 0 0 重啓後自動掛載。 接着,模擬這樣一種狀況:爲了擴容,要給 RAID 加入一塊硬盤。 關機,給 VM 添加一塊 80G 的 SCSI 硬盤後啓動。 給 RAID 添加硬盤 # mdadm /dev/md0 -a /dev/sdd 此時,新添加的硬盤會被作爲 spare 把 RAID 設備設置爲4個,使用新硬盤 # mdadm -G /dev/md0 -n4 擴充 PV # pvresize /dev/md0 擴充 LV # lvextend -l +20480 /dev/vga/lv1 擴大文件系統大小 # resize2fs /dev/vga/lv1 此命令可在 mount 時操作。並且同時 dd 模擬寫入和讀取文件,除了速度變慢,沒有發現異常。 再來模擬這樣一種情況:空間又被用完了,需要更大的存儲空間,再找來3塊 160G 的硬盤擴容。爲了安全,還是把這三塊硬盤組成 RAID5 。 關機,給 VM 添加三塊 160G 的 SCSI 硬盤後啓動。 CentOS5(RHEL5) 使用了 udev 來管理系統設備文件名,/dev 目錄下只有 md0,需要手動建立 RAID 設備。 # mknod /dev/md1 b 9 1 # chown root:disk /dev/md1 # chmod 640 /dev/md1 爲了在重啓後能自動創建 md1 ,還需如下設置 # mkdir /etc/udev/devices # cp -a /dev/md1 /etc/udev/devices/ 建立 RAID # mdadm -C /dev/md1 -l5 -n3 -c128 /dev/sd[e,f,g] 創建 PV # pvcreate /dev/md1 擴充 VG # vgextend vga /dev/md1 擴充 LV # lvextend -l +81919 /dev/vga/lv1 擴充分區大小: # resize2fs /dev/vga/lv1 此間,繼續使用 dd 模擬讀寫,沒有問題。 把第二個 RAID 的配置也寫入配置文件 # mdadm -Ds | grep md1 >> /etc/mdadm.conf 模擬設備損壞的情況 將 /dev/sdb 標記爲已損壞的設備 # mdadm /dev/md0 -f /dev/sdb 移除損壞的設備 # mdadm /dev/md0 -r /dev/sdb 此時可用 dd 模擬讀寫。 更換設備並重新添加到 RAID 中 # mdadm /dev/md0 -a /dev/sdb 會重新 recovery ,同樣,可以 dd 模擬下讀寫。 如果發現缺失某個設備後 RAID 不能啓動,可以使用剩餘設備啓動 RAID # mdadm -A --run /dev/md1 /dev/sde /dev/sdf 此後又再給 md1 添加了一塊硬盤 sdh 進行相應測試,還是正常的。 特殊情況,去掉一個 PV # umount /data # resize2fs -f /dev/vga/lv1 240G # lvreduce -l -81919 /dev/vga/lv1 # vgreduce vga /dev/md1 不建議在生產系統上減小 LV 這本來是想用來試驗大 PV 替換小 PV 的,但爲了安全,還是把老 LV 的數據複製到新的 LV 後再做打算。 有了更大的硬盤(250G*4, VMware 只能創建小於 256G 的虛擬硬盤)用來擴容,爲了留出機箱空間並降低電力消耗,需要把老硬盤上的數據轉移到新硬盤。 先用新硬盤組成的 RAID5 # mknod /dev/md2 b 9 2 # chown root:disk /dev/md2 # chmod 640 /dev/md2 # cp -a /dev/md2 /etc/udev/devices/ # mdadm -C /dev/md2 -l5 -n4 -c128 /dev/sd[i,j,k,l] # mdadm -Ds | grep md2 >> /etc/mdadm.conf 依然使用 LVM # pvcreate /dev/md2 # vgcreate vg0 /dev/md2 # lvcreate -l 191999 -n lv1 vg0 # mkfs -t ext3 /dev/vg0/lv1 把 /dev/vg0/lv1 掛載上後便可以複製數據了,cp, rsync 都行。 當有大量小文件時,用 dd 複製,並把塊設置的大些,速度會非常快。 爲保證數據同步,先卸載 # umount /data 然後複製 # dd if=/dev/vga/lv1 of=/dev/vg0/lv1 bs=16MB 用 dd 複製還可以跳過 mkfs 的過程。 在 VMware 中,就算沒有使用預分配空間的磁盤模式,也會進行完全複製填滿磁盤空間。可以在複製開始一會兒後就結束 dd 進程,節約空間和時間。 掛載,檢查一下數據完整性 # mount -t ext3 -o defaults /dev/vg0/lv1 /mnt 用 dd 複製會把新的 LV 容量變成和老的一樣大,需要調整容量 # resize2fs /dev/vg0/lv1 沒有問題的話,就修改 LV 卷標,以便系統重啓後能掛載新的 LV # e2label /dev/vga/lv1 /backup # e2label /dev/vg0/lv1 /data 如果要把老的 LV 轉移到另外的機器上,需要備份 LVM 卷組信息以及 mdadm 的配置 先查看一下 /etc/lvm/backup/vga 是否存在,沒有的話就創建備份 # vgcfgbackup 把 /etc/lvm/backup/vga 和 /etc/mdadm.conf 備份到遠程主機上。 這還可以用於恢復存儲服務器操作系統崩潰而導致的 LVM 不可用。比如 hda 損壞了。 重裝系統時,千萬不要對 sd* 進行操作—重建分區表,這會導致 LVM 信息的丟失。 在真實設備上操作時,爲了安全,可以先安裝完系統再給硬盤通電。 先恢復 RAID 把 mdadm.conf 恢復到新系統的 /etc 目錄下,啓動 RAID # mdadm -A /dev/md0 # mdadm -A /dev/md1 再恢復 LVM # vgcfgrestore -f vga vga 第一個 vga 是備份的文件名,第二個是要還原的 Volume Group Name 。如果 vga 這個卷組名被佔用了,需要重命名。 # vgscan # pvscan 然後啓動 VG # vgchange -a y vga 再掃描 LV # lvscan 恢復完成,可以掛載並使用了。 至此,VMware 試驗完成,可在真實硬件設備上試驗了。 |
mdadm做soft raid的試驗
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.