马哥教育网络班21期第七周作业

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

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

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

[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA' /dev/sdd
[root@localhost ~]# tune2fs -o acl /dev/sdd[root@localhost ~]# mkdir -pv /data/mydata
[root@localhost ~]# mount -o acl,noexec,noatime /dev/sdd /data/mydata/


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

#fdisk /dev/sdb  (n;p;2;+1G;t;2;82;w)
#partx -a /dev/sdb#mkswap /dev/sdb2
#swapon /dev/sdb2
# free -m

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

#!/bin/bash
#
fdisk -l | grep ^"Disk /dev/[sh]d[a-z]" | cut -d"/" -f 3 | cut -d: -f1
    for i in $(fdisk -l | grep ^"/dev/[sh]d[a-z][0-9]\?" | cut -d' ' -f1) ;do        
    df -h $i | grep "/.*$"
done


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

RAID Level 名称 磁盘数 可用空间 可靠性 I/O能力
RAIDO 条带卷 >=2 100% 1/N 读写能力提升
RAID1 镜像卷 >=2 50% 可允许一块磁盘故障
RAID4 固定校验盘 >=3 N-1 可允许一块磁盘故障 读写能力提升
RAID5 分布式校验盘 >=3 N-1 可允许一块磁盘故障 读写能力提升
RAID6 校验码存两份 >=4 N-2 可允同时故障两块盘 读写能力提升
RAID01 raid0+raid1 >=4 50% 可允许一块磁盘故障 读写能力提升
RAID10 raid1+raid0 >=4 50% 同组raid1可故障一块 读写能力提升

5、 创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;[root@localhost ~]# mdadm -C /dev/md0 -c 128 -x1 -n2 -l1 -a yes /dev/sd[b-d]6、 创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;

[root@localhost ~]# mdadm -C /dev/md0 -n3 -l5 -a yes -c 256 /dev/sd[b-d]
[root@localhost ~]# mkfs.ext4 /dev/md0
[root@localhost ~]# vim /etc/fstab
新增一行
UUID=f9ae0ca3-1c85-4715-a6c5-68da5bdaa838 /backup ext4 noatime,acl 0 0


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

#!/bin/bash
#
if [ $# -eq 0 ];then       
    echo "please give a file name!"       
    exit 3
fi
for i in $@;do      
    echo "$i have $(wc -l $i | cut -d" " -f1) lines."
done
echo "The total of $# file their statistics the number of rows"


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

#!/bin/bash#if [ $# -lt 2 ];then     
echo "please give two user name!"     
exit 3
fi
for i in $@;do     
useradd $i && echo "$i" | passwd --stdin $i &> /dev/null        
let usersum++doneecho "创建了$#个用户"

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

#!/bin/bash
#
declare -i sum=0
for ((i=1;i<=20;i++));do        
    useradd visitor$i        
echo "useradd visitor$i success!"        
sum+=$(id -u visitor$i)doneecho "all user uid sum: $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 i in {/etc/rc.d/rc.sysinit,/etc/rc.d/init.d/functions,/etc/fstab}; do    
    sum1+=$( grep -c '^#' $i )    
    sum2+=$( grep -c '^[[:space:]]*$' $i )
done
echo "#start line number: $sum1"echo "space line number: $sum2"~


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

#!/bin/bash
#
cat /etc/passwd | grep "/bin/bash$" | cut -d: -f1,3
uuid=$(cat /etc/passwd | grep "/bin/bash$" | cut -d: -f3)
declare -i sum=0
for i in $uuid;do        
let sum+=$idoneecho "uuid sum=$sum"


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

#!/bin/bash
#
declare -i user=0
name=`cut -d: -f1 /etc/passwd`for i in $user;do     
    uid=`echo $i | cut -d: -f3`     
    user=`echo $i |cut -d: -f1`     
echo "$user UID is $uid"     
let sum+=$uiddoneecho "有$sum个此类用户"


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

1、添加磁盘并修改磁盘类型为8e linux LVM
[root@localhost ~]# fdisk -l | grep /dev/sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1   *        2048      616447      307200   83  Linux
/dev/sda2          616448     2715647     1049600   82  Linux swap / Solaris
/dev/sda3         2715648    41943039    19613696   83  Linux
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdb1            2048    20971519    10484736   8e  Linux LVM
Disk /dev/sdc: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdc1            2048    20971519    10484736   8e  Linux LVM
Disk /dev/sdd: 10.7 GB, 10737418240 bytes, 20971520 sectors
/dev/sdd1            2048    20971519    10484736   8e  Linux LVM
2、创建PV
 pvcreate /dev/sd{b,c,d}1
[root@localhost ~]# pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1  myvg lvm2 a--  9.99g 9.99g
  /dev/sdc1  myvg lvm2 a--  9.99g 9.99g
  /dev/sdd1  myvg lvm2 a--  9.99g 9.99g
3、创建VG并设定PE为8M大小
vgcreate myvg -s 8 /dev/sd{b,c,d}1
[root@localhost ~]# vgs
  VG   #PV #LV #SN Attr   VSize  VFree
  myvg   3   0   0 wz--n- 29.98g 29.98g
4、创建LV 名字为mylv1
[root@localhost ~]# lvcreate -n mylv1 -L 5G myvg
5、格式化
[root@localhost ~]# mkfs.ext4 /dev/myvg/mylv1
6、挂载
mount /dev/myvg/mylv1 /users
vim /etc/fstab
/dev/myvg/mylv1 /users ext4 acl 0 0

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

#useradd magedu -d /users/magedu#su magedu
#cp -rf /etc/skel/.* /users/magedu


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

[root@localhost ~]# lvextend -L +9G /dev/myvg/mylv1
[root@localhost ~]# resize2fs /dev/myvg/mylv1
[root@localhost ~]# df -lh /dev/myvg/mylv1
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/myvg-mylv1   14G   56M   13G   1% /users
[root@localhost ~]# ls /users/magedu/
abrt                       cups                        gshadow         machine-id                prelink.conf.d    shells
adjtime                    cupshelpers                 gshadow-        magic                     printcap          smartmontools
......

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

[root@llww3317 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3        18G  3.8G   13G  23% /
tmpfs           499M   80K  498M   1% /dev/shm
/dev/sda1       190M   34M  147M  19% /boot
[root@llww3317 ~]# mount /dev/myvg/mylv1 /data/mydata
[root@llww3317 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3              18G  3.8G   13G  23% /
tmpfs                 499M   80K  498M   1% /dev/shm
/dev/sda1             190M   34M  147M  19% /boot
/dev/mapper/myvg-mylv1
                      8.8G   12M  8.3G   1% /data/mydata
[root@llww3317 ~]# cp /etc/issue /data/mydata
[root@llww3317 ~]# umount /dev/myvg/mylv1
[root@llww3317 ~]# e2fsck -f /dev/myvg/mylv1
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/mylv1: 12/589824 files (0.0% non-contiguous), 72672/2359296 blocks
[root@llww3317 ~]# resize2fs /dev/myvg/mylv1 7G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/myvg/mylv1 to 1835008 (4k) blocks.
The filesystem on /dev/myvg/mylv1 is now 1835008 blocks long.
[root@llww3317 ~]# lvreduce -L 7G /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 myvg/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@llww3317 ~]# mount /dev/myvg/mylv1 /data/mydata
[root@llww3317 ~]# more /data/mydata/issue 
CentOS release 6.8 (Final)
Kernel \r on an \m

17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;lvcreate -L 2G -s -n lv1back/dev/myvg/mylv1

lvcreate -L 2G -s -n lv1back/dev/myvg/mylv1

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

评论列表(1条)

  • 马哥教育
    马哥教育 2016-10-24 22:03

    1、注意脚本的排版格式。
    2、可以尝试更多方法要实现同一个问题。