Linux运维班第四次作业

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维班第四次作业相关的知识,希望对你有一定的参考价值。

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

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

 技术分享

   # mkfs.ext4 -b -m 2 -L MYDATA/dev/sdb

    # e2label/dev/sdb

 技术分享

  # df -lhT

 技术分享

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

    # mount -o noatime,noexec,acl /dev/sdb/data/mydata

 

 

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

  技术分享

   # fdisk /dev/sdb

  技术分享  

  技术分享

  技术分享

 

    创建swap分区

   # mkswap /dev/sdb1

   技术分享


    最后再重读swap分区

   # swapon /dev/sdb1

    启用前:

  技术分享

    启用后:

  技术分享

 

三、写一个脚本

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

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

   #!/bin/bash

   #

    echo "The Current system all disk device"

    cat /proc/partitions

 

    read -p "Please Enter need to view a disk device: "diskname

    [ -z $diskname ] && exit 1

 

    iffdisk -l | grep "$diskname" &> /dev/null; then

           fdisk-l /dev/$diskname

    else

       echo "Wrong disk device."

   fi

    

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

 常见的RAID级别有RAID0、RAID1、RAID5、RAID10、RAID50等,下面分别进行说明:

    

    1、RAID0,也叫条带卷;至少需要两块及以上的磁盘组合使用,它的特性在于存储数据时,数据被切割为多个chunk,并把它们分别存放到不同的磁盘中;较大地提升了读写数据的性能,成倍地提升了磁盘可用空间,但是却无半点的数据容错能力;

    2、RAID1,镜像卷;同样地至少需要两块以上的磁盘组合使用,它的数据被相同的存储到不同的磁盘上,即使某个磁盘损坏,也还能读出数据,而写数据时,因为要写两份数据,故性能略微下降;所以,它的特性相较与RAID0,写性能略微下降,读性能不变;提供了一定的数据冗余能力,而存储空间却只由其中最小的磁盘容量决定,提高了成本;

3、RAID5,至少需要三块及以上的磁盘组合而成;相较与RAID4把数据校验码专门存放在一个磁盘上,RAID5则把数据chunk和数据校验码均匀分散在不同的磁盘上,有效回避了数据校验专用盘负载过大的问题;它的读写性能与RAID0不相上下,它的磁盘容量为最小的磁盘的容量的(N-1)倍;

4、RAID10,表示RAID1与RAID0组合使用,先镜像,后条带化;至少需要4块硬盘组合使用;它同样使读写能力得到提升,并提供了一定的冗余能力,但每组镜像磁盘最多只能坏一块;

5、RAID50,RAID5和RAID0的组合使用,最少需要6块磁盘组合而成;这种设计可兼顾数据可靠性和较高地读写性能,组内发生某块硬盘故障,重建恢复的时间也较快;但设计较复杂,不容易实现;

 

 

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

添加两块磁盘sdb、sdc,并设置为Linux Raid文件系统类型

创建RAID1,并指定冗余磁盘的个数(RAID1下chunk默认为512k,不能被设置)

# mdadm -C /dev/md0-l1 -n2 /dev/sd{b,c}

技术分享

# mdadm -D /dev/md0   查看RAID设备信息

    技术分享

    技术分享



 

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

  ① 添加磁盘sdb、sdc、sdd,创建RAID5阵列

    # mdadm -C /dev/md0 -l5 -n3 -chunk=256/dev/sd{b,c,d}

 技术分享

   # mdadm -D /dev/md0    查看RAID详细信息 

   

    技术分享

    技术分享

 

  ② 格式化磁盘

   # mkfs.ext4 /dev/md0   

 

  ③ 设置自动挂载和相关特性

    软RAID有自己的配置文件:/etc/mdadm.conf,默认情况下需要自行设置:

   # mdadm -D /dev/md0 | grep UUID >/etc/mdadm.conf    

   # vi /etc/mdadm.conf

   技术分享

    最后把配置添加到/etc/fstab文件中:

   技术分享

 

  

 七、写一个脚本

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

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

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

  #!/bin/bash

#

read -p "Please enter two username:" user1 user2

 

if id $user1 -o id $user2 &> /dev/null; then

        echo "User already exists."

        exit 1

else

      useradd $user1 &> /dev/null

      echo "$user1" | passwd --stdin$user1 &> /dev/null

      echo "$user1 created."

      useradd $user2 &> /dev/null

      echo "$user2" | passwd --stdin$user2 &> /dev/null

      echo "$user2 created."

fi

 

 

八、写一个脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/

functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

      

    #!/bin/bash

#

a=`cat/etc/rc.d/rc.sysinit | grep ‘^#‘ | wc -l`

b=`cat/etc/rc.d/init.d/functions | grep ‘^#‘ | wc -l`

