马哥运维学习作业(七)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#创建一个10G的分区
[root@c7-2 ~] # fdisk /dev/sda                      #进入划分分区
欢迎使用  fdisk  (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n                              #创建分区
Partition  type :
    p   primary (2 primary, 0 extended, 2  free )
    e   extended
Select (default p): p                               #划分分区
分区号 (3,4,默认 3):3
起始 扇区 (50333696-251658239,默认为 50333696):     #回车,下面创建一个10G的分区
将使用默认值 50333696
Last 扇区, +扇区 or +size{K,M,G} (50333696-251658239,默认为 251658239):+10G   #分10G的空间
分区 3 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):w                              #按w保存退出
The partition table has been altered!
Calling ioctl() to re- read  partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
 
#内核识别分区
[root@c7-2 ~] # partx -a /dev/sda                             #内核识别分区信息
partx:  /dev/sda : error adding partitions 1-2
[root@c7-2 ~] # partx -a /dev/sda                             #内核识别分区信息
partx:  /dev/sda : error adding partitions 1-3
 
#格式ext4,block大小为2048, 预留空间百分比为2, 卷标为MYDATA
[root@c7-2 ~] # mkfs.ext4 -b 2048 -m 2 -L MYDATA /dev/sda3           
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext4: Device size reported to be zero.  Invalid partition specified, or
         partition table wasn't reread after running  fdisk , due to
         a modified partition being busy and  in  use.  You may need to reboot
         to re- read  your partition table.
[root@c7-2 ~] # e2label /dev/sda3                         #查看卷标
MYDATA
[root@c7-2 ~] # blkid /dev/sda3                           #查看卷标,和类型
/dev/sda3 : LABEL= "MYDATA"  UUID= "a1aaad3d-a533-49db-90d1-e62902345408"  TYPE= "ext4"
 
#把创建好的10G分区挂载到/data/mydata下
[root@c7-2 ~] # mkdir -p /data/mydata                                #创建/data/mydata目录
[root@c7-2 ~] # mount -o acl,noexec,noatime /dev/sda3 /data/mydata/  #挂载
[root@c7-2 ~] # df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1         20G  955M   18G    6% /
devtmpfs        1.9G     0  1.9G    0%  /dev
tmpfs           1.9G     0  1.9G    0%  /dev/shm
tmpfs           1.9G  8.6M  1.9G    1%  /run
tmpfs           1.9G     0  1.9G    0%  /sys/fs/cgroup
tmpfs           378M     0  378M    0%  /run/user/0
/dev/sda3        9.8G   13M  9.6G    1%  /data/mydata
[root@c7-2 ~] # mount | grep '/dev/sda3'                             #查看属性信息
/dev/sda3  on  /data/mydata  type  ext4 (rw,noexec,noatime,seclabel,data=ordered)
[root@c7-2 ~] #


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#进入fdisk准备创建1G分区
[root@c7-2 ~] # fdisk /dev/sda                     
欢迎使用  fdisk  (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):n                             #创建分区
All primary partitions are  in  use
添加逻辑分区 5
起始 扇区 (71307264-251658239,默认为 71307264):    #回车保持默认
将使用默认值 71307264
Last 扇区, +扇区 or +size{K,M,G} (71307264-251658239,默认为 251658239):+1G          #空间为1G
分区 5 已设置为 Linux 类型,大小设为 1 GiB
命令(输入 m 获取帮助):t                             #更改类型
分区号 (1-5,默认 5):5                              #刚才创建的1G分区,分区号为5
Hex 代码(输入 L 列出所有代码):82                    #82代表swap
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):w                             #保存退出
The partition table has been altered!
Calling ioctl() to re- read  partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
 
#内核识别分区
[root@c7-2 ~] # partx -a -n 5 /dev/sda               #内核识别分区信息
[root@c7-2 ~] # partx -a -n 5 /dev/sda
partx:  /dev/sda : error adding partition 5            #内核识别分区信息
[root@c7-2 ~] # partx -a -n 5 /dev/sda
partx:  /dev/sda : error adding partition 5            #内核识别分区信息
[root@c7-2 ~] # fdisk -l | grep "^/dev/sda5"         #1G的swap分区已创建好
/dev/sda5         71307264    73404415     1048576   82  Linux swap / Solaris
 
