文章目录
01.知识概述部分
1)系统启动流程
2)磁盘管理体系结构
磁盘物理层次(内部结构 外部结构)
磁盘逻辑层级(RAID :LVM)
磁盘分区操作(fdisk parted)
磁盘创建文件系统(格式化)
磁盘挂载操作(mount 参数)
磁盘应用环境(作为交换分区)
3)基础阶段知识梳理
02.课程知识回顾说明
1)操作系统用户相关命令
useradd groupadd usermod groupmod userdel groupdel
2)操作系统用户相关文件
/etc/passwd /etc/skel
3)操作系统定时任务配置 crontab -e
时间信息 任务信息
时间信息:分 时 日 月 周
时间设置:*(每) */n(每隔多久) n-m() n,m()
1:00 0 */2 * * * --> 2点 4点 。。 (分钟也要设置,否则每分钟都会执行,每两小时只会在整数点执行)
date -s "1:00:00" --> tail -f /var/log/cron ---> date 2:59:50 3:00 不会执行
---> date 3:59:50 4:00 正常执行
*/n n 在执行时, 是小时整数倍时间执行
n=2 2 4 6 8 10 12 14 16 18 20 22 0
n=3 1:00 3点 6点 9 12 15
a 定时任务编写规范 直接书写命令/直接编写脚本信息
b 定时任务注意事项
命令信息尽量绝对路径
无法识别特殊符号信息 要不然放脚本里,或者加转义\符号
尽量将定时任务输出信息放入到黑洞中 &>/dev/null
0 9,11,13 * * * xxxxx
tail -f /var/log/cron
当前时间 18:00 ---> 编写定时任务 ---> 日志识别当前时间为18:00
---> date 8:59 ---> 异常问题
练习时把时间先改为0点
当前时间 00:00 ---> 编写定时任务 ---> 日志识别当前时间为00:00
---> date 8:59 ---> 正常执行
4)磁盘管理章节说明
磁盘物理结构说明
外部结构:
内部结构:磁头 磁道(规范化磁盘存储方式) 扇区 柱面(分区有关)
5)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted
6)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM
03.磁盘管理知识体系结构
1)磁盘管理物理结构
外部结构:能看见的结构信息
内部结构:看不到的结构信息
2)磁盘管理逻辑结构
如何将多个磁盘进行整合
利用RAID进行整合:提高单块磁盘容量 提高磁盘存储效率 提高磁盘安全性
利用LVM进行整合 :弹性扩容或缩容磁盘(数据库服务器)
3)磁盘分区操作方法
分区概念知识:主分区 扩展分区 逻辑卷 分区表(dos mbr)
分区命令使用:fdisk parted
4)磁盘格式化操作
创建文件系统:xfs ext3/ext4
格式化命令:mkfs(make file system)
5)磁盘应用管理
磁盘挂载操作:mount umount
磁盘管理检测:iotop fsck
如何创建swap空间:
04.磁盘管理物理结构
外部结构:
接口信息:SATA SCSI SAS PCI-e
转速信息:10k 15k
容量信息:byte k M G T
硬盘组成:主轴 磁盘 磁头
内部结构:
磁头(head) :读取磁道数据信息
磁道(trock) :多个同心圆
扇区(sector) :
存储数据最小物理单位(512byte)
最小逻辑存储单位:block -4k 4k=8个扇区
柱面(cylinder):表示相同同心圆做成一个存储的单元
公式:
一个柱面大小(容量)*磁道数量=磁盘大小
(一个磁道大小*磁头数) * 磁道数 ↑
05.磁盘管理分区操作
环境准备:准备三块硬盘 50g 10M 3T
检查确认:
fdisk -l 显示系统有哪些磁盘信息列表展示一下
fdisk + 磁盘 直接分区,创建分区表
fdisk -s 指定分区block块的大小
fdisk -b 指定扇区大小
fdisk -c 一般centos6需要用,选择dos模式
fdisk -u 选择柱面或者扇区作为单元,默认扇区,正常柱面
问题:新添加硬盘无法识别
方法一:重启服务器
方法二:不重启服务器时,识别新硬盘
echo "- - -" > /sys/class/scsi_host/host0/scan --- 让系统重新扫描磁盘硬件信息
(磁盘太大时还是需要重启,2T以上)
硬盘简单描述:
一个硬盘主分区至少有1个,最多4个,扩展分区可以没有,最多1个。且主分区+扩展分区总共不能超过4个。逻辑分区可以有若干个。 但扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分。在linux中第一块硬盘分区为hda分区(或者是sda分区),主分区编号为hda1-4,逻辑分区从5开始。
硬盘的容量=主分区的容量+扩展分区的容量 扩展分区的容量=各个逻辑分区的容量之和
MBR简单描述:
0磁头0磁道1扇区:MBR(master boot record主引导记录)+DPT(磁盘分区表)正好512字节,MBR占了446byte,DTP 占用64字节,每个分区占用16字节:总共有4个主分区,分区结束,标识55AA占用2byte,可以划分一个扩展分区:类似指针 --> 不同逻辑分区,设置扩展分区的目的,只是为了能够建立更多逻辑分区。
https://blog.csdn.net/free050463/article/details/81876521 msdos与GPT详解
https://zhidao.baidu.com/question/138774663.html 主分区与逻辑分区的区别
https://www.cnblogs.com/hiwangzi/p/7640995.html 《鸟哥的Linux私房菜》笔记——03. 磁盘分区
总结:
主分区 4个 扩展分区只能1个(不能直接使用)逻辑分区可以多个 (编号从5开始)
4个主分区(/dev/sda):/dev/sda1 … /dev/sda4
三个主分区,2个逻辑分区:/dev/sda1 … /dev/sda3 /dev/sda5 /dev/sda6
4不能用,代表扩展分区
分区操作1:fdisk (操作时可看10点的视频)
第一个里程:利用命令进入分区界面
fdisk /dev/sdb
c toggle the dos compatibility flag(centos6会用到) 切换dos兼容性标志
d delete a partition 删除指定分区
g create a new empty GPT partition table(centos7独有) 创建一个新的空的GPT分区表(没有主分区限制,100多个)可以划分超过2T大小磁盘
G create an IRIX (SGI) partition table 创建一个IRIX (SGI)分区表
l list known partition types 列出已知分区类型(用的时候输入英文的l)关注:8e Linux LVM 82 Linux swap / So 83 Linux
m print this menu 打开菜单
n add a new partition 添加新的分区
o create a new empty DOS partition table 创建一个新的空的DOS分区表(具有主分区限制)只能划分2T以下磁盘
p print the partition table 输出分区表信息
q quit without saving changes 退出不保存配置
t change a partition's system id 改变分区类型
v verify the partition table 验证分区表
u change display/entry units 改变单元方式,扇区或柱面,一般默认就可以了
w write table to disk and exit 保存分区配置
第二个里程:进行分区操作
操作时误输入,删除错误字符时按住ctrl+删除键 或者ctrl u
n --> p --> 分区大小信息 --> 划分主分区
n --> e --> 分区大小信息 --> 划分扩展分区,只有分完扩展分区后,才能分逻辑分区
n --> l --> 分区大小信息 --> 划分逻辑分区
# Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-104857599, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-104857599, default 104857599): +10G
Partition 1 of type Linux and of size 10 GiB is set
Command (m for help): p
Disk /dev/sdb: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xca0477a7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 20973567 10485760 83 Linux
第三个里程: 检查确认并保存退出后格式化
p --> w
mkfs.xfs /dev/sdb1 格式化
格式化较小磁盘时,比如10M,需要选用etx3或者etx4,xfs不支持较小的分区
-f 强制分区,用于xfs,ext3,4不支持该参数
扩展:fdisk命令划分2T以上分区,输入大小时需要整数,比如+2T
输入g 修改分区表为gpt
输入o 修改分区表为dos
[root@jason / 20:15:02]# fdisk /dev/sdc
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).
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 number (1-128, default 1):
First sector (34-6442450910, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-6442450910, default 6442450910): +2T
Created partition 1
Command (m for help): p
Disk /dev/sdc: 3298.5 GB, 3298534883328 bytes, 6442450944 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: gpt
Disk identifier: F83A4F4D-DC55-4D12-904D-BFCC7C2F5C23
# Start End Size Type Name
1 2048 4294969343 2T Linux filesyste
分区操作2:parted
查看空闲空间
[root@jason ~ 04:34:55]# parted /dev/sdc print free
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 2100GB 2100GB primary
2100GB 3299GB 1199GB Free Space
第一个里程:
[root@jason ~ 10:33:17]# parted /dev/sdc
GNU Parted 3.1
Using /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted)
第二个里程:
分区参数:
mklabel(创建分区表 MRB-msdos/gpt) create a new disklabel (partition table)
创建新的分区表
1.配置分区类型,需注意,如果之前有分区下面的操作会清除以前的分区数据
# mklabel GPT # mklabel msdos这是恢复默认的格式
2. mkpart(创建新的分区) make a partition
配置主分区:
# mkpart primary 0 2100G (创建第一个主分区,0到2100G,可以把所有分区都划为主分区)
创建第二个分区mkpart primary 2100G 3000G (以此类推)
配置逻辑分区:
剩余空间给扩展分区
mkpart entended 2150G 2350G
在扩展分区上创建第一个逻辑分区
(parted) mkpart logic 2350G 2400G
创建第二个逻辑分区
mkpart logic 2400G 100% #100%代表使用剩余的所有空间
(parted) p
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdc: 3299GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 17.4kB 2100GB 2100GB primary
2 2100GB 2150GB 50.0GB primary
3 2150GB 2350GB 200GB entended
4 2350GB 2350GB 512B logic
5 2350GB 2400GB 50.0GB logic
6 2400GB 3299GB 899GB logic
3.
print(显示分区表信息) display the partition table
rm(删除指定分区信息) delete partition NUMBER
4.quit(退出分区界面) exit program
5.mkfs.xfs /dev/xxx 格式化后挂载即可
6.mklabel msdos这是恢复默认的格式
06.磁盘管理逻辑结构 LVM
磁盘阵列概念:将多块磁盘整合为一块,提高磁盘存储效率和安全性,以及单块磁盘容量
磁盘阵列配置:RAID 0 1 5 10 11
阵列级别:
raid 0 :用于WCG游戏等比赛
优势:读写效率高
缺点:安全性低
存储:存储利用率=总磁盘容量总和
raid 1 :
优势:安全性高
缺点:读写效率低
存储:存储利用率=总磁盘容量总和1/2
raid 5:最少三块,每块盘生成校验文件 重要!
优势:安全性高 读写效率高
缺点:损失一块磁盘容量
raid 6:
优势:安全性高,读写效率高,可以坏两块磁盘
存储:损失一块磁盘容量
RAID6实现方式:
带有两种校验的独立磁盘结构,两种校验方法,效率低,存储率低,可靠性高,解决两块磁盘失效,没有统一的校验,最少4块磁盘。
P+Q算法横向
DP算法斜向
raid 10/01:
优势:安全性高 读写效率高
存储:损失一半容量
IBM服务器阵列配置步骤
第一个步骤:是否按 ctrl + H 进入磁盘阵列配置界面
第二个步骤:选择raid配置向导界面
手动配置
第三个步骤:创建驱动器组
第四个步骤:选择配置阵列级别
dell服务器RAID配置:https://www.cnblogs.com/passzhang/articles/8672029.html
IBM服务器RAID配置:https://jingyan.baidu.com/article/da1091fb60acb0027849d6ce.html
磁盘弹性扩容:实现磁盘分区大小灵活调整(数据库/存储) LVM
概念介绍说明
概念原理知识:
PV:(PE PE PE) VG (PV PV PV) LV逻辑卷
pe最小存储单位 pv物理卷 vg卷组 LV逻辑卷
lvm逻辑卷操作命令
序号 功能 PV物理卷命令 VG卷组命令 LV逻辑卷命令
1 扫描功能(scan) pvscan vgscan lvscan
2 建立功能(create) pvcreate vgcreate lvcreate
3 查询功能(display) pvdisplay vgdisplay lvdisplay
4 删除功能(remove) pvremove vgremove lvremove
5 扩容功能(extend) vgextend lvextend
6 缩容功能(reduce) vgreduce lvreduce
分区操作:
LVM磁盘管理配置过程
第一个里程:进行磁盘分区格式化操作
fdisk -l ---检查系统磁盘信息
fdisk /dev/sdc ---对第三块磁盘进行分区
(说明:利用lvm逻辑卷管理执行相关命令,需要先安装lvm软件程序包lvm2)
分区操作步骤:
n --> p --> 回车,回车 --> 输入分区大小(+尺寸) --> p 划分出两个分区
[root@jason ~ 18:44:59]# fdisk /dev/sdc (更改分区类型,改为linux lvm)
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): t
Partition number (1,2, default 2): 1
Partition type (type L to list all types): 31
Changed type of partition 'Linux filesystem' to 'Linux LVM'
# Start End Size Type Name
1 2048 1026047 500M Linux LVM
2 1026048 2050047 500M Linux LVM
w 保存分区操作
yum -y install lvm2
第二个里程:进行PV创建过程(物理卷)
[root@jason ~ 18:51:26]# pvcreate /dev/sdc1 /dev/sdc2
Physical volume "/dev/sdc1" successfully created.
Physical volume "/dev/sdc2" successfully created.
[root@jason ~ 18:52:10]# pvdisplay(查看pv,用pvs可以简单查看)
"/dev/sdc1" is a new physical volume of "500.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sdc1
VG Name
PV Size 500.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID iq78ZX-oB0D-RuKY-sd09-Wivv-jv9W-tEoCSW
"/dev/sdc2" is a new physical volume of "500.00 MiB"
--- NEW Physical volume ---
PV Name /dev/sdc2
VG Name
PV Size 500.00 MiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID f86XlI-R6tH-xRyk-hpnP-oC7W-DFGE-DR11XR
第三个里程:将PV划分到VG中(生成卷组)
[root@jason ~ 18:52:53]# vgcreate vg1 /dev/sdc1 /dev/sdc2
Volume group "vg1" successfully created
(vg1是可以随便起的名称)
vgdisplay后跟卷组名可以只查看这个卷组的详细信息,不跟卷组名是查看所有卷组的详细信息。这里我们看到我们创好的vg卷组PE大小为4MiB,这是PE的默认大小,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的
[root@jason ~ 20:18:15]# vgdisplay (详细查看卷组信息)
--- Volume group ---
VG Name vg1
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 992.00 MiB ←两个物理卷合并为卷组
PE Size 4.00 MiB ←默认4兆,PE是卷组的最小储存单位,我们也可以用-s参数来修改,不过这只能在创建卷组时使用,一旦卷组创建成功是没法再去修改PE大小的。
Total PE 248
Alloc PE / Size 0 / 0
Free PE / Size 248 / 992.00 MiB
VG UUID 6nRCff-3IY4-fcn8-M7NE-i3ht-o9fr-rmfM9T
[root@jason ~ 20:19:11]# vgs (简单查看卷组信息)
VG #PV #LV #SN Attr VSize VFree
vg1 2 0 0 wz--n- 992.00m 992.00m
第四个里程:创建LV
使用lvcreate命令创建一个LV,是从指定VG中创建一个逻辑卷
说明:命令参数解释
-L --- 参数后跟的是你要设定的逻辑卷大小,这个大小必须是是你设定的PE值的整数倍,如果不是它会给你分一个比你设定的大一点的空间,也就是向上取整数倍空间。弊端就是有可能用不完vg里面的空间
-l --- 后面跟的就是PE数量,像上个步骤中我们划分的卷组PE值为4MiB,数量为248,也可以使用-l跟数量,那划分的逻辑卷大小就为4*划分的数量。弊端是需要计算,但是不会出现用不完vg的空间的情况。
-n --- 参数后跟逻辑卷名字,是对创建的逻辑卷命名,最后跟的是卷组名。
[root@jason ~ 20:22:22]# lvcreate -L 200M -n lv1 vg1
Logical volume "lv1" created.
(从vg1组里的900M里只拿出200M使用,创建的lv的名字是lv1)
创建完后我们可以用lvs查看或者lvdisplay查看详细信息
[root@jason ~ 20:32:02]# lvs (简单查看)
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 200.00m
[root@jason ~ 20:32:59]# lvdisplay (详细查看)
--- Logical volume ---
LV Path /dev/vg1/lv1
LV Name lv1
VG Name vg1
LV UUID 7h6yPO-v0FV-7DbJ-zOf0-yZkd-5EAA-FBHiP4
LV Write Access read/write
LV Creation host, time jason, 2019-12-28 20:32:02 +0800
LV Status available
# open 0
LV Size 200.00 MiB
Current LE 50
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
第五个里程:挂载使用LV
先使用mkfs命令对创建的卷组进行格式化操作,使用ext4格式
mkfs.ext4 /dev/vg1/lv1
(xfs格式是不支持动态缩减的,可以增加,但是,我们可以借助于工具搞定它)↓
https://www.dazhuanlan.com/2019/10/07/5d9a61dc22277/
[root@jason ~ 20:34:34]# mount /dev/vg1/lv1 /mnt
[root@jason ~ 20:35:02]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 2.9G 96G 3% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /mnt
说明: 如果想实现开机自动挂载,可以后续编写/etc/rc.local和/etc/fstab文件信息
lv弹性扩容:
[root@jason ~ 20:36:54]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 1 0 wz--n- 992.00m 792.00m
[root@jason ~ 20:37:50]# lvextend -L +100M /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 200.00 MiB (50 extents) to 300.00 MiB (75 extents).
Logical volume vg1/lv1 successfully resized.
[root@jason ~ 20:38:30]# lvscan
ACTIVE '/dev/vg1/lv1' [300.00 MiB] inherit
[root@jason ~ 20:38:41]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-ao---- 300.00m
resize2fs -f /dev/oldboy01/lv1
说明: 先使用vgs查看VG剩余空间是否充足,然后用-L或-l参数调整lv空间,然后跟上要扩容的逻辑卷
-L — 后面直接跟容量大小,需要注意+xxx表示增加多少空间,xxx是表示扩容到多少。
-r — 使挂载的文件系统自动识别扩容的空间,不用命令加载识别
需要注意此时文件系统并没有增大,需要执行命令让文件系统识别已经扩容的空间。↓
[root@oldboyedu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /disk1 ← 未识别扩容空间
[root@oldboyedu ~]# resize2fs -f /dev/mapper/vg1-lv1 ← 加载识别扩容空间
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /disk1; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg1-lv1 is now 307200 blocks long.
[root@oldboyedu ~]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/vg1-lv1 287M 2.1M 267M 1% /disk1 ← 已经识别扩容空间
说明:其实有更简单的操作,就是在扩容的同时加上-r参数会自动扩展文件系统大小。↓
[root@jason ~ 20:43:33]# lvextend -L +100M -r /dev/vg1/lv1
Size of logical volume vg1/lv1 changed from 300.00 MiB (75 extents) to 400.00 MiB (100 extents).
Logical volume vg1/lv1 successfully resized.
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1-lv1 is mounted on /mnt; on-line resizing required
old_desc_blocks = 3, new_desc_blocks = 4
The filesystem on /dev/mapper/vg1-lv1 is now 409600 blocks long.
[root@jason ~ 20:44:15]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 99G 2.9G 96G 3% /
devtmpfs 980M 0 980M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 9.6M 981M 1% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 199M 0 199M 0% /run/user/0
/dev/mapper/vg1-lv1 384M 2.3M 360M 1% /mnt
使用vgextend命令来对逻辑卷组进行扩容:
需要首先添加一块新硬盘sdd用于对卷组进行扩容,添加新的PV。
在虚拟机中这个时候我们通常需要重启,这里我们可以使用:
echo "- - -" > /sys/class/scsi_host/host0/scan
让系统重新扫描SCSI总线来添加设备,因为添加的是SCSI磁盘,所以扫描的是SCSI总线
[root@oldboyedu ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sdd 8:32 0 20G 0 disk
将添加好的硬盘格式化为PV,再将新的PV添加到指定的卷组中:
[root@oldboyedu ~]# pvcreate /dev/sdd
Physical volume "/dev/sdd" successfully created. ← /dev/sdc已创建完成PV物理卷
[root@oldboyedu ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended ← /dev/sdd已扩展完成VG物理卷组
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 1 0 wz--n- 20.96g 20.57g
lv弹性缩容:
逻辑卷扩容可以在线操作但是缩减必须是离线执行,需要先卸载已挂载的逻辑卷
1.umount 挂载点目录
2.e2fsck -f /dev/vg1/lv1
3.lvreduce -L -4M /dev/vg1/lv1
4.resize2fs -f /dev/vg1/lv1
5.mount 挂载点
扩容逻辑卷是先扩大逻辑卷再扩大文件系统,而缩小逻辑卷就需要反着来,要先缩小文件系统,再去缩小逻辑卷。
[root@oldboyedu ~]# e2fsck -f /dev/vg1/lv1
e2fsck 1.42.9 (28-Dec-2013)
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/vg1/lv1: 11/77824 files (0.0% non-contiguous), 15987/307200 blocks
[root@oldboyedu ~]# resize2fs /dev/vg1/lv1 200M
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/vg1/lv1 to 204800 (1k) blocks.
The filesystem on /dev/vg1/lv1 is now 204800 blocks long.
说明:缩小文件系统前我们要先对文件系统做个扫描检测,如果我们直接使用resize2fs系统会提示
先对文件系统进行检测,这是为了保护缩减文件系统时不对数据损害
磁盘文件系统检测完毕之后,对相应逻辑卷大小进行缩容处理:
[root@rihongedu ~]# lvreduce -L 200M /dev/vg1/lv1
# 警告: 将活动逻辑卷减少到200.00 mib
WARNING: Reducing active logical volume to 200.00 MiB.
# 这可能会破坏您的数据(文件系统等)。
THIS MAY DESTROY YOUR DATA (filesystem etc.)
# 真的想降低vg1/lv1吗?[是/否]:是
Do you really want to reduce vg1/lv1? [y/n]: y
# 逻辑卷vg1/lv1的大小从400.00 mib(100区)更改为200.00 mib(50区)。
Size of logical volume vg1/lv1 changed from 400.00 MiB (100 extents) to 200.00 MiB (50 extents).
# 逻辑卷vg1/lv1已成功调整大小。
Logical volume vg1/lv1 successfully resized.
[root@oldboyedu ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv1 vg1 -wi-a----- 200.00m
说明:文件系统大小和逻辑卷大小一定要保持一致才行。
如果逻辑卷大于文件系统,由于部分区域未格式化成文件系统会造成空间的浪费。
看到逻辑卷已经缩小了,接着我们再来挂载看看文件系统大小
[root@oldboyedu ~]# mount /dev/vg1/lv1 /disk1/
[root@oldboyedu ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg1-lv1 190M 1.6M 175M 1% /disk1
逻辑卷组缩小过程说明,可以利用vgreduce去缩小VG卷组的大小
[root@oldboyedu ~]# vgreduce vg1 /dev/sdc
Removed “/dev/sdc”Volume group "vg1" ß /dev/sdc已缩减完成VG物理卷组
[root@oldboyedu ~]# vgs
VG #PV #LV #SN Attr VSize VFree
vg1 2 1 0 wz--n- 992.00m 792.00m
说明:缩小VG卷组就是把一个PV从卷组中移除,但要先肯定PV中没有数据,不然就会造成数据的丢失
接着我们可以使用pvremove命令移除PV,这样就让分区又重新变成了普通分区。
[root@oldboyedu ~]# pvremove /dev/sdc
Labels on physical volume "/dev/sdc" successfully wiped. ß /dev/sdc已删除完成PV物理卷
[root@oldboyedu ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb1 lvm2 --- 500.00m 500.00m
/dev/sdb2 lvm2 --- 500.00m 500.00m
LVM的工作原理进行个总结:
- 物理磁盘被格式化为PV,空间被划分为一个个的PE
- 不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
- LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
- LV现在就直接可以格式化后挂载使用了
- LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,如果操作正确其过程不会丢失原始数据
PS:我们实际生产操作中很少用到逻辑卷的缩减,因为缩减很容易就会造成数据损坏,这是得不偿失的,所以不推荐对逻辑卷进行缩减。
07.磁盘创建文件系统
文件系统概念:存储数据不同机制
常见文件系统:ext3/ext4(存储效率) xfs(存储效率/识别大硬盘能力)
mkfs.ext3 格式化很慢
ext3
块尺寸 最大文件尺寸 最大文件系统尺寸
1KiB 16GiB 2TiB
2KiB 256GiB 8TiB
4KiB 2TiB 16TiB
8KiB 16TiB 32TiB
ext4
Extents
ext4引进了Extent档案储存方式,以取代ext2/3使用的block mapping方式。Extent指的是一连串的连续实体block,这种方式可以增加大型档案的效率并减少分裂档案。ext4支援的单一Extent, 在单一block为4KB的系统中最高可达128MB[1]。单一inode中可储存4笔Extent;超过四笔的Extent会以Htree方式被索 引。
最大文件尺寸 16 TiB (for 4k block filesystem)
最大卷容量 1 EiB
xfs
最大可支持的文件大小为263 = 9 x 1018 = 9 exabytes,最大文件系统尺寸为18 exabytes。
创建文件系统:mkfs – make file system 格式化分区,不要直接格式化整块磁盘
命令语法结构:
mkfs.文件系统类型(ext4/xfs) /dev/分区文件sdb2
mkfs -t -f 文件系统类型(ext4/xfs)/dev/sdb2
08.磁盘管理挂载操作:
挂载概念:给一个存储设备(文件)开了个门
挂载操作:
mount (mount 参数 设备文件信息 挂载点目录)
umount (umount /挂载点目录)处在目录中或者目录中有数据被调用无法卸载
umount -lf 挂载点目录 强制卸载
-l lazy (懒惰)不用从挂载点目录切换出去
-f force 强制进行卸载
如何实现开机自动挂载磁盘分区设备:
方法一:vim /etc/fstab
blkid查看UUID
UUID=a171c16c-1aa8-4578-a766-38e36e647d38 /mnt xfs defaults 0 0
方法二:vim /etc/rc.local
mount /dev/sdb1 /mnt
09.磁盘应用管理
问题一:磁盘问题系统出现问题(fstab提示只读)
fsck ext 修复ext系统的
步骤一:利用命令检查或修复文件系统,最好是修复未挂载的
fsck -a 挂载点/分区设备文件
xfs_repair
步骤二:利用挂载命令修复
mount -o remount rw / (或者相应出问题的挂载点)
修复后reboot重启
问题二:磁盘空间不足情况
inode空间不足了:
解决:找出大量小文件
find ./ -type f -size -10c|xargs rm
block空间不足:
dd ---模拟创建一个大文件/创建交换分区
dd if=/dev/zero of=/tmp/1g bs=100M count=10
[root@jason tmp 10:41:35]# dd if=/dev/zero of=/tmp/123.txt bs=100M count=10
10+0 records in
10+0 records out
1048576000 bytes (1.0 GB) copied, 6.9012 s, 152 MB/s
[root@jason tmp 10:42:16]# dd if=/dev/zero of=/tmp/123.txt bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB) copied, 3.38328 s, 317 MB/s
解决:找出大文件数据
find / -type f -size
du -sh /* |sort -h
文件数据是否彻底删除:
1)会否有硬链接存在 i_link=0
PS:硬链接不能在不同的分区创建
find / -type f inum xxx |xargs rm -f
2)是否有程序进程调用 i_conut=0
日志文件 --> 服务进程调用
> acess.log 重定向清空
(实验一下删除源文件后du是否还能查到为硬链接的大文件)
[root@jason tmp 21:38:46]# ll -h
total 2.1G
-rw-r--r-- 2 root root 1.0G Dec 27 10:42 123.txt
-rw-r--r-- 2 root root 1.0G Dec 27 10:42 123.txt_link
[root@jason tmp 21:40:23]# du -sh ./*|sort -rh
1.0G ./123.txt
656K ./oldboy02.txt
[root@jason tmp 21:40:27]# rm 123.txt
[root@jason tmp 21:40:45]# du -sh ./*|sort -rh
1.0G ./123.txt_link
656K ./oldboy02.txt
问题三:如何调整swap空间大小
[root@jason ~]# free -h
total used free shared buff/cache available
Mem: 1.9G 94M 1.7G 9.5M 130M 1.7G
Swap: 1.0G 0B 1.0G
内存空间不足 --> 使用swap不足 --> 系统服务自动停止(内存溢出)java程序软件
方法一:
第一个历程: 占用磁盘空间作为扩展交换分区
dd if=/dev/zero of=/swap/1G_swap bs=100M count=10
1 2 3 4
1)相当于从黑洞中取出数据内容
2)将黑洞中取出数据存放到哪
3)每次取出数据数量
4)总的取出数据次数
第二个历程: 将创建数据变为swap文件数据
mkswap /swap/1G_swap
file /swap/1G_swap
第三个历程: 加载文件给交换分区扩容
swapon /swap/1G_swap
swapoff /swap/1G_swap
swapon -s 查看
如何自动重启系统识别扩容交换分区容量
https://blog.csdn.net/lzw5210/article/details/60140684
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。
/swap/1G_swap swap swap defaults 0 0
如果想卸载掉上面的分区,可以通过swapoff完成
[root@gataway ~]# swapoff /swap/1G_swap
========================================
补充:如何分区时设置一个swap分区
第一个里程:指定划分磁盘
fdisk /dev/sda
第二个里程:创建分区,并设置为swap分区类型
t --> 82(l查看) --> 设置完成
方法二:
通过fdisk增加swap分区
该方法和方法一主要操作步骤大同小异。不过该方法要求硬件目前有未分配的空间。
1、我们先通过fdisk新增分区
fdisk /dev/sdaCommand(m for help): n
通过n新建分区,选择为主分区,分区ID为82,即swap分区。保存退出。接着对新建的分区进行格式化并挂载
mkswap /dev/sda4
swapon /dev/swap
完成后,参照方法一里的查看方法进行查看确认。新增完成后,在/etc/fstab里新增如下配置
/dev/sda4 swap swap defaults 00
磁盘使用流程:
1)完成磁盘阵列配置
2)完成磁盘分区操作
3)系统磁盘弹性管理 *
4)完成磁盘格式化,创建文件系统
5)磁盘挂载操作
6)磁盘应用管理
10.操作系统启动流程:
centos6
- 进行服务器开机bios自检 (检查硬件 加载识别bios)
- 识别MBR引导信息 (引导系统启动)
- 加载grub菜单选择内核 (选择内核信息)
- 加载系统内核信息 (控制管理硬件)
- 启动第一个服务进程 (init服务进程,可以让所有服务串行启动)
- 加载系统文件运行级别文件 (/etc/inittab)
加载系统文件磁盘挂载文件 (/etc/fstab) ??? - 加载系统初始化脚本文件 (/etc/rc.d/rc.sysinit)
- 加载不同运行级别目录脚本 (实现服务开机自启)
- 加载启动mingetty进程 (显示登录系统界面)
centos启动知识扩展介绍
进入到/etc/rc3.d目录中:
S编号信息: start 指定服务启动顺序
K编号信息: kill 指定服务关闭顺序
centos6开机自动启动服务:
所有服务进行串行启动/关闭 启动效率比centos7慢
centos6检查服务是否开启
/etc/init.d/crond status
crond (pid 1679) is running…
centos6检查服务开机是否自启
chkconfig --list|grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
centos6调整服务开机启动设置
chkconfig crond off 关闭
chkconfig crond on 关闭
centos6手动启动服务程序
/etc/init.d/crond start 启动
/etc/init.d/crond stop 关闭
centos7
- 进行开机自检 ----------- (检查硬件 加载识别bios)
- 识别MBR引导信息 ---- (引导系统启动)
- 加载grub菜单 ----------- (选择内核信息)
- 加载内核信息 ----------- (控制管理硬件)
- 启动第一个服务进程 – (systemd服务进程,可以让所有服务并行启动)
- 加载系统运行模式文件 (/etc/systemd/system/default.target)
加载系统文件磁盘挂载文件 ----- (/etc/fstab) - 加载系统初始化脚本文件 -------- (/usr/lib/systemd/system/sysinit.target)
- 加载系统开机运行目标文件
加载不同运行级别目录单元文件 (/usr/lib/systemd/system/multi-user.target.wants/xxx —> /usr/lib/systemd/system
PS:可以确保centos7中服务可以开机运行 - 加载启动mingetty进程 (显示登录系统界面)
如何编写自动启动服务脚本:shell
CentOS7引导顺序
1. UEFi或BIOS初始化,运行POST开机自检
2. 选择启动设备
3. 引导装载程序, centos7是grub2
4. 读取装载程序的配置文件:/etc/grub.d/ /etc/default/grub /boot/grub2/grub.cfg
5. 加载initramfs驱动模块
6. 加载内核选项
7. 内核初始化,centos7使用systemd代替init
8. 执行initrd.target所有单元,包括挂载/etc/fstab
9. 从initramfs根文件系统切换到磁盘根目录
10.systemd执行默认target配置,配置文件/etc/systemd/system/default.target
11.systemd执行sysinit.target初始化系统及basic.target准备操作系统
12.systemd启动multi-user.target下的本机与服务器服务
13.systemd执行multi-user.target下的/etc/rc.d/rc.local
14.Systemd执行multi-user.target下的getty.target及登录服务
systemd执行graphical需要的服务
进入/etc/systemd/system/multi-user.target.wants/目录中
systemctl enable 服务 ---- 服务开机自启
systemctl disable 服务 ---- 服务禁止自启
所有服务启动或停止文件
/usr/lib/systemd/system/
centos7开机自动启动服务:
所有服务进行并行启动/关闭 启动效率比centos6快
/usr/lib/systemd/system/crond.service == centos6启动服务脚本文件
https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/system_administrators_guide/sect-managing_services_with_systemd-unit_files
总结系统启动过程:
开机自检 - 加载MBR - 识别grub菜单 - 启动第一个系统进程
识别系统运行模式/级别 – 加载初始化文件 – 实现系统服务开机自启 – 显示登陆界面
磁盘管理总结
1)磁盘管理分区方法
磁盘0磁头0磁道1扇区介绍:MBR + DPT
系统进行分区操作:fdisk parted
2)磁盘逻辑结构说明:
磁盘阵列概念:RAID
磁盘弹性管理:LVM
问题:
01.挂载defaults参数是什么意思?并进行详细解释说明
[root@ob2 data]# cat /etc/fstab
UUID=da4d312a-dee1-4433-98c0-59dbbcf8b040 / ext4 defaults 1 1
UUID=e4ab7a0c-500f-4305-bcd2-a77be0ce5326 /boot ext4 defaults 1 2
UUID=ecac3aab-5a27-4cdb-9c52-6f5deb254d26 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
第一列到六列是设备或分区 挂载点 文件类型 default是挂载类型 dump 系统故障dump内存信息到硬盘 fsck 检查磁盘坏道等
defaults表示挂载类型,rw,suid.dev,exec,auto,nouser,async.大多是默认值.async是异步,写入内存.效率高,安全稍低.sync写入磁盘效率低一些.
rw读写
suid可以有suid权限
exec可执行文件
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同事具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
02.如何自动重启系统识别扩容交换分区容量
在系统重启后,swap文件的大小又会变回原大小,我们可以在/etc/fstab里增加下面的配置,使其重启后,我们刚刚的配置仍然有效。
/tmp/mem.swap swap swap defaults 00
如果想卸载掉上面的分区,可以通过swapoff完成
[root@gataway ~]# swapoff /tmp/mem.swap
来源:CSDN
作者:jasonchen666
链接:https://blog.csdn.net/chenbeiping888/article/details/103755940