c=`cat /etc/fstab |grep ‘^#‘ | wc -l`

let d=a+b+c

echo "Thecount of the beginning the line # is: $d"

 

a=`cat/etc/rc.d/rc.sysinit | grep ‘^$‘ | wc -l`

b=`cat/etc/rc.d/init.d/functions | grep ‘^$‘ | wc -l`

c=`cat /etc/fstab |grep ‘^$‘ | wc -l`

let d=a+b+c

echo "Thecount of the blank line is: $d"

技术分享

 

 

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

   #!/bin/bash

#

declare -i a=0

for i in `cat/etc/passwd | cut -d‘:‘ -f1`

do

       ifid $i &> /dev/null; then

       echo"$i have additional group."

       leta++

       fi

done

echo "Thetotal of $a users have additional group."

 

 

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

     # pvcreate/dev/sdb1 /dev/sdc1

      # pvdisplay –v

 技术分享

       # vgcreate -s 8M myvg /dev/sdb1 /dev/sdc1

     # vgdisplay –v

     技术分享

     技术分享


  # lvcreate -L 5G -nmylv1 myvg

  # lvdisplay –v

 技术分享

    # mkfs.ext4 /dev/myvg/mylv1

      添加开机启动配置

  # echo "/dev/mapper/myvg-mylv1  /users ext4    defaults,acl   0 0" >> /etc/fstab

 

 

 

 

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

操作之前分区已有数据

技术分享

# lvresize -L 9G /dev/myvg/mylv1

# resize2fs /dev/myvg/mylv1

    技术分享

    技术分享


 

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

     # umount /users

      # e2fsck -f /dev/myvg/mylv1

      # resize2fs /dev/myvg/mylv1 7G

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

      # mount /dev/myvg/mylv1

    技术分享

    技术分享


 

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

     # lvcreate -s -L 1G -nmylv1-snap /dev/myvg/mylv1

      # tar -Jcf users.tar.xz /users/* 

 

 

 

十四、如何将Linux主机接入到TCP/IP网络,请描述详细的步骤(手动指定的方式)

     以虚拟机为例:

1、设置虚拟机网卡的连接方式,NAT模式一般用于共享主机的网络连接状态;

技术分享

     2、设置虚拟机与主机之间的通信IP地址段;

       

       技术分享

       技术分享

     

 相对应地,把主机上的VMnet8虚拟网卡配置成与上图在同一网段下;

  技术分享

3、设置Linux主机的IP地址;

  编辑/etc/sysconfig/network-scripts/ifcfg-IFACE文件

 根据自身情况手动修改如下配置:

   BOOTPROTO:static表示静态IP方式,dhcp为由系统自动获取;

   ONBOOT:yes表示系统启动时自动启用该网卡;

   IPADDR:配置网卡IP地址;

   NETMASK:子网掩码;

   GATEWAY:默认网关;

   DNS(可选):DNS服务器;

  完成之后,重启网卡服务

 

十五、为Linux主机配置网络信息的方式有哪些,请描述各个过程;

1、用ifconfig命令指定

         # ifconfig IFACE ip_address netmask

     

2、用ip命令指定

   # ip addr addip_address netmask dev IFACE

 

3、修改配置文件指定

   /etc/sysconfig/network-scripts/ifcfg-IFACE

   DEVICE:网卡设备名;

BOOTPROTO:地址配置协议,常用的为dhcpstatic等;

ONBOOT:表示系统启动是否激活该设备;

IPADDR:指明IP地址;

NETMASK:子网掩码;

GATEWAY:默认网关;

       配置完成之后,需重启该网卡设备;   

  

十六、写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机在线状态;

   在线的主机使用绿色显示;

   不在线的主机使用红色显示;

        #!/bin/bash

        #

        declare -i i=1

        while [ $i -le 254 ]; do

        if ping 172.16.250.$i -c 1 &> /dev/null; then

           echo-e "\033[32m The host 172.16.250.$i is online.\033[0m"

           leti++

        else

           echo-e "\033[31m The host 172.16.250.$i is down.\033[0m"

           leti++

        fi

        done

 

十七、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方法;

1、ifconfig 网络配置和查看工具

 示例:#ifconfig      显示所有处于活动的网络接口设备信息

       # ifconfig -a   显示所有网络接口的设备信息

       # ifconfig eth0 只显示eth0接口的信息

       # ifconfig eth0IPADDR NETMASK  配置eth0的IP和掩码

 

