RAID: Redundant Arrays of Inexpensive Disks Independent Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID 提高IO能力: 磁盤並行讀寫; 提高耐用性; 磁盤冗余來實現 級別:多塊磁盤組織在一起的工作方式有所不同; RAID實現的方式: 外接式磁盤陣列:通過擴展卡提供適配能力 內接式RAID:主板集成RAID控制器 Software RAID: 級別:level RAID-0:0, 條帶卷,strip; RAID-1: 1, 鏡像卷,mirror; RAID-2 .. RAID-5: RAID-6 RAID10 RAID01 RAID-0: 以條帶形式將數據均勻分布在陣列的各個磁盤上; 讀、寫性能提升; 可用空間:N*min(S1,S2,...) 無容錯能力 最少磁盤數:2, 2+ 適用領域:視頻生成和編輯、圖形編輯,其它需要大的傳輸帶寬的操作; RAID-1:以鏡像為冗余方式,對虛擬磁盤上的數據做多份拷貝,放在成員磁盤上 讀性能提升、寫性能略有下降; 可用空間:1*min(S1,S2,...) 有冗余能力 最少磁盤數:2, 2+ 適用領域:財務、金融等高可用、高安全的數據存儲環境 RAID-4:數據交叉存儲在2塊硬盤中,再由第3塊硬盤存儲數據的校驗碼; 1101, 0110, 1011 RAID-5:采用獨立存取的陣列方式,校驗信息被均勻的分散到陣列的各個磁盤上; 讀、寫性能提升 可用空間:(N-1)*min(S1,S2,...) 有容錯能力:1塊磁盤 最少磁盤數:3, 3+ 適用領域:文件服務器、email服務器、web服務器等環境,數據庫應用 RAID-6:用2塊盤做校驗盤,校驗碼存兩次; 讀、寫性能提升 可用空間:(N-2)*min(S1,S2,...) 有容錯能力:2塊磁盤 最少磁盤數:4, 4+ 混合類型 RAID-10:結合RAID1和RAID0,先鏡像,再條帶化; 讀、寫性能提升 可用空間:N*min(S1,S2,...)/2 有容錯能力:每組鏡像最多只能壞一塊; 磁盤數:2n(n>=2) 優點:讀性能很高,寫性能比較好,數據安全性好,允許同時有N個磁盤失效; 缺點:利用率只有50%,開銷大; 適用領域:多用於要求高可用性和高安全性的數據庫應用; RAID-01:先分成兩組做成RAID-0,再把組成的RAID-0做成RAID-1;不符合常用方法,每一組有一塊壞的硬盤可能性大; RAID-50、RAID7 適用領域:大型數據庫服務器、應用服務器、文件服務器等應用; JBOD:Just a Bunch Of Disks 功能:將多塊磁盤的空間合並一個大的連續空間使用; 可用空間:sum(S1+S2+,...) 常用級別: RAID-0 性能最好 RAID-1 冗余度最高,開銷高 RAID-5 RAID-10 開銷高 RAID-50 JBOD 實現方式: 硬件實現方式 軟件實現方式 CentOS 6上的軟件RAID的實現: 結合內核中的md(multi devices) mdadm:模式化的工具 命令的語法格式:mdadm [mode] <raiddevice> [options] <component-devices> 支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10; 模式: 創建:-C 裝配: -A 監控: -F 管理:-f, -r, -a <raiddevice>: /dev/md# <component-devices>: 任意塊設備 -C: 創建模式 -n #: 使用#個塊設備來創建此RAID; -l #:指明要創建的RAID的級別; -a {yes|no}:自動創建目標RAID設備的設備文件; -c CHUNK_SIZE: 指明塊大小;(默認512k) -x #: 指明空閑盤的個數; 例如:創建一個#G可用空間的RAID5; [root@study ~]# mdadm -C /dev/md0 -n 3 -x 1 -a yes -l 5 /dev/sdb{5,6,7,8} [root@study ~]# mke2fs -t ext4 /dev/md0 [root@study /]# mount /dev/md0 /mydata [root@study /]# mdadm -D /dev/md0 -D:顯示raid的詳細信息; mdadm -D /dev/md# 管理模式: -f: 標記指定磁盤為損壞; -a: 添加磁盤 -r: 移除磁盤 觀察md的狀態: cat /proc/mdstat -S: 停止md設備 mdadm -S /dev/md# watch命令: -n #: 刷新間隔,單位是秒; watch -n# 'COMMAND' 練習1:創建一個可用空間為10G的RAID1設備,要求其chunk大小為128k,文件系統為ext4,有一個空閑盤,開機可自動掛載至/backup目錄; 練習2:創建一個可用空間為10G的RAID10設備,要求其chunk大小為256k,文件系統為ext4,開機可自動掛載至/mydata目錄; 博客作業:raid各級別特性; LVM2: LVM: Logical Volume Manager, Version: 2 dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊; /dev/dm-# /dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/LV_NAME /dev/vol0/root pv管理工具: pvs:簡要pv信息顯示 pvdisplay:顯示pv的詳細信息 pvcreate /dev/DEVICE: 創建pv vg管理工具: vgs vgdisplay vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...] 先做pvmove vgremove lv管理工具: lvs lvdisplay lvcreate -L #[mMgGtT] -n NAME VolumeGroup lvremove /dev/VG_NAME/LV_NAME 擴展邏輯卷: # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME 縮減邏輯卷: # umount /dev/VG_NAME/LV_NAME # e2fsck -f /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME # mount 快照:snapshot lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name 練習1:創建一個至少有兩個PV組成的大小為20G的名為testvg的VG;要求PE大小為16MB, 而后在卷組中創建大小為5G的邏輯卷testlv;掛載至/users目錄; 練習2: 新建用戶archlinux,要求其家目錄為/users/archlinux,而后su切換至archlinux用戶,復制/etc/pam.d目錄至自己的家目錄; 練習3:擴展testlv至7G,要求archlinux用戶的文件不能丟失; 練習4:收縮testlv至3G,要求archlinux用戶的文件不能丟失; 練習5:對testlv創建快照,並嘗試基於快照備份數據,驗正快照的功能; 文件系統掛載使用: 掛載光盤設備: 光盤設備文件: IDE: /dev/hdc SATA: /dev/sr0 符號鏈接文件: /dev/cdrom /dev/cdrw /dev/dvd /dev/dvdrw mount -r /dev/cdrom /media/cdrom umount /dev/cdrom dd命令:convert and copy a file 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST bs=#:block size, 復制單元大小; count=#:復制多少個bs; 磁盤拷貝: dd if=/dev/sda of=/dev/sdb 備份MBR dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 破壞MBR中的bootloader: dd if=/dev/zero of=/dev/sda bs=256 count=1 兩個特殊設備: /dev/null: 數據黑洞; /dev/zero:吐零機; 博客作業:lvm基本應用,擴展及縮減實現; 回顧:lvm2, dd lvm: 邊界動態擴展或收縮;快照; pv --> vg --> lv PE: LE: dd: 復制