马哥教育网络班21期+第7周课程练习
1、创建一个10G分区,并格式为ext4文件系统;
-
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
-
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
[root@localhost ~]# fdisk /dev/sdb Command (m for help): n Partition number (1-4): 1 First cylinder (1-7832, default 1): 1 Last cylinder, +cylinders or +size{K,M,G} (1-7832, default 7832): +10G Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]# partx -a /dev/sdb [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:00 40G 0 disk ├─sda1 8:10 29.3G 0 part / └─sda2 8:202G 0 part [SWAP] sdb 8:16 0 60G 0 disk └─sdb1 8:17 0 10G 0 part sr0 11:01 3.5G 0 rom
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
[root@localhost ~]# mke2fs -t ext4 -b 2048 -m 2 -L 'MYDATA' /dev/sdb1 [root@localhost ~]# tune2fs -o acl /dev/sdb1
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
[root@localhost ~]# mkdir -pv /data/mydata [root@localhost ~]# mount -o noexec,noatime /dev/sdb1 /data/mydata
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
[root@localhost ~]# fdisk /dev/sdb Command (m for help): n Partition number (1-4): 2 First cylinder (1307-7832, default 1307): 1307 Last cylinder, +cylinders or +size{K,M,G} (1307-7832, default 7832): +1G Command (m for help): t Partition number (1-4): 2 Hex code (type L to list codes): 82 Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks. [root@localhost ~]# partx -a /dev/sdb [root@localhost ~]# mkswap /dev/sdb2 [root@localhost ~]# swapon /dev/sdb2
3、写一个脚本
-
(1)、获取并列出当前系统上的所有磁盘设备;
-
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
[root@localhost ~]# cat disk.sh #!/bin/bash # for i in `lsblk | egrep '^(sd|hd)' | cut -d' ' -f1`;do echo Disk:$i echo Disk Space:`lsblk /dev/$i | egrep '(sd|hd)[[:alpha:]][[:digit:]]'` done
4、总结RAID的各个级别及其组合方式和性能的不同;
RAID 0(条带模式)
-
这种模式下,RAID 会将磁盘分割成等量大小的区块。存储数据时,将数据交错存储到多块磁盘上去。
-
性能表现:读、写性能提升
-
冗余能力(容错能力):无
-
空间利用率:N*min(S1,S2,…)
RAID 1(镜像模式)
-
这种模式下,每组至少两颗磁盘,一块用来存储数据,另一块用来存储数据的备份。
-
性能表现:读性能提升,写性能下降
-
冗余能力:有
-
空间利用率:1*min(S1,S2,…)
RAID 5(循环校验)
-
RAID 5 至少需要 3 颗硬盘才能组成。它的写入特点类似于 RAID 0,不同的是在每个循环写入的过程中,在每颗磁盘中会加入一个校验位。当写入硬盘的数据损坏后,可以利用校验位进行数据的恢复。如果单独使用一颗磁盘存储 校验位,会大大增加它的读写负担,所以校验位是轮流写入每颗硬盘的。
-
性能表现:读、写性能提升
-
冗余能力:有
-
空间利用率:(N-1)*min(S1,S2,…)
RAID 0+1
-
这种模式是 RAID 0 和 RAID 1 的组合。首先用两颗磁盘组成 RAID 0,共设定两组,然后将两组 RAID 0组合成 RAID 1。
-
性能表现:读、写性能提升
-
冗余能力:有
-
空间利用率:N*min(S1,S2,…)/2
RAID 1+0
-
这种模式就是先组合成 RAID 1,然后在组合成 RAID 0。
-
性能表现:读、写性能提升
-
冗余能力:有
– 空间利用率:N*min(S1,S2,…)/2
5、创建一个大小为10G的RAID1,要求有一个空闲盘,而且CHUNK大小为128k;
[root@localhost ~]# mdadm -C /dev/md1 -n2 -l1 -a yes -x1 -c128 /dev/sdb1 /dev/sdb2 /dev/sdb3 [root@localhost ~]# mdadm -D /dev/md1 /dev/md1: Version : 1.2 Creation Time : Fri Oct 28 16:00:46 2016 Raid Level : raid1 Array Size : 10482112 (10.00 GiB 10.73 GB) Used Dev Size : 10482112 (10.00 GiB 10.73 GB) Raid Devices : 2 Total Devices : 3 Persistence : Superblock is persistent Update Time : Fri Oct 28 16:01:30 2016 State : clean, resyncing Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Resync Status : 84% complete Name : localhost:1 (local to host localhost) UUID : ebde693e:fb4f8293:9c3ed012:ee5fb97e Events : 13 Number Major Minor RaidDevice State 0 8 170 active sync /dev/sdb1 1 8 181 active sync /dev/sdb2 2 8 19- spare /dev/sdb3
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
[root@localhost ~]# mdadm -C /dev/md2 -n3 -l5 -c256 /dev/sdb1 /dev/sdb2 /dev/sdb3 [root@localhost ~]# mdadm -D /dev/md2 /dev/md2: Version : 1.2 Creation Time : Fri Oct 28 16:11:03 2016 Raid Level : raid5 Array Size : 8393216 (8.00 GiB 8.59 GB) Used Dev Size : 4196608 (4.00 GiB 4.30 GB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Fri Oct 28 16:11:16 2016 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 256K Rebuild Status : 32% complete Name : localhost:2 (local to host localhost) UUID : bf022f15:66dbe3d7:93db49c1:bcc40c46 Events : 6 Number Major Minor RaidDevice State 0 8 170 active sync /dev/sdb1 1 8 181 active sync /dev/sdb2 3 8 192 spare rebuilding /dev/sdb3 [root@localhost ~]# mkfs.ext4 /dev/md2 [root@localhost ~]# mkdir /backup [root@localhost ~]# vim /etc/fstab /dev/md2 /backup ext4notime,acl 0 0
7、写一个脚本
-
(1) 接受一个以上文件路径作为参数;
-
(2) 显示每个文件拥有的行数;
-
(3) 总结说明本次共为几个文件统计了其行数;
[root@localhost ~]# cat filecount.sh #!/bin/bash # declare -i count=0 if [ $# -lt 1 ];then echo "Usage:$0 /path/to/file1 /path/to/file2 ...." exit 1 fi for i in $*;do [ -f $i ] && echo "$i have lines:`wc -l $i | cut -d' ' -f1`" [ $? -eq 0 ] && count=$[$count+1] || echo "$i not file" done echo "Files total:$count"
8、写一个脚本
-
(1) 传递两个以上字符串当作用户名;
-
(2) 创建这些用户;且密码同用户名;
-
(3) 总结说明共创建了几个用户;
[root@localhost ~]# cat useradd.sh #!/bin/bash # declare -i count=0 if [ $# -lt 2 ];then echo "Usage:$0 user1 user2" exit 1 fi for i in $*;do ! id $i &>/dev/null && useradd $i && echo $i | passwd --stdin $i &>/dev/null && count=$[$count+1] [ $? -eq 0 ] && echo "User $i added." || echo "User $i exists." done echo "Create users:$count"
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
[root@localhost ~]# cat userid.sh #!/bin/bash # declare -i idcount=0 for i in {1..20};do ! id visitor$i &>/dev/null && useradd visitor$i && echo User visitor$i add. [ $? -eq 0 ] && let idcount=$idcount+$(id -u visitor$i) || echo User visitor$i exists. done echo ID count:$idcount.
10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;
[root@localhost ~]# cat colcount.sh #!/bin/bash # declare -i spacecount=0 declare -i jingcount=0 file1=/etc/rc.d/rc.sysinit file2=/etc/rc.d/init.d/functions file3=/etc/fstab for i in {$file1,$file2,$file3};do [ -f $i ] && let jingcount+=$(grep ^# $i | wc -l) || echo $i no exists. [ -f $i ] && let spacecount+=$(grep ^$ $i | wc -l) || echo $i no exists. done echo "Spacecount totall:$spacecount" echo "# count totall:$jingcount"
11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
[root@localhost ~]# cat usershell.sh #!/bin/bash # declare -i count=0 for i in `grep bash$ /etc/passwd | cut -d: -f1,3`;do echo $i let count+=$[ `echo $i | cut -d: -f2` ] done echo "UID count:$count"
12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;
[root@localhost ~]# cat group.sh #!/bin/bash # declare -i count=0 for i in `cut -d: -f1 /etc/passwd`;do id $i | grep , &>/dev/null && echo $i && let count++ done echo "User count:$count"
13、创建一个由至少两个物理卷组成的大小为20G的卷组;要求,PE大小为8M;而在卷组中创建一个大小为5G的逻辑卷mylv1,格式化为ext4文件系统,开机自动挂载至/users目录,支持acl;
[root@localhost ~]# fdisk /dev/sdb Device Boot Start End Blocks Id System /dev/sdb1 1130610490413+ 8e Linux LVM /dev/sdb21307261210490445 8e Linux LVM [root@localhost ~]# pvcreate /dev/sdb1 /dev/sdb2 Physical volume "/dev/sdb1" successfully created Physical volume "/dev/sdb2" successfully created [root@localhost ~]# vgcreate -s 8M vg1 /dev/sdb1 /dev/sdb2 Volume group "vg1" successfully created [root@localhost ~]# lvcreate -n mylv1 -L 5G vg1 Logical volume "mylv1" created [root@localhost ~]# mkfs.ext4 /dev/vg1/mylv1 [root@localhost ~]# mkdir /users /dev/vg1/mylv1 /users ext4acl 0 0
14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;
[root@localhost ~]# useradd -d /users/magedu/ magedu [magedu@localhost ~]$ cp /etc/fstab /etc/inittab ./
15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
[root@localhost ~]# lvextend -L 9G /dev/vg1/mylv1 [root@localhost ~]# resize2fs /dev/vg1/mylv1
16、缩减mylv1至7G,确保缩减完成后原有数据完全可用;
[root@localhost ~]# umount /dev/vg1/mylv1 [root@localhost ~]# e2fsck -f /dev/vg1/mylv1 [root@localhost ~]# resize2fs /dev/vg1/mylv1 7G [root@localhost ~]# lvreduce -L 7G /dev/vg1/mylv1 [root@localhost ~]# mount /dev/vg1/mylv1 /users
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;
[root@localhost ~]# lvcreate -L 7G -p r -s -n mylv1_snapshot /dev/vg1/mylv1
原创文章,作者:N21_孤狼,如若转载,请注明出处:http://www.178linux.com/56895
评论列表(1条)
写的很好,排版也很漂亮,有没有尝试自己画图来理解一下raid的原理