最近在做搭一個GreenPlum的實驗環境,要對機器做RAID1+0。RAID1+0應該是目前用的比較多的磁盤陣列選擇。
RAID1+0的特點:
1.RAID10 是先將數據進行鏡像操作,然后再對數據進行分組,RAID1 在這里就是一個冗余的備份陣列,而RAID0則負責數據的讀寫陣列
2.至少要四塊盤,兩兩組合做 RAID1,然后做 RAID0,RAID10 對存儲容量的利用率和RAID1一樣低,只有 50%
3.Raid10 方案造成了 50% 的磁盤浪費,但是它提供了 200% 的速度和單磁盤損壞的數據安全性,並且當同時損壞的磁盤不在同一 RAID1 中,就能保證數據安全性,RAID10 能提供比 RAID5 更好的性能
首先往虛擬機添加4塊10G大小的新磁盤,然后重啟一下Linux,重啟完就可以發現設備添加到/dev/目錄下,分別是sdb,sdc,sdd,sde 。
這里說下,如果不做陣列怎么辦?這4個文件進行創建分區,注意這里的分區要選擇primary,不能是extended,然后格式化成xfs格式,然后掛載到磁盤目錄
用fdisk先對磁盤創建分區,等於windows里面在磁盤管理器創建什么C盤D盤E盤...
[root@gpmaster media]# fdisk /dev/sdc 歡迎使用 fdisk (util-linux 2.23.2)。 更改將停留在內存中,直到您決定將更改寫入磁盤。 使用寫入命令前請三思。 命令(輸入 m 獲取幫助):d 已選擇分區 3 分區 3 已刪除 命令(輸入 m 獲取幫助):n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p 分區號 (1-4,默認 1):2 起始 扇區 (2048-20971519,默認為 2048): 將使用默認值 2048 Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519): 將使用默認值 20971519 分區 2 已設置為 Linux 類型,大小設為 10 GiB 命令(輸入 m 獲取幫助):w The partition table has been altered! Calling ioctl() to re-read partition table. 正在同步磁盤。
格式化磁盤分區成XFS文件系統格式,加個 -f 強制格式化
[root@gpmaster media]# mkfs.xfs -f /dev/sdc2 meta-data=/dev/sdc2 isize=512 agcount=4, agsize=655296 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621184, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@gpmaster media]# mkfs.xfs -f /dev/sdd2 meta-data=/dev/sdd2 isize=512 agcount=4, agsize=655296 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621184, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 [root@gpmaster media]# mkfs.xfs -f /dev/sde2 meta-data=/dev/sde2 isize=512 agcount=4, agsize=655296 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0 data = bsize=4096 blocks=2621184, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
把磁盤分區掛載到磁盤目錄下
[root@gpmaster media]# mkdir sdc2 [root@gpmaster media]# mkdir sdd2 [root@gpmaster media]# mkdir sde2 [root@gpmaster media]# ll 總用量 0 drwxr-xr-x. 2 root root 6 9月 25 01:25 sdb2 drwxr-xr-x. 2 root root 6 9月 25 01:27 sdc2 drwxr-xr-x. 2 root root 6 9月 25 01:27 sdd2 drwxr-xr-x. 2 root root 6 9月 25 01:27 sde2 [root@gpmaster media]# mount -a /dev/sdc2 /media/sdc2/ [root@gpmaster media]# mount -a /dev/sdd2 /media/sdd2/ [root@gpmaster media]# mount -a /dev/sde2 /media/sde2/
修改/etc/fstab文件,把磁盤掛載點加入到里面,這樣系統重啟的時候才會自動掛載
# /etc/fstab # Created by anaconda on Wed Sep 1 22:18:56 2021 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=8ea131e3-5d62-4083-bca8-f7b08744100a /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/sdb2 /media/sdb2 xfs defaults 0 0 /dev/sdc2 /media/sdc2 xfs defaults 0 0 /dev/sdd2 /media/sdd2 xfs defaults 0 0 /dev/sde2 /media/sde2 xfs defaults 0 0
上面就是普通新增磁盤掛載到目錄的步驟。
但是因為我們是要做RAID陣列,同樣是先對幾塊磁盤創建分區,不一樣的是,fdisk建分區的時候分區類型選擇 fd (也就是Linux Raid)
[root@gpmaster ~]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):2^H^H^H
分區號 (1-4,默認 1):2
起始 扇區 (2048-20971519,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):
將使用默認值 20971519
分區 2 已設置為 Linux 類型,大小設為 10 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 2
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@gpmaster ~]# fdisk /dev/sdc
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):2
起始 扇區 (2048-20971519,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):
將使用默認值 20971519
分區 2 已設置為 Linux 類型,大小設為 10 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 2
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@gpmaster ~]# fdisk /dev/sdd
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):2
起始 扇區 (2048-20971519,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):
將使用默認值 20971519
分區 2 已設置為 Linux 類型,大小設為 10 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 2
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
命令(輸入 m 獲取幫助):dw^H^H^[[2~^H^H^Hw
已選擇分區 2
分區 2 已刪除
命令(輸入 m 獲取幫助):d
No partition is defined yet!
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):2
起始 扇區 (2048-20971519,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):
將使用默認值 20971519
分區 2 已設置為 Linux 類型,大小設為 10 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 2
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@gpmaster ~]# fdisk /dev/sde
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分區號 (1-4,默認 1):2
起始 扇區 (2048-20971519,默認為 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-20971519,默認為 20971519):
將使用默認值 20971519
分區 2 已設置為 Linux 類型,大小設為 10 GiB
命令(輸入 m 獲取幫助):t
已選擇分區 2
Hex 代碼(輸入 L 列出所有代碼):fd
已將分區“Linux”的類型更改為“Linux raid autodetect”
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤。
創建完分區,執行fdisk -l可以看到分區,確保分區類型是linux raid autodetect
[root@gpmaster ~]# fdisk -l 磁盤 /dev/sda:21.5 GB, 21474836480 字節,41943040 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0x000097e3 設備 Boot Start End Blocks Id System /dev/sda1 * 2048 2099199 1048576 83 Linux /dev/sda2 2099200 41943039 19921920 8e Linux LVM 磁盤 /dev/sdc:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0xb336a287 設備 Boot Start End Blocks Id System /dev/sdc2 2048 20971519 10484736 fd Linux raid autodetect 磁盤 /dev/sdd:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0x1b60683a 設備 Boot Start End Blocks Id System /dev/sdd2 2048 20971519 10484736 fd Linux raid autodetect 磁盤 /dev/sdb:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0x8e14e588 設備 Boot Start End Blocks Id System /dev/sdb2 2048 20971519 10484736 fd Linux raid autodetect 磁盤 /dev/sde:10.7 GB, 10737418240 字節,20971520 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤標簽類型:dos 磁盤標識符:0xd9e68f8c 設備 Boot Start End Blocks Id System /dev/sde2 2048 20971519 10484736 fd Linux raid autodetect 磁盤 /dev/mapper/centos-root:18.2 GB, 18249416704 字節,35643392 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節 磁盤 /dev/mapper/centos-swap:2147 MB, 2147483648 字節,4194304 個扇區 Units = 扇區 of 1 * 512 = 512 bytes 扇區大小(邏輯/物理):512 字節 / 512 字節 I/O 大小(最小/最佳):512 字節 / 512 字節
因為是RAID1+0, 所以要先對sdb、sdc創建鏡像,也就是RAID1
[root@gpmaster ~]# mdadm -Cv /dev/md1 -l1 -n2 /dev/sd[b-c]2 mdadm: Note: this array has metadata at the start and may not be suitable as a boot device. If you plan to store '/boot' on this device please ensure that your boot-loader understands md/v1.x metadata, or use --metadata=0.90 mdadm: size set to 10475520K Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md1 started.
注意RAID1是需要兩塊磁盤,所以我們把sdb\sbc和sdd\sde分別兩兩做成RAID1
[root@gpmaster ~]# mdadm -Cv /dev/md2 -l1 -n2 /dev/sd[d-e]2
mdadm: /dev/sdd2 appears to be part of a raid array:
level=raid0 devices=2 ctime=Sat Sep 25 02:20:22 2021
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
mdadm: /dev/sde2 appears to be part of a raid array:
level=raid0 devices=2 ctime=Sat Sep 25 02:20:22 2021
mdadm: size set to 10475520K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md2 started.
創建完鏡像,再mdadm命令創建條帶,也就是RAID0,RAID0也是需要兩塊磁盤,那就是前面做成兩塊RAID1做一個RAID0
[root@gpmaster ~]# mdadm -Cv /dev/md10 -l0 -n2 /dev/md1 /dev/md2 mdadm: chunk size defaults to 512K mdadm: /dev/md1 appears to be part of a raid array: level=raid0 devices=2 ctime=Sat Sep 25 02:09:02 2021 mdadm: /dev/md2 appears to be part of a raid array: level=raid0 devices=2 ctime=Sat Sep 25 02:09:02 2021 Continue creating array? y mdadm: Defaulting to version 1.2 metadata mdadm: array /dev/md10 started. [root@gpmaster ~]#
可以查看下磁盤情況
[root@gpmaster ~]# mdadm -D /dev/md10 /dev/md10: Version : 1.2 Creation Time : Sat Sep 25 02:27:17 2021 Raid Level : raid0 Array Size : 20932608 (19.96 GiB 21.43 GB) Raid Devices : 2 Total Devices : 2 Persistence : Superblock is persistent Update Time : Sat Sep 25 02:27:17 2021 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 Chunk Size : 512K Consistency Policy : none Name : gpmaster:10 (local to host gpmaster) UUID : e3babfeb:5f5f0188:48508466:ee39fdfa Events : 0 Number Major Minor RaidDevice State 0 9 1 0 active sync /dev/md1 1 9 2 1 active sync /dev/md2 [root@gpmaster ~]#
然后格式化RAID10成xfs文件系統格式,然后把RAID1+0掛到目錄下就成了
[root@gpslave1 md10]# mkfs.xfs -f /dev/md10
meta-data=/dev/md10 isize=512 agcount=16, agsize=327040 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=5232640, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@gpmaster ~]# mount /dev/md10 /media/md10 [root@gpmaster ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 devtmpfs 899M 0 899M 0% /dev tmpfs 910M 0 910M 0% /dev/shm tmpfs 910M 9.6M 901M 2% /run tmpfs 910M 0 910M 0% /sys/fs/cgroup /dev/mapper/centos-root 17G 2.1G 15G 13% / /dev/sda1 1014M 195M 820M 20% /boot vmhgfs-fuse 922G 29G 894G 4% /mnt/hgfs tmpfs 182M 0 182M 0% /run/user/0 /dev/md10 20G 33M 20G 1% /media/md10 [root@gpmaster ~]#
最后一步修改/etc/fstab,開機自動掛載
[root@gpmaster md10]# vim /etc/fstab [root@gpmaster md10]# cat /etc/fstab # # /etc/fstab # Created by anaconda on Wed Sep 1 22:18:56 2021 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # /dev/mapper/centos-root / xfs defaults 0 0 UUID=8ea131e3-5d62-4083-bca8-f7b08744100a /boot xfs defaults 0 0 /dev/mapper/centos-swap swap swap defaults 0 0 /dev/md/gpmaster:10 /media/md10 xfs defaults 0 0
修改/etc/fstab這里有個坑,可以看另外一篇博文找到mdadm命令處(Linux磁盤陣列命令mdadm)
萬一你發現前面的步驟搞錯了,raid1搞錯成raid0,怎么回退回去。可以用mdadm -S /dev/md0刪除陣列,通過一步步回退,再重新來,過程注意用fdisk -l檢查下生成的磁盤文件
參考:
https://www.cnblogs.com/itwangqiang/p/14168141.html
https://www.cnblogs.com/silent2012/p/4586273.html
https://www.linuxidc.com/Linux/2019-08/160371.htm