欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

RAID&LVM有关磁盘的故障

程序员文章站 2022-05-14 16:19:57
[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&LVM有关磁盘的故障

RAID&LVM有关磁盘的故障

  • 软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&LVM有关磁盘的故障

注意: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