p35Raid及mdadm命令
df -Ph 可以让显示结果更整齐
写一个脚本提示各种检测
#/bin/bash
cat << EOF
d|D) show disk usage
m|M) show memory usage
s|S) show swap usage
*) quit
EOF
read -p "Your Choise :" choise
case ${choise} in
d|D)
echo "Disk usage:"
df -Ph;;
m|M)
echo "Memory usage:"
free -m |grep "Mem";;
s|S)
echo "Swap usage:"
free -m |grep "Swap";;
*)
echo "Unknow"
exit 9;;
esac
进阶写法
注意while循环一定要有退出条件,不然会一直死循环
这里执行完case选择语句后,会接着执行case语句外的read -p “Again Your Choise:” choise这个语句,当再次输入quit即可退出循环
#/bin/bash
cat << EOF
d|D) show disk usage
m|M) show memory usage
s|S) show swap usage
*) quit
EOF
read -p "Your Choise :" choise
while [ ${choise} != quit ];do
case ${choise} in
d|D)
echo "Disk usage:"
df -Ph;;
m|M)
echo "Memory usage:"
free -m |grep "Mem";;
s|S)
echo "Swap usage:"
free -m |grep "Swap";;
*)
echo "Unknow"
esac
read -p "Again Your Choise:" choise
done
下面是错误写法,会一直死循环。
read -p “Your Choise :” choise因为把这个语句写到了case选择语句里面了
#/bin/bash
cat << EOF
d|D) show disk usage
m|M) show memory usage
s|S) show swap usage
*) quit
EOF
read -p "Your Choise :" choise
while [ ${choise} != quit ];do
case ${choise} in
d|D)
echo "Disk usage:"
df -Ph;;
m|M)
echo "Memory usage:"
free -m |grep "Men";;
s|S)
echo "Swap usage:"
free -m |grep "Swap";;
*)
echo "Unknow;please input again"
read -p "Your Choise :" choise;;
esac
done
脚本颜色显示
磁盘接口:
IDE总线:133Mbps 1MB=8Mb
SATA: 300Mbps、600Mbps、6Gbps
USB3.0:480Mbps
SCSI:Small Computer System Interface
RAID控制器:把几个硬盘组合起来当做一个阵列使用,并由一个芯片控制
RAID有级别概念,级别仅代表磁盘组织方式不同,没有上下之分
磁盘镜像技术可以保证数据的可用性,即每个数据都存两份
校验码也可以保证数据的可用性,三个磁盘存储数据,一个磁盘存放校验码
【1+2+3=6,当其中一个盘坏了,用另一个盘的6减去另外盘的数据就可以推断坏掉的磁盘数据】
先条带后镜像,不利于磁盘坏后修复
先镜像后条带;有利于磁盘坏后修复
p36
磁盘阵列现在流行组合方法:SATA、SAS
IDE一个控制线可以连两个盘,一主一从
一个SATA控制器只能连一个盘
SCSI控制器扩展性强,可以连多个盘【因此sCsI也很贵】
硬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设备
模拟RAID1设备
条带为 chunk/block的大小
p37
cat /proc/filesystems :查看当前内核所支持文件系统类型
DM:Device Mapper
逻辑设备
RAID,LVM2
DM:LVM2
快照:访问同一个数据的另一个路径【主要是为了实现数据备份,备份的数据是当时那一刻的数据,属于过去时】
多路径:
DM的逻辑分区可以实现动态缩减扩展。
DM的内核架构
卷组是物理卷的组合,反应物理卷的大小可以动态扩大减小
因为VG是动态的所以不能简单的作为上层存储文件系统来使用,而必须要在上面创建逻辑卷。
各种卷创建调节命令
p38
扩展逻辑卷时应该先扩展物理分区,在扩展逻辑分区。因为逻辑分区依赖与物理分区。
缩减逻辑卷时应该先缩减逻辑卷在缩减物理卷。
一、扩展逻辑卷:
lvextend
-L [+] #
resize2fs
resize2fs /PATH/TO/LV
-p 能有多大扩展到多大
p39
脚本编程控制结构:
顺序
选择
if
case
循环
for
while
until
while condition;do
statment
done
#进入循环,条件满足
#退出条件,条件不满足
until循环
用until循环查找hadop用户,用户登录就退出,未登录就继续循环
#/bin/bash
who|grep "hadop" &> /dev/null
RETVAL=$?
until [ $RETVAL -eq 0 ];do
echo "xlw is not login"
sleep 5
who|grep "hadop" &> /dev/null
RETVAL=$?
done
echo "hadop is log in"
#第二种写法,任何时候引用命令状态返回结果时,可以直接把命令放在语句中
until who|grep "hadop" &> /dev/null;do
echo "xlw is not login"
sleep 5
done
echo "hadop is log in"
#进入循环,条件不满足
#退出条件,条件满足
for 循环变体
100以内的整数和
#/bin/bash
declare -i sum=0
for i in `seq 100`;do
let sum=${sum}+${i} #let sum+=${i}
done
echo ${sum}
#变体for循环
declare -i sum=0
for ((i=1;i<101;i++));do
let sum+=${i}
done
echo $sum