#格式化sda5为swap分区
[root@c7-2 ~] # mkswap /dev/sda5                     #开始构建swap格式
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=7c4abbf3-435b-4fcc-a5f4-1b16a9f43605
[root@c7-2 ~] # blkid /dev/sda5                      #查看,类型已为swap
/dev/sda5 : UUID= "7c4abbf3-435b-4fcc-a5f4-1b16a9f43605"  TYPE= "swap" 
 
#查看未使用1G swap之前的大小
[root@c7-2 ~] # free -m             
               total        used         free       shared  buff /cache    available
Mem:           3776         137        3338           8         300        3416
Swap:          4095           0        4095
 
#把sda5作为swap交换分区
[root@c7-2 ~] # swapon /dev/sda5               #把sda5作为交换分区
 
#再次查看swap大小,由4G变为5G了
[root@c7-2 ~] # free -m                        #交换分区由4G加为5G
               total        used         free       shared  buff /cache    available
Mem:           3776         137        3338           8         300        3416
Swap:          5119           0        5119
[root@c7-2 ~] # swapon                         #查看目前swap设备有哪些信息
NAME      TYPE       SIZE USED PRIO
/dev/sda2  partition    4G   0B   -1
/dev/sda5  partition 1024M   0B   -2


3、写一个脚本

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@C7-1 shell] # cat 7_3.sh 
#!/bin/bash
fdisk  -l |  grep  -o  "^/[^[:space:]]\+"          #grep查找以/开头的信息,/etc..符合这种格式
df  -h                                          #查看磁盘使用信息              
[root@C7-1 shell] # bash 7_3.sh 
/dev/sda1
/dev/sda2
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root    38G  1.1G   37G    3% /
devtmpfs                 481M     0  481M    0%  /dev
tmpfs                    490M     0  490M    0%  /dev/shm
tmpfs                    490M  6.6M  484M    2%  /run
tmpfs                    490M     0  490M    0%  /sys/fs/cgroup
/dev/sda1                 497M  120M  378M   25%  /boot
[root@C7-1 shell] #


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

RAID-0:

    读、写性能提升;

    可用空间:N*min($1,$2,...)

    无容错能力

    最少磁盘数:2,2+

RAID-1:

    读性能提升、写性能略用下降;

    可用空间:1*min($1,$2,...)

    有冗余能力

    最少磁盘数: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;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#RAID1需要二块硬盘,由于需要一块空闲盘,故创建了sda7、8、9三个盘,每个10G。格式要改成82,不然在以后挂载等操作时会遇到问题
[root@c7 ~] # fdisk -l | grep "^/dev"
/dev/sda1    *        2048    41945087    20971520   83  Linux
/dev/sda2         41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3         50333696    71305215    10485760   83  Linux
/dev/sda4         71305216   251658239    90176512    5  Extended
/dev/sda5         71307264    73404415     1048576   82  Linux swap / Solaris
/dev/sda6         73406464    94377983    10485760   83  Linux
/dev/sda7         94380032   115351551    10485760   fd  Linux raid autodetect
/dev/sda8        115353600   136325119    10485760   fd  Linux raid autodetect
/dev/sda9        136327168   157298687    10485760   fd  Linux raid autodetect
 
#创建软RAID1,有一个空闲盘,CHUNK为128K
[root@c7 ~] # mdadm -C /dev/md0 -a yes -n 2 -x 1 -l 1 -c 128K /dev/sda{7,8,9}
mdadm: Note: this array has metadata at the start and
     may not be suitable as a boot device.  If you plan to
     store  '/boot'  on this device please ensure that
     your boot-loader understands md /v1 .x metadata, or use
     --metadata=0.90
Continue creating array? 
Continue creating array? (y /n ) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array  /dev/md0  started.
 
