学习Linux的第十二天( 磁盘阵列+备份盘、损坏磁盘阵列及修复、 **磁盘管理**)

损坏磁盘阵列及修复
在确认有一块物理硬盘设备出现损坏而不能继续正常使用后,应该使用mdadm命令将其移除,然后查看RAID磁盘阵列的状态,可以发现状态已经改变。

[root@rhel8-server RAID]# mdadm /dev/md0    -f   /dev/nvme0n3    

首先我们手动损坏一块硬盘
mdadm: set /dev/nvme0n3 faulty in /dev/md0

[root@rhel8-server RAID]# mdadm -D  /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Sat Jan 15 22:41:06 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Jan 16 00:32:30 2022
             State : clean, degraded 
    Active Devices : 3
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 0

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

              Name : rhel8-server:0  (local to host rhel8-server)
              UUID : 9fd06c28:af2e0d36:eb1a09bb:9fc11b9b
            Events : 23

    Number   Major   Minor   RaidDevice State
       0     259        3        0      active sync set-A   /dev/nvme0n2
       -       0        0        1      removed
       2     259        5        2      active sync set-A   /dev/nvme0n4
       3     259        6        3      active sync set-B   /dev/nvme0n5

       1     259        4        -      faulty   /dev/nvme0n3

在RAID 10级别的磁盘阵列中,当RAID 1磁盘阵列中存在一个故障盘时并不影响RAID 10磁盘阵列的使用。当购买了新的硬盘设备后再使用mdadm命令来予以替换即可,在此期间我们可以在/RAID目录中正常地创建或删除文件。由于我们是在虚拟机中模拟硬盘,所以先重启系统,然后再把新的硬盘添加到RAID磁盘阵列中。

[root@rhel8-server ~]# mdadm /dev/md0    -a     /dev/nvme0n3    添加新的磁盘
mdadm: added /dev/nvme0n3
[root@rhel8-server ~]# mdadm  -D  /dev/md0
/dev/md0:
           Version : 1.2
     Creation Time : Sat Jan 15 22:41:06 2022
        Raid Level : raid10
        Array Size : 41908224 (39.97 GiB 42.91 GB)
     Used Dev Size : 20954112 (19.98 GiB 21.46 GB)
      Raid Devices : 4
     Total Devices : 4
       Persistence : Superblock is persistent

       Update Time : Sun Jan 16 00:38:13 2022
             State : clean, degraded, recovering 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : near=2
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 20% complete

              Name : rhel8-server:0  (local to host rhel8-server)
              UUID : 9fd06c28:af2e0d36:eb1a09bb:9fc11b9b
            Events : 34

    Number   Major   Minor   RaidDevice State
       0     259        3        0      active sync set-A   /dev/nvme0n2
       4     259        4        1      spare rebuilding   /dev/nvme0n3
       2     259        5        2      active sync set-A   /dev/nvme0n4
       3     259        6        3      active sync set-B   /dev/nvme0n5

此时发现新添加的硬盘正在重构 ,最后咱们可以 mount -a 来把刚刚的挂载挂上去

磁盘阵列+备份盘
为了避免多个实验之间相互发生冲突,我们需要保证每个实验的相对独立性,为此需要大家自行将虚拟机还原到初始状态。
部署RAID 5磁盘阵列时,至少需要用到3块硬盘,还需要再加一块备份硬盘,所以总计需要在虚拟机中模拟4块硬盘设备
现在创建一个RAID 5磁盘阵列+备份盘。在下面的命令中,参数-n 3代表创建这个RAID 5磁盘阵列所需的硬盘数,参数-l 5代表RAID的级别,而参数-x 1则代表有一块备份盘。当查看/dev/md0(即RAID 5磁盘阵列的名称)磁盘阵列的时候就能看到有一块备份盘在等待中了。

[root@Rhel8-server ~]# mdadm -Cv   /dev/md0   -n 3  -l 5  -x 1   /dev/nvme0n2    /dev/nvme0n3 /dev/nvme0n4 /dev/nvme0n5 
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/md0 started.