2、IP 网络配置和查看工具(比ifconfig更强大)

 示例:# ip linkset dev IFACE up/down 启用/禁用某个网络接口

       # ip link show[dev IFACE] [up] 查看某接口的状态信息

       # ip addr add IPADDR NETMASK dev IFACE[label LABEL_NAME]

             为网络接口指定IP地址(和别名)

       # ip addr delIPADDR NETMASK dev IFACE  删除某接口的IP地址 

       # ip addr show[dev IFACE]  查看较详细地接口状态信息

       # ip route addTARGET via GW dev IFACE src SOURCE_IP

             添加源IP到目标网络的路由策略

       # ip route adddefault via GW dev IFACE  添加默认网关

       # ip route delTARGET   删除到目标网络的路由

       # ip routeshow  查看当前系统上的路由配置

       # ip route flush [devIFACE] 清空与某个接口相关的路由配置

       # ip route flush [viaPREFIX] 清空与某个网关相关的路由配置

 

3、route 路由管理工具

 示例:

          # route -n  查看当前系统的路由表

          # route add -host TARGET gw GATEWAY dev IFACE 添加目标主机的路由

          # route add -net 192.168.0.0 netmask 255.255.255.0 gw172.16.0.1 dev IFACE

                  添加从本地网络接口到目标网络的路由

          # route add default gw GATEWAY 添加默认路由

          # route del [-host | -net] TARGET [netmask Nm] 删除目标主机或网络的路由

 

    4、netstat 查看网络状态工具

     示例:# netstat -tan查看TCP相关的进程

           # netstat -uan查看UDP相关的进程

           # netstat -tnl 查看TCP处于监听状态的连接

           # netstat -i 显示所有网络接口的状态统计信息

           # netstat-IIFACE 显示IFACE接口的状态统计信息

 

    5、ss 网络状态查看工具(比netstat返回结果快)

     示例:# ss -tan 查看所有TCP相关的进程

           # ss -tanl 查看TCP中处于监听状态的连接

           # ss -tanlp 查看TCP中处于监听状态连接的相关程序及PID号

           # ss -uan 查看所有UDP相关的进程

 

6、nmcli CentOS7的地址配置工具

 示例:# nmclidevice stat  查看网络接口连接状态

       # nmcli con[up/down] IFACE  启用或禁用网络接口

       # nmcli con modifyIFACE [+/-] ipv4.addresses IPADDR/NETMASK

                    为网络接口IFACE增加或删除IP地址

       # nmcli con modifyIFACE ipv4.gateway GATEWAY

                    为网络接口IFACE添加网关

       # nmcli con modifyIFACE ipv4.dns DNSSERVER

                    为网络接口IFACE添加DNS服务器

 

十八、写一个脚本,完成以下功能:

  (1)假设某目录(/etc/rc.d/rc3.d/)下分别有K开头的文件和S开头的文件若干;

  (2)显示所有以K开头的文件的文件名,并且给其附加一个stop字符串;

  (3)显示所有以S开头的文件的文件名,并且给其附加一个start字符串;

  (4)分别统计S开头和K开头的文件各有多少;

    #!/bin/bash

    #

    declare -i x

    declare -i y

    ls /etc/rc.d/rc3.d/ | awk ‘/^K/{print $1,"stop"}‘

    ls /etc/rc.d/rc3.d/ | awk ‘/^S/{print $1,"start"}‘

 

    x=`ls /etc/rc.d/rc3.d/ | grep ‘^K‘ | wc -l`

    y=`ls /etc/rc.d/rc3.d/ | grep ‘^S‘ | wc -l`

    echo "The Number of beginning with K is:$x"

    echo "The Number of beginning with S is:$y"

 

十九、写一个脚本,用ping命令测试172.16.250.20-172.16.250.100以内有哪些主机在线,将在线的显示出来;

    #!/bin/bash

    #

    declare -i i=20

    echo "Checking host stat,One moment please."

    for i in {20..100}

    do

       ping 172.16.250.$i -c 1 -t 1 &>/dev/null

        if [ $? -eq 0 ]; then

         echo "The host 172.16.250.$i is online."

        fi

       let i++

    done

    echo "Script execution."

 

二十、打印九九乘法表;

    #!/bin/bash

    #

    declare -i i=1

    declare -i j=1

    for i in {1..9}

    do

      for((j=1;j<=$i;j++)); do

         echo -e -n"$i*$j=$[$i*$j]\t"

       done

      let i++

      echo

      done


本文出自 “Linux高端运维培训” 博客,请务必保留此出处http://hhclab.blog.51cto.com/6743827/1909373

以上是关于Linux运维班第四次作业的主要内容,如果未能解决你的问题,请参考以下文章

Linux运维班第四次作业

马哥2016全新Linux+Python高端运维班第四期-第五次作业

马哥2016全新Linux+Python高端运维班第四期-第六次作业

马哥2016全新Linux+Python高端运维班第四期-第一次作业

Linux+Python高端运维班第二次作业

马哥2016全新Linux+Python高端运维班第五周作业