CentOS7做RAID10,并模拟损坏磁盘以及修复

RAID简介
RAID:(Redundant Array of Independent Disk)独立磁盘的冗余阵列
详细介绍可参考刘遄老师的RAID讲解文章

环境:
CentOS7MINI
VMware16.0

准备:
磁盘5块(系统盘1块+4块做阵列)
在这里插入图片描述

mdadm命令用于管理Linux系统中的软件RAID硬盘阵列。
格式:

mdadm [格式] <RAID设备名称> [选项] [成员名称]
参数								作用
-a								检测设备名称
-n								指定设备数量
-l								指定RAID级别
-C								创建
-v								显示过程
-f								模拟设备损坏
-r								移除设备
-Q								查看摘要信息
-D								查看详细信息
-S								停止RAID磁盘阵列

由于CentOS7最小化没有
安装mdadm

[root@localhost ~]yum install -y mdadm

创建RAID10
①创建需要使用mdadm中的参数了。其中-C参数代表创建一个RAID阵列卡;-v参数显示创建的过程,并设置阵列名为/dev/md0;-a yes参数代表自动创建设备文件;-n 4参数代表使用4块硬盘来部署这个RAID磁盘阵列;而-l 10参数表示RAID 10;最后再加上4块硬盘设备的名称就搞定了。

[root@localhost ~]mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512k
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

②然后格式化好新的阵列卡

[root@localhost ~]mkfs.ext4 /dev/md0
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
2621440 inodes, 10477312 blocks
523865 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2157969408
320 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, 2654208,
4096000, 7962624
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

③创建挂载点然后把硬盘设备进行挂载操作。挂载成功后可看到可用空间为40GB。

[root@localhost ~]# mkdir /RAID10
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# df -Th
Filesystem              Type      Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs        18G  913M   17G   6% /
devtmpfs                devtmpfs  908M     0  908M   0% /dev
tmpfs                   tmpfs     914M     0  914M   0% /dev/shm
tmpfs                   tmpfs     914M  8.5M  906M   1% /run
tmpfs                   tmpfs     914M     0  914M   0% /sys/fs/cgroup
/dev/sr0                iso9660   3.9G  3.9G     0 100% /media/cdrom
/dev/sda1               xfs       497M   96M  401M  20% /boot
/dev/md0                ext4       40G   49M   38G   1% /RAID10

④查看md0阵列的详细信息,并将阵列盘永久挂载使其生效

