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.

linux第七周作业_linux4)mdadm -C /dev/md1 -a yes -n 2 -l raid1 -c 128 /dev/sdb /dev/sdc

5)cat /proc/mdstat 验证

linux第七周作业_linux_02

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}

linux第七周作业_linux_03### 题目理解有偏差。。。每块磁盘设置成了4G,所以总大小为16G,因时间有限。。没能重做,但方法已学会,请老师谅解。

7、写一个脚本

(1) 接受一个以上文件路径作为参数;

(2) 显示每个文件拥有的行数;

(3) 总结说明本次共为几个文件统计了其行数;

#!/bin/bash
declare -i sum=0
if [ $# -ne 0 ];then                                   #判断参数是否为空
  for i in $@;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 $@;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

linux第七周作业_linux_04

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信息

linux第七周作业_linux_05

6)  mke2fs -t ext4 /dev/dm-0 

mount -a -o acl /dev/dm-0 /users/

df -h

linux第七周作业_linux_06

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

#合并快照卷和原始卷