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

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

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

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

  fdisk /dev/sdb

03c041c0-46e0-441a-8f0c-ce096bb39f6f.jpg

   partx -a /dev/sdb1

   mkfs.ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1

   vim /etc/fstab

/dev/sdb1               /data/mydata                  ext4    rw,suid,dev,noexec,auto,nouser,async,noatime    0 0

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

   fdisk /dev/sdb

 83d53d1f-d26a-4cbf-934f-01294a491264.jpg

  partx -a /dev/sdb2

  mkswap -L "myswap" /dev/sdb2

  swapon /dev/sdb2

3.写一个脚本

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

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

#!/bin/bash

#

echo "all disk as follows :"

fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}'

echo "————————"

echo "partions space has used:"

for disk in $(fdisk -l |egrep '^Disk[[:space:]]+/dev/' |awk '{print $2}' |awk -F: '{print $1}');do

        for part in $(fdisk -l $disk |grep '^/dev/'|awk '{print $1}');do

                echo "$part partion used:$(df -h $part| awk '/\/dev\//{print $5}')"

        done

done

4.总结RAID的各个级别机器组合方式和性能的不同:

raid0:条带卷;至少2块盘,读、写性能提升,无冗错能力,空间:N*min(S1,S2,…)

raid1:镜像卷;至少2块盘,读性能提升、写性能下降,有冗错能力,空间:1*min(S1,S2,…)

raid4:奇偶校验的独立磁盘结构;存储校验码的硬盘是单独的盘,其余和raid5基本类似

raid5:分布式奇偶校验的独立磁盘结构;至少3块盘,读、写性能提升,有冗余能力,空间:(N-1)*min(S1,S2,…)

raid6:两种存储的奇偶校验码的磁盘结构;至少4块盘,读写性能提升,有容错能力,空间:(N-2)*min(S1,S2,…)

raid10:先做raid1,再做raid0;读写性能提升,至少4块盘,有容错能力,空间:N*min(S1,S2,…)/2

JBOD:将多块磁盘的空间合并一个大的连续空间使用,空间:sum(S1,S2,…)

5.创建一个大小为10G的raid1,要求有一个空闲盘,而且chunk大小为128K;

 mdadm -C /dev/md0 -n 2 -x 1 -c 128 -l 1 /dev/sdb3 /dev/sdc1 /dev/sdc2

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

mdadm -C /dev/md0 -n 3 -l 5 -c 256 /dev/sdb3 /dev/sdc1 /dev/sdc2 

mkfs.ext4 /dev/md0 

vim /etc/fstab

    /dev/md/localhost.localdomain:0   /backup  ext4    rw,acl,noatime  0 0

7.写一个脚本:

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

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

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

#!/bin/bash

#

read  -p  "please input the file path:" -a line

echo "================================="

