马哥教育网络班20期-第七周课程作业

Table of Contents

1、创建一个10G分区,并格式为ext4文件系统;

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

  2. 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;

# 利用fdisk创建一个10G分区,分区id为83,假设为/dev/sda2
mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA' /dev/sda2

mount -o default,acl,noexec,noatime /dev/sda2 /data/mysata

2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;

# 利用fdisk创建一个1G分区,分区id为83,假设为/dev/sda2
mkswap /dev/sda2
swapon /dev/sda2

3、写一个脚本

  1. 获取并列出当前系统上的所有磁盘设备;

    fdisk -l | grep -o '^/[^[:space:]]\+'
  2. 显示每个磁盘设备上每个分区相关的空间使用信息;

    df -h

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

  • RAID-0

    • 将数据分成若干chunk,分散到每个硬盘中

    • 读、写性能提升

    • 可用空间: N*min(S1,S2,…)

    • 无容错能力

  • RAID-1

    • 将数据分成若干chunk,复制到每个硬盘中

    • 读性能提升、写性能略下降

    • 1*min(S1,S2,…)

    • 有冗余能力

  • RAID-4

    • 3个硬盘中1个硬盘存储校验码

    • 有容错能力: 1块磁盘

  • RAID-5

    • 在RAID-4的基础上,轮流用硬盘存储校验码

    • 读、写性能提升

    • 可用空间: (N-1)*min(S1,S2,…)

    • 有容错能力: 1块磁盘

    • 最少使用3块磁盘

  • RAID-6

    • 轮流用两块硬盘做校验盘

    • 读、写性能提升

    • 可用空间: (N-2)*min(S1,S2,…)

    • 有容错能力: 2块磁盘

    • 最少使用4块磁盘

  • RAID-10

    • 先两两一组进行RAID-1,后用RAID-0

    • 读、写性能提升

    • 可用空间: N*min(S1,S2,…)/2

    • 有容错能力: 每组镜像最多只能坏一块

    • 最少磁盘数: 4, 4+

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

# 利用fdisk创建三个10G分区,分区id为fd,假设为/dev/sda3、/dev/sda4、/dev/sda5
mdadm -C /dev/md1 -n 3 -l 1 -x 1 -a yes -c 128 /dev/sda{3,4,5}

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

  1. 创建一个RAID5设备,并格式化为ext4文件系统

    # 利用fdisk创建三个4G分区,分区id为fd,假设为/dev/sda3、/dev/sda4、/dev/sda5
    mdadm -C /dev/md1 -n 3 -l 5 -a yes -c 256 /dev/sda{3,4,5}
    mke2fs -t ext4 /dev/md1
  2. 编辑fstab文件

    # 在/etc/fstab文件中加入以下一行
    /dev/md1 /backup ext4 defaults,noatime,acl 0 0
  3. 挂载设备

    mount -a

7、写一个脚本

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

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

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

#!/bin/bash
#
ARG_WRONG=87

