Linux基础20 RAID基本概述与实战, LVM概述与实战, 磁盘常见故障,逻辑卷快照

RAID

好处
1.更多的容量
2.得到更多的冗余(数据更安全)
3.得到的更高的性能
数据还是要备份。

RAID的运行方式:
软RAID(了解,,浪费机器性能,不用)
硬RAID(看视频)
https://www.bilibili.com/video/av46656120?from=search&seid=8213679239129642497

 

RAID的级别

#raid0
以 chunk 单位,读写数据,因为读写时都可以并行处理,所以在所有的级别中,RAID 0的速度是最快 的。
但是RAID 0既没有冗余功能,也不具备容错能力,如果一个磁盘(物理)损坏,所有数据都会丢失
#
以最小那块磁盘容量为准。并行写入,读取 80G,100G 可用空间是160G

#raid1
#写两边同时写,速度略下降,读两边都能拿,再拼,读取速度提升
80G,100G
可用空间是160G
#raid4
#如果4快盘,写入是,分3分写入disk0-3,disk4做校验数据。如果一块盘坏了,disk4可用通过另2块盘做恢复
#最多可以坏一块磁盘
使用空间: (n-1)*最小磁盘容量 一块盘做校验,不计入
#RAID5
RAID5和RAID4类似,只是RAID5把RAID4里的校验数据打散,每块盘都会放
读写性能提升,只能坏一块
使用空间: (n-1)*最小磁盘容量

#RAID6
#类似RAID5,但有两块校验值,允许坏2块盘
#RAID10
10表示磁盘先做raid1,后做raid0. 读写性能提升

空间: 所有磁盘容量/2
    RAID0    条带卷,容量最大。单块容量*N,读写最快。没有容错机制。理论是2块或以上硬盘,可以是一块
    RAID1    镜像卷,50%容量,读一般,写特慢。有50%容错机制。只能是两块或2的倍速
    RAID5    检验卷,总容量的三分之二。读写稍快。容错机制,可以损坏三分之一。最低三块
    RAID10    1 0        损失一半。读写快。容错50%。只能四块或四的倍速。

    性能:RAID0==》RAID10==》RAID5==》RAID1
    安全:RAID1==》RAID10==》RAID5==》RAID0
    价格:RAID10==》RAID1==》RAID5==》RAID0

RAID硬盘失效处理--热备和热插拔

 

服务器一般都带raid阵列卡,操作系统之外, 类似bios界面配置。不用软raid

 

RAID实战(硬RAID看视频)

软RAID(模拟,看看效果)
mdadm 安装

[root@web ~]# yum install -y mdadm

mdadm命令常见选项解释:
​
-A      #激活磁盘阵列
-C      #建立一个新阵列
-D      #打印阵列设备的信息
-G      #改变阵列大小或形态
-S      #停止阵列
-r      #移除设备
-l      #设定磁盘阵列的级别
-n      #指定阵列磁盘的数量
-x      #指定阵列中备用盘的数量
-f      #将设备状态定为故障
-a      #添加设备到阵列
-v      #显示详细信息软RAID:通过操作系统实现
RAID0
创建RAID0实验环境:
Raid种类    磁盘    热备盘
Raid0    sdb、sdc

#创建磁盘阵列RAID0
[root@web ~]# mdadm  -C -v /dev/md0 -l 0 -n 2 /dev/sdb /dev/sdc    # -C创建一个阵列,定义名字
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#显示所有阵列信息
[root@web ~]# mdadm -Ds

#查看RAID阵列
[root@web ~]# mdadm  -D /dev/md0    
/dev/md0:
           Version : 1.2
     Creation Time : Thu Jul 18 18:30:52 2019
        Raid Level : raid0
        Array Size : 41908224 (39.97 GiB 42.91 GB)
      Raid Devices : 2
     Total Devices : 2
       Persistence : Superblock is persistent

       Update Time : Thu Jul 18 18:30:52 2019
             State : clean 
    Active Devices : 2
   Working Devices : 2
    Failed Devices : 0
     Spare Devices : 0

        Chunk Size : 512K

Consistency Policy : none

              Name : web:0  (local to host web)
              UUID : be7fa2cc:94484da2:cb10af97:caa583f0
            Events : 0

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc


#把信息写入到配置文件中
[root@web ~]# mdadm  -Ds  >/etc/mdadm.conf


#挂载使用(这里就不分区了, 直接使用)
[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/
RAID1
创建RAID0实验环境:
Raid种类    磁盘    热备盘
Raid1    sdd、sde    sdf

1)创建RAID1,并添加1个热备盘
2)模拟磁盘故障,看备用盘是否会自动顶替故障盘
3)从raid1中移出故障盘