if [ ${#line[@]} -lt 1 ];then

   echo "please input file path like:/path/to/file"

else

   for i in $(seq 0 $[${#line[*]}-1]);do

      if [ -f ${line[$i]} ];then

         echo "${line[$i]} lines is:$(cat ${line[$i]} |wc -l)"

      else

        echo "please input a file path like:/etc/path/to/file"

        exit 1

      fi

   done

echo "file number:${#line[@]}"

fi

8.写一个脚本:

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

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

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

#!/bin/bash

#

declare -i sum=0

read -p "please more than one strings:" -a user

if [ ${#user[@]} -lt 1 ];then

   echo "please input strings like:string1 string1 …"

   exit 1

else

   for i in $( seq 0 $[${#user[*]}-1]);do

       if id ${user[$i]} &>/dev/null ;then

          echo "${user[$i]} is exist!please input agin!"

       elif [[ ! ${user[$i]} =~ [[:alpha:]]+ ]];then           –>想匹配为大小写字母及数字,但是user$此类还是可以添加成功

          echo "please input correct string"

       else

          useradd ${user[$i]}&&echo "${user[$i]}" |passwd –stdin ${user[$i]} &>/dev/null &&echo "${user[$i]} add success"&&let sum++

       fi

    done

fi

echo "sum of new adduser:$sum"

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

#!/bin/bash

#

declare -i sum=0

for i in {1..20};do

    useradd visitor${i}&&echo "add success"

    let sum+=$(id user1|cut -d" " -f1 |sed -r  's/\(.*\)//g;s/uid=//g')

done

echo "userid sum:$sum"  

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

#!/bin/bash

#

echo "At the beginning of the line # ,rc.sysinit:$(cat /etc/rc.d/rc.sysinit |egrep '^#' |wc -l)"

echo "Blank row ,rc.sysinit:i$(cat /etc/rc.d/rc.sysinit |egrep '^$' |wc -l)"

echo 

echo "At the beginning of the line # ,functions:$(cat /etc/rc.d/init.d/functions |egrep '^#' |wc -l)"

echo "Blank row ,functions:i$(cat /etc/rc.d/init.d/functions |egrep '^$' |wc -l)"

echo

echo "At the beginning of the line # ,/etc/fstab:$(cat /etc/fstab |egrep '^#' |wc -l)"

echo "Blank row ,/etc/fstab:i$(cat /etc/fstab |egrep '^$' |wc -l)"

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

#!/bin/bash

#

echo "/bin/bash user==>uname uid:"

echo "$(awk -F: '$NF=="/bin/bash"{print $1,$3}' /etc/passwd)"

echo "sum of uid:$(awk -F: 'BEDIN{sum=0}$NF=="/bin/bash"{sum=sum+$3}END{print sum}' /etc/passwd)"

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

#!/bin/bash

#

User=($(awk -F: '{print $1}' /etc/passwd))

for i in $(seq 0 $[${#User[@]}-1]);do

    if [ $(id ${User[$i]} |cut -d" " -f3 |awk -F"," '{print NF}') -gt 1 ];then

        echo "user who have supp-group:${User[$i]}"

        let sum++

    fi

done

echo "sum,user who have supplementary group:$sum"

13.创建一个有至少两个物理卷组成的大小为20G的卷组,要求:PE大小为8M;

在卷组中创建一个大小为5G的逻辑卷mylv1,格式户为ext4文件系统,开机自动挂载至/users目录,支持acl;

分区:

fdisk /dev/sdb

fdisk /dev/sdc

分别创建/dev/sdb3、/dev/sdc1分区;分区类型设置8e;partx -a /dev/sdb3、partx -a /dev/sdc1重读硬盘分区表信息

lvm创建:

(1)pvcreate /dev/sdb3 /deb/sdbc1

(2)vgcteate -s 8M myvg /deb/sdb3 /deb/sdc1

(3)lvcreate -L 5G -n mylv1 myvg

(4)mkfs.ext4 /dev/mapper/myvg-mylv1

(5)mkdir /users

(6)vim /etc/fstab –>添加一条内容:/dev/mapper/myvg-mylv1  /users   ext4    rw,acl,auto     0 0

(7)

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

useradd -m -k /etc/skel -d /users/magedu magedu;su -l magedu ;cp -a /etc/pam.d /users/magedu

15.扩展mylv1至9G,确保扩展后原有数据可用;

lvextend -L 9G /dev/mapper/myvg-mylv1 ; resize2fs /dev/mapper/myvg-mylv1 ;df -h

16.缩减mylv1至7G,确保扩展后原有数据可用;

umount /dev/mapper/myvg-mylv1

e2fsck -f /dev/mapper/myvg-mylv1

resize2fs /dev/mapper/myvg-mylv1 7G

lvreduce -L 7G /dev/mapper/myvg-mylv1

mount /dev/mapper/myvg-mylv1 /users/

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

lvcreate -s -p r -L 1G -n mylv1-snapshot /dev/mapper/myvg-mylv1

mount /dev/mapper/myvg-mylv1 /mnt

文件系统备份:

tar -Jcvpf /tmp/mylv1_$(date +%Y-%m-%d-%T).tat.xz /mnt/

块的备份:

dd if=/dev/mapper/myvg-mylv1–snapshot of=/tmp/myvg-mylv1–snapshot.dd

删除快照:

lvremove /dev/mapper/myvg-mylv1–snapshot

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

(0)
snowsnow
上一篇 2016-06-22 11:47
下一篇 2016-06-22 15:35

相关推荐

  • Linux文件类型以及颜色标识

    1、Linux文件类型介绍   Linux系统不同于window系统,两者文件类型也有很大的差异。Linux文件类型和Linux文件的文件名所代表的意义是两个不同的概念。我们通过一般应用程序而创建的比如file.txt、file.tar.gz,这些文件虽然要用不同的程序来打开,但放在Linux文件类型中衡量的话,大多是常规文件(也被称为普…

    Linux干货 2016-10-17
  • fdisk命令

    fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。

    2017-12-05
  • 网络管理

    说起网络,大家都不陌生,因为大家天天上网嘛,连路边老大爷都会聊微信了,但是我们所了解的网络只是茫茫网络大海中的一叶扁舟,网络的范围其实有很大,里面涉及的东西也非常多,现在让小编带你一点一点去了解它吧,相信大家看了之后,会有不一样的体会呢! 1、 什么是网络? 网络是由节点和连线构成,表示诸多对象及其相互联系。在数学上,网络是一种图,一般认为专指加权图。网络除…

    2017-09-02
  • #招聘福利#深圳云戈科技有限公司广州分公司/运维工程师/广州/招聘3人

    深圳云戈科技有限公司广州分公司/运维工程师/广州 招聘人数:3人 职位名称:运维工程师 岗位职责:负责大型数据处理系统、交易系统的维护工作。包括系统调优、数据库调优、系统版本升级、系统事件             处理、系统监控与巡检、数据分析与修复、实施应急方案、参数配置、系统扩容与部署、维护报告…

    Linux干货 2016-03-28
  • Linux高级文件系统管理

                                          &n…

    系统运维 2016-09-06
  • DNS常用配置解析反向解析

    什么是域名解析库文件?     是指将我们访问的域名解析成IP返回给本主机,然后本机拿着解析后IP去访问服务器,而解析格式就放在域名解析库文件中。DNS解析分为正向解析和反向解析    正向解析就是将域或域名解析成对应的IP地址,反之则相反,通过IP解析成域名 &nbs…

    Linux干货 2017-05-31

评论列表(1条)

  • 马哥教育
    马哥教育 2016-06-23 14:20

    写的很棒,有的脚本是不是可以在优化一下那?