#查看RAID信息
[root@c7 ~] # mdadm -D /dev/md0 
/dev/md0 :
         Version : 1.2
   Creation Time : Tue Sep 27 15:02:08 2016
      Raid Level : raid1
      Array Size : 10477568 (9.99 GiB 10.73 GB)
   Used Dev Size : 10477568 (9.99 GiB 10.73 GB)
    Raid Devices : 2
   Total Devices : 3
     Persistence : Superblock is persistent
     Update Time : Tue Sep 27 15:02:24 2016
           State : clean, resyncing 
  Active Devices : 2
Working Devices : 3
  Failed Devices : 0
   Spare Devices : 1
   Resync Status : 32% complete
            Name : c7:0  ( local  to host c7)
            UUID : 0b5373cd:dddf63dd:625342fe:94d35c05
          Events : 5
     Number   Major   Minor   RaidDevice State
        0       8        7        0      active  sync    /dev/sda7
        1       8        8        1      active  sync    /dev/sda8
        2       8        9        -      spare    /dev/sda9
[root@c7 ~] # cat /proc/mdstat 
Personalities : [raid1] 
md0 : active raid1 sda9[2](S) sda8[1] sda7[0]
       10477568 blocks super 1.2 [2 /2 ] [UU]
       
unused devices: <none>
[root@c7 ~] #


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#RAID5需要三块硬盘,故创建了sda5、6、7三个盘,每个2G。格式要改成82,不然在以后挂载等操作时会遇到问题
[root@c7-3 ~] # fdisk -l | grep "^/dev"
/dev/sda1    *        2048    41945087    20971520   83  Linux
/dev/sda2         41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3         50333696   251658239   100662272    5  Extended
/dev/sda5         50335744    54530047     2097152   fd  Linux raid autodetect
/dev/sda6         54532096    58726399     2097152   fd  Linux raid autodetect
/dev/sda7         58728448    62922751     2097152   fd  Linux raid autodetect
 
#根据题目要求创建并查看信息
[root@c7-3 ~] # mdadm -C /dev/md0 -a yes -n 3  -l 5 -c 256K /dev/sda{5,6,7}
mdadm: Defaulting to version 1.2 metadata
mdadm: array  /dev/md0  started.
[root@c7-3 ~] # mdadm -D /dev/md0 
/dev/md0 :
         Version : 1.2
   Creation Time : Mon Sep 26 10:10:52 2016
      Raid Level : raid5
      Array Size : 4190208 (4.00 GiB 4.29 GB)
   Used Dev Size : 2095104 (2046.34 MiB 2145.39 MB)
    Raid Devices : 3
   Total Devices : 3
     Persistence : Superblock is persistent
     Update Time : Mon Sep 26 10:11:03 2016
           State : clean 
  Active Devices : 3
Working Devices : 3
  Failed Devices : 0
   Spare Devices : 0
          Layout : left-symmetric
      Chunk Size : 256K
            Name : c7-2:0  ( local  to host c7-2)
            UUID : 4b86aa4f:0cd62930:c17dda56:9da860f8
          Events : 18
     Number   Major   Minor   RaidDevice State
        0       8        5        0      active  sync    /dev/sda5
        1       8        6        1      active  sync    /dev/sda6
        3       8        7        2      active  sync    /dev/sda7
[root@c7-3 ~] # cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sda7[3] sda6[1] sda5[0]
       4190208 blocks super 1.2 level 5, 256k chunk, algorithm 2 [3 /3 ] [UUU]
       
unused devices: <none>
 
#格式化为ext4文件系统
[root@c7-3 ~] # mkfs.ext4  /dev/md0
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS  type : Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=64 blocks, Stripe width=128 blocks
262144 inodes, 1047552 blocks
52377 blocks (5.00%) reserved  for  the super user
第一个数据块=0
Maximum filesystem blocks=1073741824
32 block  groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
         32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
 
