歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux RAID配置 和 LVM 分區配置

Linux RAID配置 和 LVM 分區配置

日期:2017/2/28 16:09:10   编辑:Linux教程

nas 協議 tcp/ip 用nfs,cifs等文件系統去管理

san 協議 光纖協議

raid redundant arrays of inexpensive disks

磁盤陣列

raid 0 讀寫性能佳,壞了其中一塊,數據掛掉,可靠性低(stripe條帶化),磁盤利用率100%

raid 1 鏡像備份,同一份資料完整的保存在多個磁盤上,寫的性能不佳,可靠性高,讀的性能還行,磁盤利用率50%


raid 10 先做raid 1 再做raid 0

disk 0 disk 1 raid 1

disk 2 disk 3 raid 1

disk 4 disk 5 raid 1


然後把上面的三個raid1 做成raid0(條帶)

raid 01 先做raid 0 再做raid 1

raid 0 raid 0

disk 0 disk 3

disk 1 disk 4

disk 2 disk 5


然後把上面的兩個raid0 做成raid1

raid 10和 raid01就安全可靠性上來說還是raid10好點,讀寫性能一樣,磁盤利用率一樣

raid 5

由三塊磁盤做raid 5,磁盤利用率為2/3, 另塊放校驗數據,允許壞一塊盤,數據可以利用校驗值來恢復

軟raid


--raid 的創建
用分區或者 虛擬機加磁盤來做


創建raid 0
[root@dns ~]# mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/sdb1 /dev/sdc1
mdadm: array /dev/md0 started.

創建過程中可以用另一終端cat /proc/mdstat 去查看正在創建的狀態信息

[root@dns ~]# mkfs.ext3 /dev/md0 --把創建好的raid設備md0格式化成ext3
[root@dns ~]# mount /dev/md0 /mnt/ --mount掛載使用

df -h查看大小驗證磁盤利用率為百分之百

創建raid 5
[root@dns ~]# mdadm --create /dev/md1 --level=5 --raid-devices=3 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: array /dev/md1 started.


[root@dns ~]# mkfs.ext3 /dev/md1
[root@dns ~]# mount /dev/md1 /media/

df -h查看大小驗證磁盤利用率三分之二


--------------------------------------------------
--raid的啟停

[root@dns ~]# vim /etc/mdadm.conf --手動編寫raid的配置文件,此文件不存在,要手動建立,並寫上
DEVICES /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 --把做了raid的分區寫上來


[root@dns ~]# mdadm --detail --scan >> /etc/mdadm.conf
--掃描當前raid的信息,並追加到配置文件裡

DEVICES /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1
ARRAY /dev/md0 level=raid0 num-devices=2 metadata=0.90 UUID=80dfef62:8eef41dd:4f463d64:f1917614
ARRAY /dev/md1 level=raid5 num-devices=3 metadata=0.90 UUID=3c416add:9fa78bcf:9b9e60ef:5f5de4da

停止raid設備

