第3章 Linux系统与服务构建运维
实验1 服务器制作RAID磁盘阵列并管理
【案例目标】
(1)掌握RAID的构建,挂载和使用。
(2)掌握RAID的基础运维。
【案例分析】
1. 规划节点
主机规划,见表1
表1 规划节点
2. 基础准备
线上平台提供的系统为CentOS 7.2操作系统,配置为2VCPU/4G内存/40G硬盘,外加20 GB扩展硬盘/dev/vdb。本实验为Raid磁盘阵列实验,使用/dev/vdb进行分区,使用分区模拟硬盘进行实操。YUM源使用project3.tar.gz压缩包内提供的mdadm_yum文件夹。
(1)使用wget命令下载对应资源包到线上平台虚机中,用于后续实验,命令及地址如下,下载后的压缩包会在当前路径即/root目录:
[root@bcc-onlinestu02-553554-5hiap~]# wget http://192.168.16.10:8080/download/project3.tar.gz
[root@bcc-onlinestu02-553554-5hiap ~]# ls
project3.tar.gz
(2)利用tar -zxvf命令对下载好的资源包进行解压,解压后为一个project3的目录,进入目录后可看到里面所包含的资源。
[root@bcc-onlinestu02-553554-5hiap ~]# tar -zxvf project3.tar.gz
[root@bcc-onlinestu02-553554-5hiap ~]# ls
project3 project3.tar.gz
[root@bcc-onlinestu02-553554-5hiap ~]# cd project3
[root@bcc-onlinestu02-553554-5hiap project3]# ls
CentOS-7-x86_64-DVD-1511.iso cirros-0.3.3-x86_64-disk.img gpmall_single kvm_package mdadm_yum
基础环境的介绍、软件包的下载与解压,均已介绍完毕。若觉得线上虚拟机的主机名过长(bcc-onlinestu02-553554-5hiap),影响使用,可以自行修改主机名,使用命令hostnamectl set-hostname xxx(xxx为主机名),修改完主机名并刷新页面即可。
【案例实施】
1. 创建raid
(1)创建raid 0
首先使用lsblk命令查看当前虚拟机的硬盘情况,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 20G 0 disk
可以看见,当前存在一个硬盘vdb,大小为20 GB,接下来使用这个硬盘完成实验。
利用fdisk磁盘分区命令,对vdb这块磁盘进行分区操作,新建2个磁盘分区,每个大小为5 GB。用这2个5 GB的分区来模拟1个10 GB的硬盘。
[root@bcc-onlinestu02-553554-5hiap ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x04dc8119.
Command (m for help): n //输入n为新建一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p //设置分区类型,p代表创建主分区,e代表扩展分区
Partition number (1-4, default 1): 1 //设置分区号,可默认直接按Enter键
First sector (2048-41943039, default 2048): 2048 //设置起始字节数,可默认直接按Enter键
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +5G //设置分区大小
Partition 1 of type Linux and of size 5 GiB is set
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (10487808-41943039, default 10487808): 10487808
Last sector, +sectors or +size{K,M,G} (10487808-41943039, default 41943039): +5G
Partition 2 of type Linux and of size 5 GiB is set
Command (m for help): p //此处为查看创建后的分区
Disk /dev/vdb: 21.5 GB, 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
Disk label type: dos
Disk identifier: 0x04dc8119
Device Boot Start End Blocks Id System
/dev/vdb1 2048 10487807 5242880 83 Linux
/dev/vdb2 10487808 20973567 5242880 83 Linux
Command (m for help): w //对创建后的分区进行保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
使用project3文件内提供的mdadm_yum文件夹配置本地YUM安装源,示例代码如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mv /etc/yum.repos.d/* /media/
[root@bcc-onlinestu02-553554-5hiap ~]# vi /etc/yum.repos.d/local.repo
[mdadm]
name=mdadm
baseurl=file:///root/project3/mdadm_yum/
gpgcheck=0
enabled=1
安装工具mdadm,使用已有YUM源进行安装,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# yum install -y mdadm
创建一个RAID 0设备:这里使用/dev/vdb1和/dev/vdb2做实验。
将/dev/vdb1和/dev/vdb2建立RAID等级为RAID 0的md0(设备名)。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/vdb1 /dev/vdb2
mdadm: chunk size defaults to 512K
mdadm: Fail create md0 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
命令解析:
-C v:创建设备,并显示信息。
-l 0:RAID的等级为RAID 0。
-n 2:创建RAID的设备为2块。
查看系统上的RAID,命令及返回结果如下。
[root@bcc-onlinestu02-553554-5hiap ~]# cat /proc/mdstat
Personalities : [raid0]
md0 : active raid0 vdb2[1] vdb1[0]
10475520 blocks super 1.2 512k chunks
unused devices: <none>
查看RAID详细信息,命令及返回结果如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=bcc-onlinestu02-553554-5hiap:0 UUID=f4f9af83:15a773a4:6f0c9727:09d145ce
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Mon Mar 9 10:43:06 2020
Raid Level : raid0
Array Size : 10475520 (9.99 GiB 10.73 GB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Mon Mar 9 10:43:06 2020
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
Chunk Size : 512K
Consistency Policy : unknown
Name : bcc-onlinestu02-553554-5hiap:0 (local to host bcc-onlinestu02-553554-5hiap)
UUID : f4f9af83:15a773a4:6f0c9727:09d145ce
Events : 0
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
生成配置文件mdadm.conf,命令如下。
[root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
对创建的RAID进行文件系统创建并挂载,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mkfs.xfs /dev/md0
log stripe unit (524288 bytes) is too large (maximum is 256KiB)
log stripe unit adjusted to 32KiB
meta-data=/dev/md0 isize=256 agcount=16, agsize=163712 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=2618880, imaxpct=25
= sunit=128 swidth=256 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
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@bcc-onlinestu02-553554-5hiap ~]# mkdir /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mount /dev/md0 /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# df -Th /raid0/
Filesystem Type Size Used Avail Use% Mounted on
/dev/md0 xfs 10G 33M 10G 1% /raid0
设置成开机自动挂载,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# blkid /dev/md0
/dev/md0: UUID="577644eb-8974-4e85-bb5d-29e502a8ee66" TYPE="xfs"
[root@bcc-onlinestu02-553554-5hiap~]# echo "UUID="577644eb-8974-4e85-bb5d-29e502a8ee66 /raid0 xfs defaults 0 0" >> /etc/fstab
删除RAID操作,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# umount /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0
[root@bcc-onlinestu02-553554-5hiap ~]# rm -rf /etc/mdadm.conf
[root@bcc-onlinestu02-553554-5hiap ~]# rm -rf /raid0/
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm --zero-superblock /dev/vdb1
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm --zero-superblock /dev/vdb2
[root@bcc-onlinestu02-553554-5hiap ~]# vi /etc/fstab
UUID="577644eb-8974-4e85-bb5d-29e502a8ee66 /raid0 xfs defaults 0 0 //删除此行
删除完成后进行查看,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 40G 0 disk
└─vda1 253:1 0 40G 0 part /
vdb 253:16 0 20G 0 disk
├─vdb1 253:17 0 5G 0 part //vdb1、vdb2分区以还原成制作raid前状态
└─vdb2 253:18 0 5G 0 part
2. 运维操作
(1)raid 5运维操作
利用fdisk磁盘分区命令,继续对vdb这块磁盘剩余空间进行分区操作,新建2个磁盘主分区,每个大小为5 GB。用3个5 GB的分区来模拟raid 5,加一个热备盘。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -Cv /dev/md5 -l5 -n3 /dev/vdb1 /dev/vdb2 /dev/vdb3 --spare-devices=1 /dev/vdb4
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 5236736K
mdadm: Fail create md5 when using /sys/module/md_mod/parameters/new_array
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.
查看RAID的详细信息,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:09:07 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 4
Failed Devices : 0
Spare Devices : 2
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Rebuild Status : 31% complete
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 6
Number Major Minor RaidDevice State
0 253 17 0 active sync /dev/vdb1
1 253 18 1 active sync /dev/vdb2
4 253 19 2 spare rebuilding /dev/vdb3
3 253 20 - spare /dev/vdb4
(2)模拟硬盘故障
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -f /dev/md5 /dev/vdb1
mdadm: set /dev/vdb1 faulty in /dev/md5
查看RAID的详细信息,命令如下。
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:12:20 2020
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Rebuild Status : 23% complete
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 23
Number Major Minor RaidDevice State
3 253 20 0 spare rebuilding /dev/vdb4
1 253 18 1 active sync /dev/vdb2
4 253 19 2 active sync /dev/vdb3
0 253 17 - faulty /dev/vdb1
从以上结果可以发现原来的热备盘/dev/vdb4正在参与RAID 5的重建,而原来的/dev/vdb1变成了坏盘。
热移除故障盘,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -r /dev/md5 /dev/vdb1
mdadm: hot removed /dev/vdb1 from /dev/md5
查看RAID的详细信息,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mdadm -D /dev/md5
/dev/md5:
Version : 1.2
Creation Time : Mon Mar 9 11:08:14 2020
Raid Level : raid5
Array Size : 10473472 (9.99 GiB 10.72 GB)
Used Dev Size : 5236736 (4.99 GiB 5.36 GB)
Raid Devices : 3
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Mon Mar 9 11:14:44 2020
State : clean
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Consistency Policy : unknown
Name : bcc-onlinestu02-553554-5hiap:5 (local to host bcc-onlinestu02-553554-5hiap)
UUID : 6a66ae76:ba5f0310:615e8829:2bcc7fdc
Events : 38
Number Major Minor RaidDevice State
3 253 20 0 active sync /dev/vdb4
1 253 18 1 active sync /dev/vdb2
4 253 19 2 active sync /dev/vdb3
格式化RAID并进行挂载,命令如下:
[root@bcc-onlinestu02-553554-5hiap ~]# mkfs.ext4 /dev/md5
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
655360 inodes, 2618368 blocks
130918 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@bcc-onlinestu02-553554-5hiap ~]# mount /dev/md5 /mnt/
[root@bcc-onlinestu02-553554-5hiap ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 11G 30G 26% /
devtmpfs 2.0G 0 2.0G 0% /dev
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 2.0G 17M 2.0G 1% /run
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/md5 9.8G 37M 9.2G 1% /mnt