[toc] RAID&LVM有關磁碟的故障 RAID 好處:1.更多的容量 2.得到更多的冗餘 3.得到更高的性能 RAID的運行方式 軟raid(瞭解) 硬raid(視屏) https://www.bilibili.com/video/av46656120?from=search&seid ...
目錄
RAID&LVM有關磁碟的故障
RAID
好處:1.更多的容量
2.得到更多的冗餘
3.得到更高的性能
RAID的運行方式
軟raid(瞭解)
硬raid(視屏)
https://www.bilibili.com/video/av46656120?from=search&seid=8213679239129642497
RAID級別
RAID0 條帶捲,容量最大。單塊容量*N,讀寫最快。沒有容錯機制。理論是2塊硬碟
RAID1 鏡像捲,50%容量,讀一般,寫特慢。有50%容錯機制。只能是兩塊。
RAID5 檢驗捲,總容量的三分之二。讀寫稍快。容錯機制,可以損壞三分之一。最低三塊
RAID10 1 0 損失一半。讀寫快。容錯50%。只能四塊。
性能:RAID0》RAID10》RAID5》RAID1
安全:RAID1》RAID10》RAID5》RAID0
價格:RAID10》RAID1》RAID5》RAID0
註意:RAID硬碟失效處理——熱備和熱拔插
RAID實戰
軟RAID
1.mdadm安裝
[root@web ~]# yum install -y mdadm
mdadm命令常見選項解釋:
-A #激活磁碟陣列
-C #建立一個新陣列
-D #列印陣列設備的信息
-G #改變陣列大小或形態
-S #停止陣列
-r #移除設備
-l #設定磁碟陣列的級別
-n #指定陣列磁碟的數量
-x #指定陣列中備用盤的數量
-f #將設備狀態定為故障
-a #添加設備到陣列
-v #顯示詳細信息軟RAID:通過操作系統實現
2.創建RAID實驗環境
Raid種類 磁碟 熱備盤
Raid0 sdb、sdc (sdd)
3.創建磁碟陣列
[root@web ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc
mdadm: chunk size defaults to 512K #-x /dev/sd[b,c,d]
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
4.查看RAID陣列
[root@web ~]# mdadm -D /dev/md0
5.將信息寫入到配置文件中
[root@web ~]# mdadm -Ds >/etc/mdadm.conf #可以追加進去
6.掛載使用
[root@web ~]# mdadm -Ds >/etc/mdadm.conf
[root@web ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=10475520, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=5120, version=2
= sectsz=512 sunit=8 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@web ~]# mkdir /raid0
[root@web ~]# mount /dev/md0 /raid0
[root@web ~]# df -h |grep /dev/md0
/dev/md0 40G 33M 40G 1% /raid0
[root@web ~]# cp /etc/services /raid0/
7.指定一塊盤故障
[root@web ~]# mdadm -f /dev/md1 /dev/sdc #指定熱備盤看不出效果
8.檢查數據有沒有丟失
[root@web ~]# ll /raid0
total 656
-rw-r--r--. 1 root root 670293 Jul 18 18:47 services
9.移除損壞的盤
[root@web ~]# mdadm -r /dev/md1 /dev/sdc
mdadm: hot removed /dev/sde from /dev/md1
10.添加一塊盤
[root@web ~]# mdadm -a /dev/md1 /dev/sdc
要求:1)使用三塊盤創建RAID5, 使用-x添加1個熱備盤
2)模擬損壞一塊磁碟,然後備用盤自動頂上,只能頂一次
3)在模擬損壞,檢測數據是否丟失,如果沒有再次模擬損壞.
註意:創建RAID10實驗環境:也可以指定分區
LVM介紹
物理捲(PV):(physical volume),把常規的磁碟設備通過pvcreate命令對其進行初始化,形成了物理捲。其實就是硬碟或分區。(麵粉)
捲組(VG):(volume group),把多個物理捲組成一個邏輯的整體,這樣捲組的大小就是多個硬碟之和。或者理解就是由一個或多個PV組成的整體。(麵團)
邏輯捲(LV):(logical volume),從捲組中劃分需要的空間大小出來。用戶僅需對其格式化然後即可掛載使用。從VG中切割出的空間用於創建文件系統。(切成饅頭)
基本單元(PE):(physical extend),分配的邏輯大小的最小單元,預設為4MB的基本塊。(假設分配100MB邏輯空間,則需要創建25個PE)
LVM實戰
1)創建物理捲,將普通磁碟轉換為物理捲。
2)創建捲組,將物理捲加入到捲組中。
3)在捲組中劃分邏輯捲,然後掛載使用。
1.下載安裝軟體包
[root@web ~]# yum install lvm2 -y
2.將/dev/sdb創建為物理捲
[root@web ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
3.創建捲組,並將物理捲加入進去
[root@web ~]# vgcreate lvm_test /dev/sdb
4.檢查
[root@web ~]# vgs
[root@web ~]# pvs
5.創建一個邏輯捲
[root@web ~]# lvcreate -L 1G -n lv1 lvm_test
6.檢查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- <20.00g <19.00g
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <19.00g
[root@web ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 lvm_test -wi-a----- 1.00g
[root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
└─lvm_test-lv1 253:0 0 1G 0 lvm
7.格式化
[root@web ~]# mkfs.xfs /dev/lvm_test/lv1
8.掛載使用
[root@web ~]# mkdir /lv1
[root@web ~]# mount /dev/lvm_test/lv1 /lv1
[root@web ~]# df -h |grep lv1
/dev/mapper/lvm_test-lv1 1014M 33M 982M 4% /lv1
[root@web ~]# cp /etc/services /lv1
[root@web ~]# ll /lv1
total 656
-rw-r--r--. 1 root root 670293 Jul 18 19:59 services
一,捲組管理,如何擴展卷組大小,如何刪除捲組
1.將sdc指定為物理捲
[root@web ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
2.添加到捲組中
[root@web ~]# vgextend lvm_test /dev/sdc
Volume group "lvm_test" successfully extended
3.檢查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 2 1 0 wz--n- 39.99g 38.99g
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <19.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <20.00g
4.將邏輯捲移動到sdc上面
[root@web ~]# pvmove /dev/sdb /dev/sdc
/dev/sdb: Moved: 1.95%
/dev/sdb: Moved: 100.00%
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm_test lvm2 a-- <20.00g <20.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <19.00g
5.縮減捲組大小
[root@web ~]# vgreduce lvm_test /dev/sdb
Removed "/dev/sdb" from volume group "lvm_test"
6.檢查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- <20.00g <19.00g
[root@web ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 --- 20.00g 20.00g
/dev/sdc lvm_test lvm2 a-- <20.00g <19.00g
二,添加邏輯捲的大小
方法一:
1.添加
[root@web ~]# lvextend -L +1G /dev/lvm_test/lv1 #(寫加號和不寫加號的區別)
Size of logical volume lvm_test/lv1 changed from 1.00 GiB (256 extents) to 2.00 GiB (512 extents).
Logical volume lvm_test/lv1 successfully resized.
2.檢查
[root@web ~]# vgs
VG #PV #LV #SN Attr VSize VFree
lvm_test 1 1 0 wz--n- <20.00g <18.00g
[root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
└─lvm_test-lv1 253:0 0 2G 0 lvm /lv1
3.更新新添加的邏輯捲的文件系統
[root@web ~]# xfs_growfs /dev/lvm_test/lv1
meta-data=/dev/mapper/lvm_test-lv1 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0 spinodes=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 262144 to 524288
方法二:
1.按照百分比增加大小
[root@web ~]# lvextend -l 20%FREE /dev/lvm_test/lv1
Size of logical volume lvm_test/lv1 changed from 2.00 GiB (512 extents) to 3.60 GiB (922 extents).
Logical volume lvm_test/lv1 successfully resized.
2.更新文件系統
[root@web ~]# xfs_growfs /dev/lvm_test/lv1
註意:縮減邏輯捲大小,企業不會去縮減,一般直接刪除
怎樣刪除:
1.首先卸載
[root@web ~]# umount /lv1
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.9G 45G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
2.移除
[root@web ~]# lvremove /dev/lvm_test/lv1
Do you really want to remove active logical volume lvm_test/lv1? [y/n]: y #是否確認
Logical volume "lv1" successfully removed
3.檢查
[root@web ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 200M 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 47.8G 0 part /
sdb 8:16 0 20G 0 disk
sdc 8:32 0 20G 0 disk
註意:註意:LVM如果有一個磁碟損壞,整個lvm都壞了, lvm只有動態擴展作用,底層用RAID + 上層LVM = 既有冗餘又有動態擴展
磁碟故障
一,block(數據滿了)
1.環境準備
先創建一個1G分區,並掛在使用
2.創建大文件,模擬磁碟空間滿
[root@web ~]# dd if=/dev/zero of=/test/test.log bs=100M count=11
dd: error writing ‘/test/test.log’: No space left on device
10+0 records in
9+0 records out
1026621440 bytes (1.0 GB) copied, 18.7358 s, 54.8 MB/s
[root@web ~]# df -h |grep test
/dev/sde1 1014M 1012M 2.8M 100% /test
#報錯No space left on device
[root@web ~]# cp services /test/
cp: error writing ‘/test/services’: No space left on device
cp: failed to extend ‘/test/services’: No space left on device
3.檢查磁碟
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.9G 45G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sde1 1014M 1014M 32K 100% /test
4.查找大文件,依次往下查找,直到找到大文件為止
[root@web ~]# du -sh /test/*
#找到之後,先確認是否可以刪除。
rm -f
#刪除之後,磁碟還是滿的,先確認是否有硬鏈接。
二,inode故障(小文件太多)
[root@web ~]# touch /test/123
touch: cannot touch ‘/test/123’: No space left on device
1.檢查磁碟
[root@web ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 48G 2.9G 45G 7% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.7M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/sde1 1014M 308M 707M 31% /test
[root@web ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 25062912 93030 24969882 1% /
devtmpfs 250786 465 250321 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 819 252692 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 253511 1 253510 1% /run/user/0
/dev/sde1 524288 524288 0 100% /test
2.解決
#找到存放大量小文件的目錄
[root@web ~]# find /test -type d -size +1M |xargs ls -lhd
drwxr-xr-x. 3 root root 2.4M Jul 18 20:39 /test/data
drwxr-xr-x. 3 root root 1.2M Jul 18 20:38 /test/data/test
drwxr-xr-x. 2 root root 1.2M Jul 18 20:38 /test/data/test/data
drwxr-xr-x. 3 root root 4.7M Jul 18 20:40 /test/oldboy
drwxr-xr-x. 2 root root 2.9M Jul 18 20:41 /test/oldboy/oldgirl
#找到之後,先確認是否可以刪除。
#千萬不要直接查看目錄內容
[root@web ~]# ll /test/data |wc -l
#按照類型去刪
[root@web ~]# find /test -type f -name "*.txt" -delete
[root@web ~]# find /test -type f -name "*.log" -delete
[root@web ~]# find /test -type f -name "*.sh" -delete
[root@web ~]# find /test -type f -name "*.conf" -delete
[root@web ~]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 25062912 93030 24969882 1% /
devtmpfs 250786 465 250321 1% /dev
tmpfs 253511 1 253510 1% /dev/shm
tmpfs 253511 819 252692 1% /run
tmpfs 253511 16 253495 1% /sys/fs/cgroup
/dev/sda1 102400 326 102074 1% /boot
tmpfs 253511 1 253510 1% /run/user/0
/dev/sde1 524352 8 524344 1% /test