#创建磁盘阵列 
[root@web ~]# mdadm  -C -v  /dev/md1 -l 1 -n 2 -x 1  /dev/sd[e,d,f]     # -x添加热备盘
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
mdadm: size set to 20954112K
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

#查看RAID信息
[root@web ~]# mdadm  -D /dev/md1
/dev/md1:
           Version : 1.2
     Creation Time : Thu Jul 18 18:41:45 2019
        Raid Level : raid1
        Array Size : 20954112 (19.98 GiB 21.46 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 2
     Total Devices : 3
       Persistence : Superblock is persistent

       Update Time : Thu Jul 18 18:44:23 2019
             State : clean, resyncing 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 0
     Spare Devices : 1    # 备用盘

Consistency Policy : resync

     Resync Status : 44% complete    # 两块盘正在同步数据

              Name : web:1  (local to host web)
              UUID : 9d654e3a:12cf017f:eb091033:852f1ea6
            Events : 7

    Number   Major   Minor   RaidDevice State
       0       8       48        0      active sync   /dev/sdd
       1       8       64        1      active sync   /dev/sde

       2       8       80        -      spare   /dev/sdf

#追加到配置文件中
[root@web ~]# mdadm  -Ds >/etc/mdadm.conf


#挂载使用 
[root@web ~]# mkfs.xfs   /dev/md1
meta-data=/dev/md1               isize=512    agcount=4, agsize=1309632 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5238528, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@web ~]# mkdir /raid1
[root@web ~]# mount /dev/md1 /raid1
[root@web ~]# df -h |grep /dev/md1
/dev/md1         20G   33M   20G   1% /raid1
[root@web ~]# cp /etc/services  /raid1


#指定一块盘故障
[root@web ~]# mdadm  -f /dev/md1 /dev/sde

#检查数据有没有丢失
[root@web ~]# ll /raid1
total 656
-rw-r--r--. 1 root root 670293 Jul 18 18:47 services

#移除损坏的盘
[root@web ~]# mdadm  -r  /dev/md1 /dev/sde
mdadm: hot removed /dev/sde from /dev/md1

#添加一块盘
[root@web ~]# mdadm  -a  /dev/md1 /dev/sde
RAID5
创建RAID5实验环境:
Raid种类    磁盘        热备盘
Raid5    sdg、sdh、sdi    sdj

1)使用三块盘创建RAID5, 使用-x添加1个热备盘
2)模拟损坏一块磁盘,然后备用盘自动顶上,只能顶一次
3)在模拟损坏,检测数据是否丢失,如果没有再次模拟损坏.


#创建阵列
[root@web ~]# mdadm  -C -v /dev/md5  -l 5 -n 3 -x 1  /dev/sd[g,h,i,j]
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 20954112K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.

#查看RAID信息 
[root@web ~]# mdadm  -D /dev/md5
/dev/md5:
           Version : 1.2
     Creation Time : Thu Jul 18 18:54:45 2019
        Raid Level : raid5
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 3
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Thu Jul 18 18:56:43 2019
             State : clean, degraded, recovering 
    Active Devices : 2        # 还没同步完成, 等同步完成显示3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 2

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 36% complete

              Name : web:5  (local to host web)
              UUID : 42d49a3d:f3dfcbb4:1c44c59c:90b62a9f
            Events : 6

    Number   Major   Minor   RaidDevice State
       0       8       96        0      active sync   /dev/sdg
       1       8      112        1      active sync   /dev/sdh
       4       8      128        2      spare rebuilding   /dev/sdi    # 同步完成会变成active

       3       8      144        -      spare   /dev/sdj


#将配置信息写入到配置文件中
[root@web ~]# mdadm  -Ds  >/etc/mdadm.conf

#挂载使用 
[root@web ~]# mkfs.xfs   /dev/md5
meta-data=/dev/md5               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  /raid5
[root@web ~]# mount /dev/md5 /raid5
[root@web ~]# cp /etc/services  /raid5
[root@web ~]# ll /raid5
total 656
-rw-r--r--. 1 root root 670293 Jul 18 18:58 services

#模拟一块盘损坏
[root@web ~]# mdadm  -f /dev/md5  /dev/sdh

#移除损坏的盘
[root@web ~]# mdadm  -r  /dev/md5  /dev/sdh

#添加一块盘 
[root@web ~]# mdadm  -a  /dev/md5 /dev/sdh
RAID10
创建RAID10实验环境:
Raid种类        磁盘                        热备盘
Raid10    分区:sdk1,sdk2,sdk3.sdk4