if [ $# -lt 1 ]; then
    echo "$0 PATH [PATH...]"
    exit $ARG_WRONG
fi

for i in `seq $#`; do
    echo -n "$i: "
    if [ -e ${$i} ]; then
        echo `wc -l ${$i}`
        let "NUM++"
    else
        echo "File not exist"
    fi
done

echo "Number of file: $NUM"

8、写一个脚本

  1. 传递两个以上字符串当作用户名;

  2. 创建这些用户;且密码同用户名;

  3. 总结说明共创建了几个用户;

#!/bin/bash
#
ARG_WRONG=87

if [ $# -lt 2 ]; then
    echo "$0 User_name User_name [User_name...]"
    exit $ARG_WRONG
fi

for i in `seq $#`; do
    useradd ${$i}
    echo ${$i} | passwd --stdin ${$i}
    let "NUM++"
done

echo "Number of user: $NUM"

9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;

#!/bin/bash
#
for i in `seq 20`; do
    useradd "visitor$i"
    let "SUM+=`id -u visitor$i`"
done
echo "Sum of ID: $SUM"

10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

#!/bin/bash
#

for path in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab; do
    let "NUM1+=`grep -c '^#' $path`"
    let "NUM2+=`grep -c '^[[:space:]]*$' $path`"
done

echo "Number of #: $NUM1"
echo "Number of empty: $NUM2"

11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;

#!/bin/bash
#
grep "\<bash\>$" /etc/passwd | cut -d':' -f1,3

for i in `grep "\<bash\>$" /etc/passwd | cut -d':' -f3`; do
    let "NUM+=i"
done

echo "Sum of UID: $NUM"

12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;

#!/bin/bash
#
for i in `grep '[^:]$' /etc/group | cut -d':' -f1`; do
    echo $i
    let "NUM++"
done

echo "Number of user: $NUM"

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

# 使用fdisk两个10G的分区,分区id为8e,假设为/dev/sda3、/dev/sda4
pvcreate /dev/sda3
pvcreate /dev/sda4

vgcreate -s 8M mylv /dev/sda3 /dev/sda4

lvcreate -L 5G -n mylv1 mylv
mke2fs -t ext4 /dev/mylv/mylv1

# 在/etc/fstab文件中加入以下一行
/dev/mylv/mylv1 /users ext4 defaults,acl 0 0

14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;

useradd -d /users/magedu magedu
su - magedu
cp FILE ~/

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

umount /dev/mylv/mylv1
lvextend -L 9G /dev/mylv/mylv1
resize2fs /dev/mylv/mylv1

16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;

umount /dev/mylv/mylv1
e2fsck -f /dev/mylv/mylv1
resize2fs /dev/mylv/mylv1
lvreduce -L 7G /dev/mylv/mylv1

17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;

lvcreate -L 5G -p r -s -n mylv1_snapshot /dev/mylv/mylv1

原创文章,作者:Net20_木皮,如若转载,请注明出处:http://www.178linux.com/28456

(0)
Net20_木皮Net20_木皮
上一篇 2016-08-05
下一篇 2016-08-05

相关推荐

  • N22-第四周博客作业

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。 [root@localhost ~]# ll -d  /etc/skel/drwxr-xr-x. 3 root root 74 3月&…

    Linux干货 2016-09-19
  • 用户管理

    用户管理 注意:用户是通过UID来确定身份的,比如root之所以为管理员就是因为root的UID是0。在centos6上系统用户是1-499,普通用户是500以上的;而在centos7上系统用户是1-999,普通用户是1000以上。系统用户默认不登录。 注意跟用户相关的命令只有管理员账户才有权限 需要用到的命令:useradd usermod userdel…

    Linux笔记 2018-04-08
  • sed对比grep之理解

    sed对比grep之理解 很多时候回车按下,没有结果,或是报错。 检查发现都是低级错误,关键是习惯刚学完grep,有写习惯没改过来。 sed语法很重要。script语法写对了,就成功了一大半,剩下的就是正则表达式的问题了。 sed与grep的区别是 grep是个行过滤器,筛选符合条件的行。也可以只显示每行匹配到的文本(-o选项),不对文本进行编辑,只是显示查…

    Linux干货 2016-08-10
  • 内部命令与外部命令——Linux基本命令(3)

    1.     内部命令与外部命令 内部命令:由shell自带的,而且通过某命令形式提供 内部命令在系统启动时就调入内存,是常驻内存的,所以执行效率高。 外部命令:在文件系统路径下有对应的可执行程序文件 外部命令是系统的软件功能,用户需要时才从硬盘中读入内存。 2.     命令类…

    2017-07-13
  • 装饰器

    装饰器(Decorator) 装饰器推导过程 需求 一个加法函数,想增强它的功能,能够输出被调用过以及调用的参数信息 def add(x,y): return x + y 增加信息输出功能 def add(x,y): print(‘call {},{}+{}’.format(add.__name__, x, y)) return x + y 不足:打印语句的…

    2017-10-23
  • Linux 进程及作业管理

    一 进程、线程、程序概念 1、进程(Process) 什么是进程,简单的说,进程是程序的执行实例,即运行中的程序,同时也是程序的一个副本;程序是放置于磁盘的,而运行中的程序是位于内存中的。 2、线程(Thread) 一个进程至少包括一个线程,通常将该线程称为主线程,所以线程是比进程更小的单位,是系统分配处理器时间资源的基本单元。一个进程要想同时在多颗CPU上…

    Linux干货 2016-03-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-05 17:06

    写的很好,排版也很棒,加油