p35Raid及mdadm命令

df -Ph 可以让显示结果更整齐
QQ截图20220225205357.png

写一个脚本提示各种检测

  1. #/bin/bash
  2. cat << EOF
  3. d|D) show disk usage
  4. m|M) show memory usage
  5. s|S) show swap usage
  6. *) quit
  7. EOF
  8. read -p "Your Choise :" choise
  9. case ${choise} in
  10. d|D)
  11. echo "Disk usage:"
  12. df -Ph;;
  13. m|M)
  14. echo "Memory usage:"
  15. free -m |grep "Mem";;
  16. s|S)
  17. echo "Swap usage:"
  18. free -m |grep "Swap";;
  19. *)
  20. echo "Unknow"
  21. exit 9;;
  22. esac

进阶写法
注意while循环一定要有退出条件,不然会一直死循环
这里执行完case选择语句后,会接着执行case语句外的read -p “Again Your Choise:” choise这个语句,当再次输入quit即可退出循环

  1. #/bin/bash
  2. cat << EOF
  3. d|D) show disk usage
  4. m|M) show memory usage
  5. s|S) show swap usage
  6. *) quit
  7. EOF
  8. read -p "Your Choise :" choise
  9. while [ ${choise} != quit ];do
  10. case ${choise} in
  11. d|D)
  12. echo "Disk usage:"
  13. df -Ph;;
  14. m|M)
  15. echo "Memory usage:"
  16. free -m |grep "Mem";;
  17. s|S)
  18. echo "Swap usage:"
  19. free -m |grep "Swap";;
  20. *)
  21. echo "Unknow"
  22. esac
  23. read -p "Again Your Choise:" choise
  24. done

下面是错误写法,会一直死循环。
read -p “Your Choise :” choise因为把这个语句写到了case选择语句里面了

  1. #/bin/bash
  2. cat << EOF
  3. d|D) show disk usage
  4. m|M) show memory usage
  5. s|S) show swap usage
  6. *) quit
  7. EOF
  8. read -p "Your Choise :" choise
  9. while [ ${choise} != quit ];do
  10. case ${choise} in
  11. d|D)
  12. echo "Disk usage:"
  13. df -Ph;;
  14. m|M)
  15. echo "Memory usage:"
  16. free -m |grep "Men";;
  17. s|S)
  18. echo "Swap usage:"
  19. free -m |grep "Swap";;
  20. *)
  21. echo "Unknow;please input again"
  22. read -p "Your Choise :" choise;;
  23. esac
  24. done

脚本颜色显示

QQ截图20220225213545.png

磁盘接口:

IDE总线:133Mbps 1MB=8Mb
SATA: 300Mbps、600Mbps、6Gbps
USB3.0:480Mbps
SCSI:Small Computer System Interface

RAID控制器:把几个硬盘组合起来当做一个阵列使用,并由一个芯片控制
RAID有级别概念,级别仅代表磁盘组织方式不同,没有上下之分
QQ截图20220225220252.png

磁盘镜像技术可以保证数据的可用性,即每个数据都存两份

校验码也可以保证数据的可用性,三个磁盘存储数据,一个磁盘存放校验码
【1+2+3=6,当其中一个盘坏了,用另一个盘的6减去另外盘的数据就可以推断坏掉的磁盘数据】
QQ截图20220225221357.png

先条带后镜像,不利于磁盘坏后修复

QQ截图20220225222051.png

先镜像后条带;有利于磁盘坏后修复

QQ截图20220225221956.png

QQ截图20220225223410.png
QQ截图20220225223500.png

p36

QQ截图20220227104637.png

磁盘阵列现在流行组合方法:SATA、SAS

IDE一个控制线可以连两个盘,一主一从
一个SATA控制器只能连一个盘
SCSI控制器扩展性强,可以连多个盘【因此sCsI也很贵】
QQ截图20220227105331.png

硬RAID可以通过软件模拟,但存在一些缺陷,最好还是不用

md: 可以实现创建软RAID
mdadm:将任何块设备做出RAID
模式化的命令:
创建模式
-C
专用选项:
-l:级别
-n:设备个数
-a{yes|no}:是否自动为其创建设备文件
-c:指定数据块大小,默认64k 设置的话是2^n
-x:指定空闲盘个数
管理模式
—add, —del,—fail,—remove
mdadm /dev/md# —fail /dev/sda7 将md#阵列中的sda7磁盘模拟损坏
监控模式
-F
增长模式
-G
装配模式
-A
查看RAID阵列详细信息
mdadm -D /dev/md0
mdadm -detail /dev/md0

停止阵列:
mdadm -S /dev/md#

将当前RAID信息保存至配置文件,以便以后进行装配:
madmd -D —scan >/etc/mdadm.conf

watch:周期性地执行指定命令,并以全屏方式显示结果
-n # :指定周期长度,单位为秒,默认为2
模式: watch -n # ‘command’

模拟RAID0设备

QQ截图20220227114503.png

模拟RAID1设备

QQ截图20220227114844.png

QQ截图20220227120857.png
条带为 chunk/block的大小

p37

cat /proc/filesystems :查看当前内核所支持文件系统类型

DM:Device Mapper
逻辑设备
RAID,LVM2

DM:LVM2
快照:访问同一个数据的另一个路径【主要是为了实现数据备份,备份的数据是当时那一刻的数据,属于过去时】
多路径:

DM的逻辑分区可以实现动态缩减扩展。

DM的内核架构
QQ截图20220227153426.png

QQ截图20220227160055.png

卷组是物理卷的组合,反应物理卷的大小可以动态扩大减小
因为VG是动态的所以不能简单的作为上层存储文件系统来使用,而必须要在上面创建逻辑卷。

各种卷创建调节命令
QQ截图20220227163031.png

p38

扩展逻辑卷时应该先扩展物理分区,在扩展逻辑分区。因为逻辑分区依赖与物理分区。
缩减逻辑卷时应该先缩减逻辑卷在缩减物理卷。
一、扩展逻辑卷:
lvextend
-L [+] #

resize2fs
resize2fs /PATH/TO/LV
-p 能有多大扩展到多大

QQ截图20220228223729.png

QQ截图20220228225006.png

p39

脚本编程控制结构:
顺序
选择
if
case
循环
for
while
until

  1. while conditiondo
  2. statment
  3. done
  4. #进入循环,条件满足
  5. #退出条件,条件不满足

until循环

用until循环查找hadop用户,用户登录就退出,未登录就继续循环

  1. #/bin/bash
  2. who|grep "hadop" &> /dev/null
  3. RETVAL=$?
  4. until [ $RETVAL -eq 0 ];do
  5. echo "xlw is not login"
  6. sleep 5
  7. who|grep "hadop" &> /dev/null
  8. RETVAL=$?
  9. done
  10. echo "hadop is log in"
  11. #第二种写法,任何时候引用命令状态返回结果时,可以直接把命令放在语句中
  12. until who|grep "hadop" &> /dev/null;do
  13. echo "xlw is not login"
  14. sleep 5
  15. done
  16. echo "hadop is log in"
  17. #进入循环,条件不满足
  18. #退出条件,条件满足

for 循环变体

100以内的整数和

  1. #/bin/bash
  2. declare -i sum=0
  3. for i in `seq 100`;do
  4. let sum=${sum}+${i} #let sum+=${i}
  5. done
  6. echo ${sum}
  7. #变体for循环
  8. declare -i sum=0
  9. for ((i=1;i<101;i++));do
  10. let sum+=${i}
  11. done
  12. echo $sum

QQ截图20220303201902.png

QQ截图20220303202728.png

QQ截图20220303203314.png