Linux学习日志(七)
来源:互联网 发布:华道数据有限公司 编辑:程序博客网 时间:2024/05/18 15:08
RAID
磁盘的性能
1.定位 2.旋转 3.命令队列 4.数据库传输
HBA:基于主机的适配器
RAID:Redundent Array of Inexpensive Disks 廉价磁盘阵列
Independent 独立磁盘阵列
Level:仅用于标识磁盘组合方式的不同,不能取代数据备份
raid0:提高读写性能,没有容错能力。至少需要两块磁盘 100% raid1:至少需要两块硬盘,镜像,硬件容错能力,读性能提升,写性能下降 50% raid4:至少需要三块硬盘,允许一块盘出错,读写性能提升,(n-1)/n raid5: 至少需要三块硬盘,允许一块盘出错,读写性能提升,(n-1)/n raid6: 至少需要四块磁盘,允许两块盘出错。读写性能提升,(n-2)/n raid10:至少需要四块磁盘。允许不同组内个各坏一块盘,读写性能提升,50% raid01: jbod:两个盘结合起来当一个盘用,写完一个盘写另外一个。
md,可以组合任何块设备
命令的配置文件: mdadm,/etc/mdadm.conf
mdadm:模式化的工具
-A Assemble 装配模式-C Create 创建模式 -n #:用于创建RAID设备的个数 -x #: 热备磁盘的个数 -l :指定RAID级别 -a :=yes(自动为创建的RAID设备创建设备文件) md mdp part p 如何创建设备文件 -c:指定块的大小,默认为512KB-F FOLLOW 监控-S 停止RAID-D --detail: 显示阵列详细信息
创建一个大小为12G的RAID0:2*6G,3*4G 4*3G 6*2G
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
watch ‘’
-n #:每个#执行一次指定的命令,单位为s
问题一:mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{1,2}
mdadm: cannot open /dev/sdb1: Device or resource busy
练习:创建一个大小为4G的RAID5,要求直接具有一个空闲盘
bash知识点:while循环和until循环
for循环
for varName in 列表;do 循环体 done
条件测试:
执行条件:命令成功,条件测试成功;否则为失败根据$?,状态返回值
表达式:
[ expreession ] [[ expression ]] test expression
while循环
while 条件测试:do 循环体 done
如何退出?
必须有时刻,条件测试不成功 ? :条件控制变量
练习:求100以内所有正整数的和
sum=0 i=1 while [ $i -le 100 ];do let sum+=$i let i++ done echo $sum
练习:通过键盘提示用户输入字符,将用户输入的小写字母转换为大写,转换之后,再次提醒,再输再转换;再输入quit退出
while [[ "$word" != "quit" ]];do echo $word | tr "a-z" "A-z" read -p "Enter a word again:" word done
until :
bash编程之until循环; until 测试条件;do 循环体 done 条件不满足,则循环;否则,退出
bash编程之组合测试条件深入
逻辑与:多个条件同时满足
[ 条件1 ] && [ 条件2 ] [ 条件1 -a 条件2 ] [[ 条件1 && 条件2 ]] 注意:前两个使用单双中括号都可,但&&不允许用于单个中括号中,所有第三者只能用于双中括号中
逻辑或:多个条件满足一个
[ 条件1 ] || [ 条件2 ] [ 条件1 -o 条件2 ] [[ 条件1 || 条件2 ]] 注意 || 不允许出现在单中括号中
得摩根 定律
!(条件1或者 条件2) = !条件1 并且!条件2 !(条件1且条件2)=!条件1 或者 !条件2
练习
练习:提示用户输入一个用户名,如果存在,显示用户UID和SHELL信息,如果不存在,显示无此用户;显示完成之后,提示用户再次输入,如果是quit则退出
#!/bin/bash # read -p "Enter input name:" username while [[ $username != "quit" ]];do if id $username &>/dev/null;then grep "^$username\>" /etc/passwd | cut -d: -f3,7 else echo "No such user." fi read -p "Enter a user name again(quit to exit):" username done
练习:提供用户输入一个用户名,判断用户是否登录了当前系统;如果没有登录则停止5秒之后再次判断,直到用户登录系统,显示用户来了,而后退出
#!/bin/bash # read -p "Enter a user name :" userName while ! id $userName &> /dev/null;do read -p "Enter a user name again :" userName done who | grep "^$userName" &>/dev/null retVal=$? while [ $retVal -ne 0 ];do sleep 5 who | grep "^$userName" &>/dev/null retVal=$? done echo "$userName is on"
练习:写一个脚本,完成如下任务
1.提示用户输入一个磁盘设备文件路径不存在或不是一个块设备,则提示用户重新输入,知道输入正确为止,或者输入quit以9为退出码结束脚本
2.提示用户”下面的操作会清空磁盘的数据,并提问是否继续”
如果用户给出字符y或yes,则继续,否则,则提供以8为退出码结束脚本
3、将用户指定的磁盘上的分区清空,而后创建两个分区,大小分别为100M和512M
4格式化这两个分区
5将第一个分区挂载至/mnt/boot目录,第二个分区挂载至/mnt/sysroot目录
#!/bin/bash read -p "Enter you dev " devdir umonut /mnt/boot umonut /mnt/sysroot while [[ "$devdir" != "quit" ]];do [ -a $devdir ] && [ -b $devdir ] if [[ $? -eq 0 ]];then read -p "Are you sure[y|yes]: " option if [[ "$option" == "y" || "$option" == "yes" ]];then dd if=/dev/zero of=$devdir bs=512 count=1 &> /dev/null echo -e "n\np\n1\n\n+100M\nn\np\n2\n\n+512M\nw" |fdisk $devdir mke2fs -t ext4 ${devdir}1 mke2fs -t ext4 ${devdir}2 mount ${devdir}1 /mnt/boot mount ${devdir}2 /mnt/sysroot echo "${devdir}1 /mnt/boot ext4 default 0 0" >> /etc/fstab echo "${devdir}2 /mnt/sysroot ext4 default 0 0" >> /etc/fstab exit 7 else exit 8 fi else read -p "Enter you dev again: " devdir fi done
LVM:Logical Volume Manager,将多块设备组合成一个来使用
设备文件
/dev/卷组名/逻辑卷名 /dev/mapper/卷组名-逻辑卷名
物理卷命令命令:pv
pvcreate pvremove psdisplay pvscan pvs pvmove(移动数据) pvcreate 物理卷
卷组的管理命令:vg
vgcreate vgscan vgs vgextend(扩充)、vgremove(删除) vgreduce(移除,缩容)vgcreate -s:pe大小,默认4M
逻辑卷的管理命令:lv
lvcreate lvscan lvs lvextend(扩充)、lvremove(删除) vgreduce(移除,缩容) lvcreate -n:指定名称 -L: 指定大小 -l:%vg|pvs|FREE,打算分配%
逻辑卷扩展的步骤:
1.先确保扩展的大小;并确保所属的卷组有足够的剩余空间 2、扩展物理边界 lvextend -L [+]size /path/to/lv_device 3、扩展逻辑边界 resize2fs /path/to/lv_devive
缩减逻辑卷的步骤:
1、卸载卷,并执行强制检查 e2fsck -f /path/to/lv_devive 2、缩减逻辑边界 resize2fs /path/to/lv_device SIZE 3、缩减物理边界: lvreduce -L [-]size /path/to/lv_device 4、挂载卷
快照卷:
也是逻辑卷的一种,提供过去某一时间的元卷的通道 lvcreate -s -L Size -n name 卷组名 -p r,rw /path/to/lv_devsive -p:访问权限
扩展卷组:
1.准备要添加的物理卷 2 扩展卷组: 添加物理卷至卷组中 vgextend vg_name /path/to/device
缩减卷组:
1.确定要移除的物理卷的总空间大小,要小于VG当前的可用空间大小2.将要移除的物理卷上的所有pe移动至其他PV pvmove /path/to/pv_device3.缩减vg #vgreduce vg_name /path/to/pv/device
练习:
1、创建一个由两个物理卷组成大小为20G的卷组myvg,要求PE大小16M;而后新建 大小为7G逻辑卷mylv1,要求其文件系统为ext4,块大小为2048,且开机能自动挂载至/users;
pvcreate /dev/sdb{5,6},vgcreate -s 16M myvg /dev/sdb{5,6},mke2fs -t ext4 -b 2048 /dev/myvg/mylv1
2、新建用户openstack,其家目录为/users/openstack,而后切换至openstack用户,复制一些文件至其家目录中;
3、缩减mylv1至5G大小;而后切换至openstack用户,确保其数据没有丢失;
e2fsck -f /dev/myvg/mylv1 resize2fs /dev/myvg/mylv1 5G lvreduce -L 5G /dev/myvg/mylv1
4、对mylv1创建快照卷snap-mylv1,并通过其备份数据至/tmp/user.tar.bz2;
lvcreate -s -n snap-mylv1 -L 200M /dev/myvg/mylv1 tar -jcf /tmp/user.tar.bz2 /tmp/*
- Linux学习日志(七)
- Linux学习(七)
- java学习日志generic type(七)
- yii2学习笔记(七)日志
- java学习日志(七)-- 数组Array
- Python学习日志(七)之输入输出
- Linux学习(七)日志、备份和启动管理
- Linux Socket学习(七)
- Linux学习笔记(七)
- Linux Socket学习(七)
- Linux学习笔记(七)
- Linux学习笔记(七)
- Linux学习笔记(七)
- Linux学习笔记(七)
- Linux每日学习(七)
- Linux学习(文件七)
- linux学习笔记(七)
- Linux学习总结(七)
- "奇淫技巧"
- 数组元素的移动(方法优化)
- highcharts的使用
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) easy(上)
- Exercise(15):杨辉三角
- Linux学习日志(七)
- java中并发集合
- 局部敏感哈希Locality Sensitive Hashing归总
- 快餐车之Linux动态库
- Kafka深度解析
- [Nutch]指定LUKE的分词器
- [LeetCode]String to Integer (atoi)
- 自定义控制器切换
- 自己写了一个javaweb网站