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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...