linux第七周作业
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux第七周作业相关的知识,希望对你有一定的参考价值。
1、创建一个10G分区,并格式为ext4文件系统;
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
1)为虚机新增一块硬盘,系统识别为sdb
2)通过fdsik /dev/sdb 进入fdsik 交互式界面
3)键入n 新增一块主分区,大小为10G
4)键入w 将分区表写入磁盘退出
5)mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1
6)mount -o noexec,noatime,acl /dev/sdb1 /data/mydata
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
1)同题1通过fdisk划分一个分区大小为1G
2)键入t 将分区类型设置为 linux swap
3)mkswap /dev/sdb6
3、写一个脚本
(1)、获取并列出当前系统上的所有磁盘设备;
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
#!/bin/bash
#Discription: show disk information of the current filesystem and the space usage of every patation.
fdisk -l|grep "Disk /dev/[s|h]d"
df -h
4、总结RAID的各个级别及其组合方式和性能的不同;
raid0 条带式存储 显著提升磁盘读写性能,但是没有数据冗余,对灾备没有帮助。最小磁盘数2个,总磁盘大小为N*MIN(disk1,disk2....)
raid1 镜像式存储 提供了冗余度,极限情况下,可以允许损坏一半的磁盘。但是搭建成本高,最小磁盘数为2个,总磁盘大小为1/2*(disk1+disk2+.......). 读性能略有提升,写性能下降
raid4 最小的磁盘数为3个,其中一块盘用于存储校验码。优点是3块硬盘中,可以损坏任意一块磁盘。缺点:一块硬盘专门用作校验盘,读写压力大。总磁盘大小为n-1/min(disk1+disk2+......)
raid5 同raid4相比,每个磁盘轮流充当校验盘的角色,分摊读写压力。冗余度和总磁盘大小同raid4,读写性能提升。
raid6 同raid5相比,用两块磁盘充当校验盘,最小磁盘数为4块,总磁盘大小为n-2*min(disk1+disk2+......). 允许两块磁盘损坏.
raid10 先做raid1,再做raid0. 以总共8块磁盘的阵列为例。 两两一组先分成4组(A,B,C,D),每组各有2块磁盘互成映像。然后将每一组切割成条带,存储在各个磁盘中(A1,A2),(B1,B2),(C1,C2)。(D1,D2),只要每组的镜像不同时损坏,则对数据没有影响。
raid01 先做raid0,再做raid1。以总共8块磁盘的阵列为例,4块为一个组,组成raid0。共A,B两组,再用另4块磁盘与A,B两组做raid1,形成镜像卷。 两个镜像卷不可以同时各有有磁盘损坏,不然数据将被破坏。
raid50 先做raid5,再做raid0 磁盘利用率根据raid5的分组磁盘数决定。
5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;
1)为虚拟机添加两块磁盘,大小都为10G
2)fdisk -l 显示系统磁盘信息,得到新的磁盘为sdb,sdc
3)通过fdisk 交互式命令,将两块磁盘类型设置为fd.
4)mdadm -C /dev/md1 -a yes -n 2 -l raid1 -c 128 /dev/sdb /dev/sdc
5)cat /proc/mdstat 验证
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
1)前提工作同题5,为虚拟机添加5块硬盘,分别为4G大小,其中一块盘即为冗余。
2)mdadm -C /dev/md1 -l raid5 -n 5 -c 256 -a yes /dev/sd{b,c,d,e,f}
### 题目理解有偏差。。。每块磁盘设置成了4G,所以总大小为16G,因时间有限。。没能重做,但方法已学会,请老师谅解。
7、写一个脚本
(1) 接受一个以上文件路径作为参数;
(2) 显示每个文件拥有的行数;
(3) 总结说明本次共为几个文件统计了其行数;
#!/bin/bash declare -i sum=0 if [ $# -ne 0 ];then #判断参数是否为空 for i in [email protected];do if [ -f "$i" ];then #判断参数是否为文件 line=`wc -l $i|cut -d" " -f1` echo "The lines of the $i is $line." let sum++ else echo "The $i is not exist!" fi done echo "The count of the file is $sum" else echo -e "The args is null!\nUsage: testshell.sh arg1 arg2..." exit 1 fi
8、写一个脚本
(1) 传递两个以上字符串当作用户名;
(2) 创建这些用户;且密码同用户名;
(3) 总结说明共创建了几个用户;
#!/bin/bash declare -i sum=0 if [ $# -lt 2 ];then #判断参数是否小于2个 echo "The args can not be less than two" exit 1 else for i in [email protected];do useradd $i && echo "$i"|passwd --stdin $i && let sum++ done echo "This Program create $sum user in all." fi
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
#!/bin/bash declare -i sum=0 for i in {1..20};do id visitor$i &>/dev/null || useradd visitor$i && let sum+=`grep "visitor$i" /etc/passwd|cut -d: -f3` done echo "The sum of the uid is $sum."
10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
#!/bin/bash declare -i line_sum=0 declare -i space_sum=0 for i in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab;do ls=`grep "^#" $i|wc -l` ss=`grep "^$" $i|wc -l` echo "The line number of $i with #begin is $ls." echo "The blank line number of $i is $ss." echo "---------------------------------------------------------------" done;
11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
#!/bin/bash declare -i sum=0 awk -F: ‘/bash$/{printf "%-20s%s",$1,$3;sum+=$3}END{print "The sum of uid is: "sum}‘ /etc/passwd
12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多
少个此类用户;
#!/bin/bash declare -i sun=0 awk -F: ‘{if (($4 !="") && ($4 != $1)) {print $1;sum+=1;}}END{print "The sum is these users is:" sum} ‘ /etc/group
13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;
1) 为虚机添加两块硬盘,大小为各位20G
2)通过fdisk命令将 sdb划分为sdb1,sdb2,大小各位10G,sdc划分为sdc1,sdc2,大小各为10G,类型为8e
3)pvcreate /dev/sdb1
pvcreate /dev/sdc1
pvdisplay #验证pv信息
4) vgcreate -s 8M vgtest /dev/sdb1 /dev/sdc1 #-s 指定PV大小
vgdisplay #验证vg信息
5)lvcreate -L 5G -n mylv1 vgtest #-n 指定逻辑卷名称 -L 指定逻辑卷大小
lvdisplay #验证lv信息
6) mke2fs -t ext4 /dev/dm-0
mount -a -o acl /dev/dm-0 /users/
df -h
7) blkid /dev/dm-0
echo "UUID=0c5981ff-5f80-41d9-968a-e7513b9624e5 /users ext4 defaults 0 0" >>/etc/fstab
#获取逻辑卷的UUID,将挂载信息添加至/etc/fstab,实现开机自动挂载
14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;
mkdir /users/magedu &&useradd magedu /users/magedu
cp -r /etc/* /users/magedu
15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
lvextend -L 9G /dev/mapper/vgtest-mylv1
e2fsck -f /dev/mapper/vgtest-mylv1
resize2f /dev/mapper/vgtest-mylv1
cat /users/magedu/fstab
#扩展逻辑卷时,必须先扩展物理边界,再扩展逻辑边界!
16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;
umount /dev/mapper/vgtest-mylv1
e2fsck -f /dev/mapper/vgtest-mylv1
resize2fs /dev/mapper/vgtest-mylv1
lvreduce -L 7G /dev/mapper/vgtest-mylv1
mount -a -o acl /dev/mapper/vgtest-mylv1 /users
cat /users/magedu/fstab #验证文件是否正常
#逻辑卷缩减容量与扩容相反,必须先缩减逻辑边界,再缩减物理边界!
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;
lvcreate -s -L 1G -n my_snapshoot /dev/mapper/vgtest-mylv1
#为逻辑卷vgtest-mylv1创建大小为1G的快照卷
lvconvert --merge /dev/mapper/my_snapshoot
#合并快照卷和原始卷
以上是关于linux第七周作业的主要内容,如果未能解决你的问题,请参考以下文章