RAID&LVM有關磁碟的故障

来源:https://www.cnblogs.com/1naonao/archive/2019/07/18/11209399.html
-Advertisement-
Play Games

[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

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • private delegate void de_OutputMessage(string str); public void OutputMessage(string str) { if (textBoxMessage.InvokeRequired) { this.BeginInvoke(new ...
  • .NET Core CSharp 初級篇 1 1 本節內容是對於C 基礎類型的存儲方式以及C 基礎類型的理論介紹 基礎數據類型介紹 例如以下這句話:“張三是一名程式員,今年15歲重50.3kg,他的代號是‘A’,他家的經緯度是(N30,E134)。”,這句話就是一個字元串,使用雙引號括起來。而15則 ...
  • 受 F 中的管道運算符和 C 中的 LINQ 語法,管道式編程為 C 提供了更加靈活性的功能性編程。通過使用 擴展函數 可以將多個功能連接起來構建成一個管道。 前言 在 C 編程中,管道式編程(Pipeline Style programming)其實存在已久,最明顯的就是我們經常使用的 LINQ。 ...
  • 管道符、重定向與環境變數&vim編輯器 輸入輸出重定向 標準輸入重定向(STDIN,文件描述符為0):預設從鍵盤輸入,也可從其他文件或命令中輸入。 標準輸出重定向(STDOUT,文件描述符為1):預設輸出到屏幕。 錯誤輸出重定向(STDERR,文件描述符為2):預設輸出到屏幕。 輸入輸出重定向 標準 ...
  • 必須掌握的Linux命令 系統狀態檢測命令 1.ifconfig命令 ifconfig命令用於獲取網卡配置與網路狀態等信息,格式為“ifconfig [網路設備] [參數]”。 使用ifconfig命令來查看本機當前的網卡配置與網路狀態等信息時,其實主要查看的就是網卡名稱、inet參數後面的IP地址 ...
  • 部署虛擬環境安裝linux系統以及一些常用命令 工具: VmwareWorkStation 12.0——虛擬機軟體(必需) RedHatEnterpriseLinux [RHEL]7.0——紅帽操作系統(必需) vmware虛擬機提供的3種可選的網路模式 橋接模式:相當於在物理主機與虛擬機網卡之間架 ...
  • 認識linux 開源共用精神 低風險 高品質 低成本 更透明 開源軟體的特點 使用自由、修改自由、傳播自由、收費自由以及創建衍生品的自由 常見的開源許可協議 GNU GPL(GNU General Public License,GNU通用公共許可證):只要軟體中包含了遵循GPL協議的產品或代碼,該軟 ...
  • LinuxShell——認識Shell腳本 摘要:本文主要介紹了Shell腳本的一些基本知識。 什麼是Shell腳本 shell腳本是利用shell的功能所寫的一個程式,這個程式是使用純文本文件,將一些shell的語法與指令寫在裡面,然後用正規表示法,管道命令以及數據流重導向等功能,達到所想要的處理 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...