#分区(这里用分区代替4块盘)
[root@web ~]# gdisk  /dev/sdk

[root@web ~]# lsblk /dev/sdk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdk      8:160  0  20G  0 disk 
├─sdk1   8:161  0   5G  0 part 
├─sdk2   8:162  0   5G  0 part 
├─sdk3   8:163  0   5G  0 part 
└─sdk4   8:164  0   5G  0 part

#创建磁盘阵列
[root@web ~]# mdadm  -C -v /dev/md10 -l 10 -n 4 /dev/sdk[1-4]


#查看RAID信息 
[root@web ~]# mdadm  -D /dev/md10

#写入到配置文件中
[root@web ~]# mdadm  -Ds >/etc/mdadm.conf

#挂载使用 
[root@web ~]# mkfs.xfs   /dev/md10
meta-data=/dev/md10              isize=512    agcount=16, agsize=163712 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2618112, imaxpct=25
         =                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@web ~]# mkdir /raid10 
[root@web ~]# mount  /dev/md10  /raid10
[root@web ~]# cp /etc/services   /raid10
[root@web ~]# ll /raid10
total 656
-rw-r--r--. 1 root root 670293 Jul 18 19:12 services

#模拟故障(损坏2块后在损坏,会不让损坏)
[root@web ~]# mdadm  -f  /dev/md10  /dev/sdk3

#移除损坏的盘
[root@web ~]# mdadm  -r /dev/md10  /dev/sdk2
mdadm: hot removed /dev/sdk2 from /dev/md10
[root@web ~]# mdadm  -r /dev/md10  /dev/sdk3
mdadm: hot removed /dev/sdk3 from /dev/md10

#添加一块硬盘
[root@web ~]# mdadm  -a  /dev/md10  /dev/sdk[2,3]
mdadm: added /dev/sdk2
mdadm: added /dev/sdk3
[root@web ~]# mdadm  -D /dev/md10

 

堆硬盘

--------- 操作系统之外,raid

--------- 操作系统之内,lvm

 

LVM介绍

LVM可以弹性的更改LVM的容量

 LVM的名词

物理卷(PV)
卷组(VG)
逻辑卷(LV)
基本单元(PE) 4MB

物理卷(PV):(physical volume),把常规的磁盘设备通过pvcreate命令对其进行初始化,形成了物理卷。其实就是硬盘或分区。(面粉)
​
卷组(VG):(volume group),把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和。或者理解就是由一个或多个PV组成的整体。(面团)
​
逻辑卷(LV):(logical volume),从卷组中划分需要的空间大小出来。用户仅需对其格式化然后即可挂载使用。从VG中切割出的空间用于创建文件系统。(切成馒头)
​
基本单元(PE):(physical extend),分配的逻辑大小的最小单元,默认为4MB的基本块。(假设分配100MB逻辑空间,则需要创建25个PE)

 

实现过程

  • 将设备指定为物理卷
  • 用一个或者多个物理卷来创建一个卷组,物理卷是用固定大小的物理区域(Physical Extent, PE)来定义的
  • 在物理卷上创建的逻辑卷, 是由物理区域(PE)组成
  • 可以在逻辑卷上创建文件系统并挂载

 

LVM实战

1)创建物理卷,将普通磁盘转换为物理卷。
2)创建卷组,将物理卷加入到卷组中。
3)在卷组中划分逻辑卷,然后挂载使用。

#创建分区,做lvm时,分区文件系统最好不要用8300 filesystem,用8e00 linux lvm。不改没事,但是后面做逻辑卷快照可能会有问题

#
下载安装软件包 [root@web ~]# yum install lvm2 -y #将/dev/sdb创建为物理卷 (把分区block device标记成物理卷pv) [root@web ~]# pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created. #创建卷组,并将物理卷加入进去 [root@web ~]# vgcreate lvm_test /dev/sdb #检查 [root@web ~]# vgs [root@web ~]# pvs

