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
i
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
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
"# 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
i
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
|