[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 01:39:15 2020
          State : clean
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 17

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# echo "/dev/md0 /RAID10 ext4 defaults 0 0" >> /etc/fstab
[root@localhost ~]# cat /etc/fstab	#查看挂载文件

#
# /etc/fstab
# Created by anaconda on Fri Oct 30 21:03:35 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        1 1
UUID=2999ce12-9dc5-4581-b11c-b0ff63188473 /boot                   xfs     defaults        1 2
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0 /media/cdrom                           iso9660 defaults        0 0
/dev/md0 /RAID10 								ect4 	defaults 		0 0

损坏损坏磁盘阵列及修复
首先在生产环境中,总是避免不了磁盘损坏的情况,比如长时间老化啊,接触不良等等导致硬盘,出现故障,我们就需要用到阵列,既然用到阵列,阵列内某个磁盘损坏了,我们该如何去修复它,这也是作为运维人员的一个技能点,所以,我会模拟一块硬盘损坏,来学习在生产环境中的出现某个硬盘损坏如何去修复,并让生产环境继续工作。

[root@localhost ~]# mdadm /dev/md0 -f /dev/sdb	#-f:模拟磁盘损坏
mdadm: set /dev/sdb faulty in /dev/md0
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:33:03 2020
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 1
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 19

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde

       0       8       16        -      faulty   /dev/sdb				#这里提示有/dev/sdb这块硬盘出现故障了

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

[root@localhost ~]#poweroff				#重启后替换掉损坏的磁盘
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:48:59 2020
          State : clean, degraded
 Active Devices : 3
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 0

         Layout : near=2
     Chunk Size : 512K

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 29

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-swap 253:0    0    2G  0 lvm    [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm    /
sdb               8:16   0   20G  0 disk
sdc               8:32   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdd               8:48   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sde               8:64   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sr0              11:0    1  3.9G  0 rom    /media/cdrom

目前sdb是重新加进去的硬盘,所以我们需要重新添加到新的RAID10内,在此操作前,注意的是,您开机的时候硬盘是直接把RAID10挂载好的,所以需要卸载挂载点后,添加再去重新挂载上去

[root@localhost ~]# umount /RAID10/
[root@localhost ~]# mdadm /dev/md0 -a /dev/sdb
mdadm: added /dev/sdb
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Sun Nov 15 19:50:03 2020
     Raid Level : raid10
     Array Size : 41909248 (39.97 GiB 42.92 GB)
  Used Dev Size : 20954624 (19.98 GiB 21.46 GB)
   Raid Devices : 4
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Mon Nov 16 03:53:14 2020
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 1

         Layout : near=2
     Chunk Size : 512K

 Rebuild Status : 22% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 96c7dce8:0f15d2aa:984c6629:5dd4531a
         Events : 38

    Number   Major   Minor   RaidDevice State
       4       8       16        0      spare rebuilding   /dev/sdb	#再次您会问为什么是这个状态;解释:这是加入阵列加载状态
       1       8       32        1      active sync   /dev/sdc
       2       8       48        2      active sync   /dev/sdd
       3       8       64        3      active sync   /dev/sde
[root@localhost ~]# mount /dev/md0 /RAID10/
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT
sda               8:0    0   20G  0 disk
├─sda1            8:1    0  500M  0 part   /boot
└─sda2            8:2    0 19.5G  0 part
  ├─centos-swap 253:0    0    2G  0 lvm    [SWAP]
  └─centos-root 253:1    0 17.5G  0 lvm    /
sdb               8:16   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdc               8:32   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sdd               8:48   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sde               8:64   0   20G  0 disk
└─md0             9:0    0   40G  0 raid10 /RAID10
sr0              11:0    1  3.9G  0 rom    /media/cdrom

总结

对于我来说,磁盘阵列在Linux上做确实很好用,很方便,但是我不是很推荐直接用系统的方式做阵列,建议在生产环境,最好是做硬RAID,就是服务器的RAID,为什么会提出这个建议呢;因为如果说您在生产环境中,奔溃的不是您的硬盘,而是系统呢?这个阵列还有用吗?虽然说可以更换内核,但是对于我的建议还是希望能够给到大家最好的帮助!

最后感谢的是刘遄老师给予的教材资料,我也是跟着刘遄老师学的教材学的知识,希望像学习的同学跟我一起学习探讨,再次声明,我不是为了谁打广告,我是为了自己的未来而记录自己的学习的经验!谢谢~

<think>好的,用户想了解Linux运维工程师常见的面试问题及准备方法。首先,我需要整理一下常见的面试题目,参考提供的引用内容来确保答案的准确性。 引用[1]提到了文件系统的管理命令,比如mkfs、mount、fsck,这些应该是基础问题。用户可能还会被问到如何挂载文件系统或者修复损坏的文件系统。另外,引用[3]和[4]提到了网络相关的命令,比如tcpdump抓包,这些也很重要。需要包括权限问题、常用选项和保存数据包的方法。 然后,用户可能关心系统管理命令,比如进程管理、日志查看、服务启动停止等。top、ps、journalctl、systemctl这些命令是必考的。需要详细说明每个命令的用途和常见参数。 Shell脚本也是重点,面试官可能会让写简单的脚本,比如备份文件或者监控CPU使用率。需要给出例子,解释关键部分,比如循环和条件判断。 网络配置方面,ifconfig、netstat、ss这些命令的使用,以及防火墙配置(iptables和firewalld)是常见的题目。需要说明如何查看端口监听状态和配置防火墙规则。 安全相关的问题,比如SSH密钥登录、sudo权限配置,这些也是运维工程师必须掌握的。引用[3]提到了严谨和创新精神,可能涉及安全最佳实践,比如禁用root远程登录。 监控工具方面,引用[2]提到了服务器监控软件,可能需要介绍Nagios、Zabbix、Prometheus的特点,比如实时监控、报警机制等。 准备方法方面,用户需要理解原理,多动手实践,模拟面试,关注行业动态。比如使用虚拟机搭建环境,练习排错和脚本编写。 最后,生成的相关问题需要覆盖用户可能进一步想了解的内容,比如系统启动流程、日志分析工具、LVM管理等,这些都是常见的后续问题。</think>### Linux运维工程师常见面试问题及准备方法 #### 一、基础系统管理 1. **Linux文件系统管理** - **常见问题**:如何创建ext4文件系统挂载到指定目录? **答案**:使用`mkfs.ext4 /dev/sdX`创建文件系统,再通过`mount /dev/sdX /mnt/target`挂载。持久化需修改`/etc/fstab`[^1]。 - **性能优化**:如何检查文件系统错误? **答案**:`fsck /dev/sdX`可检查和修复文件系统[^1]。 2. **系统服务管理** - **问题**:如何查看系统日志中的错误信息? **答案**:使用`journalctl -p err`过滤错误日志,或`grep "error" /var/log/syslog`[^3]。 - **服务操作**:重启Nginx服务的命令? **答案**:`systemctl restart nginx`(Systemd系统)或`service nginx restart`(SysVinit系统)。 #### 二、网络与安全 1. **网络抓包与分析** - **问题**:如何实时抓取TCP 80端口的流量? **答案**:`tcpdump -nn tcp port 80`。 - **高级用法**:如何将抓包结果保存到文件? **答案**:添加`-w filename.pcap`选项,例如`tcpdump -w traffic.pcap port 80`[^4]。 2. **防火墙配置** - **问题**:如何用iptables开放80端口? **答案**: ```bash iptables -A INPUT -p tcp --dport 80 -j ACCEPT service iptables save ``` #### 三、脚本与自动化 1. **Shell脚本编写** - **问题**:写一个脚本,备份`/var/log`目录压缩: ```bash #!/bin/bash tar -czf /backup/logs_$(date +%F).tar.gz /var/log ``` - **排错**:如何调试脚本? **答案**:使用`bash -x script.sh`追踪执行过程。 #### 四、监控与性能优化 1. **服务器监控工具** - **问题**:Zabbix和Prometheus的区别? **答案**:Zabbix侧重告警与自动化,Prometheus更适合云原生指标收集[^2]。 - **实战命令**:如何查看实时CPU负载? **答案**:`top`或`htop`,或通过`mpstat -P ALL`查看多核详情。 #### 五、准备方法 1. **理论结合实践** - 使用虚拟机搭建CentOS/Ubuntu环境,模拟磁盘分区、服务部署等操作。 - 练习通过`strace`和`dmesg`分析进程故障。 2. **高频问题梳理** - 重点掌握LVM管理、SSH隧道、RAID配置等进阶知识。 3. **模拟面试** - 针对“如何设计高可用Web架构”等开放性问题,需结合Nginx负载均衡、Keepalived等工具回答。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值