七、链路聚合
NIC teaming,简单的说就是多个物理端口绑定在一起当成一个逻辑端口使用,以便提高带宽,实现负载平衡或高可用的功能。RHEL7里面是通过runner (可以视作一段代码)来实现不同的目的。
配置的基本过程就是配置一个逻辑端口的连接,视作master;然后把需要的物理端口配置成slave 连接,绑定到组。然后把这个逻辑端口分配IP就可以用了
team:高可用性
首先准备两块网卡,它们有不同的MAC地址
![)DV1_$9H8BIF7W1EJOL@1{M.png wKioL1ju9cSBrrJyAAAsa1cHhm8261.png]()
创建一个新连接,类型是team连接名称team0。
![Y_{NSY0`P@$X97ZO2YNC0XP.png wKiom1ju9d2yYiCVAAASNdQDvcU444.png]()
activebackup表示热备,loadbalance表示负载均衡
master 配置好了,还得配置slave,即将eno16777736和eno33554960两块网卡加入到team0
![7]JWK@JAH~8DI166)$[L@2X.png wKioL1ju9jWjgmj5AAAfEdTTSfA898.png]()
执行nmcli connection show命令查看team0-1和team0-2的状态
![QYW9EJ0ZTZ`JQ9K6Y(@DE61.png wKiom1ju9gyj2G5FAAApTxIsSys714.png]()
上图可以看出team0-1和team0-2没有连接,执行下列命令连接team0-1和team0-2
![_J{R%COT(IQF(Q7Y7D1FZP4.png wKiom1ju9mnxe5F7AAA86DRktfc554.png-wh_50]()
执行ifconfig,发现网卡的地址都一样了,这样交换机才能转发包到同一个逻辑端口
![N%N{(LIJ3SU{`Q`_C8KK8)R.png wKioL1ju9nrjZ2JUAABWZN7SpLA845.png-wh_50]()
最后给team0 分配一个IP地址(也可以直接用图形工具设置IP地址)
![(W5(0WTT01J35B42P5]78E8.jpg wKioL1ju9orTFQwdAAAWajrapfQ982.jpg]()
测试一下,先看看team0当前状态
![0)S%%9HZL7I)MQ1}A)04H[Q.png wKiom1ju9prhewqbAAAdhkwvYds754.png]()
关掉eno16777736的连接,自动切换到第二个物理端口了,测试成功
![KOZRW}UZW8U%ENKG`8WGL[Q.png wKioL1ju9qnjAMuXAAAbrDnoB4M441.png]()
八、rhel7 grub配置文件及排错
RHEL7用了grub2,而不再是grub了
MBR分区的前446个字节存放的是系统引导程序grub,中间64字节是分区表,最后2个字节表示结束。那么什么是grub是怎么工作的呢?
简单的说,开机会经历以下几步:
1、BIOS自检,检查硬件;
2、激活MBR,MBR上不存在文件系统,可以视作硬件一部分,因此可以被直接读取
3、grub加载到内存,生成一个微系统,微系统内置了精简版的文件系统
4、通过这个微系统,他会去引导分区,比如默认一般是sda1上去找内核文件如vmlinuz,然后再调用grub的配置文件。
grub的主要把他的配置文件放在了3个地方。
/boot/grub2/grub.cfg (/etc/grub2.cfg是/boot/grub2/grub.cfg文件的符号链接)
/etc/grub.d/
/etc/default/grub
如下所示。他们的关系是 grub.cfg里面通过 ####BEGIN ##### 这种格式按照顺序调用/etc/grub.d里面的脚本实现不同的功能。grub.d目录里面有很多数字开头的脚本,按照从小到大的顺序执行。以00__header为例,他又会调用 /etc/default/grub 配置文件来实现最基本的开机界面配置
![`28L~KP(JMF9CNQMZU42ZUE.png wKioL1ju9sXgYKQXAAASwauhIQs090.png]()
例如:在/etc/grub2.cfg是文件里面调用 /etc/grub.d/10_linux 来配置不同的内核,这里面有2个 menuentry (菜单入口),所以我们开机的时候会看见两个默认选项,一个是普通模式,一个是救援模式
![UK@0W}~152)Q5Q{MZX)~Z4X.png wKioL1ju9tXji-uHAABsoqXTXgQ962.png]()
这个是/etc/default/grub 文件。和其他的脚本比较起来,非常简单直观了。后面会举例如何修改
需要注意的是,最好不要直接去修改 /etc/grub2.cfg 文件。这个是因为如果后期升级内核,所有的配置都会失效。如果需要自定义这个文件,我们可以修改对应的脚本或者 /etc/default/grub文件,然后通过 grub2-mkconfig 重新生成grub.cfg文件。
例1:修改启动的等待时间
rhel7默认启动等待时间为5秒,下面将启动时间修改为3秒(注:如果改为-1,那么每次启动时需手动确认才可以)
修改/etc/default/grub文件,如下图所示:
![24}R[4({4QY)C`HB]@1U(]6.png wKiom1ju9uejdTF0AAAkbxyZrX0805.png]()
修改之后重新编译生成grub.cfg文件
![TFY6NCR}_L)%Z1%[W[(4$01.png wKioL1ju_kbjz_DvAAAwrD_QjD4994.png-wh_50]()
例2:修改网卡的显示名字,这个前面做网络配置的时候提到过,这里不赘述了。
例3:加密grub
开机界面的时候如果输入e,会打开编辑窗口,我们可以根据需要进入rescue, emergency 或者 shell 模式。如何限制访问。
在/etc/grub.d/00_header 文件末尾,添加以下内容
![UZG95SSYY[N(Z47@OG~]_RI.png wKiom1ju_mGyAMZ6AAACnVrqlig258.png-wh_50]()
重新编译生成grub.cfg文件
![U6%Q660EC[BZWV~W~GW6VEY.png wKioL1ju_nPhv3cmAAAqY0OIfZ8776.png-wh_50]()
重启之后输入e,就需要用户和密码才能进入编辑窗口了
以上设置的是明文密码,那如何设置密文口令呢?
加密密码由命令grub2-mkpasswd-pbkdf2生成
![spacer.gif]()
在/etc/grub.d/00_header 文件末尾,添加以下内容
cat <<EOF
set superusers=’用户名’
password_pbkdf2 用户名加密密码
EOF
重新编译生成grub.cfg文件
grub2-mkconfig–o/boot/grub2/grub.cfg
重启验证
注:在文本终端模式下,安装并启用gpm后就可复制粘贴了。
![0S6QQA293PUW`}XM[IM51MU.png wKioL1ju_rexYG4eAAABp2qNWbg736.png]()
在这个编辑窗口,我们可以根据需要进入 rescue,emergency和 shell引导的3种模式。这3种模式对于系统启动排错很有帮助,比如某个服务卡住了无法加载我们可以通过这3种模式来排错。
rescue模式: 在commandline的配置末尾添加s ,类似rhel6之前的单用户模式
![BXT[OH$2Z)U}R$HL20@JV9T.png wKioL1ju_szCHSp7AAAb0EwZocM467.png]()
按ctrl+x启动
普通模式需要加载的服务很多,但是这个rescue模式加载的就少很多了,输入管理员密码就可以进入了。
![NE{)@Z4%8P_)GF{U`OP]S61.png wKiom1ju_t_zOuKMAAAhq9nRp64468.png]()
emergency模式和rescue模式类似,不过加载的服务更少,把s改成 emergency就行了
![R8_`DX`6JGUEQ1[9L]D5D@8.png wKioL1ju_vKyTVpfAAAdz0WJHSE425.png-wh_50]()
那么如果忘记root密码了怎么办?
方法1:
1、重启系统,按e
2、在linux16那行的最尾部加上一下信息
rd.break console=tty0
![MUKK%U`MI``CO{ZE1Q{E_P4.png wKiom1ju_wTTQqGUAABWaPMWRgk892.png-wh_50]()
3、按ctrl+x启动
4、重新挂载文件系统
![Q)U4%@P)VYMD$D)$%}8E$ED.jpg wKioL1ju_xnx-oFRAAAktqfms_E493.jpg-wh_50]()
5、改变根目录
![25ZCRH_GKF6J[C$H0D6HH)O.png wKiom1ju_ymgesg3AAAMf_YASO0152.png-wh_50]()
6、修改root密码
![)TNH_2LDS%~P(KU(KACU]E0.png wKioL1ju_0mAl_M8AAALO-Vnr24776.png]()
7、在根目录下创建相关文件(用于重新标记selinux环境值)
![JN1B5%D9O{N)3M@0V(B{@D1.png wKiom1ju_2CDBTMnAAAoKoG4Cr4137.png-wh_50]()
8、退出,系统将会重启
![M94$7{~5[V3E~2A563AL)$2.png wKioL1ju_3nghnosAAAICCYLKg4848.png-wh_50]()
方法2:
在linux16 的最后一行删除 rhgb quiet, 然后添加 init=/bin/sh, 他会用shell替代默认的daemon进程
![7~}WT_FUDYY}CJSR_N$3F{B.png wKiom1ju_7zC4mykAAANUpBTRHo921.png-wh_50]()
按ctrl+x启动
![8}PE{)@0XVXD{%FL`H5R7GI.png wKiom1ju_-bzcnPhAAAFV-xNtKI289.png-wh_50]()
挂载文件系统为可写模式,原因很简单,根目录加载的权限是ro,只读,重新加载成 rw的权限。
![]20$}57PSU(K9P528YD[H66.png wKiom1ju_8zRx2fJAAAc43NK30k369.png]()
这个时候就可以修改密码了,执行passwd,按提示修改root密码
![I6H1BUP52IA2OCEPA6XWZI9.png wKioL1ju_9iw1nSwAAABVafg3NQ334.png-wh_50]()
如何之前系统启用了selinux,必须运行以下命令,否则将无法正常启动系统:
创建这个文件会自动在开启的时候重新做标签即用于重新标记 SELINUX 环境值
运行命令exec /sbin/init来正常启动,或者用命令exec /sbin/reboot重启
注意:红帽考试时建议使用方法1,方法2在考试环境中以过时了。
开机排错
例1. grub故障:比如把MBR的前446个字节都覆盖了。
![XA1GZCU{ABKNCQL~ER7H)$D.png wKioL1jvAHCTDuVzAAAELVwbR40412.png-wh_50]()
系统重启后则出现如下故障现象
开机的时候会自动尝试从本地,光盘和网络加载引导程序(如果光盘、网络等引导失败则会operatiing systemnot found);这里是从我的光盘加载的,因为本地的引导程序已经没有了.
![$6WFQ]JDSD}R[MOV1~YCX5Y.png wKiom1jvADTDRhZOAAATPYv7t9c664.png-wh_50]()
选择troubleshooting (排错)
![EK$258VDR_R$Y$VV@`B$KPM.png wKiom1jvAEajdqFoAAAFbj8fDlA176.png-wh_50]()
选择resure a red hat enterprise linux system
![77M59J(]Y0WF~7OUHMSR`]N.png wKioL1jvAFTT-jKxAAAgF1rbKhI441.png-wh_50]()
选择continue,注意有耐心多等一下,有的时候会卡个10秒才有反应
按照提示,切换根到本机的系统
![CN8H7J{H24~[%X]]VFEVPBU.png wKiom1jvAIPTbSaoAABLzODzx9o945.png-wh_50]()
fdisk -l 看看启动分区是哪个,有星号的就是
![]`(7]U{9EO4%VB8SA3ZICGB.png wKioL1jvAJSg_7crAAAVFx0GcmU497.png]()
重装一下 grub2 到启动分区就可以了
![NATKFN1TU@4I0O_V(07LN03.png wKiom1jvAKKRYbYuAAADqPDy-nQ083.png]()
重启就OK了
例2:如果grub引导程序没问题,但是我们把内核文件或者grub.cfg配置文件给删除了怎么办
![Y9V`ZWMHW11POUO0L~85K{Q.png wKioL1jvALSA_cIAAAA6kuyj1oU330.png-wh_50]()
重启之后,直接进入grub的救援模式,这表明引导程序木有问题,但是引导文件找不到了
![IMQHE(JGRFOZJY_DA$I$_QS.png wKiom1jvAL-imCgWAAADRPgKrX0641.png]()
和前面一样,光盘启动,切换根目录,挂载一下光盘到光盘挂载点, 顺便看看/boot目录,里面空荡荡的,内核文件和配置文件都没了
![6U$2[Y6CB~Y~{_0[]T$8EQW.png wKioL1jvAMqyAFgpAAASBr6rUtE367.png]()
解决方法就是重新安装内核,可以用rpm 或者yum,用yum需要先卸载当前的,再安装; rpm可以强行--force覆盖安装。
![3_WZCONB_23`H1[I9G9)L6C.png wKiom1jvANawhpGUAAAeBF7OsMo877.png-wh_50]()
装完内核之后,重新安装一次 grub2, 输入 grub2-install /dev/sda, 然后重新编译一下grub2就行了
![`BH(V4}D)XU%R10PLY5C~V5.png wKiom1jvAOGigjPZAAAz0RcA75A003.png-wh_50]()
重启系统就可以了。
重启之后,如果遇见以下问题:
问题是开机直接进入命令行模式,即使runlevel显示的是5,手动输入startx一样报错。
解决方式是重新安装图形化界面
yum grouplist
yum groupinstall'Server with GUI'
九、磁盘分区、格式化及LVM管理
RHEL7如何对磁盘进行分区和格式化以及如何配置LVM,与以前版本的RHEL区别不大,可以通过disk工具(在图形桌面中运行)或命令工具(如:fdisk、gdisk、parted)管理硬盘设备。fdisk可以配置MBR格式; gdisk配置gpt格式, parted可以自己选择。
传统的硬盘分区都是MBR格式,MBR分区位于0扇区,他一共512字节,前446字节是grub引导程序,这个会在后面学习;中间64字节是分区表,每个分区需要16个字节表示,因此主分区和扩展分区一共只能有4个分区,超过4个的分区只能从扩展分区上再设置逻辑分区来表示。每个分区的大小无法超过2T。 MBR的最后2个字节是结束符号
GPT格式,打破了MBR的限制,可以设置多达128个分区,分区的大小根据操作系统的不同有所变化,但是都突破了2T空间的限制。支持高达 18EB (1EB=1024PB,1PB=1024TB) 的卷大小,允许将主磁盘分区表和备份磁盘分区表用于冗余,还支持唯一的磁盘和分区 ID (GUID)。
与 MBR 分区的磁盘不同,GPT的分区信息是在分区中,而不象MBR一样在主引导扇区。为保护GPT不受MBR类磁盘管理软件的危害,GPT在主引导扇区建立了一个保护分区 (Protective MBR)的MBR分区表,这种分区的类型标识为0xEE,这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区,可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘
在MBR硬盘中,分区信息直接存储于主引导记录(MBR)中(主引导记录中还存储着系统的引导程序)。但在GPT硬盘中,分区表的位置信息储存在GPT头中。但出于兼容性考虑,硬盘的第一个扇区仍然用作MBR,之后才是GPT头。
GPT的结构如下图:
![A3}(SUR]9~(P3(X7NC42L~W.png wKioL1jvAP6w810HAAAyaeu7zgE395.png]()
首先看看当前的硬盘信息
![@(B`C)Q2W9$(~UMG`8E6KTL.png wKiom1jvAQnTCIzqAABt2AFGN_k938.png-wh_50]()
可以在/proc/partitions这个文件查看当前的分区
![]YA[C~Q%{Q9HRPTW3XR%LNP.png wKioL1jvAReScDUAAAAb5S-UOLU407.png-wh_50]()
先试试MBR格式的分区,fdisk选项如下所示
![GW((K8I~9]}Y8MH4UK`8VXI.png wKiom1jvASOyEOWBAABXkcc9Vbo353.png-wh_50]()
输入n,可以创建新的MBR分区,然后输入p可以显示当前的分区状态
![_JX6_I{K{LNW9B(BAO[86[8.png wKiom1jvATbSfU8sAABR4XPVtmg192.png-wh_50]()
重复n的操作,添加其他分区。
注:MBR格式磁盘最多可以创建4个主分区或3个主分区1个扩展分区,在扩展分区中可以创建若干个逻辑分区。
注意id代表了磁盘的用途,可以通过t来改变
![23X4FBSCW205XS8]}4XD`ST.png wKioL1jvAUKB_2OxAACHNYlAomI718.png-wh_50]()
看看分区记录
![_~`M$P(MLVB%{V%)_$7IK[C.png wKiom1jvAVWxceJLAAAVERVGUa4967.png-wh_50]()
gdisk和fdisk非常类似
![_NW~DRK[N``~5(5S13%AOTX.png wKioL1jvAWew8ai0AAAOXX3Lzoo379.png-wh_50]()
![CK@@I[P2)SY]JT[I0H0YS~Y.png wKiom1jvAe_SGVZsAABRmlLuWUo964.png-wh_50]()
![3WSTS@KS43[7BT`$()YWLKD.png wKioL1jvAgLR_2O_AABOIqPBm7c832.png-wh_50]()
创建新分区的时候可以看见可以有128个分区
parted,和前两个相比,更灵活,可以自行设定MBR或GPT格式和分区
![X6A@Z5{}`X7[PGOUU_O1C23.png wKiom1jvAg-B4YimAABfYLeCsDA273.png-wh_50]()
通过mklabel msdos可以设定为MBR格式,然后可以通过mkpart来划分分区
![B}J5CM~Y)O~$_GB7Q7VP(}D.png wKiom1jvAhygBTIfAABLgOL0yR8587.png-wh_50]()
msdos设定为MBR格式,gpt设定为GPT格式
primary代表主分区,extended代表扩展分区,logical代表逻辑分区。
setnumber flag state用于设置分区的用途,flag:boot、lvm、raid。State:on/off表示开启或关闭。
parted工具分完区后无需保存,输入q退出即可。
划分好分区之后,还需要格式化才能使用。可以通过 mkfs/mkswap来格式化文件系统
#mkfs.xfs /dev/分区设备名或#mkfs -t xfs /dev/分区设备名
![[DM_{U8GI(RM]KS$H61H~7X.png wKiom1jvAivQ7yubAAAj_JgBG7g079.png-wh_50]()
可以修改fstab实现自动加载
![$Y8]$U570K6RRO_K3C]@U29.png wKiom1jvAjbDOGDPAAAoc-1t-YM038.png-wh_50]()
测试是否能自动挂载
![5A`CQY@L93`MW~R_6YZ%P83.jpg wKioL1jvAkPjPruxAAA_DopLCSc899.jpg-wh_50]()
通过df -h查看已经挂载了的设备
-T选项可以显示设备的文件系统类
有的挂载点路径比较长,自动分2行显示,可以-P强制一行显示
如同进程有pid,用户有uid,每个文件系统也有自己的id,称为uuid,但是不是每个分区都有;如果某个分区没有文件系统,那么这个分区是没有uuid的。
可以通过 blkid(block id)来查看。注意uuid标记的是文件系统,而不是分区。uuid的好处在于可以通过uuid这个唯一值来挂载系统,这样可以避免因为删除硬盘造成的错位,sda6变成了sda5等等
![8Q[W5GKK4SKFF`H11WH@8Y3.png wKioL1jvAlPwsLiPAABVUvoedJc333.png-wh_50]()
我们可以通过xfs_admin -U 来手动更改文件系统的uuid
附:在目录里面可以通过 ls -ld查看目录的属性,ls -la查看内容的属性,但是-ld显示的目录大小只有4K,这仅仅是目录本身的大小,要想查看目录和其内容的整个大小,可以通过du来查看,如果只想看最终结果,使用-s(summary)就行了
![0T}8V4@PKP~Q~}`%@S)UA{A.png wKioL1jvAmDB15b0AAAWdwBfiHA202.png-wh_50]()
下面我们来看看swap分区如何手动创建。swap类似windows的虚拟内存/page file,当内存不足的时候,数据保存在swap中。
有两种方式可以使用:
第一种单独用一个分区来作为swap
![UE5ISY~9SCFH97JE(7Y`AE3.png wKioL1jvAm6C7qNaAAALDV2b2Ro082.png-wh_50]()
创建一个分区(如:/dev/sdb3),并更改分区ID为82
执行partx –a /dev/sdb命令,使分区修改生效
在分区上创建swap文件系统
![QVSF3AFNTU`@C%7M1SX)7@4.png wKiom1jvAnygpSbVAAAgObVwjO8304.png-wh_50]()
修改fstab实现自动加载
![)XBV@58_1C]U`1B(J3%F2E7.png wKioL1jvAoqhmlFiAAAFNTl_z80510.png]()
第二种方式是创建一个文件块,这个文件所占有的空间作为swap使用
![~A[3_IO952W%HSNH88XMZ0Q.png wKioL1jvApbhPL-PAABBrt__20A202.png-wh_50]()
对于普通的分区,扩展度不高,一旦分区格式化完成,很难灵活的再增加或者减少分区大小。为了解决这个问题,可以使用LVM(逻辑卷)。基本过程是把物理磁盘或者分区初始化称为物理卷(PV),然后把PV加入VG(卷组),最后在VG上划分逻辑的分区(LVM),LVM可以当做普通的分区进行格式化和挂载。
将准备的磁盘或分区创建PV
![1X4F}3W%S$YRXE3J440}M6Q.png wKiom1jvAqLBzAgtAAAxWFixchY542.png-wh_50]()
可以执行pvdisplay查看PV的详细信息,pvremove删除PV
创建完PV,之后,需要创建VG,然后添加PV到VG中
可以通过vgdisplay查看具体的信息,注意PE的Size是4M,这个是增减的最小计算单位
![GJM5L8%3C8D_CZYTOURFCYV.png wKioL1jvAq7T7QrLAABb9ET3srg926.png-wh_50]()
注:创建VG时:使用–s选项的作用是在创建时指定PE块(物理扩展单元)的大小,默认是4M。
如:# vgcreate volGroup03 -s 8M/dev/sdb[12])
我们可以继续往vg里面添加新的分区
![54(_67LPLOA758L[0@5H29Y.png wKiom1jvArzRqMHoAABAOndN5Mk356.png-wh_50]()
若事先没有把sdb3转化为pv,而是直接添加到vg里面,不过一旦添加了他自动就初始化成pv了。
可以添加当然也可以减少pv。 #vgreduce vg00 /dev/sdb3
VG准备就绪,可以创建了LVM了
![LBVI`ZIS9HQ8YZA~TO$6T)Q.png wKiom1jvAsuSC-JeAAAG4dUOxic008.png-wh_50]()
注意看他的大小其实是112M,因为PE的大小是4M,这个4M是最小单位,不能破开,因此28个PE就是112M
![HXIG[K(V[0KR$$O}}0){YOJ.png wKioL1jvAvTh2sUBAAABkLFKyUk549.png]()
![8U`Y0ZVX5H1}NJ6MNRP%%QA.png wKiom1jvAwKBlGMsAAA9DNeaW2U185.png-wh_50]()
注:大L可以直接指定大小,小l是指定多少个PE的值
也可以设置剩余空间的百分比
![C35D)J[IIG7MEIRO~%7QKYW.png wKioL1jvAxHzs_FkAAACl5WVcLQ850.png]()
删除逻辑卷 #lvremove /dev/vg00/lv01
对已经创建的逻辑卷,可以当做普通分区一样格式化和挂载
![TQCFCA2[C`EY_BM%B7BG8`P.png wKiom1jvAyOxABcoAAAzIDALMzY816.png-wh_50]()
修改/etc/fstab文件实现开机自动挂载。
扩展一个逻辑卷,增加300M,首先要确保卷组有大于300M的空闲空间。
![VWLV$_AR5PUSSMKQ6MQ)7_G.png wKiom1jvAy3wiEODAAA6atHQtzc688.png-wh_50]()
执行lvextend扩展逻辑卷大小
![HJ(HR(_WOMT5Y]}T`6L4_IR.png wKiom1jvA0Pg1CTCAABQQtq-YQE594.png-wh_50]()
注意逻辑卷的文件系统仍然是109M没有改变,我们还需要填充文件系统的空白。
RHEL7可以用xfs_growfs来扩大XFS文件系统,也可以直接用resize2fs 来处理设备
注意的是 XFS系统只能增长,不能减少!因此如果需要减少LVM的话,分区只能使用ext4了
![V{NF`2]PJ([3G[PT]2~3OX5.png wKiom1jvA1LB8pDcAAA9Ufm3ODs989.png-wh_50]()
执行df查看扩展后的文件系统
![G[Y2N~GOCO01@B2GAD8ZYBS.png wKioL1jvA2Hw_knvAAAvT0XXdR0869.png-wh_50]()
逻辑卷快照
LVM提供一个极妙的设备,它是snaphot。允许管理员创建一个新的块装置,在某个时间点提供了一个精确的逻辑卷副本,快照提供原始卷的静态视图LVM 快照通过把文件系统的改变记录到一个快照分区,因此当你创建一个快照分区时,你不需要使用和你正创建快照的分区一样大小的分区,所需的空间大小取决于快照的使用,所以没有可循的方法来设置此大小。如果快照的大小等于原始卷的大小那么快照永远可用。
快照是特殊的逻辑卷,只可以对逻辑卷做快照。逻辑卷快照和需要做快照的逻辑卷必须在同一个卷组里面
现在在我们的系统中有个逻辑卷/dev/vg00/lv00,我们用lvdisplay来查询一下这个逻辑卷
![X6U(16_9~@VO21PLC$~4W{G.png wKiom1jvA3Tj6RTIAAA0FjWWI3M582.png-wh_50]()
![10F(TH5Y}(3QM~@(HGDWF]S.png wKioL1jvA4PAJqXSAAAxWqlzXlk031.png-wh_50]()
可以看到,这个逻辑卷/dev/vg00/lv00的大小是309M。我们将这个逻辑卷/dev/vg00/lv00挂载到/data下面。复制一些数据到/data里面去。方便等下做试验
![}8YX]]@F@]I]`_B7}%[SFPT.png wKiom1jvA5KzNiu3AAAFFYY43_U096.png-wh_50]()
现在我们就为逻辑卷/dev/vg00/lv00来做快照
![7Y8(3JTL@MM35E)1DAR0@JH.png wKiom1jvA56SNWfCAAAN1lsWIms077.png-wh_50]()
执行lvscan查看创建好的逻辑卷
![$`L1JE@1I65Y3(NNP]$}W_V.png wKiom1jvA6rQyA_1AAAFEFZhGyY434.png-wh_50]()
可以看到/dev/vg00/lv00是原始逻辑卷,而/dev/vg00/lvsp00是快照
执行lvdisplay或lvs命令查看逻辑信息
![RPJMFD5GE]_]TD)`]11AUVW.png wKioL1jvA7fzP-uKAABF9a_5yBw717.png-wh_50]()
可以看到逻辑卷快照创建成功了,
注意:这个快照卷建好之后,是不需要格式化也不需要进行挂载的。格式化或挂载都会出现的错误提示的。
模拟将原逻辑卷中的数据删除
![6PZD0[_SHSR4GTHH)9GN)3U.png wKioL1jvA8ShIppQAAAHSDQ5Z0w387.png-wh_50]()
如何恢复原逻辑卷的数据?有两方式可以恢复删除的数据
方式一是先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
然后挂载逻辑卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常访问数据了
![C0~C5NLQGMZG93FYZR%FB5X.png wKiom1jvA9DT0HKKAAAPa0ylzsg987.png-wh_50]()
方式二可以通过 lvconvert把快照的内容重新写回原有的lvm
先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
执行lvconvert将快照的数据合并到原逻辑卷 #lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷,查看数据是否恢复成功
![5BT]WQA9`1`F`QDZ_[QVXMY.png wKiom1jvA9-CcKU0AAAdOvMyD3w120.png-wh_50]()
注:当我们把原逻辑卷里面的数据给删除了,逻辑卷快照里面的数据还在,所以可以用快照恢复数据。而当我们在逻辑卷里面添加数据,快照是不会发生改变的,是没有这个文件的。因为快照只会备份当时逻辑卷的一瞬间。
使用ssm(系统存储管理器)进行逻辑管理
逻辑卷管理器(LVM)是一种极其灵活的磁盘管理工具,它让用户可以从多个物理硬驱创建逻辑磁盘卷,并调整大小,根本没有停机时间。最新版本的CentOS/RHEL 7现在随带系统存储管理器(又叫ssm),这是一种统一的命令行界面,由红帽公司开发,用于管理各种各样的存储设备。目前,有三种可供ssm使用的卷管理后端:LVM、Btrfs和Crypt
准备ssm,在CentOS/RHEL7上,你需要首先安装系统存储管理器。可以通过rpm或yum工具安装
![449U$9ZT4KNGF}]MG)NBL[S.png wKioL1jvA-mzC6T5AAAcqFS2cC8067.png-wh_50]()
首先我们来检查关于可用硬盘和LVM卷的信息。下面这个命令将显示关于现有磁盘存储设备、存储池、LVM卷和存储快照的信息。
#ssm list
![UM7S%KSM7~~@{~ES]Q(VEX8.png wKioL1jvA_egfpuVAABk_uBP8qo743.png-wh_50]()
在这个例子中,有两个物理设备(“/dev/sda”和“/dev/sdb”)、二个存储池(“rhel和vg00”),以及存储池rhel中创建的两个LVM卷(“dev/rhel/root”和“/dev/rhel/swap”),存储池vg00中创建的一个LVM卷(/dev/vg00/lv00)。
下面来讲解如何通过ssm创建、管理逻辑卷和逻辑卷快照
至少新添加一块磁盘,执行ssm命令显示现有磁盘存储设备、存储池、LVM卷的信息
![X)93Z(ND2_OBLB0~XP{FT2Q.png wKioL1jvBAiAFl2qAAAmvxUlO9Q421.png-wh_50]()
可以看到有两块空闲磁盘(sdc、sdd)
创建新的LVM池/卷
在这个示例中,不妨看一下如何在物理磁盘驱动器上创建新的存储池和新的LVM卷。如果使用传统的LVM工具,整个过程相当复杂,需要准备分区,需要创建物理卷、卷组、逻辑卷,最后还要建立文件系统。不过,若使用ssm,整个过程一蹴而就!
下面这个命令的作用是,创建一个名为mypool的存储池,创建存储池中名为lv01的500MB大小的LVM卷,使用XFS文件系统格式化卷,并将它挂载到/mnt/test下。
![0]T5~CJN4%Y2FQ}B``EL)00.png wKioL1jvBBKzUvP8AABS-MhPBBc547.png-wh_50]()
验证ssm创建的结果
![1M@2QGQRFLJ$I3FYD3GY228.png wKiom1jvBB_j0PRVAABB6W6wnww364.png-wh_50]()
或执行ssm list
![BNN%4JN[}%18$@T[LKDZ[0G.png wKiom1jvBCvQFB0rAABpH7gl17Q215.png-wh_50]()
将物理磁盘(sdd)添加到LVM池
![`}~[SWUVK6_V~OH`RZIOCIT.png wKiom1jvBDiwHLnvAAAtokO5Xc8609.png-wh_50]()
新设备添加到存储池后,存储池会自动扩大,扩大多少取决于设备的大小。检查名为centos的存储池的大小执行ssm list查看
![TA(L9`ZX78P4J`MG2VQAMMQ.png wKiom1jvBEKgOrpxAABGght_qGI210.png-wh_50]()
接下来,我们来扩大现有的LVM卷
扩大LVM卷,不妨将/dev/mypool/lv01卷的大小增加300MB。
如果你在存储池中有额外空间,可以扩大存储池中现有的磁盘卷。为此,使用ssm命令的resize选项
![I5V9UF]][_1JFO8XU)8T8EN.png wKioL1jvBE_T_-elAABKT1IDa7E348.png-wh_50]()
执行ssm list查看扩大后逻辑卷
![LDWG%N1%%E~GJLE9CK_1S32.png wKioL1jvBFugGG_kAAAoTS2wGfw635.png-wh_50]()
可以看到逻辑卷扩大到800M,即在原来的基础上增加了300M,但文件系统大小(Fs size)还没有改变,仍然是原来的大小。
为了让文件系统识别增加后的卷大小,你需要“扩大”现有的文件系统本身。有不同的工具可用来扩大现有的文件系统,这取决于你使用哪种文件系统。比如说,有面向EXT2/EXT3/EXT4的resize2fs、面向XFS的xfs_growfs以及面向Btrfs的btrfs,不一而足。
在这个例子中,我们使用CentOS 7,XFS文件系统在默认情况下创建。因而,我们使用xfs_growfs来扩大现有的XFS文件系统。
![KESAIQC@}4$@NF]OY2LDM)C.png wKiom1jvBGfiAz4dAAAt22GUcao499.png-wh_50]()
扩大XFS文件系统后,查看结果
![%6GD9$M8KV~S3872R4LRSDY.png wKiom1jvBHWjeorVAAApob77GAw980.png-wh_50]()
或执行#df -hT
![_R]R~PL8[IQ{4O(U`ETS((C.png wKioL1jvBIHjADFoAAAj5odr400167.png-wh_50]()
可以看到LVM扩展成功
逻辑卷快照
对现有的LVM卷(比如/dev/mypool/lv01)生成快照
一旦快照生成完毕,它将作为一个特殊的快照卷存储起来,存储了原始卷中生成快照时的所有数据
![QTV2BIP{R~LAX4%Z397`P31.png wKioL1jvBJKydF19AAAOid16mCU775.png]()
![EFVV259%SM3(~H9B_1W}NOK.png wKiom1jvBJ2SqHqiAAAZkb5t_qg203.png]()
![0W3~ACD$HO]}E[L~9BD2{RB.png wKiom1jvBKvjXPiuAAAXDHeQyj4523.png]()
每次原LVM中的数据更改,都可以手动执行ssm snapshot生成快照
当原LVM数据损坏就可以用快照恢复了
方式一是先将原逻辑卷卸除挂载 #umount /dev/vg00/lv00
然后挂载逻辑卷快照即可 #mount /dev/vg00/lvsp00 /data,就可以正常访问数据了
![IIDWJ%2~L@V[75V0%0$H(W4.png wKioL1jvBLzAiJ-yAAAWFdjK6AE133.png-wh_50]()
方式二可以通过 lvconvert把快照的内容重新写回原有的lvm
先将原逻辑卷卸除挂载#umount /dev/vg00/lv00
执行lvconvert将快照的数据合并到原逻辑卷 #lvconvert --merge /dev/vg00/lvsp00
最后挂载原逻辑卷,查看数据是否恢复成功
![D)~C%9P@7_VL}22FTMN(V[5.png wKiom1jvBMfBVBBQAAAvT2rhekg593.png-wh_50]()
有磁ssm的具体用法可以参考ssm的帮助手删页
如:删除LVM卷#ssm remove <volume>
删除存储池#ssm remove <pool-name>
十、ISCSI网络存储服务
iscsi实现网络存储,提供存储端叫 target,使用存储端叫 initiator。target 上可以提供存储空间,initiator负责连接ISCSI设备,在ISCSI设备中创建文件系统,以及存取数据,在 initiator 上看上去是多了一块硬盘。
服务器端配置target,准备做为LUN发布的ISCSI的存储设备(可以是一整块磁盘、一个分区、逻辑卷或RAID阵列)。
本人事先准备好两个逻辑卷作为ISCSI的存储设备。
![8}[LMRZ~X[X)3$X5O55Z531.png wKioL1jvBN3SSmcYAAACpMeGGXE092.png-wh_50]()
首先安装target
![B5C%U1U]P``)O[(_(4_9}CD.png wKiom1jvBOjBwmf7AAABb6VXvGs961.png-wh_50]()
启动服务
![%CMPW))4U6@NWDADQ9DHLZD.png wKioL1jvBPPSXqJuAAARio0UHWg640.png-wh_50]()
设置防火墙
![%CMPW))4U6@NWDADQ9DHLZD.png wKioL1jvBQWREluQAAARio0UHWg100.png]()
![IJSLWOTU~Y1}7H26YHSYF)N.png wKiom1jvBRiwr9LPAAAO983O0D0937.png]()
执行targetcli工具
![DO0O1X3E0`[@PAX1)4GAW4W.png wKioL1jvBSnwqtPgAAAPMKUt_6Y599.png]()
注:输入help可以查看targetcli的帮助
![DM8P}3AH(I7_`@A0Z~%GAB2.png wKioL1jvBTXyEd9fAAAX4CxDbmo519.png-wh_50]()
基本思路:
先把准备共享的块做出来,创建一个target,在target上创建lun,一个lun连接一个块
1、创建块即给要发布的逻辑卷起个名字
![4}ME2NU20J99IS9Z8O``N%K.png wKiom1jvBV7B8jokAAAF0siT0-I924.png]()
注:给/dev/vg00/lv00逻辑卷起个名字叫server0.disk1;给/dev/mypool/lv01逻辑卷起个名字叫server0.disk2
查看块如下图所示:
![XAG6ADP[Z}R1(4K~XL}`}}7.png wKioL1jvBWygftOGAAAn1_eI-fo648.png]()
2、创建 iqn 名字即创建ISCSI对象
![K`SF`PVTFY%%4WW]33I]9MA.png wKioL1jvBXfByKK6AAAEMiHegP4893.png]()
查看ISCSI对象如下图所示:
![INEIQ}ZHTO3AV~J`V)R[%4S.png wKiom1jvBYSCwwPNAABJwRoIk3w768.png]()
3、设置ACL即将ISCSI对象与客户端IP或主机名绑定
![@2PXGW0{SEF86S{PKIR)YA9.jpg wKioL1jvBZLi4mPEAAArhsxZZso342.jpg]()
注意:iqn.2015-06.com.benet:client1是 initiator 的名字,需要在客户端中设置的。
4、创建LUN并绑定块
![Z_D5LC_V4A}GM@P7ALTOH5X.png wKiom1jvBZzx3-0EAAAhQrN_0EY231.png]()
一个ISCSI对象可以创建多个LUN(LUN0、LUN1……)。
执行ls查看
![)W`{D%7~9%8~PF[ATPEPS3B.png wKiom1jvBazBAdVFAABxk_pJnkY921.png]()
启动监听程序
![JA[1UX78MLMQY9}7%L7(X5C.png wKioL1jvBbmSd7gEAAAjtgTMSSI260.png]()
注:172.24.3.5是ISCSI服务端网卡IP
![]D}U[(%EKD8]~PZ_GVMJ9`V.png wKioL1jvBcSy4QuTAAB1cY0reME439.png-wh_50]()
可以查看/etc/target/saveconfig.json配置文件,该配置文件保存着ISCSI的配置。
在initiator端的配置:
1、安装软件
#yum install -y iscsi-initiator-utils
2、给 initiator 起个名字
#vim /etc/iscsi/initiatorname.iscsi
内容如下:
![92F%YY`KA~_9_$F]G5X$~3M.png wKiom1jvBi-yF1QNAAADXTltEGU980.png]()
3、启动服务
#systemctl enable iscsi; systemctl start iscsi
4、发现存储
#iscsiadm -m discovery -t st -p 172.24.3.5
![ZR%@D0(}2WD[T1%NOHEE%~B.png wKioL1jvBkOzwBuLAAAUahezB5M291.png-wh_50]()
5、登录存储
#iscsiadm -m node -T iqn.2015-06.com.benet:disk1 -p 172.24.3.5 -l
![RX4A}8WMA__B(VZE85KMC$R.jpg wKiom1jvBlyxWyflAAAj2e7JBvo727.jpg]()
注:-l表示连接ISCSI目标;-u表示断开和ISCSI目标的连接
验证客户端ISCSI连接
![CU~]F3RA4_1[A~_5(G0{[`9.png wKioL1jvBmeyQHPNAAAcYQ_kxjc496.png]()
剩下来的操作就和管理本地磁盘一样了。