马哥教育网络班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 16:16
下一篇 2016-08-05 16:16

相关推荐

  • nginx 基础笔记

    一、Nginx 优点 高性能web,可以支持反向代理 比Apache性能优越,支持更多的并发连接,但资源占用很少,轻量级的web服务器。可以支持高达50000个并发连接数的响应 Nginx 在Linux 2.6+ 使用epoll模型,提供卓越性能 做为负载均衡服务器,可以在内部直接支持PHP和Rails,也可以支持作为HTTP代理服务器对外进行服务 Ngin…

    Linux干货 2016-03-19
  • Code Review中的几个提示

    Code Review应该是软件工程最最有价值的一个活动,之前,本站发表过《简单实用的Code Review工具》,那些工具主要是用来帮助更有效地进行这个活动,这里的这篇文章,我们主要想和大家分享一下Code Review代码审查的一些心得。 首先,我们先来看看Code Reivew的用处: Code reviews 中,可以通过大家的建议增进代码的质量。 …

    Linux干货 2015-04-03
  • 浅谈vim使用

    vim常用命令总结 2013年10月12日 ⁄ 综合 ⁄ 共 3264字 ⁄ 字号 小 中 大 ⁄  评论关闭        vim 选择文本,删除,复制,粘贴   文本的选择,对于编辑器来说,是很基本的东西,也经常被用到,总结如下: v    从光标当前位置开始,光标所经过的地…

    Linux干货 2016-08-12
  • shell入门 (一)

    Shell就是一个命令行解释器 ,它的作用是解释执行用户的命令,用户输入一条命令,Shell就解释执行一条,这种方式称为交互式(Interactive)。 Shell还有一种执行命令的方式称为批处理 (Batch),用户事先写一 个Shell脚本 (Script),其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一…

    Linux干货 2017-08-26
  • python学习总结

    第一个项目日志分析。(存在不足)

    Python笔记 2018-05-06
  • tomcat基础-如何给Tomcat前端加反向代理服务器

    Tomcat可以做为反向代理服务器的组件有很多,例如使用nginx,如果使用nginx,Tomcat就只能使用http连接器,另外一种是apache。如果是使用httpd,Tomcat两种连接器都能发挥作用,例如可以使用http连接器,也可以使用ajp连接器,

    Linux干货 2018-03-19

评论列表(1条)

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

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