#创建一个逻辑卷 [root@web ~]# lvcreate -L 1G -n lv1 lvm_test # -L:多大 -n:LV的名字 最后跟卷组名称
#检查 [root@web ~]# vgs VG #PV #LV #SN Attr VSize VFree lvm_test 1 1 0 wz--n- <20.00g <19.00g # 剩余19g,前面分配了1g出去 [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 #格式化 (逻辑卷格式后即可使用) [root@web ~]# mkfs.xfs /dev/lvm_test/lv1 meta-data=/dev/lvm_test/lv1 isize=512 agcount=4, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=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 log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 #挂载使用 [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 卷组管理,如何扩展卷组大小,如何删除卷组 #将sdc指定为物理卷 [root@web ~]# pvcreate /dev/sdc Physical volume "/dev/sdc" successfully created. #添加到卷组中 [root@web ~]# vgextend lvm_test /dev/sdc Volume group "lvm_test" successfully extended #检查 [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 [root@web ~]# #将逻辑卷移动到sdc上面(因为sdb上有数据,要转到sdc上后,才能去掉逻辑卷中的sdb) [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 # 数据已经移动到sdc上 #缩减卷组大小 [root@web ~]# vgreduce lvm_test /dev/sdb Removed "/dev/sdb" from volume group "lvm_test" #检查 [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 逻辑卷管理,动态的调整逻辑卷大小 添加逻辑卷的大小
  #第一步实现逻辑卷的空间扩展 lvextend -L [+]N[mMgGtT] /dev/VG_NAME/LV_NAME
  #第二步实现文件系统的扩展
    #针对ext
      #resize2fs /dev/VG_NAME/LV_NAME
    #针对
      #xfs xfs_growfs MOUNTPOINT
[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. #检查 [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 #更新新添加的逻辑卷的文件系统 [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
# 如果要永久挂载,/etc/fstab中文件类型还是xfs #按照百分比增加大小 [root@web ~]# lvextend -l +20%FREE /dev/lvm_test/lv1 # -l使用百分比参数添加(写+是增加, 不写就是按指定比例分配) 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. #更新文件系统(增加大小后需要更新文件系统) [root@web ~]# xfs_growfs /dev/lvm_test/lv1 meta-data=/dev/mapper/lvm_test-lv1 isize=512 agcount=8, agsize=65536 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=524288, 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 524288 to 944128 缩减大小 ???? 企业不会去缩减 会直接删除 #首先要卸载 [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 #移除 [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 #检查 [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故障(数据慢了) df -h 查看

环境准备
 先创建一个1G分区,并挂在使用
 
 创建大文件,模拟磁盘空间满
[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
 
 #检查磁盘
 [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

#查找大文件,路径依次往下查找,直到找到大文件为止
[root@web ~]# du  -sh  /test/* 
 
#找到之后,先确认是否可以删除。
rm  -f    

#删除之后,磁盘还是满的,先确认是否有硬链接。也可能是文件被调用,查看并重启对应服务即可

 

inode故障(小文件太多) df -i 查看

[root@web ~]# touch  /test/123
touch: cannot touch ‘/test/123’: No space left on device  
 
#检查磁盘
[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



#解决
#找到存放大量小文件的目录
[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

 

逻辑卷快照

逻辑卷管理器快照

快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移 动到快照区,没有改动的区域则由快照区和文件系统共享

 

逻辑卷快照工作原理

  • 在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  • 当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中
  • 快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据

  1. 如果log_lv 中的文件不做任何修改,则快照空间为空
  2. 修改f1,第一次修改时,将修改前的f1推到快照,后面的修改不管
  3. 删除f2,将f2推送到快照
  4. 新建f3,不会被推送到快照
  5. 使用快照还原,则f1被还原,f2被还原,f3也没有了

由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中。系统恢复的时 候的文件数量不能高于快照区的实际容量

快照特点:

  • 备份速度快,瞬间完成
  • 应用场景是测试环境,不能完全代替备份
  • 快照后,逻辑卷的修改速度会一定有影响

 

实现逻辑卷快照

逻辑卷快照的大小可以小于逻辑卷
快照的大小取决于创建快照时原逻辑卷中的文件的大小

#创建快照 为/dev/vg1/lv1创建大小为500M 的快照
#为逻辑卷创建快照,创建之前要保证 vg 上有足够的空间
#-s 表示快照
#-L 100M 表示大小,大小取决于你要修改多少文件
#-p r 表示该卷只读
[root@ubuntu2204 ~]# lvcreate -n lv1_snapshot -s -L 500M -p r /dev/vg1/lv1

#查看快照
[root@ubuntu2204 ~]# lvs

#把快照挂载
[root@ubuntu2204 ~]# mount /dev/vg1/lv1_snapshot /lv1_snapshot/

#修改源文件,比较快照与源文件不同

#使用快照恢复
#取消挂载快照
[root@ubuntu2204 ~]# uumount /lv1; umount /lv1_snapshot

#从快照中恢复
[root@ubuntu2204 ~]# lvconvert --merge /dev/vg1/lv1_snapshot

#挂载回去  
[root@ubuntu2204 ~]# mount /dev/vg1/lv1 /lv1
#恢复之后快照就没有了,是一次性的
[root@ubuntu2204 ~]# lvs

 

posted @ 2023-05-12 10:13  战斗小人  阅读(160)  评论(0编辑  收藏  举报