文章目录
- 1.配置IP地址
- 2、配置软件仓库
- 3、调试SELinux
- 4、创建用户账户
- 5. 配置cron计划任务
- 6、创建共享目录
- 7、配置NTP时间客户端
- 8. auto自动挂载
- 9、配置文件权限
- 10、配置用户账户
- 11、查找文件
- 12、查找字符串
- 13、 创建归档
- 14、配置sudo提权
- 15、设置密码默认策略
- 16、配置umask值
- 17、设置root密码
- 18、配置软件仓库
- 19、调整逻辑卷大小
- 20、添加交换分区
- 21、创建逻辑卷
- 22、创建VDO卷
- 23、配置系统调优
- 24、创建用于定位文件的脚本
这是今年最新版的证书,也是我获得的~
podman容器题
中级RHCE题库已经更新 ansible
以下关于终端号一会node1一会servera这是没问题的,考试会自定义给的只是我懒得开模拟环境导致的
1.配置IP地址
1.配置网络设置
将node1配置为具有以下网络配置:
主机名: node1.domain250.example.com
IP地址: 172.25.250.100
子网掩码:255.255.255.0网关:172.25.250.254
DNS服务器:172.25.250.254
命令步骤:
方法一:
推荐使用这种比较方便,不容易错
[root@localhost ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 43920a4d-f27e-40c4-b1db-143e0cb6a00c ethernet ens33
[root@localhost ~]# nmcli connection modify ens33 ipv4.addresses 172.25.250.10/24 ipv4.gateway 172.25.250.254 ipv4.dns 172.25.250.10 ipv4.method manual connection.autoconnect yes
[root@localhost ~]# nmcli connection down ens33 ; nmcli connection up ens33
Connection 'ens33' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/6)
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
方法二:
//考试时首先查看enthernet以太网是谁在修改配置文件
[root@computer network-scripts]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 5dcaf658-e5f2-46cd-9e37-1509d96f99f4 ethernet eth0
//配置文件中修改的
[root@computer network-scripts]# cat ifcfg-eth0
TYPE="Ethernet"
BOOTPROTO=static
DEFROUTE="yes"
NAME="eth0"
UUID="5dcaf658-e5f2-46cd-9e37-1509d96f99f4"
DEVICE="eth0"
ONBOOT="yes"
IPADDR=172.25.250.10
NETMASK=255.255.255.0
GATEWAY=172.25.250.254
DNS1=172.25.250.254
[root@computer network-scripts]# systemctl restart NetworkManager
[root@computer network-scripts]# ifdown eth0 ; ifup eth0 //开启网卡
成功断开设备 "eth0"。
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
//ssh远程连接
//查看是否激活eth0网卡
[root@computer network-scripts]# ip a
//配置成功后用shh连接一下
[ root@foundation0 ~]#ssh root@172.25.250.10
//设置主机名
[ root@node1 ~]# hostnamectl set-hostname node1.domain250.example.com
参数解析:
方法一:
nmcli connection :网卡设置的连接命令
modify:需要修改的网卡名
ipv4.* : 意为需要修改的IP地址
ipv4.methon.manual:手动方法修改
connection.autoconnect yes:自动连接
方法二:
TYPE //接口类型。常见的接口类型有:Ethernet,Bridge
ether 代表ethernet 以太网的意思
BOOTPROTO=none //引导协议,可选值有{static|none|dhcp|bootp}。如果要使用静
态地址,使用static或none都可以
ONBOOT=yes //在系统引导时是否自动激活此网络接口,可选值有{ yes | no }
DEVICE=eth1 //关联的设备名称,要与文件名的后半部"INTERFACE_NAME"保持一致
NAME="eth1" //连接名称
IPADDR=172.25.250.10 //固定IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=172.25.250.254//默认网关
DNS1=172.25.250.254 //第一个DNS服务器指向
2、配置软件仓库
请配置你虚拟机的yum仓库,地址如下:
http://content.example.com/rhel8.2/x86_64/dvd/BaseOS
http://content.example.com/rhel8.2/x86_64/dvd/AppStream
命令步骤:
//注意这里一点要以.repo为后缀名
否则仓库运行不了
[ root@node1 ~]# cd /etc/yum.repos.d
[ root@node1 ~]# vim xxx.repo
[Baseos]
name=BaseOS
baseurl=http://content.example.com/rhel8.2/x86_64/dvd/BaseOS
gpgcheck=0
enabled=1
[AppStream]
name=AppStream
baseurl=http://content.example.com/rhel8.2/x86_64/dvd/AppStream
gpgcheck=0
enabled=1
yum clean all
yum list all
//测试
[ root@node1 ~]# yum -y install vim
参数解析:
[Repo_Name]:仓库名称
name:描述信息
baseurl:仓库的具体路径,接受以下三种类型
ftp://
http:// 源仓库
file:///(系统的根下查找) 本地仓库
enabled:可选值{1|0},1为启用此仓库,0为禁用此仓库
gpgcheck:可选值{1|0},1为检查软件包来源合法性,0为不检查来源 不用检查合法性
如果gpgcheck设为1,则必须用gpgkey定义密钥文件的具体路径gpgkey=/PATH/TO/KEY
清空yum本地缓存
yum clean all
检验yum本地仓库
yum list all
3、调试SELinux
配置httpd在82端口上提供Web服务,满足以下要求:
1)在/var/www/html/下不要改动现有文件
2)此Web服务器在系统启动时自动启动
3)确保SELinux保护机制运行在Enforcing模式
命令步骤:
[root@servera ~]# systemctl restart httpd
[root@servera ~]# systemctl enable --now httpd
//保证服务要处enable(自启动状态)
[root@servera ~]# systemctl status httpd
//查看下,一般考试已经存在了
[root@servera ~]# vim /etc/httpd/conf/httpd.conf
Listen 82
#搜索http规则中82是否有端口号
[root@servera html]# semanage port -l | grep http
http_port_t tcp 80,81,443,488,8008,8009,8443, 9000
//添加82端口规则
[root@servera ~]# semanage port -a -t http_port_t -p tcp
//防火墙开放82端口
firewall-cmd --add-port=82/tcp --permanent
firewall-cmd --reload
//保证/var/www/html文件保持一致
//过滤man帮助
man semanage fcomtext | grep \#
#semanage fcontext -a -t httpd_sys_content_t " /web( /.*)?"
#restorecon -R -v /web
//修改file1值为htpp_
[ root@node1 ~]#ll -Z /var/ wwws / html/
-rw-r--r--. l root root system_u:object_r:default_t:s0 14 May 29 03:44 file1
-rw-r.-r--, 1 root root system_u:object_r:httpd_sys_content_t:s0 14 May 29 03:44 file2
[root@node1 ~]# semanage fcontext -m -t httpd_sys_content_t /var/ww/html/file1
[root@node1 ~]# semanage fcontext -a -t httpd_sys_content_t /var/ww/html/file1
//刷新下即可生成
[root@node1 ~]# restorecon -v /var/www/html 修改完后刷新
-rw-r--r--. 1 root root
[ root@node1 ~]#ll -Z /var/www/html/
system_u:object_r:httpd_sys_content_t:s0 14 May 29 03:44 filel
[root@servera ~]# netstat -tulnp | grep httpd //查看端口是否监听
tcp6 0 0 :::82 :::* LISTEN
25747/httpd
//在网页中访问
http://172.25.250.10:82
hello yutianedu
参数解析:
**semanage**命令用来查询与修改SELinux默认目录的安全上下文。
例:如apache采用非标准端口,需执行如下命令放行端口。
代码如下:
root@servera ~]# semanage port -a -t http_port_t -p tcp 82
semanage主要相关参数:
-a:添加
-d:删除
-m:修改
-l:列举
-n:不打印说明头
-D:全部删除
-f:文件
-s:用户
-t:类型
-r:角色
//添加防火墙规则
firewall-cmd --add-port=82/tcp --permanent
firewall-cmd --reload //重启防火墙
–add-port=80/tcp 添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
4、创建用户账户
根据下列要求创建用户及组账号:
1)名为admins的组
2)用户harry,其附属组为admins
3)用户natasha,其附属组还属于admins
4)用户alice,没有可交互的登录Shell,且不属于admins组
5)harry、natasha、alice的密码都应该是redhat
命令步骤:
[root@servera ~]# groupadd admins //创建用户组
[root@servera ~]# useradd -G admins harry 用户为组成员
[root@servera ~]# useradd -G admins natasha
[root@servera ~]# useradd -s /sbin/nologin alice 用户不允许交互式登录
//使用for循环简单配置
[root@servera ~]# for i in harry natasha alice
>do echo "redhat" | password --stdin $i
>done
参数解析
-G 后接组
[root@servera ~]# useradd -G admins natasha
查看/etc/paaswd
第七字段 用户的登录的shell一般为: **/bin/bash**
-s shell 指定该用户终端配置 //切换其他sell,不允许交互式登录此系统
[root@servera ~]# useradd -s /sbin/nologin alic
如若创建用户不小心创错了
接userdel -r //删除用户的同时删除其家目录(userdel默认不会删除其家目录)
--stdin //从标准输入获取用户密码, \
//例:echo "redhat"|passwd --stdin user1
[root@servera ~]# echo redhat | passwd --stdin harry
5. 配置cron计划任务
配置计划任务,以用户harry的身份每天14:23分执行一次命令 echo hello。
命令步骤:
保证计划服务开机自启
[root@servera ~]# systemctl status crond
[root@servera ~]# crontab -u harry -e
23 14 * * * echo hello
[root@servera ~]# crontab -u harry -l
23 14 * * * echo hello
查看日志是否运行
cat /var/log/messages
命令参数
分 时 日 月 周
*/2 每隔2分钟
10-12 10到12点
9,11 9点多,11点多
1)语 法:
crontab [-u <用户名称>][配置文件] 或 crontab { -l | -r | -e }
-u #<用户名称> 是指设定指定<用户名称>的定时任务,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的定时任务。
-l #列出该用户的定时任务设置。
-r #删除该用户的定时任务设置。
-e #编辑该用户的定时任务设置。
(2)命令时间格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
6、创建共享目录
创建具有以下特点的共用目录:
1)/home/tools的所有组是admins
2)此目录能被admins组的成员读取、写入和访问,除root外其他用户没有这些权限
3)在此目录下创建的文件,其组的所有权自动设置为admins组
命令步骤:
[root@servera ~]# mkdir /home/tools
[root@servera ~]# chown -R .admins /home/tools
[root@servera ~]# chmod 770 /home/tools
[root@servera ~]# chmod g+s /home/tools
[root@servera ~]# ll -d /home/tools
drwxrws---. 2 root admins 6 Jun 17 16:30 /home/tools
[root@servera ~]# ll -d /home/tools
drwxrws---. 2 root admins 6 Jun 17 16:30 /home/tools
//测试
[root@servera ~]# touch /home/tools/file01
[root@servera ~]# ll /home/tools/file01
-rw-r--r--. 1 root admins 0 Jun 17 16:31 /home/tools/file01
参数
chown .代表使属组 目录
-R:使属组内容都属于这个组
g+s
SGID(2) //运行程序时,这个程序启动的进程的属组是程序文件自身的属组,而不是启动者所属的基
本组
//默认情况下,用户创建文件时,其属组为此用户所属的基本组;
//一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件或目录,其所属的组
7、配置NTP时间客户端
配置你的系统,使其成为classroom.example.com的NTP客户端。
命令步骤
[root@servera ~]# systemctl restart chronyd
[root@servera ~]# systemctl enable --now chronyd
[root@servera ~]# vim /etc/chrony.conf
server classroom.example.com iburst
[root@servera ~]# systemctl status chronyd
[root@servera ~]# hwlock -w
[root@servera ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
=============================================================================
==
^* classroom.example.com 8 6 17 1 -23us[ -23us] +/-
561us
参数
systemctl list-unit
systemctl list-units | grep NTP //查询服务名字是什么
保证开机自启
hwlock -w:意为将时间同步
Linux系统下,一般使用ntp服务来同步不同机器的时间。NTP 是网络时间协议(Network Time Protocol)的简称,就是通过网络协议使计算机之间的时间同步化。
8. auto自动挂载
题目:
按照以下要求,在servera上配置autofs自动挂载:
1)serverb通过NFS共享目录/rhome到你的系统,此文件系统中包含为用户ldapuser0预配置的家目录
2)预设用户ldapuser0的家目录应自动挂载到本地的/rhome/ldapuser0目录
3)预设用户ldapuser0的家目录是serverb.lab.example.com:/rhome/ldapuser0
4)预设用户ldapuser0的家目录应自动挂载到本地的/rhome/ldapuser0目录
5)挂载后的家目录必须可读写
命令步骤
rpm -qc autofs 查看主配置文件
[root@servera ~]# showmount -e serverb.lab.example.com
Export list for 172.25.250.11:
/rhome/ldapuser0 *
[root@servera ~]# yum -y install autofs
[root@servera ~]# systemctl enable --now autofs
[root@servera ~]# vim /etc/auto.master
/rhome #主目录 /etc/auto.nfs --副目录
[root@servera ~]# vim /etc/auto.nfs
ldapuser0 -rw serverb.lab.example.com:/rhome/ldapuser0
[root@servera ~]# systemctl restart autofs
[root@servera ~]# cd /rhome/
[root@servera rhome]# ls
[root@servera rhome]# cd ldapuser0 # 触发挂载,考试的时候用su - ldapuser0来触
发,cd触发如果报权限拒绝,此为正常现象。
[root@servera ldapuser0]# pwd #为/rhome家目录成功
[root@servera ldapuser0]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 892M 0 892M 0% /dev
tmpfs 915M 0 915M 0% /dev/shm
tmpfs 915M 17M 898M 2% /run
tmpfs 915M 0 915M 0%
/sys/fs/cgroup
/dev/vda1 10G 1.6G 8.5G 16% /
tmpfs 183M 0 183M 0% /run/user/0
serverb.lab.example.com:/rhome/ldapuser0 10G 1.5G 8.6G 15%
/rhome/ldapuser0
showmount命令用于查询NFS服务器的相关信息
显示指定NFS服务器输出目录列表(也称为共享目录列表)
//连接
showmount -e 192.168.1.1
mount挂载是使用外部存储介质或者文件系统所必须的一步操作,但是如果挂载的资源过多,则会给网络资源和服务器资源造成一定的负载,从而降低服务器性能。我们可以使用autofs服务,autofs是一种系统守护进程,我们可以把挂载信息写入其配置文件中,如果用户不访问其他存储介质的,则系统不会进行挂载,如果用户尝试访问该存储介质,则autofs会自动进行挂载操作,上述所有操作对用户而言是透明的,这样一来,autofs服务节省了服务器的网络和硬件资源。
autofs服务的主配置文件为/etc/auto.master,打开后,需要在主配置文件中写入格式:
目的挂载目录 挂载目录的子配置文件
例如我们想把/rhome/ldapuser0挂载到/etc目录下,则需要写入如下的内容:
[root@servera ~]#vim /etc/auto.master
/rhome /etc/auto.nfs
其中,ldapuser0表示该目录下的子挂载目录,
[root@servera ~]# vim /etc/auto.nfs
ldapuser0 -rw serverb.lab.example.com:/rhome/ldapuser0
ssh 用户@主机(localhost)
mount | grep rhome 查看挂载信息
9、配置文件权限
将文件/etc/fstab复制到/var/tmp/,并按要求配置/var/tmp/fstab的权限:
1)文件/var/tmp/fstab属于root用户
2)文件/var/tmp/fstab属于root组
3)任何用户对/var/tmp/fstab都没有可执行权限
4)用户harry能够读取和写入/var/tmp/fstab文件
[root@servera ~]# cp /etc/fstab /var/tmp/
[root@servera ~]# ll /var/tmp/fstab
-rw-r--r--. 1 root root 427 Jun 17 17:06 /var/tmp/fstab
[root@servera ~]# setfacl -m u:harry:rw- /var/tmp/fstab
[root@servera ~]# setfacl -m u:natasha:--- /var/tmp/fstab
[root@servera ~]# getfacl /var/tmp/fstab
getfacl: Removing leading '/' from absolute path names
# file: var/tmp/fstab
# owner: root
# group: root
user::rwuser:harry:rwuser:natasha:---
group::r--
mask::rwother::r--
参数
[root@servera ~]# setfacl -m u:harry:rw- /var/tmp/fstab //为用户添加访问该文件的权限
[root@servera ~]# setfacl -m u:natasha:--- /var/tmp/fstab
-m, --modify=acl 更改文件的访问控制列表
root@servera ~]# getfacl /var/tmp/fstab
getfacl: Removing leading '/' from absolute path names
file: var/tmp/fstab //该目录允许其他人访问
10、配置用户账户
创建用户tammy,其用户ID为2020,此用户的密码应当是redhat。
[root@servera ~]# useradd -u 2020 tammy
e[root@servera ~]# echo redhat | passwd --stdin tammy
-u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
指定用户ID号
3.1.1 用户创建命令useradd
//语法:useradd [option] USERNAME
-u UID //[UID_MIN,UID_MAX]定义在/etc/login.defs文件中
指定用户ID号
-g GID //指定用户所属基本组,可为组名或GID
-G groupname,... //附加组,可以有多个,用逗号隔开。组groupname必须事
-G 后接组
-c "COMMENT" 加上备注文字,备注文字保存在passwd的备注栏中。
-d /path/to/directory //指定用户的家目录。此目录必须不能事先存在, \
#指定特殊目录
//否则将不会从/etc/skel中复制环境设置文件
-s shell //这里的shell最好使用/etc/shells里面有的shell, \
// /etc/shells指定了当前系统可用的安全shell
#切换其他sell,不允许交互式登录此系统
-M //创建用户时不给其创建家目录
#不指定家目录
-r //添加一个系统用户
系统用户指定在1-999
-D //直接打印/etc/default/useradd文件的内容或配合其它选项 \
//(例如-s SHELL)直接修改/etc/default/useradd文件中的默认值
11、查找文件
请把系统上拥有者为tammy用户的所有文件,并将其拷贝到/root/findfiles目录中。
[root@servera ~]# mkdir /root/findfiles
[root@servera ~]# find / -user tammy -exec cp -a {} /root/findfiles/ \;
[root@servera ~]# ll findfiles/
-exec为find后还需要输出的内容,一般用于复制目录
-user:查找某用户的所有文件
查找用户下所有的文件
-group:查找某组的所有文件
查找组下的文件
-type:根据文件类型进行查找
查找文件 -f
查找目录 -d
管道文件 -p
-size:根据文件大小进行查找。如1k、1M、+10k、+10M、-1k、-10M
+表示大于,-表示小于
12、查找字符串
找出文件/etc/man_db.conf中包含字符串sbin的所有行,将其按原始顺序导入到文件/root/out.txt中,
文件/root/out.txt中不得包含空行。
[root@servera ~]# cat /etc/man_db.conf | grep -v ^$ | grep "sbin" > /root/out.txt
-v:显示没有被正则表达式匹配到的内容 *
除了要匹配的“字符串”,其他都显示
-o:只显示被正则表达式匹配到的内容 *
匹配显示什么,就显示什么
-E:使用扩展正则表达式 *
匹配的条件可以是,多个或一个,还可用 egrep
13、 创建归档
创建一个名为/root/backup.tar.bz2的tar归档,其应该包含/usr/local/的内容。此归档文件必须使用
bzip2进行压缩。
[root@servera ~]# tar -jcf /root/backup.tar.bz2 /usr/local/
[root@servera ~]# file backup.tar.bz2 # 验证
backup.tar.bz2: bzip2 compressed data, block size = 900k
[root@servera ~]# ls
backup.tar.bz2
-c:创建归档文档
-f file.tar:指定要操作的归档文件
-x:还原归档
-v:显示归档过程
-p:归档时保留权限信息。只有管理员才有权限用此选项
-C:指定还原归档或解压时的目标目录
-tf:不展开归档,直接查看归档了哪些文件
zcf file.tar.gz:归档并调用gzip进行压缩
jcf file.tar.bz2:归档并调用bzip2进行压
Jcf file.tar.xz:归档并调用xz进行压缩
以下则为可能出现的新题,一般umask
值考的比较多
14、配置sudo提权
允许admins组的成员可以以root的身份执行任何命令,并且不需要密码。
Sudo 的全称为:super user do。 顾名思义:干超级用户才能干的事!所以Sudo最常用的功能就是提升一个命名的执行权限。
sudo命令是配置存储在/etc/sudoers文件中。 只能使用root特权查看和编辑此文件。 我们可以使用visudo命令来编辑它,如下所示。
[root@servera ~]# vim /etc/sudoers.d/admins
admins ALL=(root) NOPASSWD: ALL
#测试:
[root@servera ~]# su - harry
[harry@servera ~]$ sudo useradd testuser #创建成功
15、设置密码默认策略
为新创建的用户设置密码策略,要求创建用户时,密码默认20 天后过期
[root@servera ~]# vim /etc/login.defs
PASS_MAX_DAYS 20
测试:
[root@servera ~]# useradd user1
[root@servera ~]# cat /etc/shadow
user1:!!:18782:0:20:7:::
chage -l 用户 查看详细信息
16、配置umask值
设置natasha用户创建的目录权限默认为733,文件权限为622,要求永久生效
# 只需要根据目录的权限推算出umask即可,目录最大权限为777,文件最大权限为666,去掉733的权限,得到umask为044
# 为natasha设置umask值
[root@servera ~]# su - natasha
[natasha@servera ~]$ vim .bashrc
umask 044
[natasha@servera ~]$ source .bashrc
[natasha@servera ~]$ mkdir test
[natasha@servera ~]$ touch file
[natasha@servera ~]$ ll
total 0
-rw--w--w-. 1 natasha natasha 0 Jun 5 01:37 file
drwx-wx-wx. 2 natasha natasha 6 Jun 5 01:37 test
可能出现的新题,我是考到了第三题设置别名
虚拟机serverb
17、设置root密码
将serverb的root密码设置为123456
1. 重启系统
2. 将光标移动到要启动的内核
3. 按e编译当前条目
4. 将光标移至以linux开头的行,此为内核命令行
5. 在末尾添加rd.break consolo=tty0 进入单用户模式
6. 按ctrl+x继续启动
7.重启以读写方式挂载/sysroot
switch_root:/# mount -o remount,rw /sysroot
8. 切换至真正操作系统的根/sysroot
switch_root:/# chroot /sysroot
9. 重置密码
sh-4.4# echo 123456 | passwd --stdin root
10. 打标签
sh-4.4# touch /.autorelabel
sync
exit退出两次
命令解析
mount -o remount,rw /sysroot
//fstab被损坏情况下,让只读文件系统可写(正常情况下不使用)
[root@localhost ~]#mount -o rw,remount /
-o 特殊选择:可以指定挂载额外选项
重新以可读可写的方式挂载为已经挂载 /sysroot
echo 123456 | passwd --stdin root
这个选项用于从标准输入管道读入新的密码。
为什么要 “touch /.autorelabel” 这个命令
⛅为了让 SELinux 生效
⛅SELinux 它是一个安全增强系统, 其内部有许多安全策略
⛅针对一些操作, 如果你做了这些操作, 没有得到策略的放行, 它会给你禁止掉
⛅比如你使用单用修改root密码是不被策略放行的
⛅怎么让 SELinux 策略放行呢?
🔵"touch /.autorelabel" 创建这样一个文件其实就是在告诉SELinux放行这个策略,就是通知一下
🔵直接关闭掉 SELinux
18、配置软件仓库
请配置你虚拟机的yum仓库,地址如下:
http://content.example.com/rhel8.0/x86_64/dvd/BaseOS
http://content.example.com/rhel8.0/x86_64/dvd/AppStream
19、调整逻辑卷大小
1)预先创建2GiB的分区/dev/vdb1,并用于创建卷组testvg
2)创建大小为200MiB的逻辑卷/dev/testvg/vo,格式化为ext4文件系统,并挂载在/mnt/vo上
3)将逻辑卷/dev/testvg/vo及其文件系统大小调整到300MiB,确保文件系统内容保持不变。
解析:
fdisk命令
用于管理硬盘设备分区,格式为“fdisk 【参数】,它提供了添加、删除、转换等功能。参用交互式方式,可以根据参数实时变好
参数及作用
m | 查看全部可用的参数 |
---|---|
n | 添加新的分区 |
d | 删除某个分区信息 |
L | 列出所有可用的分区类型 |
t | 改变某个分区的类型 |
p | 查看分区信息 |
w | 保存并退出 |
q | 不保存并退出 |
**ext4:**它支持的存储容量高达1EB,且能够有无限多的子目录。另外,ext4能够批量分配block块,从而极大地提高了读写效率
LVM逻辑卷:
用于调整硬盘资源,不要关心底层可以实时调整逻辑大小
顺序:
创建物理卷 > 将物理卷进入卷组 > 将卷组进入逻辑卷 > 格式化 > 挂载
功能/命令 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
扫描 | pvscan | vgscan | lvscan |
建立 | pvcreate | vgcreate | lvcreate |
显示 | pvdisplay | vgdisplay | lvdisplay |
删除 | pvremove | vgremove | lvremove |
扩展 | vgextend | lvextend | |
缩小 | vgreduce | lvreduce |
[root@localhost ~]# vim /etc/fstab
//分区标识(UUID或设备名) 挂载点 文件类型 挂载参数 不检查 不备份
UUID=e271b5b2-b1ba-4b18-bde5-66e394fb02d9 /db1 xfs defaults 0 0
default 默认文件系统挂载设置 rw, suid, dev, exec, auto, nouser, async
读者可以在平时练习时这样玩,但考试只是要求扩容磁盘就好了
以上的第(3)题
可见vdb已分好两组了,这题只需要扩容
**# 命令步骤**
[root@serverb ~]# fdisk /dev/vdb //对vdb进行分区
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0xae75bf0a.
Command (m for help): n //创建新的扩展分区
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): //默认
Using default response p.
Partition number (1-4, default 1): //默认第一个分区
First sector (2048-10485759, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-10485759, default 10485759):+2G //指定大小2G
Created a new partition 1 of type 'Linux' and of size 2 GiB.
Command (m for help): w //保存分区
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
//一个扩展分区里面可以包含多个逻辑卷
[root@serverb ~]# pvcreate /dev/vdb1 //刷新分区
[root@serverb ~]# vgcreate testvg /dev/vdb1 //将分区加入卷组
[root@serverb ~]# lvcreate -L 200M -n vo testvg //指定大小逻辑卷
[root@serverb ~]# mkfs.ext4 /dev/testvg/vo //格式化
[root@serverb ~]# blkid /dev/testvg/vo //查看uid
/dev/testvg/vo: UUID="fe323058-93db-428d-883c-2c0210cd10c6" TYPE="ext4"
[root@serverb ~]# mkdir /mnt/vo
[root@serverb ~]# vim /etc/fstab //写配置文件永久挂载
UUID="fe323058-93db-428d-883c-2c0210cd10c6 /mnt/vo ext4 defaults 0 0
[root@serverb ~]# mount -a //加载所有配置查看文件是否合格
# 实际操作
[root@serverb ~]# df -hT /dev/testvg/vo # 查看文件系统的类型和大小
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/testvg-vo xfs 195M 12M 183M 6% /mnt/vo
//以上操作考试已经设置好了,只需要如下
[root@serverb ~]# lvextend -L 300M /dev/testvg/vo //扩容逻辑卷
[root@serverb ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync
Convert
vo testvg -wi-ao---- 300.00m
# 扩展文件系统,xfs类型的文件系统用xfs_growfs /mnt/vo,后面接的是挂载点。
[root@serverb ~]# resize2fs /dev/testvg/vo # 后面接的是挂载点的路径
[root@serverb ~]# df -hT /dev/testvg/vo
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/testvg-vo ext4 295M 13M 283M 5% /mnt/vo
xfs文件系统是不能缩的
卷组缩减
lvextend -L 大小 -r 逻辑卷
resizr2fs 逻辑卷
20、添加交换分区
在系统上添加一个512MiB的交换分区,设置交换分区应在系统启动时自动挂载,不要删除或修改系统上
已存在的交换分区。
**SWAP:**交换分区是以一种通过在硬盘中预先划分一定的空间,然后把内存中暂时不常
用的数据临时存放到硬盘中,以便物理机有空间跑程序,只有当物理机资源使用完才会调>用交换分区的资源
这里考试时已经有一盘swap了,需要我们在创建一组
[root@serverb ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (2-4, default 2): //默认为分区2
First sector (4196352-10485759, default 4196352):
Last sector, +sectors or +size{K,M,G,T,P} (4196352-10485759, default
10485759): +512M
Created a new partition 2 of type 'Linux' and of size 512 MiB.
命令(输入 m 获取帮助):l 列出所有支持的分区类型对应的id
命令(输入 m 获取帮助):t 修改分区id
分区号 (1-5,默认 5):2 修改第2个分区
Hex 代码(输入 L 列出所有代码):82 修改成id为82
已将分区“Linux”的类型更改为“Linux swap / Solaris”
命令(输入 m 获取帮助):p
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/vdb2 2099200 6293503 2097152 82 Linux swap / Solaris <--
-修改成功
Command (m for help): w
The partition table has been altered.
Syncing disks.
强烈建议: 对分区做了修改后都刷新一下
# partprobe /dev/sdb
[root@serverb ~]# mkswap /dev/vdb2
[root@serverb ~]# blkid /dev/vdb2
/dev/vdb2: UUID="f626f11c-4363-4caf-aba6-5a418ea04079" TYPE="swap"
PARTUUID="ae75bf0a-02"
[root@serverb ~]# vim /etc/fstab
UUID=f626f11c-4363-4caf-aba6-5a418ea04079 swap swap defaults 0 0
[root@serverb ~]# swapon -a //启动所有交换分区
[root@serverb ~]# swapon -s
Filename Type Size Used Priority
/dev/vdb2 partition 524284 0 -2
21、创建逻辑卷
根据以下要求,创建新的逻辑卷:
//默认一个pe大小是4mb,现在是50个pe里面一个块就是16MB
1)逻辑卷的名字为mylv,属于myvg卷组,大小为50个pe
2)卷组myvg中的逻辑卷的pe大小应当为16MiB
3)使用ext3文件系统将逻辑卷mylv格式化
4)此逻辑卷应当在系统启动时自动挂载到/mnt/mydata目录下
大小50pe也就是是一个pe里包含16MIB的内存
计算:50x16=860M
[root@serverb ~]# fdisk /dev/vdb
Welcome to fdisk (util-linux 2.32.1).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (5244928-10485759, default 5244928):
Last sector, +sectors or +size{K,M,G,T,P} (5244928-10485759, default
10485759): +1G
Created a new partition 3 of type 'Linux' and of size 1 GiB.
Command (m for help): w
The partition table has been altered.
Syncing disks.
[root@serverb ~]# pvcreate /dev/vdb3
[root@serverb ~]# vgcreate -s 16M myvg /dev/vdb3
[root@serverb ~]# lvcreate -l 50 -n mylv myvg
[root@serverb ~]# mkfs.ext3 /dev/myvg/mylv
[root@serverb ~]# mkdir /mnt/mydata
[root@serverb ~]# vim /etc/fstab
/dev/myvg/mylv /mnt/mydata ext3 defaults 0 0
[root@serverb ~]# mount -a
[root@serverb ~]# df -h /mnt/mydata/
Filesystem Size Used Avail Use% Mounted on
/dev/myvg/mylv 799M 4.0K 799M 1% /mnt/mydata
22、创建VDO卷
根据如下要求,创建新的VDO卷:
1)使用未分区的磁盘(/dev/vdc)
2)此VDO卷的名称为myvdo
3)此VDO卷的逻辑大小为50G
4)此VDO卷使用xfs文件系统格式化
5)此VDO卷在系统启动时自动挂载到/vblock目录下
vdo:
作用:压缩数据,优化重复数据
VDO的主要作用是节省磁盘空间,比如让1T的磁盘能装下1.5T的数据,从而降低数据中心的成本。
那vdo是如何实现的呢,关键原理主要是重删和压缩,重删就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。类似我们在百度网盘中上传一个大型软件安装包,能实现秒传,其实是之前就有,所以无需再传一遍,也无需再占百度一份空间。另一方面是数据压缩,类似于压缩软件的算法,也可以更加节省磁盘空间。
通过man命令过滤
[root@serverb ~]# yum -y install vdo kmod-kvdo #安装软件包,考试需要安装
[root@serverb ~]# man vdo | grep create vdo #过滤出来在按题目修改
[root@serverb ~]# vdo create --name=myvdo --device=/dev/vdc --
vdoLogicalSize=50G
Creating VDO myvdo
Starting VDO myvdo
Starting compression on VDO myvdo
VDO instance 0 volume is ready at /dev/mapper/myvdo
[root@serverb ~]# mkfs.xfs -K /dev/mapper/myvdo
[root@serverb ~]# blkid /dev/mapper/myvdo #复制uuid
[root@serverb ~]# man vdo | grep defaults #这里最好复制如果打错会导致serverb起不来
//将找我到的模板复制过来
[root@serverb ~]# vim /etc/fstab
uuid /vblock xfs defaults,x-systemd.requires=vdo.service 0 0
[root@serverb ~]# mount -a
[root@serverb ~]# df -h /vblock
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/myvdo 50G 390M 50G 1% /vblock
23、配置系统调优
先查看tuned推荐的配置文件,并将系统的调优配置文件设置为throughput-performance
提示:考试要求是将系统的调优配置文件设置为tuned推荐的配置文件。
tuned特性主要还是使用linux系统现有的一些调节手段和工具,包括CPU、磁盘的电源管理工具,内核参数调整等方式进行系统的性能调节。
其主要的特点在于将上述的调整整合到一个具体的策略(profile)中,这样用户可以根据不同的使用场景和需求,很方便的对系统的性能进行设置,极大的简化了linux的性能调节。
throughput-performance CPU:governor参数”performance”; disk:关闭alpm;readahead设置为4096; sysctl:vm.swappiness设为10;vm. dirty_background_ratio和dirty_ratio分别设为10和40;sched_min_granularity设为10ms;sched_wakeup_granularity设为15ms 禁用节能配置,启用sysctl模块设置来提升性能,主要改善吞吐量,使用deadline的IO调度策略>(默认CFQ)
# 说明:考试题目中当前生效和配置文件和推荐的配置文件可能不一致,而我们的虚拟机是一样的,考试只
需要按照下面的配置做即可。
[root@serverb ~]# tuned-adm recommend
virtual-guest
[root@serverb ~]# tuned-adm profile virtual-guest
[root@serverb ~]# tuned-adm active # 确保当前生效的配置文件是系统推荐的配置文件即可
virtual-guest
24、创建用于定位文件的脚本
(1)创建名为/usr/local/bin/file.sh的脚本,
(2)查找 /usr 下面所有小于10M 并有设置sgid权限的文件
(3)将查找到的文件列表保存到 /root/myfile 中
[root@servera ~]# vim /usr/local/bin/file.sh
#!/bin/bash
find /usr -size -10M -perm -2000 > /root/myfile
[root@servera ~]# chmod a+x /usr/local/bin/file.sh
[root@servera ~]# file.sh
[root@servera ~]# cat /root/myfile
/usr/bin/write
/usr/bin/locate
/usr/libexec/utempter/utempter
/usr/libexec/openssh/ssh-keysign