马哥教育网络班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文件系统的层次结构

       尽管LINUX有诸多的发行版,但是所有的版本都遵从同样的文件目录层次结构,即FHS(Filesystem Hierarchy Standard)。有了这个统一的标准,我们在使用不同版本的LINUX时就不会由于版本的不同而找不到相关系统文件的位置,了解FHS有助于我们更好的掌握LINUX的基础构架和文件系统管理。   &nb…

    Linux干货 2015-12-19
  • redis主/从配置及基于sentinel的故障转移

    一、NoSQL基础概念: ACID:原子性、一致性、隔离性、持久性;特性:数据量大、数据变化非常大(数据增长化、流量分布变化、数据间耦合结构变化)、数据源很多; CAP、BASECAP C:多个数据节点的的数据一致;A:用户发出请求后的有限时间范围内返回结果;P:network partition,网络发生分区后,服务是否依可用;CAP理论:一个分布式系统不…

    Linux干货 2017-01-27
  • Puppet基于Master/Agent模式实现LNMP平台部署

    前言 随着IT行业的迅猛发展,传统的运维方式靠大量人力比较吃力,运维人员面对日益增长的服务器和运维工作,不得不把很多重复的、繁琐的工作利用自动化处理。前期我们介绍了运维自动化工具ansible的简单应用,本期带来的是运维自动化神器puppet基于Master/Agent模式实现LNMP平台部署。 Puppet 简介 Puppet是基于ruby语言开发的一种L…

    Linux干货 2015-07-13
  • 文件处理命令作业题

    练习题    1.找出ifconfig命令结果中的本机的所有ipv4地址4    2.查出分区空间使用率的最大百分比值    3.查找用户UID最大值的用户名、UID及shell类型    4.查出/tmp的权限。以数字方式显示    5.统计当前链接本机的每…

    Linux干货 2016-08-08
  • 关于软件包管理

            软件包管理 CentOS系统上使用rpm命令管理程序包 安装、卸载、升级、查询、检验、数据库维护 rpm安装:         rpm {-i|–install} [安装-选项] 打包;包         -h …

    系统运维 2016-08-30
  • Linux系统常用命令介绍

    [root@alibaba ~]# ifconfig #查看或者配置网络适配器的接口信息 eth0      Link encap:Ethernet  HWaddr 00:16:3E:0A:7B:2A inet addr:172.18.10.115  Bcast:172.18.15.255  Mask:255.255.240.0 [root@alibaba …

    Linux干货 2018-03-04

评论列表(1条)

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

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