您的位置:首页 > 运维架构 > Linux

[作业] 马哥2016全新Linux+Python高端运维班第七周作业

2016-09-20 16:38 666 查看
1、创建一个10G分区,并格式为ext4文件系统;

# fdisk /dev/sdb


(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;

# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1


(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
# echo "LABEL='MYDATA' /data/mydataext4 defaults,acl,noatime 0 0" >> /etc/fstab
# mount -a


2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
# fdisk /dev/sdb
# mkswap -L SWAP /dev/sdb2
# swapon /dev/sdb2
3、写一个脚本
(1)、获取并列出当前系统上的所有磁盘设备;
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
# fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d' ' -f2)


4、总结RAID的各个级别及其组合方式和性能的不同;

RAID-0:
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2+

RAID-1:
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2+

RAID-5:
读、写性能提升
可用空间:(N-1)*min(S1,S2,...)
有容错能力:1块磁盘
最少磁盘数:3, 3+

RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:2块磁盘
最少磁盘数:4, 4+

RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块;
最少磁盘数:4, 4+

5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;

# mdadm -Cv /dev/md0 -n 2 -x 1 -l 1 -c 128 /dev/sdb /dev/sdc /dev/sdd -a yes
# mkfs -t ext4 /dev/md0


6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

# mdadm -Cv /dev/md1 -n 3  -l 5 -c 256 /dev/sde /dev/sdf /dev/sdg -a yes
# mkfs -t ext4 /dev/md1
# echo "/dev/md1 /backup ext4 acl,nodiratime 0 0" >> /etc/fstab


7、写一个脚本
(1) 接受一个以上文件路径作为参数;
(2) 显示每个文件拥有的行数;
(3) 总结说明本次共为几个文件统计了其行数;
[root@lbtest03 ericz]# cat CountLines.sh
#!/bin/bash
function usage {
echo -e "Usage $basename [file1] ... [fileN]"
}
[[ $# -lt 1  ]] && usage && exit 1
count=0
for fileName in $@
do
let count++
lines=$(cat $fileName |wc -l)
echo -e "$fileName has lines $lines\n"
done
echo "========="
echo "total $count"
[root@lbtest03 ericz]# bash CountLines.sh newpackage.spec newpackage.spec
newpackage.spec has lines 35
newpackage.spec has lines 35
=========
total 2
[root@lbtest03 ericz]#


8、写一个脚本
(1) 传递两个以上字符串当作用户名;
(2) 创建这些用户;且密码同用户名;
(3) 总结说明共创建了几个用户;
[root@lbtest03 ericz]# cat CreateUser.sh
#!/bin/bash
function usage {
echo -e "Usage $basename [UserName1] [UserName2]..."
}
[[ $# -lt 3 ]] && usage && exit 1
count=0
for userName in $@
do
useradd $userName && echo $userName |passwd --stdin $userName
[[ $? -eq 0 ]] && echo "$userName has been created" && let count++
done
echo "======================"
echo -e "total $count users has been created"
[root@lbtest03 ericz]# bash CreateUser.sh test5 test9 test10
Changing password for user test5.
passwd: all authentication tokens updated successfully.
test5 has been created
Changing password for user test9.
passwd: all authentication tokens updated successfully.
test9 has been created
Changing password for user test10.
passwd: all authentication tokens updated successfully.
test10 has been created
======================
total 3 users has been created
[root@lbtest03 ericz]#


9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
[root@lbtest03 ericz]# bash CountUid.sh
sum = 5927
[root@lbtest03 ericz]# cat CountUid.sh
#!/bin/bash
sum=0
for i in $(seq 1 20)
do
useradd visitor$i
userId=$(grep $i /etc/passwd|cut -d: -f3)
let sum+=$userId
done
echo -e "sum = $sum"
[root@lbtest03 ericz]#


10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
[root@lbtest03 ericz]# bash CountSharp.sh
grep: /etc/rc.d/rc.sysinit: No such file or directory
grep: /etc/rc.d/rc.sysinit: No such file or directory
Total Sharp Lines ==> 38
Total Blank Lines ==> 67
[root@lbtest03 ericz]# bash CountSharp.sh ^C
[root@lbtest03 ericz]# cat CountSharp.sh
#!/bin/bash
sumLineSharp=0
sumLineBlank=0
for i in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab
do
lineSharp=$(grep "^#" $i|wc -l)
lineBlank=$(grep "^$" $i|wc -l)
let sumLineSharp+=$lineSharp
let sumLineBlank+=$lineBlank
done
echo "Total Sharp Lines ==> $sumLineSharp"
echo "Total Blank Lines ==> $sumLineBlank"
[root@lbtest03 ericz]#


11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
[root@lbtest03 ~]# awk -F: '/bash/ {sum += $3; print $1,$3};END {print "===================\nsum="sum}' /etc/passwd
root 0
steven 1000
sam 1001
sam.yi 1003
wei.liu 1005
rootbrg 1007
www 1009
jack 1010
ericz 1011
blodwen 1012
tomcat 503
fedora 1013
test12 1014
test32 1015
test321 1016
test323 1017
test325 1018
test324 1019
test5 1020
test9 1021
test10 1022
visitor1 1023
visitor2 1024
visitor3 1025
visitor4 1026
visitor5 1027
visitor6 1028
visitor7 1029
visitor8 1030
visitor9 1031
visitor10 1032
visitor11 1033
visitor12 1034
visitor13 1035
visitor14 1036
visitor15 1037
visitor16 1038
visitor17 1039
visitor18 1040
visitor19 1041
visitor20 1042
===================
sum=40386


12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;
[root@lbtest03 ericz]# cat UserGroupsCount.sh
#!/bin/bash
count=0
for user in $(awk -F ":" '{print $1}' /etc/passwd)
do
UserOut=`id $user`
[[ $UserOut =~ ',' ]] && echo $user && let count++
done
echo "============"
echo "Total=$count"
[root@lbtest03 ericz]# bash UserGroupsCount.sh
postfix
steven
sam
sam.yi
wei.liu
jack
ericz
blodwen
============
Total=8
[root@lbtest03 ericz]#


13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;

# pvcreate /dev/sd{h,i}
# vgcreate -s 8M myvg /dev/sd{h,i}
# lvcreate -L 5G -n /dev/myvg/mylv1 /dev/myvg
# mkfs -t ext4 /dev/myvg/mylv1
# mkdir /users
# echo "/dev/myvg/mylv1         /users                  ext4    defaults,acl              0 0" >> /etc/fstab
# mount -a
14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;

# useradd -m -d /users/magedu magedu
# su - magedu
$ cp /etc/* ~


15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;

# lvextend -L 9G -n /dev/myvg/mylv1
# resize2fs /dev/myvg/mylv1
16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

# umount /dev/myvg/mylv1
# e2fsck -f /dev/myvg/mylv1
# resize2fs /dev/myvg/mylv1 7G
# lvreduce -L 7G -n /dev/myvg/mylv1
# mount -a
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;

# lvcreate -L 6G -s -n lv1snapshot myvg/mylv1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  空间 程序 字符串