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

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

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

[root@localhost ~]#mke2fs -t ext4 -b 2048 -m 2 -L "MYDATA" /dev/sdb1
[root@localhost ~]#mkdir -p /MYDATA
[root@localhost ~]#mount -o acl /dev/sdb1 /MYDATA
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /MYDATA type ext4 (rw,acl)

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

[root@localhost ~]#mkdir -pv /data/mydata
[root@localhost ~]# mount -t ext4 -o noexec,noatime /dev/sdb1 /data/mydata/
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
/dev/sdb1 on /data/mydata type ext4 (rw,noexec,noatime)

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

注:只能把整个盘做为swap分区,不然无法使用

[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        356        639          0        121         78
-/+ buffers/cache:        156        839
Swap:         2015          0       2015

[root@localhost ~]# fdisk /dev/sdb
...
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-2610, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): 2610

Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap / Solaris)

Command (m for help): w
....
Syncing disks.
[root@localhost ~]# fdisk -l /dev/sdb
...
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        2610    20964793+  82  Linux swap / Solaris
[root@localhost ~]# mkswap -L SWAP1 /dev/sdb1
Setting up swapspace version 1, size = 20964788 KiB
LABEL=SWAP1, UUID=8910028d-99b2-4ac8-84d8-83ecfdee3af9
[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free -m
             total       used       free     shared    buffers     cached
Mem:           995        371        624          0        121         78
-/+ buffers/cache:        171        824
Swap:        22489          0      22489

3、写一个脚本

(1)、获取并列出当前系统上的所有磁盘设备;
  (2)、显示每个磁盘设备上每个分区相关的空间使用信息;

#!/bin/bash
#
echo "disk info:$(fdisk -l | grep -o  "^Disk[[:space:]]/dev/s[a-z]\+"|cut -d" " -f2)"
for i in $(fdisk -l | grep -o  "^Disk[[:space:]]/dev/s[a-z]\+"|cut -d" " -f2);do
	INFO=`fdisk -l $i`
	echo "$i Disk INFO $INFO"
done

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

级别:
RAID-0: 0,条带卷,strip; 
RAID-1:	1,镜像卷,mirro; 
RAID-2
...
RAID-5
RADI-6
RAID-01
RAID-10
		
RAID-0:
读、写性能提升;
可用空间;N*min(S1,S2,...)
无容错能力
最少磁盘数:2,2+
RAID-1:
读性能提升
写性能略有下降;
可用空间 1*min(s1,s2,....)
有冗余能力
至少磁盘数:2,2+
RAID-5 
读写性能提升
可用空间:(N-1)*min(S1,S2...)
有容错能力:1块磁盘
至少磁盘数:3,3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2...)
有容错能力:2块磁盘
至少磁盘数:4,4+
混合	
RAID-10: 
读、写性能提升
可用空间:N*MIN(S1,S2...)/2
有容错能力:每一组镜像最多只能坏一块;
至少磁盘数:4,4+

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

[root@localhost ~]# fdisk /dev/sdb
...
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-6527, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +10G

Command (m for help): N
Command action
   e   extended
   p   primary partition (1-4)
P
Partition number (1-4): 2
First cylinder (1307-6527, default 1307): 
Using default value 1307
Last cylinder, +cylinders or +size{K,M,G} (1307-6527, default 6527): +10G

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (2613-6527, default 2613): 
Using default value 2613
Last cylinder, +cylinders or +size{K,M,G} (2613-6527, default 6527): +10G

Command (m for help): P
......
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1306    10490413+  83  Linux
/dev/sdb2            1307        2612    10490445   83  Linux
/dev/sdb3            2613        3918    10490445   83  Linux

Command (m for help): W
...
Syncing disks.
[root@localhost ~]# mdadm -C /dev/md0 -a yes -n 3 -x 1 -l 1 -c 128 /dev/sdb{1,2,3}
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Tue Aug  9 12:27:30 2016
     Raid Level : raid1
     Array Size : 10482176 (10.00 GiB 10.73 GB)
  Used Dev Size : 10482176 (10.00 GiB 10.73 GB)
   Raid Devices : 2
  Total Devices : 3
    Persistence : Superblock is persistent

    Update Time : Tue Aug  9 12:27:38 2016
          State : clean, resyncing 
 Active Devices : 2