#创建backup目录,把以下信息追加到/etc/fstab中,验证信息是否加入到/etc/fstab中
[root@c7-3 ~] # mkdir /backup
[root@c7-3 ~] # echo "/dev/md0 /backup ext4 defaults,acl,noatime 0 0" >> /etc/fstab
[root@c7-3 ~] # tail -1 /etc/fstab 
/dev/md0  /backup  ext4 defaults,acl,noatime 0 0
 
#挂载该分区,并查看信息
[root@c7-3 ~] # mount -a
[root@c7-3 ~] # mount | grep "^/dev/md0"
/dev/md0  on  /backup  type  ext4 (rw,noatime,seclabel,stripe=128,data=ordered)


7、写一个脚本

   (1) 接受一个以上文件路径作为参数;

   (2) 显示每个文件拥有的行数;

   (3) 总结说明本次共为几个文件统计了其行数;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[root@C7-1 shell] # cat 7_7.sh 
#!/bin/bash
#
declare  -i i=0                                       #初始i变量为0,i用来统计文件数
if  [ $ # -lt 1 ];then                                #判断是否给了一个以上路径值
    echo  "Please input file path."                    #如果没给路径,则提示
    exit  2                                            #错误返回值2
fi
for  file  in  $*; do                                    #创建循环,$*表示传递给脚本的所有参数
      line=$( wc  -l $ file  cut  -d ' '  -f 1 )           #变量line为截取的行数
      echo  "$file line number: $line"                 #输出有多少行
      let  i++                                         #文件数累计加1
done
echo  "Count the number of rows in a few files: $i"
[root@C7-1 shell] # chmod +x 7_8.sh                  #给执行权限
[root@C7-1 shell] # bash -n 7_7.sh
[root@C7-1 shell] # echo $?
0
[root@C7-1 shell] # bash 7_7.sh                      #执行此脚本,后面没给文件
Please input  file  path.
[root@C7-1 shell] # bash 7_7.sh /etc/fstab /etc/passwd   #后来给二个文件,下面是统计结果
/etc/fstab  line number: 11
/etc/passwd  line number: 29
Count the number of rows  in  a few files: 2


8、写一个脚本

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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
[root@C7-1 shell] # cat 7_8.sh 
#!/bin/bash
#7-8.sh
declare  -i i=0                                    #初始i变量为0,i用来统计用户数
if  [ $ # -lt 2 ];then                             #判断字符是否小于2个
     echo  "Please enter more than 2 characters"    #小于2个,则提示
     exit  2                                        #错误返回值2
fi
for  user  in  $*;  do                                #创建循环,$*表示传递给脚本的所有参数
     id  $user &>  /dev/null                         #判断用户,结果重定向到/dev/null
     if  [ $? - eq  0 ];  then                         #如果用户存在则提示
     echo  "$user exist"                           
     else
     useradd  $user                                 #用户不存在则创建
     echo  "$user"  passwd  --stdin $user &>  /dev/null    #用户名和密码相同
     let  i++                                       #统计加了几个用户
     fi
done
echo  "Add user count: $i"
[root@C7-1 shell] # bash -n 7_8.sh 
[root@C7-1 shell] # chmod +x 7_8.sh
[root@C7-1 shell] # bash -n 7_8.sh 
[root@C7-1 shell] # echo $?
0
[root@C7-1 shell] # bash 7_8.sh                   #执行此脚本,后面用户名,则提示
Please enter  more  than 2 characters
[root@C7-1 shell] # bash 7_8.sh zhaodongwei fuwei #接二个用户名,则创建成功,提示新增用户的数量
Add user count: 2
[root@C7-1 shell] # su - zhaodongwei
[zhaodongwei@C7-1 ~]$  su  - fuwei                   #切换用户测试
密码:
一次登录:二 9月 27 17:25:48 CST 2016pts /0 
[fuwei@C7-1 ~]$


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[root@C7-1 shell] # cat 7_9.sh 
#!/bin/bash
#7_9.sh
declare  -i  sum =0;
for  in  visitor{1..20};  do                       #创建visitor1-20的循环
     if 
         id  $i &>  /dev/null  ; then                  #判断用户是否存在,存在则提示
         echo  "user is exits"
     else
     useradd  $i;                                   #不存在就创建用户
     fi                               
     echo  "useradd $i success!"                    #提示创建成功
     let  sum +=$( id  -u $i)
done
echo  "All user uid: $sum"                         #累加ID
[root@C7-1 shell] # chmod +x 7_9.sh 
[root@C7-1 shell] # bash -n 7_9.sh
[root@C7-1 shell] # echo $?
0
[root@C7-1 shell] # bash 7_9.sh                   #执行脚本,成功创建20个用户
useradd  visitor1 success!
useradd  visitor2 success!
useradd  visitor3 success!
useradd  visitor4 success!
useradd  visitor5 success!
useradd  visitor6 success!
useradd  visitor7 success!
useradd  visitor8 success!
useradd  visitor9 success!
useradd  visitor10 success!
useradd  visitor11 success!
useradd  visitor12 success!
useradd  visitor13 success!
useradd  visitor14 success!
useradd  visitor15 success!
useradd  visitor16 success!
useradd  visitor17 success!
useradd  visitor18 success!
useradd  visitor19 success!
useradd  visitor20 success!
All user UID: 40810
[root@C7-1 shell] #


10、写一脚本,分别统计/etc/rc.d/rc.sysinit、/etc/rc.d/init.d/functions和/etc/fstab文件中以#号开头的行数之和,以及总的空白行数;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@c7 shell] # cat /etc/rc.d/rc.sysinit     #Centos7没有rc.sysinit文件,以下使用c6演示
cat /etc/rc .d /rc .sysinit: 没有那个文件或目录
[root@c6 shell] # cat 7_10.sh 
#!/bin/bash
#7_10.sh
declare  -i sum1=0;                             #sum1用于记录#开头的行
declare  -i sum2=0;                             #sum2用于记录空白行数
for  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  "# line: $sum1"                           #显示出#开头的行数
echo  "space line: $sum2"                       #显示空白的行数
[root@c6 shell] # chmod +x 7_10.sh 
[root@c6 shell] # bash -n 7_10.sh
[root@c6 shell] # echo $?
0
[root@c6 shell] # bash 7_10.sh                 #执行
# line: 94
space line: 210


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@c6 shell] # useradd -s /sbin/bash mysql       #为便于演示,创建一个mysql用户,指定shell为bash
[root@c6 shell] # id mysql                          #查看mysql的UID为500
uid=500(mysql) gid=500(mysql)  groups =500(mysql)
[root@c6 shell] # cat 7_11.sh                       
#!/bin/bash
#7_11.sh
declare  -i uid=0;                                       #uid用于总和用
for  in  ` grep  'bash$'  /etc/passwd  cut  -d: -f1`;  do   #查询以bash结果的用户
     echo  "USER: $i , UID: `id -u $i`"                   #USER显示用户,UID显示UID数值
     let  uid+=` id  -u $i`                                 #把UID加在一起
done
echo  "Sum of UID: $uid"
[root@c6 shell] # chmod +x 7_11.sh
[root@c6 shell] # bash -n 7_11.sh
[root@c6 shell] # echo $?
0
[root@c6 shell] # bash 7_11.sh                          #执行
USER: root , UID: 0
USER: mysql , UID: 500
Sum of UID: 500
[root@c6 shell] #


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#测试命令
[root@c6 shell] # useradd -u 3003 -g clouds -G nova openstack    #为便于演示,创建openstack用户,附加组为nova
[root@c6 shell] # id openstack                  #编写脚本前,测试命令
uid=3003(openstack) gid=501(clouds)  groups =501(clouds),502(nova)
[root@c6 shell] # id openstack | cut -d" " -f3  #以空格分隔,取第3段组
groups =501(clouds),502(nova)
[root@c6 shell] # id openstack | cut -d" " -f3 | awk -F, '{print $2}' #取出附加组
502(nova)
 
#编写脚本
[root@c6 shell] # cat 7_12.sh 
#!/bin/bash
#7_12.sh
declare  -i  sum =0;
for  user  in  ` cut  -d: -f1  /etc/passwd `;  do                        #取出用户
     group=$( id  $user |  cut  -d " "  -f3 |  awk  -F,  '{print $2}' )     #取出附加组
     if  [ -n  "$group"  ];  then           #测试字符串是否不空,不空则为真,空则为假;
     echo  $user                         #输出有附加组的用户
     let  sum ++                          #累加有附加组的用户数量
     fi
done
echo  "User number: $sum"
[root@c6 shell] # chmod +x 7_12.sh 
[root@c6 shell] # bash -n 7_12.sh
[root@c6 shell] # echo $?
0
[root@c6 shell] # bash 7_12.sh         #执行
bin
daemon
adm
postfix
openstack
User number: 5


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
[root@c7 ~] # vgcreate                     #由于Centos7最小安装,没有该命令,
- bash : vgcreate: 未找到命令
[root@c7 ~] # yum install -y lvm2          #使用些命令安装
[root@c7 ~] # fdisk -l | grep "^/dev"      #sda5和sda6为刚分的磁盘,格式调整为8e
/dev/sda1    *        2048    41945087    20971520   83  Linux
/dev/sda2         41945088    50333695     4194304   82  Linux swap / Solaris
/dev/sda3         50333696   251658239   100662272    5  Extended
/dev/sda5         50335744    71307263    10485760   8e  Linux LVM
/dev/sda6         71309312    92280831    10485760   8e  Linux LVM
[root@c7 ~] # pvcreate /dev/sda5           #创建
   Physical volume  "/dev/sda5"  successfully created
[root@c7 ~] # pvcreate /dev/sda6           #创建
   Physical volume  "/dev/sda6"  successfully created
[root@c7 ~] # pvs                          #查看pvs信息
   PV         VG   Fmt  Attr PSize  PFree 
   /dev/sda5        lvm2 ---  10.00g 10.00g
   /dev/sda6        lvm2 ---  10.00g 10.00g
[root@c7 ~] # vgcreate myvg -s 8 /dev/sda{5,6}    #-s 8为设置PE为8MB
   Volume group  "myvg"  successfully created
[root@c7 ~] # vgs                                 #查看vg信息 
   VG    #PV #LV #SN Attr   VSize  VFree 
   myvg   2   0   0 wz--n- 19.98g 19.98g
[root@c7 ~] # vgdisplay myvg                      #查看详细信息,20G和8MB
   --- 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               19.98 GiB
   PE Size               8.00 MiB
   Total PE              2558
   Alloc PE / Size       0 / 0   
   Free  PE / Size       2558 / 19.98 GiB
   VG UUID               hlCe5B-jnvc-itBF-Nu5Z-a1rC-75zK-VuUvMG
    
[root@c7 ~] # lvcreate -L 5G -n mylv1 myvg        #创建5G的mylv1逻辑卷
   Logical volume  "mylv1"  created.
[root@c7 ~] # lvs                                 #查看lvs,已有5G的mylv1逻辑卷
   LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   mylv1 myvg -wi-a----- 5.00g                                                    
[root@c7 ~] # lvdisplay                           #显示详细信息
   --- Logical volume ---
   LV Path                 /dev/myvg/mylv1
   LV Name                mylv1
   VG Name                myvg
   LV UUID                EnMz3a-nT5R-zZII-IB9z-0vj0-UHKN-19lgsS
   LV Write Access         read /write
   LV Creation host,  time  c7, 2016-09-28 07:23:46 +0800
   LV Status              available
   # open                 0
   LV Size                5.00 GiB
   Current LE             640
   Segments               1
   Allocation             inherit
   Read ahead sectors     auto
   - currently  set  to     8192
   Block device           253:0
    
[root@c7 ~] # mke2fs -t ext4 /dev/myvg/mylv1       #格式化为ext4
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS  type : Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved  for  the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block  groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
         32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
 
#创建/user目录,自动挂载至此目录
[root@c7 ~] # mkdir /users                      
[root@c7 ~] # echo "/dev/myvg/mylv1    /users   ext4  defaults,acl,nodiratime  0 0"  >> /etc/fstab
[root@c7 ~] # mount -a         
[root@c7 ~] # df -h   
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                 20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0%  /dev
tmpfs                   1.9G     0  1.9G    0%  /dev/shm
tmpfs                   1.9G  8.5M  1.9G    1%  /run
tmpfs                   1.9G     0  1.9G    0%  /sys/fs/cgroup
tmpfs                   378M     0  378M    0%  /run/user/0
/dev/mapper/myvg-mylv1   4.8G   20M  4.6G    1%  /users


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

1
2
3
4
5
6
7
8
9
10
[root@c6 ~] # mkdir /users                          #创建/users目录
[root@c6 ~] # useradd -d /users/magedu magedu       #创建magedu,其家目录为/users/magedu
[magedu@c6 ~]$  tail  -1  /etc/passwd                  #验证用户
magedu:x:3004:3004:: /users/magedu : /bin/bash
[root@c6 ~] # su - magedu                           #切换到magedu用户下
[magedu@c6 ~]$  pwd
/users/magedu
[magedu@c6 ~]$  cp  -a  /etc/fstab  /etc/issue  /users/magedu/    #复制多个文件到/users/magedu/
[magedu@c6 ~]$  ls  /users/magedu/                    #查看文件
fstab  issue


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@c7 ~] # lvextend -L +4G /dev/myvg/mylv1             #加4G
   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@c7 ~] # resize2fs /dev/myvg/mylv1                   #检查文件
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at  /dev/myvg/mylv1  is mounted on  /users ; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on  /dev/myvg/mylv1  is now 2359296 blocks long.
 
