马哥教育网络班22期+第7周课程练习

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

fdisk /dev/sdd
n
p
1
2048
+10G
w

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

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

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

mount -o noexec,noatime /dev/sdd1 /data/mydata

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

fdisk /dev/sdd
n
p
2
20973568
+1G
t
2
82
w
mkswap /dev/sdd2
swapon /dev/sdd2

3、写一个脚本

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

(2)、显示每个磁盘设备上每个分区相关的空间使用信息;

#!/bin/bash
fdisk -l | grep "^Disk /dev/[sh]d[a-z]"
fdisk -l | grep "^/dev/[sh]d[a-z]"

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

常用级别:RAID-0,RAID-1,RAID-5,RAID-6,RAID-10,RAID-50,JBOD

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

马哥教育网络班22期+第7周课程练习

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

马哥教育网络班22期+第7周课程练习

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

马哥教育网络班22期+第7周课程练习

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

马哥教育网络班22期+第7周课程练习

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

马哥教育网络班22期+第7周课程练习

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

创建3个10G分区,/dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm -C /dev/md0 -n 2 -l 1 -c 128 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1

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

创建3个2G分区,/dev/sdb1 /dev/sdc1 /dev/sdd1
mdadm -C /dev/md1 -n 3 -l 5 -c 256 /dev/sdb2 /dev/sdc2 /dev/sdd2mke2fs -t ext4 /dev/md1
vim /etc/fstab
/dev/md1              /backup                 ext4    noatime,acl     0 0

7、写一个脚本

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

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

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

#!/bin/bash
declare -i count=0
if [ $# -lt 1 ]
then
    echo "at least one file path"
    exit 1
fi
for file in $*
do
if [ -a $file ]
then
    wc -l $file
    count=$[$count+1]
else
    echo "$file is not exist"
fi
done
    echo "共为$count个文件统计了行数"

8、写一个脚本

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

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

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

#!/bin/bash
declare -i count=0
if [ $# -lt 2 ]
then
    echo "at least two usernames"
    exit 1
fi
for username in $*
do
    id $username &> /dev/null
    if [ $? -eq 0 ]
    then
        echo "$username is alredy exist"
    else
        useradd $username
        echo "$username"|passwd --stdin $username &> /dev/null
        count=$[$count+1]
    fi
done
    echo "共创建了$count个用户"

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

#!/bin/bash
declare -i sum=0
for i in {1..20}
do
    useradd visitor$i
    UID=$(id -u visitor$i)
    sum=$[$sum+$UID]
done
    echo "UID之和为$sum"

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

#!/bin/bash
declare -i sum1=0
declare -i sum2=0
for file in /etc/rc.d/rc.sysinit /etc/rc.d/init.d/functions /etc/fstab
do
    lines1=$(grep "^#" $file | wc -l)
    lines2=$(grep "^[[:space:]]*$" $file | wc -l)
    sum1=$[$sum1+$lines1]
    sum2=$[$sum2+$lines2]
done
    echo "Total # lines:$sum1"
    echo "Total blank lines:$sum2"

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

#!/bin/bash
grep "/bin/bash$" /etc/passwd | cut -d : -f 1,3

declare -i sum=0
for i in $(grep "/bin/bash$" /etc/passwd | cut -d : -f 3)
do
    sum=$[$sum+$i]
done
    echo "用户的UID之和为$sum"

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

#!/bin/bash
declare -i count=0
for username in $(cat /etc/passwd | cut -d : -f 1)
do
    id $username | cut -d ' ' -f 3 |grep [,] &> /dev/null
    if [ $? -eq 0 ]
    then
        echo "$username"
        count=$[$count+1]
    fi
done
    echo "拥有附加组的人数:$count"

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

创建2个10G分区,/dev/sdb1 /dev/sdc1 设置成8e linux lvm类型
pvcreate /dev/sdb1
pvcreate /dev/sdc1
vgcreate -s 8M myvg /dev/sdb1 /dev/sdc1
lvcreate -L 5G -n mylv1 myvg
mke2fs -t ext4 /dev/myvg/mylv1
vim /etc/fstab
/dev/md1              /users                 ext4    acl     0 0

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

useradd magedu -d /users/magedu
su - magedu
cp -r /etc/pam.d ~

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

lvextend -L 9G /dev/myvg/mylv1
resize2fs /dev/myvg/mylv1 9G

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

umount /dev/myvg/mylv1
e2fsck -f /dev/myvg/mylv1
resize2fs /dev/myvg/mylv1 7G
lvreduce -L 7G /dev/myvg/mylv1
mount -o acl /dev/myvg/mylv1 /users

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

lvcreate -s -L 7G -p r -n snapmylv1 /dev/myvg/mylv

原创文章,作者:N22-上海-葡挞,如若转载,请注明出处:http://www.178linux.com/47820

(0)
N22-上海-葡挞N22-上海-葡挞
上一篇 2016-09-26 09:35
下一篇 2016-09-26 09:36

相关推荐

  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-29
  • N26 第六周作业

    总结vim编辑器的使用 Vim 模式    Vim 有六种基本模式    Normal mode                 Visual mode&nbs…

    Linux干货 2017-02-01
  • 马哥教育网络班20期+第3周课程练习

    1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@localhost ~]# who | cut -d" " -f1 | sort -u 2、取出最后登录到当前系统的用户的相关信息。 […

    Linux干货 2016-06-26
  • 程序包管理:rpm , yum ,与编译

    1.RPM,Redhat Package Manager。是Redhat和CentOS等Linux系统上常见的软件安装工具。 软件安装: 常见选项 -i                #install…

    Linux干货 2016-03-26
  • 第八周作业(网络、bash脚本)

    1-3,计算机网络基础博客已总结,简要补充 协议的分层 为了使那些比较复杂的网络协议更加简单化。ISO根据各通信协议的功能将网络体系分成七层。 在这个分层中,下层为上一层提供服务。上下层之间进行交互时所遵循的约定叫做“接口”。同层之间的交互所遵循的约定叫做“协议” 说的更形象一点,两个中国人打电话这个通信。就可以分为两层,同层之间的叫协议,我说汉语,你也说汉…

    Linux干货 2016-12-18
  • Linux 文件管理常用基本命令

    马哥教育网络班21期+第二周练习 目录管理 ls (list):列出目录及内容 ls [OPTION]… [FILE]…     -l:长格式显示文件的详细属性信息         -rwxr-xr-x.&nbs…

    Linux干货 2016-07-17

评论列表(1条)

  • luoweiro
    luoweiro 2016-10-11 23:56

    对于raid不同级别一定要多画画图,这样才能理解深刻,加油。