Working Devices : 3
 Failed Devices : 0
  Spare Devices : 1

  Resync Status : 12% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 622d8814:e0132731:bbc31b2a:a8168e65
         Events : 1

    Number   Major   Minor   RaidDevice State
       0       8       17        0      active sync   /dev/sdb1
       1       8       18        1      active sync   /dev/sdb2

       2       8       19        -      spare   /dev/sdb3

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

注:创建4个以上的分区盘
[root@localhost ~]# mdadm -C /dev/md0 -n 3 -l 5 -a yes -c 256 -x 1 /dev/sdb{1,2,3,4}
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu Aug 11 10:48:48 2016
     Raid Level : raid5
     Array Size : 4204544 (4.01 GiB 4.31 GB)
  Used Dev Size : 2102272 (2.00 GiB 2.15 GB)
   Raid Devices : 3
  Total Devices : 4
    Persistence : Superblock is persistent

    Update Time : Thu Aug 11 10:49:01 2016
          State : clean, degraded, recovering 
 Active Devices : 2
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 256K

 Rebuild Status : 41% complete

           Name : localhost.localdomain:0  (local to host localhost.localdomain)
           UUID : 9e115ad8:b5e1867e:d9ec3a2f:17625ac0
         Events : 7

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       4       8       23        2      spare rebuilding   /dev/sdb7

       3       8       24        -      spare   /dev/sdb8

[root@localhost ~]# mke2fs -t ext4 /dev/md0
[root@localhost ~]# mount -a -o noatime,acl /dev/md0 /backup
[root@localhost ~]# vim /etc/fstab
末行加入/dev/md0 /backup ext4   rw,noatime,acl        0 0

7、写一个脚本

(1) 接受一个以上文件路径作为参数;
  (2) 显示每个文件拥有的行数;
  (3) 总结说明本次共为几个文件统计了其行数;

