启动流程。启动流程(CentOS7)
1. 加载BIOS的硬件信息,获取第一个启动设备
2. 读取第一个启动设备MBR的引导加载程序(grub)的启动信息
3. 加载核心操作系统的核心信息,核心开始解压缩,并尝试驱动所有的硬件设备
4. 核心执行systemd程序,并获取默认的运行信息
5. systemd程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
6. 启动核心的外挂模块
7. systemd执行运行的各个批处理文件(scripts)
8. systemd执行/etc/rc.d/rc.local
9. 执行/bin/login程序,等待用户登录
10. 登录之后开始以Shell控制主机
MBR
MBR是一种分区表格式,坐落c盘的第一个磁道,大小是521字节。储存着两个重要的东西
-主引导记录:可以安装启动引导的地方,有446个字节。
-分区表:记录整块c盘分区的状态,有64字节。
-结束符:55AA固定的两个字节。若不是,则不进行引导。
因为分区表只有64个字节,因而MBR格式的分区最多能有四组记录区,每组记录了该区段的起始和结束柱面号码。
然而有时侯却又不止能分成四个分区,那是由于在四组分区中被分为主要分区(Primary)和扩充分区(Extended)
扩充分区可以重新再被分区,被分下来的区块称作逻辑分区(logicalpartition)
GRUB
GRUB是存在MBR后面的446字节当中的一个启动引导程序,启动引导程序可以指定使用那个内核文件来启动,并实际加载内核到显存中解压缩与执行。
GRUB分类还有GRUB和GRUB2,目前CentOS7使用的是GRUB2版本,其实还存在其他类型的引导程序。目前来说GRUB2的引导分为三个阶段
1.1ststage:MBR的前446个字节
1.5stage:mbr以后的磁道,让stage1中的bootloader能辨识stage2所在的分区上的文件系统
2.secondarybootloader:2ndstage,分区文件/boot/grub/
如今来把第一阶段破坏瞧瞧会是怎样样子的。
1.先查看MBR分区的512字节是什么样。
[root@centos7 ~]# hexdump -C -n 512 /dev/sda
00000000 eb 63 90 10 8e d0 bc 00 b0 b8 00 00 8e d8 8e c0 |.c..............|
00000010 fb be 00 7c bf 00 06 b9 00 02 f3 a4 ea 21 06 00 |...|.........!..|
00000020 00 be be 07 38 04 75 0b 83 c6 10 81 fe fe 07 75 |....8.u........u|
00000030 f3 eb 16 b4 02 b0 01 bb 00 7c b2 80 8a 74 01 8b |.........|...t..|
00000040 4c 02 cd 13 ea 00 7c 00 00 eb fe 00 00 00 00 00 |L.....|.........|
00000050 00 00 00 00 00 00 00 00 00 00 00 80 01 00 00 00 |................|
00000060 00 00 00 00 ff fa 90 90 f6 c2 80 74 05 f6 c2 70 |...........t...p|
00000070 74 02 b2 80 ea 79 7c 00 00 31 c0 8e d8 8e d0 bc |t....y|..1......|
00000080 00 20 fb a0 64 7c 3c ff 74 02 88 c2 52 be 05 7c |. ..d|<.t...R..||
00000090 b4 41 bb aa 55 cd 13 5a 52 72 3d 81 fb 55 aa 75 |.A..U..ZRr=..U.u|
000000a0 37 83 e1 01 74 32 31 c0 89 44 04 40 88 44 ff 89 |7...t21..D.@.D..|
000000b0 44 02 c7 04 10 00 66 8b 1e 5c 7c 66 89 5c 08 66 |D.....f..|f..f|
000000c0 8b 1e 60 7c 66 89 5c 0c c7 44 06 00 70 b4 42 cd |..`|f...D..p.B.|
000000d0 13 72 05 bb 00 70 eb 76 b4 08 cd 13 73 0d 5a 84 |.r...p.v....s.Z.|
000000e0 d2 0f 83 de 00 be 85 7d e9 82 00 66 0f b6 c6 88 |.......}...f....|
000000f0 64 ff 40 66 89 44 04 0f b6 d1 c1 e2 02 88 e8 88 |d.@f.D..........|
00000100 f4 40 89 44 08 0f b6 c2 c0 e8 02 66 89 04 66 a1 |.@.D.......f..f.|
00000110 60 7c 66 09 c0 75 4e 66 a1 5c 7c 66 31 d2 66 f7 |`|f..uNf.|f1.f.|
00000120 34 88 d1 31 d2 66 f7 74 04 3b 44 08 7d 37 fe c1 |4..1.f.t.;D.}7..|
00000130 88 c5 30 c0 c1 e8 02 08 c1 88 d0 5a 88 c6 bb 00 |..0........Z....|
00000140 70 8e c3 31 db b8 01 02 cd 13 72 1e 8c c3 60 1e |p..1......r...`.|
00000150 b9 00 01 8e db 31 f6 bf 00 80 8e c6 fc f3 a5 1f |.....1..........|
00000160 61 ff 26 5a 7c be 80 7d eb 03 be 8f 7d e8 34 00 |a.&Z|..}....}.4.|
00000170 be 94 7d e8 2e 00 cd 18 eb fe 47 52 55 42 20 00 |..}.......GRUB .|
00000180 47 65 6f 6d 00 48 61 72 64 20 44 69 73 6b 00 52 |Geom.Hard Disk.R|
00000190 65 61 64 00 20 45 72 72 6f 72 0d 0a 00 bb 01 00 |ead. Error......|
000001a0 b4 0e cd 10 ac 3c 00 75 f4 c3 00 00 00 00 00 00 |.....<.u........|
000001b0 00 00 00 00 00 00 00 00 70 70 0e 00 00 00 80 20 |........pp..... |
000001c0 21 00 83 aa 28 82 00 08 00 00 00 00 20 00 00 aa |!...(....... ...|
000001d0 29 82 8e fe ff ff 00 08 20 00 00 20 c0 03 00 00 |)....... .. ....|
000001e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
000001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa |..............U.|
2.再将磁盘MBR分区的前446字节取出来。
[root@centos7 ~]# dd if=/dev/sda of=f1.img bs=1 count=446
3.然后将MBR的前446个字节换为全0。
[root@centos7 ~]# dd if=/dev/zero of=/dev/sda bs=1 count=446
这是未归零之前的启动菜单。
image.png
这是归零后的启动菜单。
image.png
可以看见,启动时可以选择加载内核的选项不在了。这也就正是说明了GRUB引导程序没法正常启动,造成找不到内核文件了,如今我们将它还原。
选择上图中的Troubleshooting模式,之后步入搜救模式。
image.png
再依照提示步入到shell交互界面
image.png
执行下边的命令。以后重启便恢复啦
image.png
又回到最初的画面。
image.png
不光是启动引导程序可能会出现错误,在服务器中,数据的重要性愈加应当得到注重。下边来谈谈数据的安全性如何保护。
在服务器中,数据的安全一般通过备份的形式来进行保证其有一定的冗余性,我们晓得,数据都是储存在c盘当中的,若是c盘忽然坏掉了,那数据便不可以使用了。其实,也存在着恢复的可能性,但那要耗费更多的时间和金钱去做修补。并且RIAD技术可以帮助你减轻这些情况。RAID
RAID(RedundantArraysofInexpensiveDisks)英文名子称作独立冗余c盘阵列。
RAID可以通过软件或则硬件来将多个较小的c盘组成一个较大的c盘,这个被组成的c盘除了才能储存数据,还对数据的安全性有保护作用。常见的RAID模式有0,1,01,10,5
RAID0(等量模式)
RAID0(等量模式):性能最佳
这些模式下,最小须要两块硬碟,当拥有两块大小的c盘来组成时,在该模式下RAID会将c盘先切出等量的数据块(chunk,通常可设置为4KB-1MB),之后当一个文件要写入RAID时改文件按照chunk的大小切割好,然后再依序放在各个c盘中,因为数据会交替的储存在c盘中,所以,你的数据会被等量的置于各个c盘上。
优点
RAID1(镜像模式)
RAID1(镜像模式):完全备份
组成该模式的c盘最好也是一模一样的c盘。假如不是一样的,那组成后的容量是以最小的那块来决定的。
在RAID1模式下会使同一份数据完整的保存在两块c盘里面。RAID1在写入数据的时侯,同一份数据会被分别写入到不同的c盘当中,这便会使c盘的写入功能深受影响,写入能力会变差,并且使用硬件c盘阵列卡的时侯不会出现这样的情况linux操作系统安装阵列引导盘,由于它会手动复制一份。并且读取数据的能力则还可以。由于数据储存在两块c盘上,假如多个进程在读取同一条数据,RAID会手动平衡读写性能。
优点:
RAID10|01
RAID10|01就是RAID1+0,RAID0+1
因为RAID0的数据安全不好,RAID1的写入性能不好,之后就可以通过组合的形式来将优点合并。
RAID1+0就是先将两块c盘组成RAID1linux操作系统安装阵列引导盘,之后RADI1作为第一组,再取两块c盘再弄成RAID1,之后将其命名为第二组,最后将第一组和第二组再使用RADI的的形式组合上去。这便成了RAID1+0。这么一来,不管是那一组的RAID受损,都不会有任何问题发生。反过来就是RAID01了。
优点
RAID5均衡考虑
RAID5起码须要3块以上的c盘能够后组成,每位循环写入时,就会有部份的奇偶校准值被记录出来,但是每次就会记录在不同的c盘当中。这个值会记录其他c盘的备份数据,用于当c盘损失时的恢复。
优点
1.RAID5的读写性能会有所降低
2.因为存在奇偶校准值,任何一块c盘受损后都可以恢复。
缺点
1.c盘的容量会是整体c盘降低一块后的容量。
热备份c盘
为了让系统可以实时的在坏掉硬碟时主动的重建,因而就须要预备c盘(sparedisk)的辅助。所谓的sparedisk就是一颗或多颗没有包含在先前c盘阵列等级中的c盘,这颗c盘平时并不会被c盘阵列所使用,当c盘阵列有任何c盘被毁时,则这颗sparedisk会被主动的拉进c盘阵列中,并将坏掉的那颗硬碟移出c盘阵列!之后立刻重建数据系统。若你的c盘阵列有支持热插拔,直接将坏掉的那颗c盘拔掉换一颗新的,再将那颗新的设置成为sparedisk,就完成了!
总结
image.png
文件系统
文件系统是构建在c盘上的,在linux中,文件富含权限(rwx)和属性(属主,属组,时间等)。文件系统化将这两部份的数据分别储存在不同的区块,权限和属性置于Inode中,实际的数据则放置在数据区块中。另外还有一个超级区块记录着整个文件系统的整体信息。
每位inode与block都有编号,至于这三个数据的意义可以粗略说明如下
image.png
然而简单像前面一样界定inode和block的话,当数据量很大的时侯,所有的inode和block堆积在一起,不容易管理。所以linux的文件系统会在此基础上界定为多个区块群组,每位区块群组都有独立的inode/block/superblock,如同是一个军营上面一个营分为几个连一样。
在区块群组的上面富含6个主要内容:
datablock(数据区块)
这个区块是拿来放置文件内容数据的地方,在ext2文件系统中所支持的block大小有1K,2K,4K三种。在低格时block的大小就固定了,但是每位block都有编号,以便捷inode的记录。因为block大小的差别,会造成文件系统才能支持的最大c盘容量和单一文件大小并不相同。ext2文件系统的限制如下:
image.png
除此之外Ext2文件系统的block还有哪些限制呢?有的!基本限制如下:
2.inodetable(inode表格)
如前所述inode的内容在记录文件的属性以及该文件实际数据是放置在哪几号block内!基本上,inode记录的文件数据起码有下边这种:
inode的数目与大小也是在低格时就早已固定了,除此之外inode还有些哪些特色呢?
3.Superblock(超级区块)
Superblock是记录整个filesystem相关信息的地方,没有Superblock,就没有这个filesystem了。他记录的信息主要有:
Superblock是十分重要的,由于我们这个文件系统的基本信息都写在这儿,因而,假如superblock挂掉了,你的文件系统可能就须要耗费好多时间去拯救。通常来说,superblock的大小为1024Bytes。相关的superblock信息我们会以dumpe2fs指令来调用下来观察喔!
据悉,每位blockgroup都可能富含superblock喔!并且我们也说一个文件系统应当仅有一个superblock而已,那是怎样回事啊?事实上不仅第一个blockgroup内会富含superblock之外,后续的blockgroup不一定富含superblock,而若富含superblock则该superblock主要是做为第一个blockgroup内superblock的备份咯,这样可以进行superblock的搜救。
4.FilesystemDescription(文件系统描述说明)
这个区段可以描述每位blockgroup的开始与结束的block号码,以及说明每位区段(superblock,bitmap,inodemap,datablock)分别介于哪一个block号码之间。这部份也能够用dumpe2fs来观察的。
5.blockbitmap(区块对照表)
假如你想要新增文件时总会用到block吧!那你要使用那个block来记录呢?其实是选择“空的block”来记录新文件的数据啰。那你如何晓得那个block是空的?这就得要通过blockbitmap的辅助了。从blockbitmap当中可以晓得什么block是空的,因而我们的系统就能否很快速的找到可使用的空间来处置文件啰。同样的,假如你删掉个别文件时linux系统命令,这么这些文件本来占用的block号码就得要释放下来,此时在blockbitmap当中相对应到该block号码的标志就得要更改成为“未使用中”啰!这就是bitmap的功能。
6.inodebitmap(inode对照表)
这个似乎与blockbitmap是类似的功能linux 关机命令,只是blockbitmap记录的是使用与未使用的block号码,至于inodebitmap则是记录使用与未使用的inode号码啰!
后面介绍了文件系统的相关概念,下边来瞧瞧文件系统的类型和相关的使用命令。
文件系统的类型
Linux常用文件系统
Windows常用文件系统
网路文件系统:
文件系统的相关命令和工具
创建文件管理工具
mkfs命令:
(1) mkfs.FS_TYPE /dev/DEVICE
TYPE:
ext4
xfs
btrfs
vfat
(2) mkfs -t FS_TYPE /dev/DEVICE
-L 'LABEL' 设定卷标
mke2fs:ext系列文件系统专用管理工具
常用选项:
-t {ext2|ext3|ext4|xfs} 指定文件系统类型
-b {1024|2048|4096} 指定块 block 大小
-L ‘LABEL’ 设置卷标
-j 相当于 -t ext3, mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i 为数据空间中每多少个字节创建一个inode;不应该小于block大小
-N 指定分区中创建多少个inode
-I 一个inode记录占用的磁盘空间大小,128---4096
-m 默认5%,为管理人员预留空间占总空间的百分比
-O FEATURE[,...] 启用指定特性
-O ^FEATURE 关闭指定特性
文件系统的修补
文件系统夹故障常发生于死机或者非正常关机之后,挂载为文件系统标记为“no clean”
注意:一定不要在挂载状态下执行下面命令修复
fsck: File System Check
注意:FS_TYPE 一定要与分区上已经文件类型相同
fsck.FS_TYPE
fsck -t FS_TYPE
常用选项:
-a 自动修复
-r 交互式修复错误
e2fsck:ext系列文件专用的检测修复工具
常用选项:
-y 自动回答为yes
-f 强制修复
-p 自动进行安全的修复文件系统问题
xfs_repair:xfs文件系统专用检测修复工具
-f 修复文件,而设备
-n 只检查
-d 允许修复只读的挂载设备,在单用户下修复 / 时使用,然后立即reboot
挂载与卸载
一个文件系统想要使用,则必需要先低格称为所需类型的文件系统以后,再进行挂载操作才可以正常储存东西。
挂载的目的就是在原先封闭的文件系统里面创建出一个入口,或则说是一扇门,这样就可以步入文件系统。
卸载就是关掉上这扇门
挂载的相关命令
格式:mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint
device:指明要挂载的设备
设备文件:例如:/dev/sda5
卷标:-L 'LABEL', 例如 -L 'MYDATA'
UUID: -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e'
伪文件系统名称:proc, sysfs, devtmpfs, configfs
注意:挂载点目录必须事先存在,建议使用空目录
常用选项:
-t vsftype 指定要挂载的设备上的文件系统类型
-r readonly,只读挂载
-w read and write, 读写挂载
-n 不更新/etc/mtab,mount不可见
-a 自动挂载所有支持自动挂载的设备(定义在了/etc/fstab文件中,且挂载选项中有
auto功能)
-L 'LABEL' 以卷标指定挂载设备
-U 'UUID' 以UUID指定要挂载的设备
-B, --bind 绑定目录到另一个目录上
-o options:(挂载文件系统的选项),多个选项使用逗号分隔
async 异步模式,内存更改时,写入缓存区buffer,过一段时间再写到磁盘中,效率高,但不安全
sync 同步模式,内存更改时,同时写磁盘,安全,但效率低下
atime/noatime 包含目录和文件
diratime/nodiratime 目录的访问时间戳
auto/noauto 是否支持开机自动挂载,是否支持-a选项
exec/noexec 是否支持将文件系统上运行应用程序
dev/nodev 是否支持在此文件系统上使用设备文件
suid/nosuid 是否支持suid和sgid权限
remount 重新挂载
ro/rw 只读、读写
user/nouser 是否允许普通用户挂载此设备,/etc/fstab使用
acl/noacl 启用此文件系统上的acl功能
loop 使用loop设备
_netdev 当网络可用时才对网络资源进行挂载,如:NFS文件系统
defaults 相当于rw, suid, dev, exec, auto, nouser, async
挂载规则:
一个挂载点同一时间只能挂载一个设备
一个挂载点同一时间挂载了多个设备,只能看到最后一个设备的数据,其它设备上的数据将被隐藏
一个设备可以同时挂载到多个挂载点
通常挂载点一般是已存在空的目录
卸载命令:
umount 设备名|挂载点
持久挂载
仅仅是在命令行界面键入挂载命令的话,这么上次开机便不会再手动挂载相关的文件系统了。想要将文件系统持久的挂载,保证上次开机启动也能顺利使用,这么久要将挂载规则写入到配置文件----/etc/fstab
每行定义一个要挂载的文件系统,,其中包括共 6 项
要挂载的设备或伪文件系统
设备文件
LABEL:LABEL=""
UUID:UUID=""
伪文件系统名称:proc, sysfs
挂载点:必须是事先存在的目录
文件系统类型:ext4,xfs,iso9660,nfs,none
挂载选项:defaults ,acl,bind
转储频率:0:不做备份 1:每天转储 2:每隔一天转储
fsck检查的文件系统的顺序:允许的数字是0 1 2
0:不自检 ,1:首先自检;一般只有rootfs才用 2:非rootfs使用
查看一下系统的挂载配置更加明确
[root@centos7 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Nov 22 18:06:45 2020
#
# 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/centos-root / xfs defaults 0 0
UUID=13d89062-b95e-4f08-aef6-7ed1c3be0a8c /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
UUID=7a5dd9a3-96c4-43f7-aa51-b2b0b5827805 /data/mysql ext4 defaults 0 0
如今创建一个2G的文件系统,块大小为2048byte,预留1%可用空间,文件系统ext4,卷标为TEST,要求此分区开机后手动挂载至/test目录,且默认有acl挂载选项
[root@centos7 ~]# mke2fs -t ext4 -L 'TEST' -m 1 -b 2048 /dev/sdb2
[root@centos7 ~]# dumpe2fs /dev/sdb2
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: TEST
Last mounted on:
Filesystem UUID: a084c5d4-ede1-4ca8-9a53-d941f5d7fe8a
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype extent 64bit flex_bg sparse_super huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 131072
Block count: 1048576
Reserved block count: 10485
Free blocks: 994651
Free inodes: 131061
First block: 0
Block size: 2048
Fragment size: 2048
Group descriptor size: 64
Reserved GDT blocks: 512
Blocks per group: 16384
Fragments per group: 16384
Inodes per group: 2048
Inode blocks per group: 256
Flex block group size: 16
Filesystem created: Thu Jan 14 16:38:23 2021
Last mount time: n/a
Last write time: Thu Jan 14 16:38:24 2021
Mount count: 0
Maximum mount count: -1
Last checked: Thu Jan 14 16:38:23 2021
Check interval: 0 ()
Lifetime writes: 65 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 6a2c3d78-920b-45c5-bb33-4bc9ba14202f
Journal backup: inode blocks
Journal features: (none)
Journal size: 64M
Journal length: 32768
Journal sequence: 0x00000001
Journal start: 0
[root@centos7 ~]# vim /etc/fstab
UUID="a084c5d4-ede1-4ca8-9a53-d941f5d7fe8a" /test ext4 defaults,acl 0 0
LVM(逻辑卷)
哪些是逻辑卷?为何须要逻辑卷?
当我们在储存数据到指定的目录或则分区下的时侯,经过长时间的储存,都会出现目录或则分区的空间不够用,此时大都是选择在重新上一块c盘,之后分区,低格,之后将指定目录下为数据复制过来,将原先的目录卸载重新挂载新的文件系统。长此往年会变得很麻烦,不够灵动。
此时逻辑卷就形成了,逻辑卷是可以弹性的调整文件系统的容量,可以整合多个实体合并在一起。这并不像RAID,逻辑卷负责弹性的变更容量。通过组合之后再将这块组成的大的c盘分区,就可以进行使用了。
逻辑卷的实现
首先将几块c盘或则分区创建成化学卷(pv,文件系统的标示为8e)
pv管理工具
显示pv信息
pvs:简要pv信息显示
pvdisplay
创建pv
pvcreate /dev/device
删除pv
pvremove /dev/device
搜索pv
pvscan :搜寻目前系统里面任何具有 PV 的磁盘;
之后再将创建的化学卷组成一个卷组(vg)
卷组管理工具
显示pv信息
vgs:简要pv信息显示
vgdisplay
创建vg
vgcreate vg_name pv
选项与参数
-s :后面接 PE 的大小 (size) ,单位可以是 m, g, t (大小写均可)
删除vg
先做pvmove
在做vgremove
扩展删除
vgextend :在 VG 内增加额外的 PV ;
vgreduce :在 VG 内移除 PV;
最终的卷组(vg)会被切割成逻辑卷(lv),lv就类似分区,lv的大小是依据PE总量来决定的。
lv管理工具
lvcreate :创建 LV 啦!
选项与参数:
-L :后面接容量,容量的单位可以是 M,G,T 等,要注意的是,最小单位为 PE, 因此这个数量必须要是 PE 的倍数,若不相符 ,
系统会自行计算最相近的容量。
-l :后面可以接 PE 的“个数”,而不是数量。若要这么做,得要自行计算 PE 数。
-n :后面接的就是 LV 的名称啦!
lvscan :查询系统上面的 LV ;
lvdisplay :显示系统上面的 LV 状态啊!
lvextend :在 LV 里面增加容量!
lvreduce :在 LV 里面减少容量;
lvremove :删除一个 LV !
lvresize :对 LV 进行容量大小的调整!
注意:在逻辑卷中,PE是最小的存储单位,文件的数据写入都是靠写入PE来处理的,默认的PE大小是4MB。
PE的理解如右图:
捕获.PNG
实例:创建一个起码有两个PV组成的大小为20G的名为testvg的VG;要求PE大小为16MB,而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录
以sdb为例
扫描添加的磁盘
[root@centos7 ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
[root@centos7 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 30G 0 part
├─centos-root 253:0 0 15G 0 lvm /
├─centos-swap 253:1 0 2G 0 lvm [SWAP]
└─centos-home 253:2 0 5G 0 lvm /home
sdb 8:16 0 60G 0 disk
分区并改标识
[root@centos7 ~]# fdisk /dev/sdb
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
/dev/sdb2 41945088 83888127 20971520 8e Linux LVM
[root@centos7 ~]# lsblk
sdb 8:16 0 60G 0 disk
├─sdb1 8:17 0 20G 0 part
└─sdb2 8:18 0 20G 0 part
1.创建物理卷
[root@centos7 ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
[root@centos7 ~]# pvcreate /dev/sdb2
Physical volume "/dev/sdb2" successfully created.
2.创建卷组
[root@centos7 ~]# vgcreate -s 16M testvg /dev/sdb1 /dev/sdb2
Volume group "testvg" successfully created
[root@centos7 ~]# vgdisplay
--- Volume group ---
VG Name testvg
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 <39.97 GiB
PE Size 16.00 MiB
Total PE 2558
Alloc PE / Size 0 / 0
Free PE / Size 2558 / <39.97 GiB
VG UUID qod5np-BLQC-fQIG-aBzc-KCtH-Fmm2-A0BVO
3.创建逻辑卷
[root@centos7 ~]# lvcreate -L 5G -n testlv testvg
[root@centos7 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID 8LeWpm-FIOD-aC4f-Jz9n-mFQG-guQ9-pfxoN4
LV Write Access read/write
LV Creation host, time centos7, 2021-01-16 14:15:09 +0800
LV Status available
# open 0
LV Size 5.00 GiB
Current LE 320
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
4 挂载
[root@centos7 ~]# mkdir /users
[root@centos7 ~]# mount /dev/mapper/testvg-testlv /users
mount: /dev/mapper/testvg-testlv is write-protected, mounting read-only
mount: unknown filesystem type '(null)'
发现lv还没有进行格式化,没有文件系统,没法使用。
[root@centos7 ~]# mkfs.ext4 /dev/mapper/testvg-testlv
[root@centos7 ~]# mount /dev/mapper/testvg-testlv /users
/dev/mapper/testvg-testlv 4.8G 20M 4.6G 1% /users
至此,lv就可以使用了。
关于扩充和削减
在进行扩充之前,先要确保vg卷组中有足够的的PE可以使用。
[root@centos7 ~]# vgdisplay
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 2
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 2
Act PV 2
VG Size <39.97 GiB
PE Size 16.00 MiB
Total PE 2558
Alloc PE / Size 320 / 5.00 GiB
Free PE / Size 2238 / 还有很多的空余的PE未使用,可以对lv进行扩展。
VG UUID qod5np-BLQC-fQIG-aBzc-KCtH-Fmm2-A0BVO5
[root@centos7 ~]# lvresize -L +2G /dev/mapper/testvg-testlv
[root@centos7 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID 8LeWpm-FIOD-aC4f-Jz9n-mFQG-guQ9-pfxoN4
LV Write Access read/write
LV Creation host, time centos7, 2021-01-16 14:15:09 +0800
LV Status available
# open 1
LV Size 7.00 GiB
Current LE 448
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
[root@centos7 ~]# df -h
/dev/mapper/testvg-testlv 4.8G 20M 4.6G 1% /users 注意到文件系统没有变化,而lv确实变大了
#针对ext
resize2fs /dev/VG_NAME/LV_NAME
#针对xfs
xfs_growfs MOUNTPOINT
[root@centos7 ~]# resize2fs /dev/testvg/testlv
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/testvg/testlv is mounted on /users; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/testvg/testlv is now 1835008 blocks long.
/dev/mapper/testvg-testlv 6.8G 23M 6.4G 1% /users ------>这就变成正常的了
削减:XFS文件系统不支持削减,对lv削减有一定的风险性。
1.卸载文件系统
[root@centos7 ~]# umount /users/
[root@centos7 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 475M 0 475M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 14M 473M 3% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/mapper/centos-root 15G 1.4G 14G 10% /
/dev/sda1 1014M 137M 878M 14% /boot
/dev/mapper/centos-home 5.0G 33M 5.0G 1% /home
tmpfs 98M 0 98M 0% /run/user/0
2.检查文件系统的完整性
[root@centos7 ~]# e2fsck /dev/mapper/testvg-testlv
e2fsck 1.42.9 (28-Dec-2013)
/dev/mapper/testvg-testlv: clean, 11/458752 files, 67327/1835008 blocks
3.缩小文件系统
[root@centos7 ~]# resize2fs -f /dev/mapper/testvg-testlv 2G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/mapper/testvg-testlv to 524288 (4k) blocks.
The filesystem on /dev/mapper/testvg-testlv is now 524288 blocks long.
4.缩小lv大小
[root@centos7 ~]# lvreduce -L 2G /dev/mapper/testvg-testlv
WARNING: Reducing active logical volume to 2.00 GiB.
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce testvg/testlv? [y/n]: y
Size of logical volume testvg/testlv changed from 7.00 GiB (448 extents) to 2.00 GiB (128 extents).
Logical volume testvg/testlv successfully resized.
[root@centos7 ~]# lvdisplay
--- Logical volume ---
LV Path /dev/testvg/testlv
LV Name testlv
VG Name testvg
LV UUID 8LeWpm-FIOD-aC4f-Jz9n-mFQG-guQ9-pfxoN4
LV Write Access read/write
LV Creation host, time centos7, 2021-01-16 14:15:09 +0800
LV Status available
# open 0
LV Size 2.00 GiB
Current LE 128
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:3
扩充卷组
[root@centos7 ~]# pvcreate /dev/sdb3
Physical volume "/dev/sdb3" successfully created.
[root@centos7 ~]# vgextend testvg /dev/sdb3
Volume group "testvg" successfully extended
[root@centos7 ~]# vgdisplay
--- Volume group ---
VG Name testvg
System ID
Format lvm2
Metadata Areas 3
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 0
Max PV 0
Cur PV 3
Act PV 3
VG Size 41.95 GiB
PE Size 16.00 MiB
Total PE 2685
Alloc PE / Size 128 / 2.00 GiB
Free PE / Size 2557 / 39.95 GiB
VG UUID qod5np-BLQC-fQIG-aBzc-KCtH-Fmm2-A0BVO5