文章目录
一、计划任务
1.1 基础知识
- 计划任务的用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务
- 计划任务所需安装的软件包:cronie、crontabs(默认自动安装)
- 计划任务软件包所对应的服务(程序):crond(开启自启动)
- 记录周期性计划任务的日志文件:/var/log/cron
1.2 crontab命令:编辑、查看、清除计划任务
- 格式:
编辑:crontab -e -u 用户名
查看:crontab -l -u 用户名
清除:crontab -r -u 用户名
注:如果没有加 -u 的话代表以当前身份来写计划任务
1.3 计划任务书写格式
- 配置格式可参考/etc/crontab文件
- 分 时 日 月 周 任务命令行(绝对路径)
执行周期 | 配置说明 |
---|---|
分钟 | 从0到59之间的整数 |
小时 | 从0到23之间的整数 |
日期 | 从1到31之间的整数 |
月份 | 从1到12之间的整数 |
星期 | 0~7之间的整数,0或7代表星期日 |
- 符号说明:
* :匹配范围内任意时间
, :分隔多个不连续的时间点
- :指定连续时间范围
/n :指定时间频率,每n … - 示例:
分 时 日 月 周 | 说明 |
---|---|
* * * * * | 每分钟运行一次 |
30 8 * * * | 每天早上8:30 执行一次 |
30 23 * * * | 每天晚上23:30 执行一次 |
30 23 * * 5 | 每周的周五23:30 执行一次 |
30 23 * * 1-5 | 每周的周一至周五23:30 执行一次 |
30 23 * * 1,3,6 | 每周的周一周三周六23:30 执行一次 |
30 23 1 * 1 | 每月的1号或每周一晚上23:30 执行一次 |
1 */2 * * * | 每隔2小时运行一次 |
*/5 * * * * | 每隔5分钟运行一次 |
在这里插入代码片[root@localhost ~]# crontab -e 编写计划任务
no crontab for root - using an empty one
crontab: installing new crontab
[root@localhost ~]# crontab -l 查看计划任务内容
* * * * * date >> /opt/time.txt
[root@localhost ~]# cat /opt/time.txt
2022年 05月 22日 星期日 21:50:01 CST
[root@localhost ~]# cat /opt/time.txt
2022年 05月 22日 星期日 21:50:01 CST
2022年 05月 22日 星期日 21:51:02 CST
2022年 05月 22日 星期日 21:52:01 CST
[root@localhost ~]#
二、基本权限与归属
2.1 基础知识
2.1.1 基本权限及其表示方式
- 基本权限有: 读取、写入和可执行
- 表示方式:
(1)字符型:r、w、x
读取:允许查看内容- - - read
写入:允许修改内容- - - write
可执行:允许运行和切换- - - excute
(2)数字型:权限位的8进制数表示(r、w、x分别对应4、2、1,后3组分别求和)
分组 | User权限 | Group权限 | Other权限 | ||||||
---|---|---|---|---|---|---|---|---|---|
字符 | r | w | x | r | - | x | r | - | x |
数字 | 4 | 2 | 1 | 4 | 0 | 1 | 4 | 0 | 1 |
求和 | 7 | 5 | 5 |
2.1.2 文件及目录基本权限的所包含的操作
- 文本文件的基本权限操作:
读取权限(r):cat、less、grep、head、tail
写入权限(w):vim、> 、 >>
可执行权限(x):Shell与Python - 目录的基本权限操作:(对目录里的内容进行操作,对目录本身没有权限)
读取权限(r):查看目录内容
写入权限(w):能够创建、删除、修改等目录的内容
执行权限(x):能够cd切换到此目录下
2.1.3 文件及目录归属关系的判断
- 归属关系:
所有者(属主):拥有此文件/目录的用户- - - user
所属组(属组):拥有此文件/目录的组- - -group
其他用户:除所有者、所属组以外的用户- - -other
所有人:all
2.1.4 查看文件/目录权限及对应权限位解析
- 查看文件/目录权限的命令:
ls -l 可查看文件的权限
ls -ld 可查看目录的权限
- 权限位字段解析:
共10个字符,分为4组
类型 - :文本文件
类型 d :目录
类型 l :快捷方式
类型 | User权限 | Group权限 | Other权限 | ||||||
---|---|---|---|---|---|---|---|---|---|
- | r | w | x | r | - | x | r | - | x |
d | r | w | - | r | - | - | r | - | - |
- 补充说明1:/temp 目录
/temp 目录默认有特殊权限(t)。该目录存放用户、服务等所产生的临时文件,该目录有绿色的背景颜色,当其他用户都有执行权限(w)时,目录的背景颜色就会为绿色。 - 补充说明2:Linux中判断用户具备的权限
1、查看用户,对于该数据所处的身份,顺序所有者>所属组>其他人,原则是匹配即停止
2、查看相应身份的权限位
2.2 chmod命令:修改权限
- 格式:
chmod u/g/o/a +/-/= r/w/x 文件或目录
chmod -R u/g/o/a +/-/= r/w/x 目录 递归修改权限
[root@localhost ~]# mkdir /nsd10
[root@localhost ~]# ls -ld /nsd10
drwxr-xr-x. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod u-w /nsd10
[root@localhost ~]# ls -ld /nsd10
dr-xr-xr-x. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod u+w /nsd10
[root@localhost ~]# ls -ld /nsd10
drwxr-xr-x. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod g+w /nsd10
[root@localhost ~]# ls -ld /nsd10
drwxrwxr-x. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod g=r /nsd10
[root@localhost ~]# ls -ld /nsd10
drwxr--r-x. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod a=rwx /nsd10
[root@localhost ~]# ls -ld /nsd10
drwxrwxrwx. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# chmod u=---,g=rx,o=rwx /nsd10
[root@localhost ~]# ls -ld /nsd10
d---r-xrwx. 2 root root 6 5月 22 23:20 /nsd10
[root@localhost ~]# mkdir -p /opt/aa/bb/cc
[root@localhost ~]# chmod -R o=--- /opt/aa
[root@localhost ~]# ls -ld /opt/aa
drwxr-x---. 3 root root 16 5月 22 23:23 /opt/aa
[root@localhost ~]# ls -ld /opt/aa/bb
drwxr-x---. 3 root root 16 5月 22 23:23 /opt/aa/bb
[root@localhost ~]# ls -ld /opt/aa/bb/cc
drwxr-x---. 2 root root 6 5月 22 23:23 /opt/aa/bb/cc
- 案例:设置基本权限练习
1)以root身份新建/nsddir1/目录,在此目录下新建readme.txt文件
[root@localhost ~]# mkdir /nsddir1
[root@localhost ~]# touch /nsddir1/readme.txt
[root@localhost ~]# echo 123456 > /nsddir1/readme.txt
[root@localhost ~]# cat /nsddir1/readme.txt
123456
[root@localhost ~]# ls -l /nsddir1/readme.txt
-rw-r--r--. 1 root root 7 5月 23 14:20 /nsddir1/readme.txt
2)使用户zhangsan能够修改readme.txt文件内容课
[root@localhost ~]# chmod o+w /nsddir1/readme.txt
[root@localhost ~]# useradd zhangsan
[root@localhost ~]# ls /home
lisi zhangsan
3)使用户zhangsan不可以修改readme.txt文件内容
[root@localhost ~]# chmod o-w /nsddir1/readme.txt
4)使用户zhangsan能够在此目录下创建/删除子目录
[root@localhost ~]# chmod o+w /nsddir1
5)调整此目录的权限,使任何用户都不能进入,然后测试用户zhangsan是否还能修改readme.txt(测试结果不能,对父目录没有权限)
[root@localhost ~]# chmod a-x /nsddir1
[root@localhost ~]# ls -l /nsddir1/readme.txt
-rw-r--r--. 1 root root 14 5月 23 14:23 /nsddir1/readme.txt
[root@localhost ~]# ls -ld /nsddir1/
drw-r--rw-. 2 root root 24 5月 23 14:25 /nsddir1/
6)为此目录及其下所有文档设置权限 rwxr-x---
[root@localhost ~]# chmod -R u=rwx,g=rx,o=--- /nsddir1/
[root@localhost ~]# ls -ld /nsddir1/
drwxr-x---. 2 root root 24 5月 23 14:25 /nsddir1/
[root@localhost ~]# ls -l /nsddir1/readme.txt
-rwxr-x---. 1 root root 14 5月 23 14:23 /nsddir1/readme.txt
2.3 chown命令:修改归属关系
- 格式:
chown 属主 文件…修改文件的属主
chown 属主:属组 文件…修改文件的属主和属组
chown :属组 文件…修改文件的属组
chown -R 属主/属主:属组/:属组 文件…递归修改文件的属主/属主和属组/属组
[root@localhost ~]# mkdir /nsd15
[root@localhost ~]# ls -ld /nsd15
drwxr-xr-x. 2 root root 6 5月 23 16:50 /nsd15
[root@localhost ~]# groupadd tmooc
[root@localhost ~]# chown lisi:tmooc /nsd15 修改所有者与所属组
[root@localhost ~]# ls -ld /nsd15
drwxr-xr-x. 2 lisi tmooc 6 5月 23 16:50 /nsd15
[root@localhost ~]# chown zhangsan /nsd15 仅修改所有者
[root@localhost ~]# ls -ld /nsd15
drwxr-xr-x. 2 zhangsan tmooc 6 5月 23 16:50 /nsd15
[root@localhost ~]# chown :root /nsd15 仅修改所属组
[root@localhost ~]# ls -ld /nsd15
drwxr-xr-x. 2 zhangsan root 6 5月 23 16:50 /nsd15
[root@localhost ~]# mkdir -p /nsd16/aa/bb/cc
[root@localhost ~]# touch /nsd16/aa/test.txt
[root@localhost ~]# ls -ld /nsd16
drwxr-xr-x. 3 root root 16 5月 23 16:56 /nsd16
[root@localhost ~]# ls -ld /nsd16/aa/bb
drwxr-xr-x. 3 root root 16 5月 23 16:56 /nsd16/aa/bb
[root@localhost ~]# ls -l /nsd16/aa/test.txt
-rw-r--r--. 1 root root 0 5月 23 16:57 /nsd16/aa/test.txt
[root@localhost ~]# chown -R lisi:tmooc /nsd16 递归修改目录/nsd16的属主和属组
[root@localhost ~]# ls -ld /nsd16
drwxr-xr-x. 3 lisi tmooc 16 5月 23 16:56 /nsd16
[root@localhost ~]# ls -l /nsd16/aa/test.txt
-rw-r--r--. 1 lisi tmooc 0 5月 23 16:57 /nsd16/aa/test.txt
[root@localhost ~]# ls -ld /nsd16/aa
drwxr-xr-x. 3 lisi tmooc 32 5月 23 16:57 /nsd16/aa
- 案例:归属关系练习
1)利用root的身份新建/tarena目录,并进一步完成下列操作
[root@localhost ~]# mkdir /tarena
2)将/tarena属主设为gelin01,属组设为tmooc组
[root@localhost ~]# useradd gelin01
[root@localhost ~]# chown gelin01:tmooc /tarena
[root@localhost ~]# grep tmooc /etc/group
tmooc:x:1002:
3)使用户gelin01对此目录具有rwx权限,除去所有者与所属组之外的用户对此目录无任何权限
[root@localhost ~]# chmod o=--- /tarena
4)使用户gelin02能进入、查看此目录
[root@localhost ~]# useradd gelin02
[root@localhost ~]# gpasswd -a gelin02 tmooc
正在将用户“gelin02”加入到“tmooc”组中
5)将gelin01加入tmooc组,将tarena目录的权限设为450,测试gelin01用户能否进入此目录
[root@localhost ~]# gpasswd -a gelin01 tmooc
正在将用户“gelin01”加入到“tmooc”组中
[root@localhost ~]# chmod 450 /tarena
[root@localhost ~]# ls -ld /tarena
dr--r-x---. 2 gelin01 tmooc 6 5月 23 17:03 /tarena
2.4 附加权限(特殊权限)
2.4.1 Sticky Bit 权限(中文:粘滞位)
- 占用其他人(Other)的执行权限(x) 位
- 显示为 t 或 T,取决于其他人是否有 x 权限,如果有显示为 t,如果没有显示为 T
- 适用于目录,用来限制用户滥用写入权
- 在设置了 t 权限的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档
- 未设置 t 权限的文件夹下,普通用户有写入权限时,可任意删除或改名其他用户文档
[root@localhost ~]# mkdir /home/pulic
[root@localhost ~]# chmod 777 /home/pulic/
[root@localhost ~]# ls -ld /home/pulic/
drwxrwxrwx. 2 root root 6 5月 23 18:01 /home/pulic/
[root@localhost ~]# chmod o+t /home/pulic/ 设置t权限
[root@localhost ~]# ls -ld /home/pulic/
drwxrwxrwt. 2 root root 6 5月 23 18:01 /home/pulic/
[root@localhost ~]#
2.4.2 Set GID权限(SGID)
- 占用属组(Group)的执行权限(x) 位
- 显示为 s 或 S,取决于属组是否有 x 权限,如果有显示为 s,如果没有显示为 S
- 对目录有效
- 在一个具有SGID权限的目录下,新建的文档或目录会自动继承此目录的属组身份
- 在一个未设置SGID权限的目录下,对于新建文档或目录的属组是谁创建,谁拥有
[root@localhost ~]# mkdir /nsd18
[root@localhost ~]# chown :tmooc /nsd18
[root@localhost ~]# ls -ld /nsd18
drwxr-xr-x. 2 root tmooc 6 5月 23 18:25 /nsd18
[root@localhost ~]# mkdir /nsd18/abc01
[root@localhost ~]# ls -ld /nsd18/abc01 未设置SGID权限,新建的目录的属组是谁创建,谁拥有
drwxr-xr-x. 2 root root 6 5月 23 18:26 /nsd18/abc01
[root@localhost ~]# chmod g+s /nsd18 设置了SGID权限,新建的目录的属组会自动继承父目录的属组身份
[root@localhost ~]# ls -ld /nsd18
drwxr-sr-x. 3 root tmooc 19 5月 23 18:26 /nsd18
[root@localhost ~]# mkdir /nsd18/abc02
[root@localhost ~]# ls -ld /nsd18/abc02
drwxr-sr-x. 2 root tmooc 6 5月 23 18:27 /nsd18/abc02
2.4.3 Set UID权限(SUID)
- 占用属主(User)的执行权限(x) 位
- 显示为 s 或 S,取决于属主是否有 x 权限,如果有显示为 s,如果没有显示为 S
- 仅对可执行的程序有意义
- 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
2.4.4 特殊权限的数字表示形式
类别 | 字符表示 | 数字表示 | 叠加位置 |
---|---|---|---|
Set UID | s | 4 | User的x位 |
Set GID | s | 2 | Group的x位 |
Sticky Bit | t | 1 | Other的×位 |
2.4.5 补充说明:umask(权限掩码)
- 其他取决于 umask(权限掩码) 设置
- 新建目录默认权限为755(最高权限减去系统的权限掩码,即:777 - 022)
- 新建文件默认权限为644,因为一般文件默认均不给 x 执行权限
[root@localhost ~]# umask 查看权限掩码
0022
[root@localhost ~]# umask -S 显示目录的默认权限
u=rwx,g=rx,o=rx
[root@localhost ~]#
2.5 ACL策略管理
2.5.1 ACL策略管理的原因和作用
- ACL策略管理的原因:文档归属存在局限性
任何人只属于三种角色:属主、属组、其他人
针对特殊的人实现更精细的控制 - ACL策略管理作用:
能够对个别用户、个别组设置独立的权限
大多数挂载的EXT3/4、XFS文件系统默认已支持
2.5.2 setfacl命令:定义ACL控制策略
- 格式:
setfacl [选项] u:用户名:权限 文件…对用户定义ACL
setfacl [选项] g:组名:权限 文件…对组定义ACL
常用命令选项:
-m:修改ACL策略
-x:清除指定的ACL策略
-b:清除所有已设置的ACL策略
-R:递归设置ACL策略 - 补充命令:getfacl
getfacl 文件 查看文件的ACL策略
注:判断用户或组拥有什么权限时,先看有没有特殊权限再看属于属主,属组,其他人中的哪一类然后再判定有什么权限。
[root@localhost ~]# mkdir /nsd22
[root@localhost ~]# setfacl -m u:dc:rx /nsd22 单独赋予dc权限
[root@localhost ~]# setfacl -m u:zhangsan:rwx /nsd22
[root@localhost ~]# setfacl -m u:lisi:rx /nsd22
[root@localhost ~]# getfacl /nsd22 查看ACL策略
getfacl: Removing leading '/' from absolute path names
# file: nsd22
# owner: root
# group: root
user::rwx
user:lisi:r-x
user:zhangsan:rwx
user:dc:r-x
group::r-x
mask::rwx
other::r-x
[root@localhost ~]# setfacl -x u:zhangsan /nsd22 删除指定用户ACL
[root@localhost ~]# getfacl /nsd22
getfacl: Removing leading '/' from absolute path names
# file: nsd22
# owner: root
# group: root
user::rwx
user:lisi:r-x
user:dc:r-x
group::r-x
mask::r-x
other::r-x
[root@localhost ~]# setfacl -b /nsd22 清除目录所有ACL策略
[root@localhost ~]# getfacl /nsd22
getfacl: Removing leading '/' from absolute path names
# file: nsd22
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
[root@localhost ~]# mkdir -p /haha/aa/bb/cc
[root@localhost ~]# setfacl -Rm u:dc:rx /haha R:递归设置ACL策略
[root@localhost ~]# getfacl /haha
getfacl: Removing leading '/' from absolute path names
# file: haha
# owner: root
# group: root
user::rwx
user:dc:r-x
group::r-x
mask::r-x
other::r-x
[root@localhost ~]# getfacl /haha/aa
getfacl: Removing leading '/' from absolute path names
# file: haha/aa
# owner: root
# group: root
user::rwx
user:dc:r-x
group::r-x
mask::r-x
other::r-x
[root@localhost ~]# getfacl /haha/aa/bb
getfacl: Removing leading '/' from absolute path names
# file: haha/aa/bb
# owner: root
# group: root
user::rwx
user:dc:r-x
group::r-x
mask::r-x
other::r-x
- 补充内容:ACL策略-黑名单的使用(单独拒绝某些用户)
[root@localhost ~]# setfacl -m u:lisi:--- /home/pulic/
[root@localhost ~]# getfacl /home/pulic/
getfacl: Removing leading '/' from absolute path names
# file: home/pulic/
# owner: root
# group: root
# flags: --t
user::rwx
user:lisi:---
group::rwx
mask::rwx
other::rwx
三、磁盘空间的管理
3.1 前提准备及基础知识
- 前提准备:
真机为Windows机器,VMware虚拟机的话需要添加一块新的硬盘(磁盘),添加步骤:编辑虚拟机设置---->添加---->一路下一步直至完成,这样新的硬盘便添加成功。 - 基础知识:
扇区默认的大小:512字节(早先磁盘的存储是按照扇区来划分存储空间的)
计算机容量单位:
一般用B,KB,MB,GB,TB,PB,EB,ZB,YB,BB来表示,它们之间的关系是:
1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB (Terabyte 万亿字节 太字节)=1024GB,
1PB (Petabyte 千万亿字节 拍字节)=1024TB,
1EB (Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024 YB.
3.2 使用硬盘空间所要经历的步骤
步骤:识别硬盘 => 分区规划 => 格式化 => 挂载使用
3.2.1 识别硬盘:使用命令 lsblk
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root
253:0 0 17G 0 lvm /
└─centos-swap
253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
3.2.2 分区规划
分区方案(分区模式)有两种,为MBR与GPT。
3.2.2.1 MBR分区模式
- 概念:
分区类型:主分区、扩展分区(占用所有剩余空间)、逻辑分区
最多只能有4个主分区
扩展分区可以没有,至多有一个
1~4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)
最大支持容量为 2.2TB 的磁盘
扩展分区不能格式化,空间不能直接存储数据
可以用于存储数据的分区:主分区与逻辑分区 - 分区的命令:fdisk
输入 fdisk /dev/sdb 之后:
m 列出指令帮助
p 查看现有的分区表(存放分区信息的表格)
n 新建分区
d 删除分区
q 放弃更改并退出
w 保存更改并退出
分区过程示例:
n 创建新的分区----->分区类型 回车----->分区编号 回车---->起始扇区 回车----->在last结束时 +2G
p 查看分区表
n 创建新的分区----->分区类型 回车----->分区编号 回车---->起始扇区 回车----->在last结束时 +1G
w 保存并退出
查看分区结果:
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root
253:0 0 17G 0 lvm /
└─centos-swap
253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part
└─sdb2 8:18 0 1G 0 part
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
[root@localhost ~]# ls /dev/sdb[1-2]
/dev/sdb1 /dev/sdb2
- 综合分区示例:分了主分区、扩展分区和逻辑分区
p 查看分区表
n 创建主分区—>回车—>回车—>回车—>在last结束时 +2G
p 查看分区表
n 创建扩展分区 —>回车—>起始回车—>结束回车 将所有剩余空间给扩展分区
p 查看分区表
n 创建逻辑分区----->起始回车------>结束+2G
n 创建逻辑分区----->起始回车------>结束+2G
p 查看分区表
w 保存并退出 - 补充命令: partprobe
分区之后linux没有识别出新的分区表,此时就应该用partprobe命令来刷新分区表
[root@localhost ~]# partprobe
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root
253:0 0 17G 0 lvm /
└─centos-swap
253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 20G 0 disk
├─sdb1 8:17 0 2G 0 part /mypart1
├─sdb2 8:18 0 1G 0 part /mypart2
├─sdb3 8:19 0 2G 0 part
├─sdb4 8:20 0 512B 0 part
├─sdb5 8:21 0 2G 0 part
└─sdb6 8:22 0 2G 0 part
sr0 11:0 1 8.8G 0 rom /run/media/root/CentOS 7 x86_64
3.2.2.1 GPT分区模式
- 概念:
GPT,GUID Partition Table
全局唯一标识分区表
突破固定大小64字节的分区表限制
最多可支持128个主分区,最大支持18EB容量 (1 EB = 1024 PB = 1024 x 1024 TB ) - 分区的命令:parted,既可以分MBR也可以分GBT,但一般用来分GBT
输入 parted /dev/sdd 之后:
mktable gpt 指定分区模式
mkpart 划分新的分区
print 查看分区表信息
unit GB 使用GB作为单位,分完区之后使用print命令之后默认采用的是单位M来显示,输入这行命令之后会以单位GB来显示
quit 退出交互环境
[root@localhost ~]# parted /dev/sdc 第一步:采用parted命令对/dev/sdc进行分区
GNU Parted 3.1
使用 /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable gpt 第二步:指定分区模式为gpt
(parted) mkpart 第三步:划分新的分区
分区名称? []? haha 第四步:随意写
文件系统类型? [ext2]? ext4 第五步:随意写,不会进行格式化
起始点? 0 第六步
结束点? 5G 第七步
警告: The resulting partition is not properly aligned for best
performance.
忽略/Ignore/放弃/Cancel? Ignore 第六步:选择忽略
(parted) print 查看分区表信息
...
Number Start End Size File system Name 标志
1 17.4kB 5000MB 5000MB haha
(parted) unit GB 使用GB作为单位
(parted) print
...
Number Start End Size File system Name 标志
1 0.00GB 5.00GB 5.00GB haha
(parted) mkpart
分区名称? []? haha
文件系统类型? [ext2]? ext4
起始点? 5G
结束点? 10G
(parted) print
...
Number Start End Size File system Name 标志
1 0.00GB 5.00GB 5.00GB haha
2 5.00GB 10.0GB 5.00GB haha
(parted) quit 退出交互环境
信息: You may need to update /etc/fstab.
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
...
sdc 8:32 0 20G 0 disk
├─sdc1 8:33 0 4.7G 0 part
└─sdc2 8:34 0 4.7G 0 part
3.2.3 格式化:赋予空间文件系统的过程
- 文件系统: 数据在空间中存放的规则
- Windows常见的文件系统:NTFS FAT(兼容性强)
- Linux常见的文件系统:ext4(RHEL6) xfs(RHEL7) FAT
- 格式化的命令:
mkfs. 查看所有类型的文件系统
mkfs.ext4 格式化文件系统ext4
mkfs.xfs 格式化文件系统xfs
blkid 查看格式化后文件系统类型
[root@localhost ~]# mkfs.
mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs
[root@localhost ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
...
Writing superblocks and filesystem accounting information: 完成
[root@localhost ~]# mkfs.xfs /dev/sdb2
meta-data=/dev/sdb2 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a4ccc8bb-978a-4c29-b0c0-4ba3356e6f39" TYPE="ext4"
[root@localhost ~]# blkid /dev/sdb2
/dev/sdb2: UUID="60412f12-ba25-4c80-bf96-c84f57c021a1" TYPE="xfs"
3.2.4 挂载使用
此时的挂载是临时挂载,当虚拟机重启之后挂载就不存在了。
- 使用的命令:
mount
df -h 显示正在挂载的设备信息
注:直接输入mount也可以显示正在挂载的设备信息,不过df -h更常使用,可以显示易读单位
[root@localhost ~]# mkdir /mypart1
[root@localhost ~]# mount /dev/sdb1 /mypart1/
[root@localhost ~]# mkdir /mypart2
[root@localhost ~]# mount /dev/sdb2 /mypart2/
[root@localhost ~]# df -h 显示正在挂载的设备信息,该命令用的比较多
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 17G 3.4G 14G 20% /
devtmpfs 471M 0 471M 0% /dev
...
/dev/sdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/sdb2 1014M 33M 982M 4% /mypart2
[root@localhost ~]# df -h | grep sdb
/dev/sdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/sdb2 1014M 33M 982M 4% /mypart2
[root@localhost ~]# mount 显示正在挂载的设备信息
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
...
/dev/sdb1 on /mypart1 type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdb2 on /mypart2 type xfs (rw,relatime,seclabel,attr2,inode64,noquota)
3.2.5 开机自动挂载
- /etc/fstab 记录开机自动挂载的配置文件
- /etc/fstab 文件的写入格式如下:
设备路径 挂载点 文件系统类型 参数 备份标记 检测顺序
注:修改这个文件时应谨慎,如果修改错误虚拟机将无法正常开机。 - 用到的命令:
mount -a
检测/etc/fstab开机自动挂载配置文件,格式是否正确
检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载 - 操作示例:
[root@localhost ~]# vim /etc/fstab 第一步:进入/etc/fstab文件
/dev/sdb1 /mypart1 ext4 defaults 0 0 第二步:在/etc/fstab文件中按照格式写入需要自动挂载的设备
/dev/sdb2 /mypart2 xfs defaults 0 0
[root@localhost ~]# df -h | grep mypart 此时没有查到/dev/sdb1和/dev/sdb2进行了挂载
[root@localhost ~]# mount -a 第三步:检查在/etc/fstab文件中写入的格式是否正确,并对未挂载的设备进行挂载
检测/etc/fstab开机自动挂载配置文件,格式是否正确
检测/etc/fstab中,书写完成,但当前没有挂载的设备,进行挂载
[root@localhost ~]# df -h | grep mypart
/dev/sdb1 2.0G 6.0M 1.8G 1% /mypart1
/dev/sdb2 1014M 33M 982M 4% /mypart2
- 如果/etc/fstab文件有误,则在开机时无法正常开机,修复办法如下:
第一步:在开机时,经历较长赶时间加载后,会让输入root的密码
第二步:vim /etc/fstab,进入/etc/fstab文件修改错误的内容
3.3 交换空间(虚拟内存)
- 概念:
(1)利用硬盘的空间,充当内存的空间
(2)当物理内存占满了,CPU可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
(3)交换空间最好为内存的2倍,交换空间最大不会超过16G - 命令:
mkswap 硬盘路径 将作为交换空间的硬盘分区的文件系统格式化为swap类型
swapon 查看交换空间组成的成员信息
swapon 硬盘路径 启用交换分区
swapoff 硬盘路径 停用交换分区
free -m 查看交换空间的大小 - 交换空间的实现方式一:利用硬盘分区制作交换空间
[root@localhost ~]# ls /dev/sdd2
/dev/sdd2
[root@localhost ~]# mkswap /dev/sdd2 第一步:格式化交换文件系统
mkswap: /dev/sdd2: warning: wiping old swap signature.
正在设置交换空间版本 1,大小 = 4882428 KiB
无标签,UUID=e747150c-50d4-46d3-9329-9f7bd0db542f
[root@localhost ~]# blkid /dev/sdd2 查看文件系统类型
/dev/sdd2: UUID="e747150c-50d4-46d3-9329-9f7bd0db542f" TYPE="swap" PARTLABEL="haha" PARTUUID="274c769e-fb31-40ae-ad13-e14ea7d67ad6"
[root@localhost ~]# swapon 查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 84.3M -1
[root@localhost ~]# swapon /dev/sdd2 第二步:启用交换分区
[root@localhost ~]# swapon 查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 85.5M -1
/dev/sdd2 partition 4.7G 0B -2
[root@localhost ~]# free -m 查看交换空间的大小
total used free shared buff/cache available
Mem: 974 674 74 4 225 100
Swap: 6815 85 6730
[root@localhost ~]# swapoff /dev/sdd2 停用交换分区
[root@localhost ~]# swapon 查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 85.3M -1
[root@localhost ~]# free -m 查看交换空间的大小
total used free shared buff/cache available
Mem: 974 671 76 4 226 104
Swap: 2047 85 1962
- 交换空间的实现方式二:利用文件方式
命令:dd,生成一个大文件
格式: dd if=数据的源头 of=生成的文件(该文件不用自己创建,执行命令之后会自动创建) bs=每次读写数据的大小 count=次数
示例: 以生成一个2G的文件为例,其中 /dev/zero 拥有无限的数据,不断的在生成数字0
第一步:生成一个2G的大文件
[root@localhost ~]# dd if=/dev/zero of=/opt/swap.txt bs=1M count=2048 每读1M写入一次,一共写了2048次
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,3.94694 秒,544 MB/秒
[root@localhost ~]# ls -lh /opt/swap.txt
-rw-r--r--. 1 root root 2.0G 5月 27 07:15 /opt/swap.txt
第二步:将生成的大文件作为交换空间
[root@localhost ~]# mkswap /opt/swap.txt
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=49cfc50d-d1de-4b00-a737-d5c787897f97
[root@localhost ~]# blkid /opt/swap.txt
/opt/swap.txt: UUID="49cfc50d-d1de-4b00-a737-d5c787897f97" TYPE="swap"
[root@localhost ~]# swapon /opt/swap.txt 手动启用
swapon: /opt/swap.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 87.5M -1
/opt/swap.txt file 2G 0B -2
[root@localhost ~]# vim /etc/fstab 开机自动启用
/opt/swap.txt swap swap defaults 0 0
[root@localhost ~]# swapoff /opt/swap.txt
[root@localhost ~]# swapon -a
swapon: /opt/swap.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 89M -1
/opt/swap.txt file 2G 0B -2
- 开机自动启用交换分区
在文件 /etc/fstab 中记录需要开机自动启用的交换分区,格式如下:
设备路径 | 挂载点 | 文件系统类型 | 参数 | 备份标记 | 检测顺序 |
---|---|---|---|---|---|
/dev/sdd2 | swap | swap | defaults | 0 | 0 |
[root@localhost ~]# vim /etc/fstab
dev/sdd2 swap swap defaults 0 0
[root@localhost ~]# swapon 查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 97.3M -1
[root@localhost ~]# swapon -a 专门检测交换分区的书写
检测/etc/fstab开机自动启用的交换空间,格式是否正确
检测/etc/fstab中,书写完成,但当前没有启用的交换空间,进行启用
[root@localhost ~]# swapon 查看交换空间组成的成员信息
NAME TYPE SIZE USED PRIO
/dev/dm-1 partition 2G 97.3M -1
/dev/sdd2 partition 4.7G 0B -2
四、逻辑卷管理(LVM,Logical Volume Manager)
4.1 概念及命令集
4.1.1 概念
- 逻辑卷的作用:
1、整合分散的空间
2、空间支持扩大 - 术语介绍:
物理卷(PV,Physical Volume): 零散的空闲存储,指没有使用过的(没有格式化过的)硬盘分区或硬盘。
卷组(VG,Volume Group): 整合的虚拟磁盘,由若干个物理卷组成。
逻辑卷(LV,Volume Group): 虚拟的分区,从卷组中划分出。
逻辑卷制作过程: 将众多的物理卷(PV)组建成卷组(VG),再从卷组中划分出逻辑卷(LV)
4.1.2 命令集
功能 | 物理卷管理 | 卷组管理 | 逻辑卷管理 |
---|---|---|---|
Scan 扫描 | pvs | vgs | lvs |
Create 创建 | pvcreate | vgcreate | lvcreate |
Display 显示 | pvdisplay | vgdisplay | lvdisplay |
Remove 删除 | pvremove | vgremove | lvremove |
Extend 扩展 | / | vgextend | lvextend |
4.2 逻辑卷的创建和使用
- 第一步:建立卷组(VG)
格式: vgcreate 卷组名 设备路径
示例: vgcreate systemvg /dev/sdb[1-2]
#由/dev/sdb1和/dev/sdb2作为物理卷制作systemvg卷组
[root@localhost ~]# vgcreate systemvg /dev/sdb[1-2]
Physical volume "/dev/sdb1" successfully created.
Physical volume "/dev/sdb2" successfully created.
Volume group "systemvg" successfully created
[root@localhost ~]# pvs #查看系统所有物理卷信息
PV VG Fmt Attr PSize PFree
/dev/sda2 centos lvm2 a-- <19.00g 0
#/dev/sdb1和/dev/sdb2为物理卷,大小为各10g,可用空间各为10g
/dev/sdb1 systemvg lvm2 a-- <10.00g <10.00g
/dev/sdb2 systemvg lvm2 a-- <10.00g <10.00g
[root@localhost ~]# vgs #查看系统卷组信息
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
#制作出的卷组,由两个物理卷组成,大小为19.99,可用空间为19.99
systemvg 2 0 0 wz--n- 19.99g 19.99g
- 第二步:建立卷组(VG)
格式: lvcreate -L 大小G -n 逻辑卷名字 卷组名
示例: lvcreate -L 16G -n vo systemvg
#从卷组systemvg中划分出大小为16G的逻辑卷vo
[root@localhost ~]# lvcreate -L 16G -n vo systemvg
Logical volume "vo" created.
[root@localhost ~]# vgs #查看卷组信息
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
#卷组systemvg划分出16个G的逻辑卷后,可用空间由19.99g变成了3.99g
systemvg 2 1 0 wz--n- 19.99g 3.99g
[root@localhost ~]# lvs #查看逻辑组信息
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root centos -wi-ao---- <17.00g
swap centos -wi-ao---- 2.00g
#卷组systemvg划分出大小为16个G的逻辑卷vo
vo systemvg -wi-a----- 16.00g
- 第三步:使用逻辑卷(LV)
(1)逻辑卷的表示: 在liunx中以文件表示逻辑卷设备,会自动在目录 /dev下,以卷组名和逻辑卷名制作出一个快捷方式(例如:/dev/systemvg/vo),此快捷方式的实际指向的名字为 dm-2(逻辑卷的实际名字是 dm-数字)。
[root@localhost ~]# ls -l /dev/systemvg/vo
lrwxrwxrwx. 1 root root 7 5月 28 08:51 /dev/systemvg/vo -> ../dm-2
(2)格式化逻辑卷:
[root@localhost ~]# mkfs.xfs /dev/systemvg/vo 格式化逻辑卷
meta-data=/dev/systemvg/vo isize=512 agcount=4, agsize=1048576 blks
...
realtime =none extsz=4096 blocks=0, rtextents=0
[root@localhost ~]# blkid /dev/systemvg/vo 查看逻辑卷的文件系统类型
/dev/systemvg/vo: UUID="c59a06db-1dfa-411e-af53-a40311bd9068" TYPE="xfs"
(3)设置开机自动挂载逻辑卷:
[root@localhost ~]# mkdir /mylv
[root@localhost ~]# vim /etc/fstab
#/dev/systemvg/vo /mylv xfs defaults 0 0
[root@localhost ~]# mount -a #检测fstab文件内容书写是否正确,并对未挂载的设备进行挂载
[root@localhost ~]# df -h | grep mylv 查看查看正在挂载使用的设备
/dev/mapper/systemvg-vo 16G 33M 16G 1% /mylv
#快捷方式/dev/mapper/systemvg-vo和快捷方式/dev/systemvg/vo指向的是同一个设备,都是dm-2这个逻辑卷
[root@localhost ~]# ls -l /dev/systemvg/vo
lrwxrwxrwx. 1 root root 7 5月 28 08:51 /dev/systemvg/vo -> ../dm-2
[root@localhost ~]# ls -l /dev/mapper/systemvg-vo
lrwxrwxrwx. 1 root root 7 5月 28 08:51 /dev/mapper/systemvg-vo -> ../dm-2
4.3 逻辑卷的扩展
4.3.1 卷组有足够的剩余空间
- 第一步:扩展逻辑卷的空间
格式: lvextend -L 要扩展到的大小 逻辑卷的绝对路径
示例: lvextend -L 18G /dev/systemvg/vo
[root@localhost ~]# df -h | grep vo #查看逻辑卷的大小为16G
/dev/mapper/systemvg-vo 16G 33M 16G 1% /mylv
[root@localhost ~]# vgs #查看创建逻辑卷的卷组可用大小为3.99
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
systemvg 2 1 0 wz--n- 19.99g 3.99g
[root@localhost ~]# lvextend -L 18G /dev/systemvg/vo #将逻辑卷的大小扩展到18G
Size of logical volume systemvg/vo changed from 16.00 GiB (4096 extents) to 18.00 GiB (4608 extents).
Logical volume systemvg/vo successfully resized. #扩展成功
- 第一步补充说明:文件系统大小和空间大小
文件系统大小: 逻辑卷格式化时的大小是多少,文件系统的大小就是多少。
空间大小: 逻辑卷的大小。
在第一步对逻辑卷进行扩展之后,只扩展了逻辑卷的空间大小,但是文件系统的大小还是逻辑卷上次格式化时的大小并没有同步扩展。所以在用命令 lvs 查看逻辑卷时显示大小为18G,但是用命令 df -h 查看时逻辑卷时大小显示为16G。此时就需要刷新文件系统,使文件系统的大小也同步扩展至同等大小。
[root@localhost ~]# lvs | grep vo
vo systemvg -wi-ao---- 18.00g #显示大小18G
[root@localhost ~]# df -h | grep vo
/dev/mapper/systemvg-vo 16G 33M 16G 1% /mylv #显示大小18G
- 第二步:扩展逻辑卷的文件系统(刷新文件系统)
命令:
xfs_growfs 逻辑卷绝对路径 刷新xfs文件系统
例如:xfs_growfs /dev/systemvg/vo
resize2fs 逻辑卷绝对路径 刷新ext4文件系统
例如:resize2fs /dev/systemvg/vo
[root@localhost ~]# blkid /dev/systemvg/vo #查看逻辑卷的文件类型为xfs
/dev/systemvg/vo: UUID="c59a06db-1dfa-411e-af53-a40311bd9068" TYPE="xfs"
[root@localhost ~]# xfs_growfs /dev/systemvg/vo #刷新文件系统
meta-data=/dev/mapper/systemvg-vo isize=512 agcount=4, agsize=1048576 blks
...
[root@localhost ~]# lvs | grep vo
vo systemvg -wi-ao---- 18.00g
[root@localhost ~]# df -h | grep vo #用df -h查看文件系统的大小也变成了18G
/dev/mapper/systemvg-vo 18G 33M 18G 1% /mylv
4.3.2 卷组没有足够的剩余空间
- 第一步:扩展卷组的空间
格式: vgextend 卷组名 硬盘分区(支持多个)
示例: vgextend systemvg /dev/sdb3 /dev/sdb[5-6]
[root@localhost ~]# vgextend systemvg /dev/sdb3 /dev/sdb[5-6]
Physical volume "/dev/sdb3" successfully created.
Physical volume "/dev/sdb5" successfully created.
Physical volume "/dev/sdb6" successfully created.
Volume group "systemvg" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz--n- <19.00g 0
systemvg 5 1 0 wz--n- 71.98g 53.98g
- 第二步:扩展逻辑卷的空间
[root@localhost ~]# lvextend -L 25G /dev/systemvg/vo
Size of logical volume systemvg/vo changed from 18.00 GiB (4608 extents) to 25.00 GiB (6400 extents).
Logical volume systemvg/vo successfully resized.
- 第三步:扩展逻辑卷的文件系统(刷新文件系统)
[root@localhost ~]# xfs_growfs /dev/systemvg/vo
meta-data=/dev/mapper/systemvg-vo isize=512 agcount=5, agsize=1048576 blks
...
data blocks changed from 4718592 to 6553600
[root@localhost ~]# df -h | grep vo
/dev/mapper/systemvg-vo 25G 33M 25G 1% /mylv
4.4 逻辑卷的补充
- 逻辑卷支持缩减
xfs文件系统:不支持缩减
ext4文件系统:支持缩减 - 卷组划分空间的单位 PE
默认1个PE的大小为4M
[root@localhost ~]# vgdisplay systemvg
--- Volume group ---
...
PE Size 4.00 MiB
...
题目: 请创建一个大小为250M的逻辑卷名字为 lvredhat
分析: 卷组的单位为 PE ,一 PE 为4M,所以没法给250M会直接给252M,若想实现250M需要修改卷组的 PE 大小
[root@localhost ~]# vgchange -s 1M systemvg # 修改PE大小为1M
Volume group "systemvg" successfully changed
[root@localhost ~]# vgdisplay systemvg
--- Volume group ---
...
PE Size 1.00 MiB
...
[root@localhost ~]# lvcreate -L 250M -n lvredhat systemvg
Logical volume "lvredhat" created.
[root@localhost ~]# lvs
...
lvredhat systemvg -wi-a----- 250.00m
...
- 创建逻辑卷的时候可以指定PE个数
格式: lvcreate -l PE个数 -n 逻辑卷名 卷组名
示例: lvcreate -l 108 -n lvhaha systemvg
[root@localhost ~]# lvcreate -l 108 -n lvhaha systemvg #108个PE
Logical volume "lvhaha" created.
[root@localhost ~]# lvs | grep lvhaha
lvhaha systemvg -wi-a----- 108.00m
4.5 逻辑卷的删除
- 删除卷组的前提:基于此卷组创建的所有逻辑卷,要全部删除
- 删除逻辑卷的前提:不能删除正在挂载使用的逻辑卷
格式: lvremove 逻辑卷绝对路径
示例: lvremove /dev/systemvg/vo
[root@localhost ~]# lvremove /dev/systemvg/vo #删除逻辑卷vo
Logical volume systemvg/vo contains a filesystem in use.
[root@localhost ~]# umount /dev/systemvg/vo #也可以写成umount /mylv/,写挂载点和逻辑卷都可以
[root@localhost ~]# lvremove /dev/systemvg/vo
Do you really want to remove active logical volume systemvg/vo? [y/n]: y
Logical volume "vo" successfully removed
[root@localhost ~]# vim /etc/fstab #仅删除vo开机自动挂载
[root@localhost ~]# lvremove /dev/systemvg/lvredhat #删除逻辑卷lvredhat
Do you really want to remove active logical volume systemvg/lvredhat? [y/n]: y
Logical volume "lvredhat" successfully removed
[root@localhost ~]# lvremove /dev/systemvg/lvhaha #删除逻辑卷lvhaha
Do you really want to remove active logical volume systemvg/lvhaha? [y/n]: y
Logical volume "lvhaha" successfully removed
五、RAID磁盘阵列
5.1 RAID磁盘阵列概述
- 廉价冗余磁盘阵列(Redundant Arrays of Inexpensive Disks )
- 通过硬件/软件技术(用硬件技术的比较多),将多个较小/低速的磁盘整合成一个大磁盘
- 阵列的价值:提升I/O效率、硬件级别的数据冗余
- 不同RAID级别的功能、特性各不相同
- 需要服务器硬件RAID卡
5.2 RAID不同级别的介绍
-
RAID 0,条带模式
同一个文档分散存放在不同磁盘
并行写入以提高效率
至少需要两块磁盘组成,磁盘利用率100% -
RAID 1,镜像模式
一个文档复制成多份,分别写入不同磁盘
多份拷贝提高可靠性,效率无提升
至少需要两块磁盘组成,磁盘利用率50% -
RAID 5,高性价比模式
相当于RAID0和RAID1的折中方案
需要至少一块磁盘的容量来存放校验数据
至少需要三块磁盘组成,磁盘利用率n-1/n -
RAID 6,高性价比/可靠模式
相当于扩展的RAID5阵列,提供2份独立校验方案
需要至少两块磁盘的容量来存放校验数据
至少需要四块磁盘组成,磁盘利用率n-2/n -
RAID 0+1/RAID 1+0(RAID 10)
整合RAID 0、RAID 1的优势
并行存取提高效率、镜像写入提高可靠性
至少需要四块磁盘组成,磁盘利用率50%
对比项 | RAID 0 | RAID 1 | RAID 10 | RAID 5 | RAID 6 |
---|---|---|---|---|---|
磁盘数 | ≥2 | ≥2 | ≥4 | ≥3 | ≥4 |
存储利用率 | 100% | ≤50% | ≤50% | n-1/n | n-2/n |
校验盘 | 无 | 无 | 无 | 1 | 2 |
容错性 | 无 | 有 | 有 | 有 | 有 |
IO性能 | 高 | 低 | 中 | 较高 | 较高 |
六、进程管理
6.1 术语介绍
- 程序:静态没有执行的代码,在硬盘空间。
- 进程:动态执行的代码,在CPU与内存资源中。
- 父进程与子进程:两者以树型结构表示
- 进程编号:PID
6.2 查看进程
6.2.1 pstree命令:查看进程树
格式:
pstree 显示所有的进程
pstree -a 用户名 显示该用户所执行的完整的命令行
pstree -p 用户名 显示该用户进程的PID编号
pstree -ap 用户名 显示该用户所执行的完整的命令行和对应的PID号
注:systemd(PID永远为1):所有进程的父进程(上帝进程)
[root@localhost ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}] #上帝进程
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
...
[root@localhost ~]# pstree -p lisi
bash(56875)───vim(56967)
[root@localhost ~]# pstree -a lisi
bash
└─vim hehe
[root@localhost ~]# pstree -ap lisi
bash,56875
└─vim,56967 hehe
6.2.2 ps命令:查看进程快照
- 格式:
ps aux 列出正在运行的所有进程,显示进程信息非常详细
ps -elf 列出正在运行的所有进程,显示进程父进程信息
[root@localhost ~]# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
# 用户 进程ID %CPU %内存 虚拟内存 固定内存 终端 状态 起始时间 CPU时间 程序指令
root 1 0.0 0.4 193716 4340 ? Ss 08:44 0:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 08:44 0:00 [kthreadd]
[root@localhost ~]# ps -elf #PPID为父进程的PID
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 48429 ep_pol 08:44 ? 00:00:02 /usr/lib/systemd/systemd --switched-root --system --deser
1 S root 2 0 0 80 0 - 0 kthrea 08:44 ? 00:00:00 [kthreadd]
6.2.3 top命令:交互式(动态)查看进程排名
格式:
top -d 刷新秒数
按大写P进行CPU排序
按大写M进行内存排序
[root@localhost ~]# top -d 1 #查看进程,每隔一秒刷新一次
top - 00:16:34 up 15:31, 2 users, load average: 0.22, 0.25, 0.20
Tasks: 195 total, 1 running, 194 sleeping, 0 stopped, 0 zombie
%Cpu(s): 10.1 us, 1.0 sy, 0.0 ni, 88.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 997956 total, 70364 free, 732812 used, 194780 buff/cache
KiB Swap: 4194296 total, 4033272 free, 161024 used. 63472 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1977 root 20 0 3089252 224400 21260 S 7.9 22.5 3:52.46 gnome-shell
1276 root 20 0 338752 41760 4920 S 2.0 4.2 1:44.83 X
62397 root 20 0 161972 2340 1608 R 1.0 0.2 0:17.40 top
...
6.2.4 pgrep命令:检索进程
- 格式:
pgrep -l 字符串 查找包括该字符串的进程
pgrep -lU 用户名 查找该用户开启的进程
pgrep -lx 进程名 精确匹配完整的进程名
注:如果不加 -l 则只会显示PID号。
[root@localhost ~]# pgrep -l a #查找进程名字带有a字母
2 kthreadd
7 migration/0
10 lru-add-drain
...
[root@localhost ~]# pgrep -lU lisi #查找用户lisi开启的进程
66896 bash
66934 vim
[root@localhost ~]# pstree -p lisi #查找用户lisi开启的进程,这个命令更常用
bash(66896)───vim(66934)
[root@localhost ~]# pgrep -lx crond #查找进程crond
1088 crond
6.3 控制进程
6.3.1 进程的前后台调度
- 格式:
& 符号:正在运行的状态放入后台
Ctrl + z 组合键:挂起当前进程(暂停并转入后台)
jobs 命令:查看后台任务列表
fg 命令:将后台任务恢复到前台运行
bg 命令:激活后台被挂起的任务
[root@localhost ~]# xeyes #只输入xeyes时大眼睛进程运行在前台,此时终端不能继续敲别的命令了
^C
[root@localhost ~]# xeyes & #将xeyes进程以正在运行的状态放入后台
[1] 67442
[root@localhost ~]# fg 1 #让后台编号为1 的正在运行进程恢复到前台
xeyes
^C
[root@localhost ~]# xeyes #只输入xeyes时,按Ctrl + z,可以将xeyes进程挂起(暂停并转入后台),此时大眼睛不随鼠标移动了。
^Z
[1]+ 已停止 xeyes
[root@localhost ~]# jobs #查看后台进程信息
[1]+ 已停止 xeyes
[root@localhost ~]# bg 1 #让后台编号为1 的被挂起的进程继续运行
[1]+ xeyes &
6.3.2 杀掉进程
- 格式:
Ctrl+c 组合键:中断当前命令程序
kill -9 PID… 、kill -9 %后台任务编号 按照进程PID号、后台任务编号杀死进程
killall -9 进程名 按照进程名杀死进程
pkill -9 查找条件 模糊匹配,满足查找条件就杀死
注:不加 -9 也能杀死进程,加上 -9 是强制杀的意思,有的进程必须要强制杀,比如僵尸进程。
[root@localhost ~]# xeyes &
[2] 67621
[root@localhost ~]# xeyes &
[3] 67628
[root@localhost ~]# xeyes &
[4] 67635
[root@localhost ~]# killall -9 xeyes
[1] 已杀死 xeyes
[2] 已杀死 xeyes
[3]- 已杀死 xeyes
[4]+ 已杀死 xeyes
七、配置Linux网络
7.1 配置网络参数
7.1.1 修改主机名
[root@localhost ~]# hostnamectl set-hostname svr7.tedu.cn
[root@localhost ~]# hostname
svr7.tedu.cn
7.1.2 修改网卡命名规则
- 主流的网卡命名规则为:eth0、eth1、eth2……
- 本机的网卡名为 ens33
[root@localhost ~]# ifconfig | head -2
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 00:0c:29:8a:72:4f txqueuelen 1000 (Ethernet)
- 将本机的网卡名由 ens33 修改为 eth0
第一步:vim /etc/default/grub,在该文件内写网卡命名的规则:net.ifnames=0 biosdevname=0。
第二步: grub2-mkconfig -o /boot/grub2/grub.cfg,重新生成网卡命名规则配置文件。
第三步:reboot 重启虚拟机,然后 ifconfig 会发现网卡命已修改为 eth0。
[root@svr7 ~]# ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.232.128 netmask 255.255.255.0 broadcast 192.168.232.255
7.1.3 nmcli:命令
7.1.3.1 nmcli 删除自己命名及错误的网卡名
- nmcli 会为网卡再起一个名字
- 网卡名本来为 ens33 后修改为 eth0 ,但是 nmcli 依然记录了原来了原来的网卡名 ens33
- 查看以上两种名字的命令: nmcli connection show
- 删除自己命名及错误的网卡名:
[root@svr7 ~]# nmcli connection delete 有线连接\ 1 #删除nmlci自己命名的网卡名,也可以写成:nmcli connection delete '有线连接 1'
成功删除连接 '有线连接 1'(9bb20b8f-aca7-39fa-9ce0-0ec218b4eddc)。
[root@svr7 ~]# nmcli connection delete ens33 #删除之前的网卡名ens33
成功删除连接 'ens33'(3a693713-cf8c-4979-86d0-b781ff430506)。
[root@svr7 ~]# nmcli connection show #删除之后查看一下
NAME UUID TYPE DEVICE
virbr0 025ff060-f9eb-4eaa-84b0-6f433f684d21 bridge virbr0
[root@svr7 ~]#
7.1.3.2 nmcli 添加网卡命名
- 如果要使用 numcli 来设置IP地址,那必须使用这个命令所起的网卡名字,所以要用这个命令添加一个网卡名字。
[root@svr7 ~]# nmcli connection add type ethernet ifname eth0
#解析 nmcli connection 添加 类型 以太网设备 网卡设备名为eth0 nmcli命令的命名为eth0
连接“eth0”(c5a86a2d-baac-42d1-9d9a-d50b7ca3b34a) 已成功添加。
[root@svr7 ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 c5a86a2d-baac-42d1-9d9a-d50b7ca3b34a ethernet eth0
virbr0 025ff060-f9eb-4eaa-84b0-6f433f684d21 bridge virbr0
[root@svr7 ~]#
7.1.3 修改IP地址、子网掩码、网关地址
7.1.3.1 方法一:使用 nmcli
- 修改的命令:
nmcli connection modify eth0
ipv4.method manual
ipv4.addresses 192.168.4.7/24
ipv4.gateway 192.168.4.254
connection.autoconnect yes
解释:
nmcli connection 修改 网卡名(用nmcli命令起的名)
ipv4.方法 手工配置
ipv4.地址 192.168.4.7/24
ipv4.网关 192.168.4.254
每次开机自动启用以上所有参数
[root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.4.7/24 ipv4.gateway 192.168.4.254 connection.autoconnect yes
- 修改后要激活才能生效:
激活之后用 ifconfig 命令进行查看,或者直接查看网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-eth0,会发现IP都已成功变成修改的IP。
[root@svr7 ~]# nmcli connection up eth0 #激活
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/5)
[root@svr7 ~]# ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.4.7 netmask 255.255.255.0 broadcast 192.168.4.255
[root@svr7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
...
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.4.7
PREFIX=24
GATEWAY=192.168.4.254
[root@svr7 ~]# route -n #查看网关地址信息,Gateway :192.168.4.254
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.4.254 0.0.0.0 UG 100 0 0 eth0
192.168.4.0 0.0.0.0 255.255.255.0 U 100 0 0 eth0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@svr7 ~]#
7.1.3.2 方法二:使用 vim 修改网卡配置文件
[root@svr7 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 #修改网卡配置文件
...
ONBOOT=yes #是否启用此网卡
IPADDR=192.168.4.7 #ip地址
PREFIX=24 #子网掩码
GATEWAY=192.168.4.254 #网关地址
[root@svr7 ~]# ifdown eth0 #禁用eth0网卡
成功断开设备 'eth0'。
[root@svr7 ~]# ifup eth0 #激活eth0网卡
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/18)
7.1.4 配置DNS服务器地址
- DNS服务器:负责域名解析的机器,将域名解析为IP地址
- /etc/resolv.conf :最终有效DNS配置文件
[root@svr7 ~]# echo nameserver 8.8.8.8 > /etc/resolv.conf
[root@svr7 ~]# cat /etc/resolv.conf
nameserver 8.8.8.8
为了日后Web服务器的学习,清空此文件所有内容,原因是搭建Web服务器时,Web服务会读取/etc/resolv.conf文件内容,进行寻找DNS服务器(如果再没有配置DNS服务器的情况下,Web服务去找DNS的配置会影响Web服务启动速度)。清空命令如下:
[root@svr7 ~]# > /etc/resolv.conf
[root@svr7 ~]# cat /etc/resolv.conf
[root@svr7 ~]#
7.1.5 模板机器的修改
- 输入vim /etc/fstab后,将里面的UUID换成它所对应的真实设备路径:
- 修改命令:
[root@svr7 ~]# vim /etc/fstab
# 有UUID的一行改为:/dev/sda1 /boot xfs defaults 0 0
[root@svr7 ~]# mount -a
7.1.6 真机与虚拟机的通信
- 克隆出来一台B虚拟机,所有的配置都和A虚拟机一致
7.1.7 常用的网络命令
7.1.7.1 ip命令:查看、添加和删除ip地址
- 查看IP地址: ip address show(可缩写为ip a s)
- 添加IP地址: ip address add IP地址 dev eth0 (一张网卡可有多个IP)
- 删除添加的IP地址: ip address del IP地址 dev eth0
]# ip address show
]# ip a s
]# ip address add 192.168.10.1/24 dev eth0
]# ip a s
]# ip address add 192.168.20.1/24 dev eth0
]# ip a s
]# ip address del 192.168.10.1/24 dev eth0
7.1.7.2 ping 命令:测网络连接
- 格式: ping -c 包个数 IP地址
[root@svr7 ~]# ping -c 2 192.168.4.207 #A ping B
PING 192.168.4.207 (192.168.4.207) 56(84) bytes of data.
64 bytes from 192.168.4.207: icmp_seq=1 ttl=64 time=0.911 ms
64 bytes from 192.168.4.207: icmp_seq=2 ttl=64 time=0.787 ms
[root@pc207 ~]# ping -c 3 192.168.4.7 #B ping A
PING 192.168.4.7 (192.168.4.7) 56(84) bytes of data.
64 bytes from 192.168.4.7: icmp_seq=1 ttl=64 time=0.587 ms
64 bytes from 192.168.4.7: icmp_seq=2 ttl=64 time=0.875 ms
64 bytes from 192.168.4.7: icmp_seq=3 ttl=64 time=0.716 ms
7.2 远程管理(Linux与Linux)
虚拟机 A 的 IP:192.168.4.7
虚拟机 B 的 IP:192.168.4.27
7.2.1 实现远程管理要安装的软件包
- openssh-7.4p1-16.el7.x86_64
- openssh-server-7.4p1-16.el7.x86_64
- openssh-clients-7.4p1-16.el7.x86_64
可通过命令( rpm -qa | grep openssh)来查询系统上有没有安装这三个软件包。
7.2.2 远程登录工具 ssh
- 命令: ssh root@192.168.4.207 (以root身份登录到192.168.4.207)
注:命令敲回车之后需要输入对方的账户密码
[root@svr7 ~]# ssh root@192.168.4.207 #以root身份登录到192.168.4.207
The authenticity of host '192.168.4.207 (192.168.4.207)' can't be established.
ECDSA key fingerprint is SHA256:xmBQ8SZU7NSl6hrfKf8iEaSZ1FVkvdoEj05hQtkUAy0.
ECDSA key fingerprint is MD5:66:a1:41:9e:3c:28:00:47:3e:60:46:15:bd:4e:1a:f9.
Are you sure you want to continue connecting (yes/no)? yes #第一次登录要进行记录输入yes
Warning: Permanently added '192.168.4.207' (ECDSA) to the list of known hosts.
root@192.168.4.207's password:
Last login: Sun May 29 17:12:16 2022
[root@pc207 ~]# touch /root/hahaxixi.txt #此时命令提示符由@svr7变成了pc207,创建的目录都会在B虚拟机下
[root@pc207 ~]# exit #退出远程管理
登出
Connection to 192.168.4.207 closed.
-文件: /root/.ssh/known_hosts ,记录自己曾经远程管理的机器
7.2.3 安全复制工具 scp(=ssh+cp)
用于支持本机数据传递给别外一台机器,或者将另外一台机器的数据下载到本地。
- 格式:
下载:scp -r 用户名@服务器:路径 本地路径
上传:scp -r 本地路径 用户名@服务器:路径
注:上传下载目录时需要加上 -r ;命令敲回车之后需要输入对方的账户密码。
[root@svr7 ~]# scp /etc/passwd root@192.168.4.207:/root #将本地/etc/passwd文件上传至B虚拟机的/root目录下
root@192.168.4.207's password:
passwd 100% 2245 1.7MB/s 00:00
[root@svr7 ~]# scp -r /home root@192.168.4.207:/root #将本地/home目录上传至B虚拟机的/root目录下
root@192.168.4.207's password:
.bash_logout 100% 18 15.4KB/s 00:00
.bash_profile 100% 193 182.8KB/s 00:00
.bashrc 100% 231 224.0KB/s 00:00
[root@svr7 ~]# scp root@192.168.4.207:/etc/shadow /mnt #将虚拟机B的/etc/shadow文件下载到本地的/mnt目录下
root@192.168.4.207's password:
Permission denied, please try again.
root@192.168.4.207's password:
shadow 100% 1244 1.3MB/s 00:00
[root@svr7 ~]# ls /mnt
shadow
7.2.4 实现ssh远程管理无密码验证
场景: 虚拟机A远程虚拟机B时无需密码验证
- 第一步: ssh-keygen 虚拟机A生成公钥(锁)与私钥(钥匙)进行验证。
[root@svr7 ~]# ssh-keygen #输入该命令之后一路回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): #回车 设置默认保存位置
Enter passphrase (empty for no passphrase): #回车 设置密码为空
Enter same passphrase again: #回车 设置密码为空
...
+---[RSA 2048]----+
| . Eo=B...|
| o .*oo. |
| . . .... |
| . . . |
| .So.. . |
| +*o. =.. |
| +. B.=oB. |
| . =+.B +++ |
| ..*= .o+ |
+----[SHA256]-----+
[root@svr7 ~]# ls /root/.ssh
id_rsa id_rsa.pub known_hosts #id_rsa为私钥,id_rsa.pub为共钥
- 第二步: ssh-copy-id 将公钥(锁)传递给虚拟机B。
# 虚拟机A的操作
[root@svr7 ~]# ssh-copy-id root@192.168.4.207
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.4.207's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@192.168.4.207'"
and check to make sure that only the key(s) you wanted were added.
[root@svr7 ~]# ssh root@192.168.4.207 #测试无密码
Last failed login: Sun May 29 17:56:38 CST 2022 from 192.168.4.7 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Sun May 29 17:39:19 2022 from 192.168.4.7
[root@pc207 ~]# exit
登出
Connection to 192.168.4.207 closed.
# 虚拟机B的操作
[root@pc207 ~]# ls /root/.ssh
authorized_keys(存储别的机器传递过来的公钥)