#!/bin/bash
#
declare -i sum=0
if [ $# -lt 1 ];then
	echo "Useage:bash.sh file1_name file2_name.."
	exit 1
fi
for i in $*;do
	if [ -d $i ];then
		echo " $i is a directory,please write a file path."
		exit 0
	else
		num=`wc -l $i | cut -d" " -f1`
		sum+=num
	fi
done

echo "$# files,total file lines:$sum"

8、写一个脚本

(1) 传递两个以上字符串当作用户名;
  (2) 创建这些用户;且密码同用户名;
  (3) 总结说明共创建了几个用户;

#!/bin/bash
#
declare -i usersum=0
if [ $# -le 1 ];then
	echo "Usage must two users to bash:bash.sh user1 user2 .."
	exit 1
fi
for i in $*;do
	if id $i &> /dev/null;then
	   	echo "User $i has exist."
	else
		useradd $i &> /dev/null 
		result=$?
		if [ $result -eq 0 ];then
			echo "$i" | passwd --stdin $i &> /dev/null
			echo "Add $i finish!"
			let usersum++
		else
			echo "Add $i fail "
			exit 1
		fi
	fi
done
echo "Total add $usersum users!"

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

#!/bin/bash
#
declare -i idsum=0;
for i in {1..20};do
	if id visitor$i &> /dev/null ;then
		echo "visitor$i has exist!"
		idnum=`cat /etc/passwd | grep visitor$i | head -1| cut -d: -f3`
	else
		useradd visitor$i &> /dev/null
		idnum=`awk -F: '{print $3}' /etc/passwd | tail -1`
	fi
	idsum+=$idnum
	let i++
done
echo "idsum=$idsum"

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 i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab};do
	lines=`grep "^#" $i | wc -l`
	spacelines=`grep "^$" $i | wc -l`
	sum1+=$lines
	sum2+=$spacelines
done
echo "Total #lines:$sum1 lines."
echo "Total space lines:$sum2 lines."

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

#!/bin/bash
#
declare -i uidsum=0
while read line;do
     	grepbash=`echo $line | grep -o "/bin/bash$"`
	result=$?
	if [ $? -eq 0 ];then
		user=`echo $line |cut -d: -f1`
		uidnum=`echo $line | cut -d: -f3`
		echo "user is $user,uid is $uidnum"
		uidsum+=$uidnum
	fi
done <  /etc/passwd
echo "Uid total sum is $uidsum "

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

#!/bin/bash
#
declare -i usersum=0
while read line;do
	username=`echo $line | cut -d: -f1`
	user_group=`id $username | cut -d" " -f3|grep -o ","`
	result=$?
	if [ $result -eq 0 ];then
		echo "附加组用户:$username"
		let usersum++
	fi
done < /etc/passwd
echo "总共有附加组用户$usersum个."

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

[root@localhost ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 107.4 GB, 107374182400 bytes
255 heads, 63 sectors/track, 13054 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x8000b224

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1       13054   104856223+   5  Extended
/dev/sdb5               1        1306    10490382   83  Linux
/dev/sdb6            1307        2612    10490413+  83  Linux
[root@localhost ~]# pvcreate /dev/sdb{5,6}
  Physical volume "/dev/sdb5" successfully created
  Physical volume "/dev/sdb6" successfully created
[root@localhost ~]# pvs
  PV         VG       Fmt  Attr PSize  PFree 
  /dev/sda2  VolGroup lvm2 a--  99.51g     0 
  /dev/sdb5           lvm2 ---  10.00g 10.00g
  /dev/sdb6           lvm2 ---  10.00g 10.00g
[root@localhost ~]# vgcreate -s 8M myvg /dev/sdb5 /dev/sdb6
  Volume group "myvg" successfully created
[root@localhost ~]# vgs myvg
  VG   #PV #LV #SN Attr   VSize  VFree 
  myvg   2   1   0 wz--n- 20.00g 15.00g
[root@localhost ~]# vgdisplay myvg 
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               20.00 GiB
  PE Size               8.00 MiB
  Total PE              2560
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2560 / 20.00 GiB
  VG UUID               cahcpL-xpFk-pLj2-57Fp-Cce9-SeA3-GHEnAE
  [root@localhost ~]# lvcreate -L 5G -n mylv1 myvg
  [root@localhost ~]# lvs myvg/mylv1
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-a----- 5.00g 
[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv1
[root@localhost ~]# mkdir -p /users
[root@localhost ~]# mount -a -o acl /dev/myvg/mylv1 /users/
[root@localhost ~]# mount
...
/dev/mapper/myvg-mylv1 on /users type ext4 (rw,acl)

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

[root@localhost ~]# useradd -d /users/magedu magedu
[magedu@localhost root]$ cd /users/magedu/
[magedu@localhost ~]$ cp /etc/fstab /etc/inittab ./
[magedu@localhost ~]$ ll
total 8
-rw-r--r--. 1 magedu magedu 860 Aug  9 16:00 fstab
-rw-r--r--. 1 magedu magedu 884 Aug  9 16:00 inittab

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

[root@localhost ~]# lvs myvg/mylv1
  LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  mylv1 myvg -wi-ao---- 5.00g                                                    
[root@localhost ~]# lvextend -L +4G /dev/myvg/mylv1 
  Size of logical volume myvg/mylv1 changed from 5.00 GiB (640 extents) to 9.00 GiB (1152 extents).
  Logical volume mylv1 successfully resized
[root@localhost ~]# resize2fs /dev/myvg/mylv1 
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/myvg/mylv1 is mounted on /users; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/myvg/mylv1 to 2359296 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 2359296 blocks long.
[root@localhost ~]# df -lh
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/mapper/myvg-mylv1
                      8.8G   12M  8.3G   1% /users
[root@localhost ~]# cat /users/magedu/fstab 

#
# /etc/fstab
....
proc                    /proc                   proc    defaults        0 0

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

[root@localhost ~]# umount /dev/myvg/mylv1 
[root@localhost ~]# mount
...
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv1: 18/589824 files (0.0% non-contiguous), 72678/2359296 blocks
[root@localhost ~]# e2fsck -f /dev/myvg/mylv1 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/myvg/mylv1: 18/589824 files (0.0% non-contiguous), 72678/2359296 blocks
[root@localhost ~]# lvreduce -L -2G /dev/myvg/mylv1 
  WARNING: Reducing active logical volume to 7.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce mylv1? [y/n]: y
  Size of logical volume myvg/mylv1 changed from 9.00 GiB (1152 extents) to 7.00 GiB (896 extents).
  Logical volume mylv1 successfully resized
[root@localhost ~]# mount /dev/myvg/mylv1 /users/
[root@localhost ~]# ll /users/
total 20
drwxr-xr-x. 2 root   root   16384 Aug  9 15:50 lost+found
drwx------. 2 magedu magedu  4096 Aug  9 16:01 magedu
[root@localhost ~]# cat /users/magedu/inittab 
# inittab is only used by upstart for the default runlevel.
...
# 
id:3:initdefault:

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

[root@localhost ~]# lvcreate -s -L 1M -n lv_magedu -p r /dev/myvg/mylv1 
  Rounding up size to full physical extent 8.00 MiB
  Logical volume "lv_magedu" created
[root@localhost ~]# mount /dev/myvg/lv_magedu /backup/
mount: block device /dev/mapper/myvg-lv_magedu is write-protected, mounting read-only
[root@localhost ~]# cd /backup/magedu/
[root@localhost magedu]# ll
total 8
-rw-r--r--. 1 magedu magedu 860 Aug  9 16:00 fstab
-rw-r--r--. 1 magedu magedu 884 Aug  9 16:00 inittab

   

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

(0)
Net21_LionNet21_Lion
上一篇 2016-08-15
下一篇 2016-08-15

相关推荐

  • 文件查找与压缩

    文件查找与压缩   Locate:非事实查找(数据库查找)     查询系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db 依赖于事先构建的索引; 索引的构建是在系统较为空闲时自动进行(周期性任务); 管理 员手动更新数据库(updatedb);   工作特点: 查找…

    Linux干货 2016-08-18
  • 系统基础之用户,组及权限管理

    用户及组详解 概论:   现今,大多数操作系统都是多用户(Multi-tasks)多任务(Mulit-Users)的系统.在多年前,计算机资源远没有现在这么丰富,都是多人使用同一台计算机,为了保障使用计算机的用户权益不受到损害,完成资源使用隔离,人们采取了用户机制标识使用者的方法.  每个使用者都是用户,用户是由UID进行标识,通过密码进…

    Linux干货 2016-08-04
  • ​iptables简单介绍

    iptables简单介绍 什么是防火墙? 防火墙是工作在主机或网络边缘,能够对其所匹配到的报文根据事先定义好的规则作出相应处理的组件,可以是软件,也可以是硬件,还能软硬结合实现。 UNIX/Linux中对防火墙的实现 早期在openBSD中通过内核中的ipfw实现简单的数据报过滤功能、后来在Linux 2.2内核中使用ipchains来取代,意为链、后来在L…

    Linux干货 2016-03-31
  • 命令read

    read命令是一个bash命令,它用于从键盘或标准输入中读取文本.我们可以使用read以交互的形式读取来自用户的输入.并且read还提供一种不需要按回车就能够输入参数的方法. read可以从标准输入中读取单独的一行,或者使用-u选项,从文件描述符FD中读取.并且这单独的行被分隔成多个域,第一个词被赋值给第一个变量,第一个赋值给第二个变量,以此类推,直到剩下的…

    Linux干货 2016-08-12
  • sed使用小命令及课后作业

    Stream EDitor,  行编辑器 sed 是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space ),接着用sed 命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed …

    Linux干货 2017-03-18
  • bash

    bash 配置文件   按生效范围划分:存在两类;     全局配置:            /etc/profile       &nbs…

    Linux干货 2015-04-15

评论列表(1条)

  • 马哥教育
    马哥教育 2016-08-17 15:31

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