本周作业内容:
1、创建一个10G分区,并格式为ext4文件系统;
(1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;
首先要添加一块磁盘设备,然后进行分区格式化
1
2
3
|
[root@localhost ~]
# fdisk /dev/sdb ##创建一个分区sdb5大小为5G(磁盘比较小)
[root@localhost ~]
#mkfs.ext4 -L 'MYDATA' -b 2048 -m 2 /dev/sdb5
[root@localhost ~]
#partx -a /dev/sdb
|
(2) 挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳;
1
2
|
[root@localhost ~]
#mkdir -pv /data/mydata
[root@localhost ~]
#mount -o acl,nodiratime,noexec /dev/sdb5 /data/mydata/
|
##知识点:mount挂载文件系统选项
-o options:(挂载文件系统的选项)
async:异步模式;
sync:同步模式;
atime/noatime:包含目录和文件;
diratime/nodiratime:目录的访问时间戳
auto/noauto:是否支持自动挂载
exec/noexec:是否支持将文件系统上应用程序运行为进程
dev/nodev:是否支持在此文件系统上使用设备文件;
suid/nosuid:
remount:重新挂载
ro:
rw:
user/nouser:是否允许普通用户挂载此设备
acl:启用此文件系统上的acl功能:-访问控制列表
注意:上述选项可多个同时使用,彼此使用逗号分隔;
默认挂载选项:defaults
rw, suid, dev, exec, auto, nouser, and async
2、创建一个大小为1G的swap分区,并创建好文件系统,并启用之;
##创建swap交换分区前要调整分区id为82
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost ~]
# mkswap /dev/sdb6
[root@localhost ~]
# swapon /dev/sdb6 ##启用交换分区
[root@localhost ~]
# fdisk -l /dev/sdb
Disk
/dev/sdb
: 10.7 GB, 10737418240 bytes
255 heads, 63 sectors
/track
, 1305 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: 0x7f785d31
Device Boot Start End Blocks Id System
/dev/sdb1
1 1305 10482381 5 Extended
/dev/sdb5
1 654 5253192 83 Linux
/dev/sdb6
655 786 1060258+ 82 Linux swap / Solaris
|
3、写一个脚本
(1)、获取并列出当前系统上的所有磁盘设备;
(2)、显示每个磁盘设备上每个分区相关的空间使用信息;
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
|
[root@liu homework7]
# cat diskinfo.sh
#!/bin/bash
#
#Description: show disk names and the space
fdisk
-l |
grep
"^/"
|
cut
-d
' '
-f1
df
-h
测试脚本:
[root@liu homework7]
# bash diskinfo.sh
/dev/sda1
/dev/sda2
/dev/sda3
/dev/sdc1
/dev/sdc5
/dev/sdc6
/dev/sdc7
/dev/sdb1
/dev/sdb5
/dev/sdb6
Filesystem Size Used Avail Use% Mounted on
/dev/sda3
14G 3.5G 9.5G 27% /
tmpfs 504M 0 504M 0%
/dev/shm
/dev/sda1
194M 28M 157M 16%
/boot
/dev/sr0
3.6G 3.6G 0 100%
/mnt
##也可以使用awk格式化输出Disk信息
fdisk
-l |
awk
'/^Disk.*dev/{print $0}’
[root@liu homework7]
# fdisk -l |awk '/^Disk.*dev/{print $0}'
Disk
/dev/sda
: 17.2 GB, 17179869184 bytes
Disk
/dev/sdc
: 10.7 GB, 10737418240 bytes
Disk
/dev/sdb
: 10.7 GB, 10737418240 bytes
|
4、总结RAID的各个级别及其组合方式和性能的不同;
1
2
3
4
5
|
RAID级别 组合方式 性能
raid0 条带式,2,2+ 提升读写性能,无容错
raid1 镜像式,2,2+ 读性能提升,写性能下降,有容错能力
raid5 奇偶校验,3,3+ 读写性能提升,可容错1块盘
raid10 先镜像,分条带,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
|
[root@localhost ~]
# mdadm -C /dev/md0 -n 2 -l 1 -a yes -c 128 -x 1 /dev/sdb{5,6,7}
[root@localhost ~]
# mdadm -D /dev/md0
/dev/md0
:
Version : 1.2
Creation Time : Sun Sep 25 07:51:15 2016
Raid Level : raid1
Array Size : 4196800 (4.00 GiB 4.30 GB)
Used Dev Size : 4196800 (4.00 GiB 4.30 GB)
Raid Devices : 2
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Sun Sep 25 07:51:37 2016
State : clean
Active Devices : 2
Working Devices : 3
Failed Devices : 0
Spare Devices : 1
Name : localhost.localdomain:0 (
local
to host localhost.localdomain)
UUID : 4f1f09ea:b6c7fe62:0d0d9760:6ddbe110
Events : 17
Number Major Minor RaidDevice State
0 8 22 0 active
sync
/dev/sdb6
1 8 23 1 active
sync
/dev/sdb7
2 8 21 - spare
/dev/sdb5
|
6、创建一个大小为4G的RAID5设备,chunk大小为256k,格式化ext4文件系统,要求可开机自动挂载至/backup目录,而且不更新访问时间戳,且支持acl功能;
1
2
3
4
5
6
7
8
9
10
11
12
|
[root@localhost ~]
# mdadm -C /dev/md5 -n 3 -l 5 -a yes -c 256 /dev/sdb{5,6,7}
[root@localhost ~]
# mke2fs -t ext4 -L mydata /dev/md5
[root@localhost ~]
# mount -o acl,nodiratime /dev/md5 /data/mydata/
[root@localhost ~]
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
18G 3.7G 13G 23% /
tmpfs 495M 72K 495M 1%
/dev/shm
/dev/sda1
477M 35M 418M 8%
/boot
/dev/md5
2.0G 3.1M 1.9G 1%
/data/mydata
[root@localhost ~]
# vim /etc/fstab
添加一行:
/dev/md5
/data/mydata
ext4 nodiratime,acl,defaults 0 0
|
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
25
26
27
28
29
|
[root@liu homework7]
# cat 7.sh
#!/bin/bash
#
declare
-i i=0
if
[ $
# -lt 1 ];then
echo
"please input at least one file path"
exit
1
fi
for
file
in
$*;
do
if
[ -f $
file
];
then
echo
"The $file line number : $(wc -l $file | cut -d' ' -f1)"
let
i++
else
echo
"Please input the correct file path"
fi
done
echo
"File counts: $i"
脚本测试:
[root@liu homework7]
# bash 7.sh
please input at least one
file
path
[root@liu homework7]
# bash 7.sh /etc/passwd /etc/adda
The
/etc/passwd
line number : 76
Please input the correct
file
path
File counts: 1
[root@liu homework7]
# bash 7.sh /etc/passwd /etc/fstab
The
/etc/passwd
line number : 76
The
/etc/fstab
line number : 18
File counts: 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
|
[root@liu homework7]
# cat 8.sh
#!/bin/bash
#
#create user and pasword=username count usernames
declare
-i i=0
if
[ $
# -lt 2 ];then
echo
"Please at least input two username."
exit
1
fi
for
username
in
$@;
do
id
$username &>
/dev/null
if
[ $? -
eq
0 ];
then
echo
"$username exist"
else
useradd
$username
echo
"$username"
|
passwd
--stdin $username &>
/dev/null
let
i++
fi
done
echo
"add user count:$i"
测试脚本:
[root@liu homework7]
# bash 8.sh testuser1 testuser2
add user count:2
[root@liu homework7]
# ls /home/
bash
liu testbash user10 user16 user4 useradd1 users5
basher mandirva testuser1 user11 user17 user5 users1 users6
centos mysql testuser2 user12 user18 user6 users10 users7
fedora nologin tuser1 user13 user19 user7 users2 users8
hadoop openstacks user user14 user2 user8 users3 users9
|
9、写一个脚本,新建20个用户,visitor1-visitor20;计算他们的ID之和;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
[root@localhost scripttest]
# cat 9.sh
#!/bin/bash
#
declare
-i
sum
=0
for
i
in
{1..20};
do
useradd
visitor$i
sum
+=$(
id
-u visitor$i)
done
[root@localhost scripttest]
# bash 9.sh
The
sum
of userid is: 10210
[root@localhost scripttest]
# ls /home/
Ljohn visitor11 visitor14 visitor17 visitor2 visitor4 visitor7
visitor1 visitor12 visitor15 visitor18 visitor20 visitor5 visitor8
visitor10 visitor13 visitor16 visitor19 visitor3 visitor6 visitor9
echo
"The sum of userid is: $sum"
|
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
|
#!/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
"# line number: $sum1"
echo
"space line number: $sum2"
[root@liu homework7]
# bash 10.sh
# line number: 91
space line number: 176
|
11、写一个脚本,显示当前系统上所有默认shell为bash的用户的用户名、UID以及此类所有用户的UID之和;
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@liu homework7]
# cat 11.sh
#!/bin/bash
#
declare
-i
sum
=0;
declare
-i i=0;
USERSHELL=$(
grep
"/bin/bash"
/etc/passwd
|
awk
-F
':'
'{print $1}'
\t)
USERUID=$(
grep
"/bin/bash"
/etc/passwd
|
awk
-F
':'
'{print $3}'
\t)
for
i
in
$USERUID;
do
let
sum
+=$i
done
echo
"user id sum=$sum"
echo
"user is $USERSHELL"
echo
"userid is $USERUID"
|
1
2
|
测试脚本
user
id
sum
=171286user is rootliubashbashertestbashcentosuseradd1mageiaopenstacksuser1hadoopuserid is 050050150250350650711003003300530083009
|
12、写一个脚本,显示当前系统上所有,拥有附加组的用户的用户名;并说明共有多少个此类用户;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
[root@liu homework7]
# cat 12.sh
#!/bin/bash
#
declare
-i i=0
for
user
in
`
awk
-F:
'{print$1}'
/etc/passwd
`;
do
group=$(
id
$user |
cut
-d
' '
-f3 |
awk
-F,
'{print $2}'
)
if
[ -n
"$group"
];
then
echo
$user
let
i++
fi
done
echo
"user number: $i"
测试脚本:
[root@liu homework7]
# bash 12.sh
bin
daemon
adm
postfix
slackware
openstacks
user number: 6
|
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
|
创建步骤:
1.创建一个分区并将分区类型改为LVM逻辑卷:8e
2.将该分区,创建PV使用(pvcreate)
3.创建卷组VG(vgcreate)
4.在卷组上创建lv
5.格式化逻辑卷LVM分区为ext4 挂载LVM,最后写到
/etc/fstab
文件中。
创建过程:
[root@localhost ~]
# pvcreate /dev/sdb{5,6}
Physical volume
"/dev/sdb5"
successfully created
Physical volume
"/dev/sdb6"
successfully created
[root@localhost ~]
# vgcreate -s 8M myvg /dev/sdb{5,6}
Volume group
"myvg"
successfully created
[root@localhost ~]
# lvcreate -L 5G -n mylv1 myvg
Logical volume
"mylv1"
created.
[root@localhost ~]
# lvdisplay
--- Logical volume ---
LV Path
/dev/myvg/mylv1
LV Name mylv1
VG Name myvg
LV UUID MLImqe-kcdt-6IPO-SHF6-vqRD-kvlP-urhEub
LV Write Access
read
/write
LV Creation host,
time
localhost.localdomain, 2016-09-25 21:06:26 +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 256
Block device 253:2
[root@localhost ~]
# mkfs.ext4 /dev/myvg/mylv1
[root@localhost ~]
# mkdir /users
[root@localhost ~]
# vim /etc/fstab
添加一行
/dev/myvg/mylv1
/users
ext4 defaults,acl 0 0
[root@localhost ~]
# mount -a
[root@localhost ~]
# mount
/dev/mapper/VolGroup-lv_root
on /
type
ext4 (rw)
proc on
/proc
type
proc (rw)
sysfs on
/sys
type
sysfs (rw)
devpts on
/dev/pts
type
devpts (rw,gid=5,mode=620)
tmpfs on
/dev/shm
type
tmpfs (rw,rootcontext=
"system_u:object_r:tmpfs_t:s0"
)
/dev/sda1
on
/boot
type
ext4 (rw)
none on
/proc/sys/fs/binfmt_misc
type
binfmt_misc (rw)
/dev/mapper/myvg-mylv1
on
/users
type
ext4 (rw,acl)
[root@localhost ~]
# cd /users/
[root@localhost
users
]
# cp /etc/fstab ./ ;ls
fstab lost+found
|
14、新建用户magedu;其家目录为/users/magedu,而后su切换至此用户,复制多个文件至家目录;
1
2
3
4
5
|
[root@localhost /]
# useradd -d /users/magedu magedu
[root@localhost /]
# su - magedu
[magedu@localhost ~]$
cp
/etc/
{fstab,
passwd
} ./
[magedu@localhost ~]$
ls
fstab
passwd
|
15、扩展mylv1至9G,确保扩展完成后原有数据完全可用;
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
|
[root@localhost magedu]
# lvresize -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 magedu]
# lvdisplay /dev/myvg/mylv1
--- Logical volume ---
LV Path
/dev/myvg/mylv1
LV Name mylv1
VG Name myvg
LV UUID MLImqe-kcdt-6IPO-SHF6-vqRD-kvlP-urhEub
LV Write Access
read
/write
LV Creation host,
time
localhost.localdomain, 2016-09-25 21:06:26 +0800
LV Status available
# open 1
LV Size 9.00 GiB
Current LE 1152
Segments 1
Allocation inherit
Read ahead sectors auto
- currently
set
to 256
Block device 253:2
[root@localhost magedu]
# ls ; cat /users/magedu/fstab
fstab
passwd
#
# /etc/fstab
# Created by anaconda on Wed Sep 7 23:19:06 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
#
/dev/mapper/VolGroup-lv_root
/ ext4 defaults 1 1
UUID=4a767f89-ceff-4b8b-9099-8652681b1a4f
/boot
ext4 defaults
1 2
/dev/mapper/VolGroup-lv_swap
swap swap defaults 0 0
tmpfs
/dev/shm
tmpfs defaults 0 0
devpts
/dev/pts
devpts gid=5,mode=620 0 0
sysfs
/sys
sysfs defaults 0 0
proc
/proc
proc defaults 0 0
/dev/myvg/mylv1
/users
ext4 defaults,acl 0 0
|
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
|
[root@localhost ~]
# umount /dev/myvg/mylv1
[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
: 24
/327680
files (0.0% non-contiguous), 55915
/1310720
blocks
[root@localhost ~]
# 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@localhost ~]
# 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@localhost ~]
# lvdisplay /dev/myvg/mylv1
--- Logical volume ---
LV Path
/dev/myvg/mylv1
LV Name mylv1
VG Name myvg
LV UUID MLImqe-kcdt-6IPO-SHF6-vqRD-kvlP-urhEub
LV Write Access
read
/write
LV Creation host,
time
localhost.localdomain, 2016-09-25 21:06:26 +0800
LV Status available
# open 0
LV Size 7.00 GiB
Current LE 896
Segments 1
Allocation inherit
Read ahead sectors auto
- currently
set
to 256
Block device 253:2
[root@localhost ~]
# mount /dev/myvg/mylv1 /users/
[root@localhost ~]
# cat /users/magedu/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
|
17、对mylv1创建快照,并通过备份数据;要求保留原有的属主属组等信息;
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
|
[root@localhost ~]
# lvcreate -L 512M -s -p r -n mysnap /dev/myvg/mylv1
Logical volume
"mysnap"
created.
[root@localhost ~]
# lvdisplay /dev/myvg/mysnap
--- Logical volume ---
LV Path
/dev/myvg/mysnap
LV Name mysnap
VG Name myvg
LV UUID vQf13M-bZz0-c0N4-sjSB-Gweb-Iy0c-jvqJby
LV Write Access
read
only
LV Creation host,
time
localhost.localdomain, 2016-09-25 21:41:01 +0800
LV snapshot status active destination
for
mylv1
LV Status available
# open 0
LV Size 7.00 GiB
Current LE 896
COW-table size 512.00 MiB
COW-table LE 64
Allocated to snapshot 0.00%
Snapshot chunk size 4.00 KiB
Segments 1
Allocation inherit
Read ahead sectors auto
- currently
set
to 256
Block device 253:5
[root@localhost ~]
# mkdir /lvsnap
[root@localhost ~]
# mount /dev/myvg/mysnap /lvsnap/
mount
: block device
/dev/mapper/myvg-mysnap
is write-protected, mounting
read
-only
[root@localhost lvsnap]
# ls -l
total 24
-rw-r--r--. 1 root root 824 Sep 25 21:11 fstab
drwx------. 2 root root 16384 Sep 25 21:07 lost+found
drwx------. 4 magedu magedu 4096 Sep 25 21:30 magedu
[root@localhost lvsnap]
# ll /users/
total 24
-rw-r--r--. 1 root root 824 Sep 25 21:11 fstab
drwx------. 2 root root 16384 Sep 25 21:07 lost+found
drwx------. 4 magedu magedu 4096 Sep 25 21:30 magedu
|