[root@c7 ~] # lvs                                         #查看信息,加到9G
   LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   mylv1 myvg -wi-ao---- 9.00g                                                    
[root@c7 ~] # df -h                                       #查看磁盘
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                 20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0%  /dev
tmpfs                   1.9G     0  1.9G    0%  /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1%  /run
tmpfs                   1.9G     0  1.9G    0%  /sys/fs/cgroup
tmpfs                   378M     0  378M    0%  /run/user/0
/dev/mapper/myvg-mylv1   8.8G   23M  8.3G    1%  /users


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
[root@c7 ~] # umount /dev/myvg/mylv1                   #卸载
[root@c7 ~] # df -h                                    #查看磁盘,已卸载
文件系统        容量  已用  可用 已用% 挂载点
/dev/sda1         20G  1.1G   18G    6% /
devtmpfs        1.9G     0  1.9G    0%  /dev
tmpfs           1.9G     0  1.9G    0%  /dev/shm
tmpfs           1.9G  8.6M  1.9G    1%  /run
tmpfs           1.9G     0  1.9G    0%  /sys/fs/cgroup
tmpfs           378M     0  378M    0%  /run/user/0
[root@c7 ~] # e2fsck -f /dev/myvg/mylv1                #检查文件
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/myvg/mylv1 : 11 /589824  files (0.0% non-contiguous), 75551 /2359296  blocks
[root@c7 ~] # resize2fs /dev/myvg/mylv1 7G             
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on  /dev/myvg/mylv1  to 1835008 (4k) blocks.
The filesystem on  /dev/myvg/mylv1  is now 1835008 blocks long.
[root@c7 ~] # lvreduce -L -2G /dev/myvg/mylv1         #lv缩减至7G
   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@c7 ~] # lvs
   LV    VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   mylv1 myvg -wi-a----- 7.00g                                                    