[root@Rhel8-server ~]# mdadm -D  /dev/md0    此时我们查看状态  发现有一块备份盘
/dev/md0:
           Version : 1.2
     Creation Time : Sun Jan 16 00:49:59 2022
        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 : Sun Jan 16 00:51:43 2022
             State : clean 
    Active Devices : 3
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

              Name : Rhel8-server:0  (local to host Rhel8-server)
              UUID : 979697a4:91ab01f9:0c473946:eae30a37
            Events : 18

    Number   Major   Minor   RaidDevice State
       0     259        3        0      active sync   /dev/nvme0n2
       1     259        4        1      active sync   /dev/nvme0n3
       4     259        5        2      active sync   /dev/nvme0n4

       3     259        6        -      spare   /dev/nvme0n5



[root@Rhel8-server ~]# mkfs.ext4 /dev/md0 
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 10477056 4k blocks and 2621440 inodes
Filesystem UUID: 49cb7391-3773-4b16-b440-05e58bc8590f
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
	4096000, 7962624

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (65536 blocks): done
Writing superblocks and filesystem accounting information: done   

[root@Rhel8-server ~]# mkdir /RAID
[root@Rhel8-server ~]# echo "/dev/md0   /RAID    ext4    defaults   0   0"   >> /etc/fstab 
[root@Rhel8-server ~]# cat  /etc/fstab 
[root@Rhel8-server ~]# mount  -a       

[root@Rhel8-server ~]# mdadm   /dev/md0   -f    /dev/nvme0n3    手动损坏一块硬盘
mdadm: set /dev/nvme0n3 faulty in /dev/md0
[root@Rhel8-server ~]# mdadm   -D  /dev/md0 
/dev/md0:
           Version : 1.2
     Creation Time : Sun Jan 16 00:49:59 2022
        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 : Sun Jan 16 01:02:49 2022
             State : clean, degraded, recovering 
    Active Devices : 2
   Working Devices : 3
    Failed Devices : 1
     Spare Devices : 1

            Layout : left-symmetric
        Chunk Size : 512K

Consistency Policy : resync

    Rebuild Status : 10% complete

              Name : Rhel8-server:0  (local to host Rhel8-server)
              UUID : 979697a4:91ab01f9:0c473946:eae30a37
            Events : 24

    Number   Major   Minor   RaidDevice State
       0     259        3        0      active sync   /dev/nvme0n2
       3     259        6        1      spare rebuilding   /dev/nvme0n5
       4     259        5        2      active sync   /dev/nvme0n4

       1     259        4        -      faulty   /dev/nvme0n3

备份硬盘自动顶上 开始重构。

磁盘管理
分区: 将磁盘划分为多个逻辑上的存储单元,这些单元称之为分区,对不同的分区,执行不同的功能
为了让系统能够识别和管理物理设备上的不同分区,需要在物理设备前加上一些数据用于记录分区的情况,这些数据就是分区表数据,目前分区表有两种主流的格式:

MBR
分区类型: 主分区 扩展分区 逻辑分区
限制:最多只有四个主分区,而且硬盘最大是2TB
管理的硬盘大小不能超过2T
有主分区和扩展分区两种,不管是哪种分区,总数不能超过4个分区
扩展分区内部可以逻辑上划分多个区域,但是在分区表中都算在一个分区内
如果作为系统盘,必须要设置一个激活分区,用于存放系统的引导文件
在这里插入图片描述
GPT:提供使用全局唯一的GUID来识别磁盘和分区
提供分区表备份功能,主GPT位于磁盘头部,备份GPT位于磁盘尾部
限制:最多128个分区 磁盘最大8ZIB

分区工具 : fdisk(适合MBR) gdisk (适合GPT) parted (全适合)

实验1使用parted来做磁盘分区
首先从vmware加入一块nvme的硬盘到虚拟机上

[root@192 ~]# lsblk     首先查看增加的这块硬盘的名称
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  6.6G  0 rom  /run/media/root/RHEL-8-0-0-BaseOS-x86_64
nvme0n1       259:0    0   20G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2       259:3    0   20G  0 disk 