先umount 已經掛載的raid設備
然後使用命令停止
[root@dns ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0
[root@dns ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1

啟動raid設備
1,有/etc/mdadm.conf配置文件的情況下
[root@dns ~]# mdadm -A /dev/md0
mdadm: /dev/md0 has been started with 2 drives.
[root@dns ~]# mdadm -A /dev/md1
mdadm: /dev/md1 has been started with 3 drives.

2,沒有配置文件的情況下,手動把設備名寫上就可以了
[root@dns ~]# mdadm -A /dev/md0 /dev/sdb1 /dev/sdc1
mdadm: /dev/md0 has been started with 2 drives.
[root@dns ~]# mdadm -A /dev/md1 /dev/sdd1 /dev/sde1 /dev/sdf1
mdadm: /dev/md1 has been started with 3 drives.


3,如果連設備名都不知道,可以去查看每個設備的raid信息,使用uuid把raid設備重新組合
[root@dns ~]# mdadm -E /dev/sdf1
/dev/sdf1:
Magic : a92b4efc
Version : 0.90.00
UUID : 3c416add:9fa78bcf:9b9e60ef:5f5de4da --這裡可以看到uuid的值,同一個raid裡的設備的uuid值是一樣的
Creation Time : Sat Jul 10 10:53:47 2010
Raid Level : raid5
Used Dev Size : 1044096 (1019.80 MiB 1069.15 MB)
Array Size : 2088192 (2039.59 MiB 2138.31 MB)
Raid Devices : 3
Total Devices : 3
Preferred Minor : 1

Update Time : Sat Jul 10 11:06:17 2010
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Checksum : 189291a1 - correct
Events : 2

Layout : left-symmetric
Chunk Size : 64K

Number Major Minor RaidDevice State
this 2 8 81 2 active sync /dev/sdf1

0 0 8 49 0 active sync /dev/sdd1
1 1 8 65 1 active sync /dev/sde1
2 2 8 81 2 active sync /dev/sdf1


[root@dns ~]# mdadm -A --uuid=3c416add:9fa78bcf:9b9e60ef:5f5de4da /dev/md1
mdadm: /dev/md1 has been started with 3 drives.

--------------------------------------------------------
模擬raid中其中一塊盤故障
[root@dns ~]# mdadm /dev/md1 --fail /dev/sdd1
mdadm: set /dev/sdd1 faulty in /dev/md1

[root@dns ~]# cat /proc/mdstat
Personalities : [raid0] [raid6] [raid5] [raid4]
md1 : active raid5 sdd1[3](F) sdf1[2] sde1[1] --可以看到sdd1後面有F標記
2088192 blocks level 5, 64k chunk, algorithm 2 [3/2] [_UU]

[root@dns ~]# mdadm /dev/md1 --remove /dev/sdd1
mdadm: hot removed /dev/sdd1

[root@dns ~]# mdadm /dev/md1 --add /dev/sdg1
mdadm: added /dev/sdg1

--換了一塊盤,此時也可以watch cat /proc/mdstat 去查看數據同步的狀態,完成後,可以看到原來的數據還在

--------------------------------------------------------
刪除掉raid設備
1,umount

2,[root@dns ~]# mdadm /dev/md0 --fail /dev/sdb1 --remove /dev/sdb1
mdadm: set /dev/sdb1 faulty in /dev/md0
mdadm: hot remove failed for /dev/sdb1: Device or resource busy
[root@dns ~]# mdadm /dev/md0 --fail /dev/sdc1 --remove /dev/sdc1
mdadm: set /dev/sdc1 faulty in /dev/md0
mdadm: hot remove failed for /dev/sdc1: Device or resource busy

3,mdadm --stop /dev/md0

4,
直接用fdisk刪除分區
或者
用下面命令擦除superblock
[root@dns ~]# mdadm --misc --zero-superblock /dev/sdb1
[root@dns ~]# mdadm --misc --zero-superblock /dev/sdc1


----------------------------------------------------------------------

lvm logical volumn manager 邏輯卷管理

可以自由增大或者縮小卷空間的大小

pv physical volumn(物理卷) 把實際分區設備劃為pv , pv是lvm物理標記

vg volumn group (卷組) 把pv劃分成vg,相當於組合成lvm能夠使用一個大硬盤

pe physical extend (物理擴展)vg組成的最小單位,默認是4M,vg最大支持65535個pe,相當於是block

lv logical volumn (邏輯卷) 實際可以使用的lvm的設備,相當是把vg劃分成可用的分區


1,劃分pv
創建pv使用pvcreate命令
[root@dns ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
[root@dns ~]# pvcreate /dev/sdc1
Physical volume "/dev/sdc1" successfully created
[root@dns ~]# pvcreate /dev/md1
Physical volume "/dev/md1" successfully created

查看相關信息的命令 pvscan pvdisplay

刪除pv的命令 pvremove /dev/sdb1


2,劃分vg

[root@dns ~]# vgcreate li /dev/md1 --創建一個叫li的vg,把/dev/md1加進去
Volume group "li" successfully created

[root@dns ~]# vgextend li /dev/sdb1 --再入li這個vg增加pv,要用vgextend
Volume group "li" successfully extended
[root@dns ~]# vgextend li /dev/sdc1
Volume group "li" successfully extended

查看相關信息的命令vgscan vgdisplay

[root@dns ~]# vgreduce li /dev/sdc1 --vgreduce跟vgextend是相反的,是在vg裡移除pv
Removed "/dev/sdc1" from volume group "li"


移除vg的命令是vgremove,它是和vgcreate相反


3,創建lv

[root@dns ~]# lvcreate -L 500m -n li01 li --在li這個vg裡劃分出一個叫li01的lv,大小為500m
Logical volume "li01" created
[root@dns ~]# lvcreate -L 500M -n li02 li
Logical volume "li02" created
[root@dns ~]# lvcreate -l 125 -n li03 li -- 小寫l參數指定的是pe的個數,這裡4M*125=500m
Logical volume "li03" created
[root@dns ~]# lvcreate -L 1g -n aa01 aa
Logical volume "aa01" created

查看的相關參數為lvscan lvdisplay

[root@dns ~]# lvscan --創建後,可以看到這些實際可用的lv存放在/dev/vg名/lv名
ACTIVE '/dev/aa/aa01' [1.00 GB] inherit
ACTIVE '/dev/li/li01' [500.00 MB] inherit
ACTIVE '/dev/li/li02' [500.00 MB] inherit
ACTIVE '/dev/li/li03' [500.00 MB] inherit


[root@dns ~]# mkfs.ext3 /dev/aa/aa01 --格式化lv後就可以掛載使用


移除lv使用lvremove

完全刪除lvm,就要先lvremove,再vgremove,最後pvremove


--------------------------------

lv的擴容


1,先考慮vg是否還有空間去擴容,如果沒有,那麼要先擴容vg,使用vgextend

2,擴lv
[root@dns ~]# lvextend -L 1.5g /dev/aa/aa01 --把/dev/aa/aa01的lv擴成1.5g
Extending logical volume aa01 to 1.50 GB
Logical volume aa01 successfully resized

[root@dns ~]# df -h
Filesystem Size Used Avail Use% Mounted on

/dev/mapper/aa-aa01 1008M 34M 924M 4% /mnt --查看已經掛載的大小,沒有變化

[root@dns ~]# resize2fs /dev/aa/aa01 --再使用這個命令去在線同��
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/aa/aa01 is mounted on /mnt; on-line resizing required
Performing an on-line resize of /dev/aa/aa01 to 393216 (4k) blocks.
The filesystem on /dev/aa/aa01 is now 393216 blocks long.

[root@dns ~]# df -h
Filesystem Size Used Avail Use% Mounted on

/dev/mapper/aa-aa01 1.5G 34M 1.4G 3% /mnt --再次查看,已經掛載的lv擴大了,並且數據沒有影響


下面兩種寫法也可以
[root@dns ~]# lvextend -L +100M /dev/aa/aa01
[root@dns ~]# lvextend -l +25 /dev/aa/aa01


lv的縮小

[root@dns ~]# resize2fs /dev/aa/aa01 1g --這樣去縮小的話,報錯已經mount了
resize2fs 1.39 (29-May-2006)
Filesystem at /dev/aa/aa01 is mounted on /mnt; on-line resizing required
On-line shrinking from 444416 to 262144 not supported.

[root@dns ~]# umount /mnt/

[root@dns ~]# resize2fs /dev/aa/aa01 1g --umount後再使用resize2fs命令,要求先去e2fsck檢測
resize2fs 1.39 (29-May-2006)
Please run 'e2fsck -f /dev/aa/aa01' first.

[root@dns ~]# e2fsck -f /dev/aa/aa01

[root@dns ~]# resize2fs /dev/aa/aa01 1g --檢測後再使用resize2fs命令縮小,並掛載查看大小是否縮小


實踐題:
建立一個raid5設備,並劃分出一個lv,掛載到/www目錄

使用apache建立兩個虛擬主機,
一個為www.linuxidc.com,家目錄為/www/www,由www用戶使用ftp去管理文件,
利用quota限制www用戶使用空間為1G


另一個為web.linuxidc.com,家目錄為/www/web,由web用戶使用ftp去管理文件
利用quota限制www用戶使用空間為500m

注意權限問題,http運行時,rpm版是使用apache用戶運行,它需要對網站根目錄擁有執行權限去執行動態腳本,www,web這兩個用戶對各自管理的目錄也應該擁有完全的上傳,下載,刪除權限

Copyright © Linux教程網 All Rights Reserved