[root@c7 ~] # mount /dev/myvg/mylv1 /users/            #重新挂载
[root@c7 ~] # df -h                                    #查看磁盘空间,改为7G
文件系统                容量  已用  可用 已用% 挂载点
/dev/sda1                 20G  1.1G   18G    6% /
devtmpfs                1.9G     0  1.9G    0%  /dev
tmpfs                   1.9G     0  1.9G    0%  /dev/shm
tmpfs                   1.9G  8.6M  1.9G    1%  /run
tmpfs                   1.9G     0  1.9G    0%  /sys/fs/cgroup
tmpfs                   378M     0  378M    0%  /run/user/0
/dev/mapper/myvg-mylv1   6.8G   23M  6.5G    1%  /users
[root@c7 ~] # cat /etc/fstab 
#
# /etc/fstab
# Created by anaconda on Wed Sep 28 04:55:14 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=60220b4e-9c6d-4373-b06b-0b5687833781 /                       ext4    defaults        1 1
UUID=55ef4f5d-51cc-4de7-a17c-e96370afc1eb swap                    swap    defaults        0 0
/dev/myvg/mylv1     /users    ext4  defaults,acl,nodiratime  0 0


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

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@c7 ~] # lvcreate -L 3G -p r -s -n mylv1.bak /dev/myvg/mylv1    #创建快照
   Logical volume  "mylv1.bak"  created.