通过命令查看,硬盘已经存在 名字叫nvme0n2

使用分区工具parted
parted的操作都是实时生效的,小心使用 !!!!
实验1使用parted来做磁盘分区
首先从VMware加入一块nvme的磁盘到rhel虚拟机上

[root@example ~]# lsblk 
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sr0            11:0    1  6.6G  0 rom  /run/media/root/RHEL-8-0-0-BaseOS-x86_64
nvme0n1       259:0    0   20G  0 disk 
├─nvme0n1p1   259:1    0    1G  0 part /boot
└─nvme0n1p2   259:2    0   19G  0 part 
  ├─rhel-root 253:0    0   17G  0 lvm  /
  └─rhel-swap 253:1    0    2G  0 lvm  [SWAP]
nvme0n2       259:3    0   20G  0 disk 

通过命令查看,磁盘已经存在 名字叫nvme0n2
注意磁盘的位置在/dev/目录下

使用分区工具parted

[root@example dev]# parted /dev/nvme0n2 
GNU Parted 3.2
Using /dev/nvme0n2
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) help                                                             
  align-check TYPE N                        check partition N for TYPE(min|opt) alignment
  help [COMMAND]                           print general help, or help on COMMAND
  mklabel,mktable LABEL-TYPE               create a new disklabel (partition table)
  mkpart PART-TYPE [FS-TYPE] START END     make a partition
  name NUMBER NAME                         name partition NUMBER as NAME
print [devices|free|list,all|NUMBER]     display the partition table, available devices, free space, all found partitions, or a particular partition
quit                                     exit program
rescue START END                         rescue a lost partition near START and END
resizepart NUMBER END                    resize partition NUMBER
rm NUMBER                                delete partition NUMBER
select DEVICE                            choose the device to edit
disk_set FLAG STATE                      change the FLAG on selected device
disk_toggle [FLAG]                       toggle the state of FLAG on selected device
set NUMBER FLAG STATE                    change the FLAG on partition NUMBER
toggle [NUMBER [FLAG]]                   toggle the state of FLAG on partition NUMBER
unit UNIT                                set the default unit to UNIT
version                            display the version number and copyright information of GNU Parted
首先因为我们这块磁盘没有定义磁盘类型
(parted) print                                                            
Error: /dev/nvme0n2: unrecognised disk label
Model: NVMe Device (nvme)                                                 
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
磁盘报错,因为没有选择磁盘类型  
(parted) mklabel   
New disk label type? msdos  使用mklabel,把这块磁盘类型变成msdos(MBR) 或者gpt
(parted) print                                                            
Model: NVMe Device (nvme)
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start  End  Size  Type  File system  Flags

此时我们已经选好了磁盘类型,print可以查看磁盘的相关配置,接下来可以开始做分区
(parted) mkpart                                                                    
Partition type?  primary/extended? primary                                
File system type?  [ext2]? xfs                                            
Start? 1M                                                                 
End? 2048M 




检查分区是否完成
(parted) print                                                            
Model: NVMe Device (nvme)
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2048MB  2047MB  primary  xfs          lba

接着可以创建第二块磁盘

(parted) mkpart 
Partition type?  primary/extended? primary                                
File system type?  [ext2]? ext2                                           
Start? 2049M                                                              
End? 10241M
(parted) print                                                            
Model: NVMe Device (nvme)
Disk /dev/nvme0n2: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system  Flags
 1      1049kB  2048MB  2047MB  primary
 2      2049MB  10.2GB  8193MB  primary  ext2         lba

如何删除磁盘
rm  Number  即可直接把一块分区删除
rm 1
rm 2

quit退出  

