硬盘类型
因为磁盘第一个扇区有512字节,MBR占446个字节,分区表(dpt)只占用64个字节,所以主分区最多四个(16*4=64byte)主分区表记录着分区的基本信息逻辑分区信息,liunx第一个逻辑分区一定是从sdb5开始(sdb4如果划分逻辑分区则代表整个逻辑分区不显示。)
gpt分区格式
1、保留MBR,GPT的分区方案,硬盘的第一个物理扇区,仍然是一个前面讲过的MBR,这个MBR主要是出于软件兼容性的考虑,对GPT分区方案本身来讲,其实没有啥意义。
2、GPT分区表头,这个在保留MBR之后,也就是占用第二个物理扇区,GPT分区表头中,定义了分区的数量,基本上,你可以认为GPT分区的数量是没有限制的;
3、GPT分区表,从第三个扇区开始,是实际的分区表。请注意:每个扇区可以保存4个分区信息,说明每个分区的分区信息占用的空间是128个字节。
4、从3中,我们知道每个分区的信息占用了四分之一个扇区,也就是128字节的空间,对比一下MBR分区方案中,每个分区的信息只有16个字节,所以GPT分区方案,有充足的空间去存储分区的开始位置及总的容量等,基本上,不用考虑对分区容量的限制。
5、从3中,我们知道,GPT分区方案,分了多少个区,就在分区表中有多少个分区信息。然而实际情形并不是这样,事实上,如图中所示:如果你使用windows操作系统,通常GPT分区表占用32个扇区的空间,可以保存128个分区信息,用不到的空间会被保留,实际使用了多少分区信息与保留了多少分区信息,在2中的GPT分区表头中设置。我们的电脑,通常不会有超过10个的分区,所以GPT分区表中的空间,90%以上都是保留空间,其实就是被浪费了。
6、接下来的两个部分,很简单,分别是GPT分区表,及GPT分区表头的备份。
以上就是GPT分区方案的大致内容,其实也不算复杂了。对普通用户而言,其实需要了解的GPT最重要的特点是:使用GPT分区方案,没有硬盘容量不能超过2TB大小的限制,这是GPT区别于MBR的特点与优点!
现在,可能你会觉得如何使用MBR与GPT了:硬盘容量小于或等于2TB时,用MBR或GPT都行;硬盘容量大于2TB时,用GPT。这种说法没错,但实际情况比这个要复杂些。windows32位系统不支持gpt格式。
Centos6
vim /etc/inittab
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
id:3:initdefault: #这里决定系统启动的级别
/etc/rc.d/rc.sysinit shell脚本作用:系统初始化: 像:主机名 和/etc/fstab 都在这里指定了,完成了包括mount分区 激活swap 加载modules等重要的工作.
启动对应级别下的服务如: init 3 级别
/etc/rc.d/rc3.d/(这里的程序/服务S开头的全部开机执行;K开头的表示开机不执行,表明了关机时顺序)
rcn.d (n为1到6) 是对应于不同的runlevel下起不同的服务. 这些目录下都是一些符号连接, 连接到/etc/rc.d/init.d下的一些文件.以S开头的表示要启动, 以K开头的不启动.
#S10表示network是第10个启动的服务。 所以init是顺序启动系统,需要一个一个服务启动成功,再执行下一步操作,启动系统比较慢。而centos7中的systemd可以并行启动多个服务,启动比较快。
vim /etc/init.d/network
#! /bin/bash
# network Bring up/down networking
# chkconfig: 2345 10 90
看有chkconfig的那一行, 2345表示在runlevel 2 3 4 5下被启动, 10是为此服务的启动顺序, 90为关机时,关闭此服务的顺序。
所有服务都运行成功后,设置开机自动执行某个命令: /etc/rc.local
lrwxrwxrwx. 1 root root 13 Dec 18 2012 /etc/rc.local -> rc.d/rc.local
runlevel
#查看系统启动级别
N 3
centos7系统启动过程及相关配置文件
CentOS7启动顺序
find /boot/ -name *img* #查看启动相关的IMG文件。
/boot/grub2/i386-pc/core.img
/boot/grub2/i386-pc/boot.img
Systemd运行原理-了解一下
Systemd概述: systemd即为system daemon [ˈdi:mən] 守护进程,是linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init程序。
与多数发行版使用的System V风格init相比,systemd采用了以下新技术: (1) 采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能; (2) 用Cgroups代替PID来追踪进程,以此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其它与init相关的信息
Systemd配置文件:
• /usr/lib/systemd/system/ #这个目录存储每个服务的启动脚本,类似于之前的 /etc/init.d/
• /run/systemd/system/ #系统执行过程中所产生的服务脚本,比上面目录优先运行
• /etc/systemd/system/ #管理员建立的执行脚本,类似于/etc/rc.d/rcN.d/Sxx类的功能,比上面目录优先运行
注意: 对于新创建的unit文件,或者修改了的unit文件,要通知systemd重载此配置文件,而后可以选择重启
systemctl daemon-reload
总结:centos5-6-7 3个系统版本启动过程
管理系统服务
- | centOS6 | CentOS7 |
---|---|---|
启动 | service name start | systemctl start name.service |
停止 | service name stop | systemctl stop name.service |
重启 | service name restart | systemctl restart name.service |
状态 | service name status | systemctl status name.service |
重载或重启服务(先加载,再启动) | - | systemctl reload-or-restart name.service |
- | centOS6 | CentOS7 |
---|---|---|
设定某服务开机自启 | chkconfig name on | systemctl enable name.service |
设定某服务开机禁止启动 | chkconfig name off | systemctl disable name.service |
查看所有服务的开机自启状态 | chkconfig --list | sysls temctl list-unit-files --type service |
用来列出该服务在哪些运行级别下启用和禁用 | chkconfig sshd –list | ls /etc/systemd/system/*.wants/sshd.service |
查看服务是否开机自启 | - | systemctl is-enabled name.service |
服务状态
systemctl list-unit-files
#显示状态
• loaded:Unit配置文件已处理
• active(running):一次或多次持续处理的运行
• active(exited):成功完成一次性的配置
• active(waiting):运行中,等待一个事件
• inactive:不运行
• enabled:开机启动
• disabled:开机不启动
• static:开机不启动,但可被另一个启用的服务激活
运行级别
centos6下Linux运行级别0-6的各自含义
0: 关机模式
1:单用户模式 ,用于破解root密码
2:无网络,支持的多用户模式
3:有网络支持的多用户模式(一般叫字符界面,工作中最长使用的模式)
4:保留,未使用
5:有网络支持,支持图形界面,支持的多用户模式(图形界面)
6:重新引导系统,及重启
可以在不同级别下,设置服务是否随系统启动运行。在centOS7上运行级别的含义已经和之前不同了,已由.target来代替运行级别,我们可以称target为目标态,我们可以通过target定制更符合我们工作运行环境。
ls /usr/lib/systemd/system/*.target
发现在runlevel2-4 都是调用multi-user.target这个unit。所以在centos7上runlevel2-4是一个意思
systemctl list-unit-files --type target
#查看所有target的状态
systemctl list-dependencies runlevel3.target
#查看3级别Unit 的所有依赖。Unit 之间存在依赖关系:A 依赖于 B,就意味着 Systemd 在启
动 A 的时候,同时会去启动 B。也可以理解也3运行级别下都开启哪些服务
切换终端命令
Init 0 ----------> systemctl poweroff
关机
Init 1 ----------> systemctl isolate rescue.target
单用户
Init 3 ----------> systemctl isolate multi-user.target
字符界面
Init 5 ----------> systemctl isolate graphical.target
图形化
Init 6 ----------> systemctl reboot
重启
systemctl set-default name.target
修改开机进入的target
ll /usr/lib/systemd/system/default.target
#查看默认启动target 。
grub2和grub区别-了解
在centOS6上,我们的grub文件是**/boot/grub/grub.conf**
在centOS7使用grub2,配置文件改成**/boot/grub2/grub.cfg**了,但是功能还是大致一样的都是用于加载内核的,不过在centOS7上设置默认启动项发生了一些变化。
centos7修改内核启动顺序
vim /etc/default/grub
GRUB_TIMEOUT=5 #开机时 grub 默认5秒后启动内核
GRUB_DISTRIBUTOR="$(sed ‘s, release .*$,g’ /etc/system-release)"
改:GRUB_DEFAULT= saved
为:GRUB_DEFAULT= 1 #这里我们改成1,0代表第一个内核,1代表第二个,以此类推。
uname -r
#查当前系统内核
entos6修改内核启动顺序-了解
vim /boot/grub/grub.conf
改:10 default=0
为:10 default=1
进入centos7 紧急模式恢复root密码
首先重启,按↑↓键,进入如下界面,选择第一项,按下e键进行编辑
在此界面找到ro这一项,改为rw init=/sysroot/bin/sh (或在utf-8后加)
按ctrl+x 启动到单用户模式
emergency [iˈmɜ:dʒənsi] 紧急
换根,修改密码
chroot命令用来在指定的根目录下运行指令
。chroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以/,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为/位置
第一步:启动系统时,在进入系统前,读秒的时候,按任意键出现这个界面,然后按e键进入到下面界面
第二步:选择kernel选项,再按e 进入到下面界面
第三步:在quiet后面加上single参数或是加1(数字1),然后按回车,回到下面的界面
第四步:按b键启动系统,进入到下面界面
第五步:在此界面可以直接用passwd修改密码。
第六步:输入两次密码,重启系统即可完成密码的重置
实战-加密grub防止黑客通过单用户系统破解root密码
基于centos6进行grub加密
grub-md5-crypt
#生成grub秘钥
Password: 123456
Retype password: 123456
$1$oaqo5$3d/cmTosm68jTw6o1wCu31 #这是生成的秘钥
vim /boot/grub/grub.conf
#打开grub配置文件
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
password --md5 $1$oaqo5$3d/cmTosm68jTw6o1wCu31 #插入md5秘钥
title Red Hat Enterprise Linux (2.6.32-220.el6.x86_64)
root (hd0,0)
reboot
重启按p测试。
基于centos7进行grub加密
grub2-mkpasswd-pbkdf2
#生成pbkdf2秘钥
Reenter password: 123456
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.8F355BAB512AFB7B8C990A1FEB887B8F2F3F1C54467E9B9F0535F2268E1FFC5F4E8D33F7633D7FBEC25B2039C6D8B3226A90528D4883AB9B99E391A4965D069F.DDE992693BE2C09FFEEC1149120B6B84DBAB933DE6CF7BFF718E1DDC858AB73EE32CFF45EB7F06AC45AA6792E91C4CD09E2B445FC288C47E79F537DBBABAD756
vim /etc/grub.d/00_header
#在最后后面添加如下内容,这个用户名可以换成自己的用户名
cat <
password_pbkdf2 aiwen grub.pbkdf2.sha512.10000.8F355BAB512AFB7B8C990A1FEB887B8F2F3F1C54467E9B9F0535F2268E1FFC5F4E8D33F7633D7FBEC25B2039C6D8B3226A90528D4883AB9B99E391A4965D069F.DDE992693BE2C09FFEEC1149120B6B84DBAB933DE6CF7BFF718E1DDC858AB73EE32CFF45EB7F06AC45AA6792E91C4CD09E2B445FC288C47E79F537DBBABAD756
EOF
grub2-mkconfig -o /boot/grub2/grub.cfg
#更新grub信息
重启按e,输入用户名和密码测试成功
实战-通过CD进入救援模式-重装grub修复损坏的系统
修复centos7启动
使用场景: 修复MBR,主要出现在安装双系统时,后安装的系统把原来系统的MBR删除了,需要修复。
第一步:在centOS7下破坏硬盘的前446字节: (或者直接把/boot删除,这样内核也会删除需要重新生成内核)
[root@CT731 ~]#dd if=/dev/zero of=/dev/sda bs=1 count=446
446+0 records in
446+0 records out
446 bytes (446 B) copied,0.000758682 s,588 kB/s
第二步:将centos7系统光盘挂载到虚拟机光驱上,,重启计算机,修改BIOS引导顺序,让光盘启动。
上面有三项,我们选择第三项进入troubleshooting故障排除界面 ,进入第三项后,点击第二项,进入救援模式的centos的系统
然后我们进入如下模式,选择1,继续进行,接下来,我们就会进入到一个shell模式中,需要切换根目录,进行系统修复:chroot /mnt/sysiamge
如删除boot 挂载iso镜像到mnt目录下,安装内核文,先安装内核然后安装grub文件。
centos6 修复boot启动
光盘启动挂载后,安装内核文件,安装grub文件,还需要创建一个grub.cfg文件,centos7有命令创建,6需要手动创建
vim /boot/grub/grub.cfg
default=0
timeout=5
title centos6_lay
kernel /vmlinuz-2.6.32-696.el6.x86_64 root=UUID=31be738e-9719-4ff4-80bf-bf3338cb36c9
initrd /initramfs-2.6.32-696.el6.x86_64.img
1.在内核启动过程中,把/boot当作是自己的/
2.root=UUID=31be738e-9719-4ff4-80bf-bf3338cb36c9
是告诉启动程序,系统真正的/ 位置
3.grub 把vmlinux(内核文件)和initrd(虚拟的根文件系统)读到内存
然后,initrd已只读方式挂载根,去获取
/lib/modules/2.6.32-696.el6.x86_64/下的内核模块
centos7系统断电系统无法挂载分区
https://blog.csdn.net/helloanthea/article/details/51728128
xfs_repair -v -L /dev/dm-0 #清除日志再挂载
这是一步有风险的操作,在执行之前最好先使用xfs_dump、xfs_restore备份你的分区,既可以备份成一个文件也可以备份到另一块硬盘:
磁盘阵列(Redundant Arrays of Independent Disks,RAID),有“独立磁盘构成的具有冗余能力的阵列”之意。 磁盘阵列是由很多价格较便宜的磁盘,以硬件
RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一起,提升整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。 磁盘阵列还能利用同位检查(Parity Check)的观念,在数组中任意一个硬盘故障时,仍可读出数据,在数据重构时,将数据经计算后重新置入新硬盘中。
RAID的创建有两种方式:软RAID(通过操作系统软件来实现)和硬RAID(使用硬件阵列卡);在企业中用的最多的是:raid1、raid5和raid10。不过随着云的高速发展,供应商一般可以把硬件问题解决掉。
RAID类型 | 说 明 | 最低磁盘个数 | 空间利用率 | 各自的优缺点 |
---|---|---|---|---|
RAID0 | 条带卷 | 2+ | 100% | 读写速度快,不容错 |
RAID1 | 镜像卷 | 2 | 50% | 读写速度一般,容错 n-1 |
RAID5 | 带奇偶校验的条带卷 | 3+ | (n-1)/n | 读写速度快,容错,允许坏一块盘 |
RAID6 | 带奇偶校验的条带集,双校验 | 4+ | (n-2)/n | 读写快,容错, 允许坏两块盘 |
RAID10 | RAID1的安全+RAID0的高速 | 4 | 50% | 读写速度快,容错 n/2 |
RAID50 | RAID5的安全+RAID0的高速 | 6 | (n-2)/n | 读写速度快,容错 |
当RAID5的一个磁盘数据发生损坏后,利用剩下的数据和相应的奇偶校验信息去恢复被损坏的数据。
异或运算
是用相对简单的异或逻辑运算(相同为0,相异为1)
RAID硬盘失效处理
一般两种处理方法:热备和热插拔
热备:HotSpare
定义:当冗余的RAID组中某个硬盘失效时,在不干扰当前RAID系统的正常使用的情况下,用RAID系统中另外一个正常的备用硬盘自动顶替失效硬盘,及时保证RAID系统的冗余性
全局式:备用硬盘为系统中所有的冗余RAID组共享
专用式:备用硬盘为系统中某一组冗余RAID组专用
热插拔:HotSwap
定义:在不影响系统正常运转的情况下,用正常的物理硬盘替换RAID系统中失效硬盘。
软RAID:通过操作系统实现
Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给我们提供一个应用程序的工具mdadm
,mdadm是linux下用于创建和管理软件RAID的命令。
mdadm -C -v /dev/md0 -l 0 -n /dev/sdb /dev/sdc
#创建一个raid0
mdadm -D /dev/md0
#查看raid信息。
mdadm -Dsv > /etc/mdadm.conf
#生成配置文件
mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sd[d,e,f]
#创建一个raid1 并添加一块热备份盘
mdadm -Dsv > /etc/mdadm.conf
#生成配置文件
mdadm -D /dev/md1
#查看raid信息同步状态等。
mdadm -f /dev/md1 /dev/sde
#把sde硬盘设为故障盘模拟故障,sdf会自动顶替位置。
mdadm -r /dev/md1 /dev/sde
#移除故障盘。
mdadm -a /dev/md1 /dev/sde
#添加新硬盘到阵列
mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 -c32 /dev/sd{f,g,h,i}
#创建raid5 一块热备盘 chunk大小为32K。
mdadm -D /dev/md5
#查看
停止阵列
mdadm -Dvs > /etc/mdadm.config
#停止前确保已经保存配置
mdadm -D /dev/md5
#停止前查看数据是否同步完成
Consistency Policy : resync #数据已经同步完
mdadm -S /dev/md5
#停止md5阵列
激活MD5阵列
adadm -As
#重新激活md5阵列
扩展RAID5磁盘阵列
mdadm -G /dev/md5 -n 4 -c 32
#将md5阵列数量重新设为4块,chunk为32位,
备注:阵列只有在正常状态下,才能扩容,降级及重构时不允许扩容。对于raid5来说,只能增加成员盘,不能减少。而对于raid1来说,可以增加成员盘,也可以减少。
mdadm -C v /dev/md10 -l 10 -n 4 /dev/sd{d,c,f,g}
#创建raid10
cat /proc/mdstat
#查看阵列信息
删除RAID所有信息及注意事项
umount /dev/md0 /raid0
#如果你已经挂载raid,就先卸载。
mdadm -Ss
#停止raid设备
rm -rf /etc/mdadm.conf
#删除raid配置文件
mdadm --zero-superblock /dev/sd{d,c,f,g}
#清除物理磁盘中的raid标识
参数:–zero-superblock : erase the MD superblock from a device. #擦除设备中的MD超级块
硬raid
把两块磁盘做raid1,然后把后面的磁盘都做成raid5
raid1是镜像卷,安装系统用,一块坏了,不影响系统运行。 raid5存数据
如果服务器主板不支持硬raid , 可以用raid卡
硬raid如果阵列卡坏了 怎么办?
如果更换的RAID卡,与原卡规格型号相同,则不会有什么问题。若两卡规格型号不同,需要重新安装新卡驱动程序。这时就会有不确定的可能性,如驱动程序差别不大时,RAID盘组合顺序正常,硬盘原数据可正确读写;若驱动程序结构差别较大,则可能发生读写错误。
因此,要尽量选购与原卡规格相同的产品,以确保数据安全。
LVM的工作原理
LVM( Logical Volume Manager)逻辑卷管理,是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在磁盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘,当服务器添加了新的磁盘后,管理员不必将原有的文件移动到新的磁盘上,而是通过LVM可以直接扩展文件系统跨越磁盘
它就是通过将底层的物理硬盘封装起来,然后以逻辑卷的方式呈现给上层应用。在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
LVM常用的术语
物理存储介质(The physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
物理卷PV(physical volume) :物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
卷组VG(Volume Group) :一个LVM卷组由一个或多个物理卷组成
逻辑卷LV(logical volume) :LV建立在VG之上,可以在LV之上建立文件系统
PE(physical extents) :PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
LE(logical extent) : LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同的,并且一一对应
最小存储单位总结:
名称 | 最小存储单位 |
---|---|
硬盘 | 扇区(512字节) |
文件系统 | block(1K或4K )# mkfs.ext4 -b 2048 /dev/sdb1 ,最大支持到4096 |
raid | chunk (512K) #mdadm -C -v /dev/md5 -l 5 -n 3 -c 512 -x 1 /dev/sde{1,2,3,5} |
LVM | PE (4M) # vgcreate -s 4M vg1 /dev/sdb{1,2} |
LVM主要元素构成
总结:多个磁盘/分区/raid-》多个物理卷PV-》合成卷组VG-》从VG划出逻辑卷LV-》格式化LV挂载使用
LVM优点
使用卷组,使多个硬盘空间看起来像是一个大的硬盘
使用逻辑卷,可以跨多个硬盘空间的分区 sdb1 sdb2 sdc1 sdd2 sdf
在使用逻辑卷时,它可以在空间不足时动态调整它的大小
在调整逻辑卷大小时,不需要考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间
可以在线对LV,VG 进行创建,删除,调整大小等操作。LVM上的文件系统也需要重新调整大小。
允许创建快照,可以用来保存文件系统的备份。
RAID+LVM一起用:LVM是软件的卷管理方式,而RAID是磁盘管理的方法。对于重要的数据,使用RAID来保护物理的磁盘不会因为故障而中断业务,再用LVM用来实现对卷的良性的管理,更好的利用磁盘资源。
功能 | PV管理命令 | VG管理命令 | LV管理命令 |
---|---|---|---|
scan 扫描 | pvscan | vgscan | lvscan |
create 创建 | pvcreate | vgcreate | lvcreate |
display显示 | pvdisplay | vgdisplay | lvdisplay |
remove 移除 | pvremove | vgremove | lvremove |
extend 扩展 | vgextend | lvextend | |
reduce减少 | vgreduce | lvreducev |
查看卷名 | 简单对应卷信息的查看 | 扫描相关的所有的对应卷 | 详细对应卷信息的查看 |
---|---|---|---|
物理卷 | pvs | pvscan | pvdisplay |
卷组 | vgs | vgscan | vgdisplay |
逻辑卷 | lvs | lvscan | lvdisplay |
LVM创建步骤:
1.创建pv (物理卷)
2.创建vg(卷组)
3.创建lv(逻辑卷)格式化,使用挂载
pvcreate /dev/sdb
#创建物理卷pv,可以指定多个设备
pvs
#查看所有物理卷
pvdisplay /dev/sdb
#查看物理卷pv详细信息。PE大小等(默认4m)
vgcreate vg01 dev/sdb
#穿件vg卷组,可以后面可以跟多个pv
vgs
#查看所有卷组
vgdisplay /dev/vg01
#查看卷组详细信息
lvrcreate -n lv01 -L 1G vg01
#创建逻辑卷(lv)-n 指定名称 -L 指定大小 -l 指定le的个数 le=pe 默认4M
ls -l /dev/vg01/
#查看逻辑卷位置,
lv01 lv02 #是软链接
mkfs.xfs /dev/vg01/lv01
#格式化逻辑卷
mount /dev/vg01/lv01 /lvo1
#挂载逻辑卷使用
指定PE大小用的参数: -s ,如果存储的数据都是大文件,那么PE尽量调大,读取速度快
vgcreate -s 16M vg02 /dev/sdc #创建一个vg组pe大小为16M每个,PE的大小只有为2的幂数,且最大为512M
VG扩容
vg扩容的场景:vg卷组中的空间不了够,需要添加新的硬盘进来
vgs
#查看vgs可用的容量
pvcreate /dev/sdd
#创建PV物理卷
vgextend vg01 /dev/sdd
#把sddpv添加到vg01组中
pvs
#查看pv情况。
gvs
#查看vg情况
LV扩容
首先,确定一下是否有可用的扩容空间,因为空间是从VG里面创建的,并且LV不能跨VG扩容,扩容后还要针对文件系统扩容
ext4文件系统扩容使用命令语法: resize2fs
逻辑卷名称
xfs文件系统扩容使用命令语法: xfs_growfs
挂载点
vgs
#查看vg可用的容量
lvextend -L +30m /dev/vg01/lv01
#对lv01扩容+30M 。
说明:在指定大小的时候,扩容30m和扩容到30m是不一样的写法
扩容30m ====> -L +30M
扩容到30m =====> -L 30M
resize2fs和xfs_growfs 两者的区别是传递的参数不一样的,xfs_growfs是采用的挂载点;resize2fs是逻辑卷名称,而且resize2fs命令不能对xfs类型文件系统使用
lvextend -L 80M -r /dev/vg01/lv01
#将lv01扩到80M -r 参数一步到位,不用重新设置文件系统。
LVM缩小
LVM可以动态增加,也可以动态缩小,但是XFS不支持动态缩小,所以我们无法实现基于xfs的动态缩小。btrfs文件系统支持在线缩小
。
VG的缩减,要保证你的物理卷是否被使用,是因为它无法缩减一个正在使用的PV
cp -r /boot/grub /lv01
#复制一些数据到/lv01里
vgreduce vg01 /dev/sdb
#把sdb硬盘移出vg01组
Physical volume “/dev/sdb” still in use #提示错误,因为sdb在使用中
如果sdb是一个磁盘阵列,而这个磁盘阵列使用年代太久,我们必须移出怎么办?
把sdb数据迁移到同一个vg组的未分配的pv中(其他硬盘)。
pvmove /dev/sdb /dev/sde #把数据同步到sde中。
vgreduce vg01 /dev/sdb #移除成功
创建LVM流程:
pvcreate创建pv -> vgcreate创建卷组 -> lvcreate创建逻辑卷 -> mkfs.xfs lv 格式化-> mount挂载
删除LVM流程:
umount
卸载 -> lvremove lv移出卷组中所有逻辑卷-> vgremove vg移出卷组-> pvremove
移出pv
lvremove/dev/vg02/lv02
#移除lv
vgremove vg02
# 移除组
pvremove /dev/sdb
#移除pv物理卷
使用SSM工具为公司的邮件服务器创建可动态扩容的存储池 (了解)
yum -y install system-storage-manager
#安装ssm工具
ssm list dev
#列出设备信息
ssm list pool #
列出储存池信息,vg
实战场景:公司要搭建一台邮件服务器,考虑到后期公司发展规模扩张,需要你创建一个名为mail 的LVM存储池,并在其上创建一个名为mail-lv,初始大小为1G的lvm卷,格式化为xfs文件系统,并将其挂载/mail-lv目录下。此存储池中的空间后期要可以动态扩容。
ssm create -s lv大小 -n lv名称 --fstype lv文件系统类型 -p 卷组名 设备 挂载点
自动把设备变成pv,创建vg , lv ,格式化文件系统, 自动挂载
ssm create -s 1G -n mail-lv --fstype xfs -p vg01 /dev/sd{b,c} /mail-lv