[root@c7 ~] # lvs                                                    #查看mylv1.bak存在 
   LV        VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
   mylv1     myvg owi-aos--- 7.00g                                                    
   mylv1.bak myvg sri-a-s--- 3.00g      mylv1  0.00                                   
[root@c7 ~] # mkdir /snapshot                                        #创建一个/snapshot用于挂载
[root@c7 ~] # mount /dev/myvg/mylv1                                  
mylv1      mylv1.bak  
[root@c7 ~] # mount /dev/myvg/mylv1.bak /snapshot/                   #挂载mylv1.bak到/snapshot
mount /dev/mapper/myvg-mylv1 .bak 写保护,将以只读方式挂载
[root@c7 ~] # ls /snapshot/                                          #可以查看
lost+found







      本文转自cix123  51CTO博客,原文链接:http://blog.51cto.com/zhaodongwei/1854803,如需转载请自行联系原作者





相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
4月前
|
Kubernetes 监控 测试技术
运维.云技术学习.基于应用服务网格的灰度发布(上:理论基础篇)
运维.云技术学习.基于应用服务网格的灰度发布(上:理论基础篇)
82 0
|
5月前
|
运维 关系型数据库 流计算
实时计算 Flink版产品使用问题之作业运维界面无状态启动并指定时间和代码里指'scan.startup.mode'='latest-offset',哪个优先级更高
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
5月前
|
人工智能 运维
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
学习若依的好地方,若依社区,好的运维,社区,也可以运营自己的社区,可以用于投放软件产品和海报展示,有空可以研究怎样运行社区,好的标题设计
|
5月前
|
运维
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
会员系统功能售卖之一之学习资源,余老师的优点PTF做的好,公众号做的好,自媒体运维的好,教学视频类网站,学习自媒体运维可以多看看别人视频,讲课不会讲可以用音频转文字看看人家是怎样讲的,可以在网站上视频
|
7月前
|
运维 程序员 Linux
运维最全Linux 基本防火墙设置和开放端口命令,2024年最新程序员如何自我学习和成长
运维最全Linux 基本防火墙设置和开放端口命令,2024年最新程序员如何自我学习和成长
|
7月前
|
运维 前端开发 JavaScript
运维管理平台实现与学习心得
运维管理平台实现与学习心得
|
运维 关系型数据库 Shell
小白带你学习linux自动化运维ansible
小白带你学习linux自动化运维ansible
295 0
小白带你学习linux自动化运维ansible
|
SQL 运维 监控
15天学习MySQL计划(运维篇)分库分表-监控-第十四天(上)
15天学习MySQL计划(运维篇)分库分表-监控-第十四天
151 1
|
存储 运维 监控
15天学习MySQL计划(运维篇)分库分表-监控-第十四天(中)
15天学习MySQL计划(运维篇)分库分表-监控-第十四天(中)
125 1
|
SQL 运维 关系型数据库
15天学习MySQL计划-主从复制(运维篇)第十三天
15天学习MySQL计划-主从复制(运维篇)第十三天
124 1