关于parted操作命令:
cp [FROM-DEVICE] FROM-MINOR TO-MINOR #将文件系统复制到另一个分区
help [COMMAND] #打印通用求助信息,或关于 COMMAND 的信息
mklabel 标签类型 #创建新的磁盘标签 (分区表)
mkfs MINOR 文件系统类型 #在 MINOR 创建类型为“文件系统类型”的文件系统
mkpart 分区类型 [文件系统类型] 起始点 终止点 #创建一个分区
mkpartfs 分区类型 文件系统类型 起始点 终止点 #创建一个带有文件系统的分区
move MINOR 起始点 终止点 #移动编号为 MINOR 的分区
name MINOR 名称 #将编号为 MINOR 的分区命名为“名称”
print [MINOR] #打印分区表,或者分区
quit #退出程序
rescue 起始点 终止点 #挽救临近“起始点”、“终止点”的遗失的分区
resize MINOR 起始点 终止点 #改变位于编号为 MINOR 的分区中文件系统的大小
rm MINOR #删除编号为 MINOR 的分区
select 设备 #选择要编辑的设备
set MINOR 标志 状态 #改变编号为 MINOR 的分区的标志

实验2使用fdisk来做磁盘分区
fdisk不是实时的,最后一定要输入w命令保存,所以Be careful before using the write command。
首先可以fdisk -l 查看所有磁盘的状态

[root@example dev]# fdisk /dev/nvme0n2    使用fdisk来创建磁盘

Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.


Command (m for help): m               输入m来获取命令帮助

Help:

  DOS (MBR)
   a   toggle a bootable flag
   b   edit nested BSD disklabel
   c   toggle the dos compatibility flag

  Generic
   d   delete a partition
   F   list free unpartitioned space
   l   list known partition types
   n   add a new partition
   p   print the partition table
   t   change a partition type
   v   verify the partition table
   i   print information about a partition

  Misc
   m   print this menu
   u   change display/entry units
   x   extra functionality (experts only)

  Script
   I   load disk layout from sfdisk script file
   O   dump disk layout to sfdisk script file

  Save & Exit
   w   write table to disk and exit
   q   quit without saving changes

  Create a new label
   g   create a new empty GPT partition table
   G   create a new empty SGI (IRIX) partition table
   o   create a new empty DOS partition table
   s   create a new empty Sun partition table

首先要查看一下目前这块磁盘的分区
Command (m for help): p 
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba92ef52

接着开始创建分区
Command (m for help): n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):      //这边直接默认,就是从起始位置开始的
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943039, default 41943039): +2G
//这边可以使用+大小的方式,不用计算结束位置

Created a new partition 1 of type 'Linux' and of size 2 GiB.
//出现这句话表示创建成功

检查分区是否创建成功
Command (m for help): p
Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba92ef52

Device         Boot Start     End Sectors Size Id Type
/dev/nvme0n2p1       2048 4196351 4194304   2G 83 Linux

分区1已结创建成功,就下来创建一个10G的主分区2



Command (m for help): n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (4196352-41943039, default 4196352): 
Last sector, +sectors or +size{K,M,G,T,P} (4196352-41943039, default 41943039): +10G

Created a new partition 2 of type 'Linux' and of size 10 GiB.

Command (m for help): p

Disk /dev/nvme0n2: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xba92ef52

Device         Boot   Start      End  Sectors Size Id Type
/dev/nvme0n2p1         2048  4196351  4194304   2G 83 Linux
/dev/nvme0n2p2      4196352 25167871 20971520  10G 83 Linux

分区2也创建成功

分区的删除:
Command (m for help): d
Partition number (1,2, default 2): 1

Partition 1 has been deleted.

Command (m for help): d
Selected partition 2
Partition 2 has been deleted.

注意:fdisk是不会把分区直接做成文件系统的,fdisk做出来的分区需要手动做成文件系统

[root@192 ~]# mkfs.ext4   /dev/nvme0n2p1
mke2fs 1.44.3 (10-July-2018)
Creating filesystem with 1310720 4k blocks and 327680 inodes
Filesystem UUID: a9ee1dee-0997-497f-8684-8b218dcf42e0
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

我们也可以修改一个分区的文件系统(格式化命令)
注意:里面所有内容全都没了
[root@192 ~]# mkfs.xfs -f  /dev/nvme0n2p1 
meta-data=/dev/nvme0n2p1         isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=1310720, 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值