Linux 磁盘扩容
基于 LVM 的磁盘扩容一般分为 2 种情况:
- 通过添加新的硬盘到卷组
- 扩容现有的磁盘空间。(比如原逻辑磁盘为 3T,现在扩容为 5T)
对于第一种情况,对每一个,新添加的硬盘创建 PV,并将新建的 PV 加入到 VG,然后对 LV 做扩容,最后对文件系统做扩容。大致过程如下:
1 | //将硬盘转为 PV 格式,以便 LVM 使用(推荐使用全盘的分区,而不是整个硬盘) |
对于第二种情况,将剩余空间加入到最后一个分区,扩容 PV,扩容 LV,最后文件系统扩容。过程如下:
基于 LVM 的磁盘扩容一般分为 2 种情况:
对于第一种情况,对每一个,新添加的硬盘创建 PV,并将新建的 PV 加入到 VG,然后对 LV 做扩容,最后对文件系统做扩容。大致过程如下:
1 | //将硬盘转为 PV 格式,以便 LVM 使用(推荐使用全盘的分区,而不是整个硬盘) |
对于第二种情况,将剩余空间加入到最后一个分区,扩容 PV,扩容 LV,最后文件系统扩容。过程如下:
1.端口种类
设备侧端口类型:主要指和交换机相连的终端设备
N_Port:点对点模式的端口(用与和交换机连接)
NL_Port:仲裁环模式的端口(两个终端设备之间直连:如存储与服务器直连)
交换机常用端口类型:
F_Port:一种交换连接端口,用于连接两个 N_port
E_Port:扩展端口,用于和其它交换机建立互联的端口
G_Port:通用端口,并非端口的最终状态,根据连接的方式可在 F_Port 和 E_Port 之间进行切换
2.ZONE
zone 是存储交换机中一种逻辑配置。通过将指定的设备加入 zone,从而允许 zone 内设备之间互相通信。默认没有 zone 配置,设备之间都可以互相通信(不推荐如此使用,会有性能影响,也无法做定制化的管理)
zone 的实现方式有2种,一种称为硬 zone 一种为软 zone
硬 zone 基于 Domain ID 与端口号与终端配对,即使终端上的设备改变也不会影响 zone 的使用。例如更换主机的 hba 卡,交换机上无需做任何更改,但如果更换交换机端口需要更改配置
软 zone 基于终端的 wwpn / wwnn 号来配对,不关心设备接到交换机的那个端口上。当设备从一个端口移动到另一个端口时,不需要进行任何更改。但如果主机更换 hba 卡,需根据新卡的 wwn 号来更改配置。(如果有启用 NPIV 的主机,只能使用软 zone)
SSH端口转发的作用
SSH端口转发的分类:本地转发,远程转发,动态转发。分别如下。
本地转发指的是,将 SSH 服务当做一个跳板机(tunnel-host),把本地指定端口的流量
都通过跳板机发送到特定的目标上
当有多余的 VCSA 想要取消链接模式的时候可以使用以下方法:(适用于7.0版本)
1 | /usr/lib/vmware-lookupsvc/tools/lstool.py list --url http://localhost:7090/lookupservice/sdk --type vcenterserver > /tmp/psc_services.txt --no-check-cert |
1 | Name: AboutInfo.vpx.name |
启用多路径,添加内核模块到 /boot/loader.conf 文件
1 | geom_multipath_load="YES" |
简单使用方法
手动方法
1 | gmultipath create -Av name /dev/da1 /dev/da2 ... |
自动方法
启用 lagg ,编辑 /boot/loader.conf 文件添加以下行
1 | if_lagg_load="YES" |
支持的聚合协议类型:
failover:只通过活动端口发送流量。如果主端口变为不可用,使下一个端口变为活动。第一个添加的接口为主接口, 任何之后添加的接口为失效转移设备。 默认只接受活动端口的流量,可以通过 sysctl 设置 net.link.lagg.failover_rx_all 变量为一个非零值来改变此限制
lacp:支持IEEE 802.1AX 链路聚合控制协议与标记协议。链路聚合组(LAG)由相同速率的端口组成,且设置为全双工。流量在端口组内平衡
loadbalance:根据散列协议头信息平衡活动端口上的传出流量,并接受来自任何活动端口的传入流量。此为静态设置,不会监视链路状态。散列包括 MAC 源和目标地址,以及VLAN标记(如果可用)以及IP源和目标地址
roundrobin:循环调度输出流量通过所有活动端口,接受任何活动端口的输入流量。使用 roundrobin 模式可能导致无序数据包到达客户端
broadcast:将帧发送到 LAG 的所有端口,并在 LAG 的任何端口上接收帧
none:什么也不做,禁用任何流量,而不会禁用lagg接口本身
配置 lagg
1 | ifconfig lagg0 create |
/etc/fstab 配置文件用以永久的挂载文件系统,文件中的每行定义一个文件系统的挂载点。它包含六个字段,用空格分隔:
1.由 UUID 或磁盘标签或 /dev 目录的路径识别的块设备
2.挂载该设备的目录
3.该设备的文件系统
4.文件系统的挂载选项。
5.dump 工具的备份选项,0为不备份
6.fsck 工具的检查顺序,0为不检查,1提供给根分区,其它分区为2,表示检查
例如:
块设备 | 挂载点 | 文件系统 | 选项 | backup | 检查 |
---|---|---|---|---|---|
/dev/sda1 | /boot | xfs | defaults | 0 | 0 |
常用挂载选项有:
选项 | 描述 |
---|---|
async | 启用异步输入与输出操作 |
auto | 自动挂载文件系统 |
defaults | async,exec,nouser,rw,suid,dev,auto的别名 |
exec | 允许在特定文件系统中执行程序 |
loop | 将镜像挂载为 loop 设备 |
noauto | 开机不自动挂载 |
noexec | 不允许执行程序 |
nouser | 不允许普通用户挂载和卸载文件系统 |
ro | 只读的方式挂载 |
rw | 以读写的方式挂载 |
user | 允许普通用户挂载和卸载文件系统 |
nosuid | 不允许有 suid 属性 |
_netdev | 系统联网后在挂载 |
挂载示例:
1自动执行过程
当系统检测到硬盘故障时,会将其标记为 degraded 状态。默然情况下,系统会自动发起 servicemag start 进程,将坏盘的数据重构到热备空间。在重构过程中,使用 showpd -s 可以看到正在 relocating,重构结束后,硬盘被标记为failed。此时换上新的硬盘,系统自动发起 servicemag resume 进程,将坏盘的数据回迁到新的硬盘
2手动执行
当系统没有自动执行 servicemag start 或者状态显示正常,但有存在风险的硬盘需要替换时,需要手动执行。过程如下:
LVM 是物理硬盘与文件系统之间添加的一个抽象层,用以屏蔽下层的硬盘布局,使得文件系统突破单个硬盘的限制。文件系统不在是对单个物理硬盘直接操作,而是通过逻辑卷,使得文件系统可以跨越多个物理硬盘。
使用 lvm 时有些基本术语需要知道:
pv 物理卷 (physical volume):lvm 的基本存储块设备,一个分区或整个磁盘都可以
vg 卷组 (volume group):一个或多个 pv 组成的存储池
lv 逻辑卷 (logical volume):从 vg 中分配的存储空间,用以给文件系统使用
pe 物理块 (physical extent):物理卷(pv)中可分配的最小存储单元,pe 的默认值为 4MB
le 逻辑块 (logical extent):逻辑卷中用于分配的最小存储单元,逻辑块的大小取决于逻辑卷所在卷组中的物理块大小。
架构可以参考如下图
1 | graph BT |
lvm卷的创建可以使用整个硬盘也可以使用分区,使用整个硬盘直接使用 pvcreate 命令即可,使用分区需使用 parted 先分好区。推荐使用分区,因为直接使用整个硬盘,一些磁盘工具会识别不了,当其他人维护时可能出错。比如:使用整盘以及分区时 fdisk 的显示如下
1 | [root@localhost ~]# fdisk -l /dev/sdb |
使用分区时可以清晰的看出磁盘类型为 lvm 的。以及在一些 lvm + raid 的使用中,当更换 raid 中某块损坏的硬盘时,新盘必须大于或等于损坏的硬盘,否则无法完成重建的过程。但即使同一厂商相同型号的硬盘有时容量上也会有细微差别。通过在磁盘末尾保留一部分空间,可以消除磁盘容量上的细微差异。
使用 parted 格式化磁盘如下
当存储与服务器映射时,一个存储上的卷可以有多条 I/O 路径。在操作系统上看就会有多个硬盘,但这些硬盘实际指向的是同一个卷。配置多路径软件会将这些 I/O 路径聚合,并生成由聚合路径组成的新设备,以提供冗余(主备模式)或改进的性能(轮询模式)
当被多路径控制的新设备,会在 /dev/mapper 和 /dev/ 目录中生成这些设备。所有格式为 /dev/dm-x 的设备都仅用于内部使用,管理员不应直接使用。每个多路径设备都有一个全球标识符(WWID),默认情况下会将多路径的设备名设为它的 WWID。可以通过修改配置文件的 user_friendly_names 选项,将设备别名设置为 mpath-n 的节点名称
配置文件概述
多路径配置文件可包含以下部分,并不是每个部分都需要
黑名单(blacklist)
不做为多路径的设备列表
blacklist_exceptions
根据 blacklist 部分的参数,列出不在黑名单中的多路径设备
defaults
DM 多路径的常规默认配置
multipaths
各独立多路径设备的特性设置。这些数值覆盖了配置文件中的 defaults 和 devices 中指定的数值
devices
各个存储控制器的设置。覆盖了配置文件中 defaults 部分指定的数值。如果要使用不是默认支持的存储阵列,则可能需要创建 devices 子部分。
多路径配置设置
属性 | 描述 |
---|---|
polling_interval | 以秒为单位指定两次路径检查之间的间隔。 对正常工作的路径,两次检查的间隔会逐渐 增加到 polling_interval 的四倍。 |
find_multipaths | 定义设置多路径的方法。如果设置为 yes, DM 将不会尝试为未列入黑名单的每条路径 创建设备。相反,只有满足以下三个条件之一时,多路径才会创建设备: 1.不在黑名单的两个路径的 wwid 相同 2.使用 multipath 命令强制创建 3.一个路径的 wwid 与之前已经创建的多路径设备相同 |
path_selector | 决定下一个 I/O 操作所使用路径的算法。可能的取值包括: round-robin 0:循环每个路径,向每个路径发送同样数量的 I/O。此为默认值 queue-lenght 0:将下一组 I/O 发送到具有最少未处理 I/O 请求的路径 service-time 0:将下一组 I/O 发送到具有最短预计服务时间的路径,这是由未处理 I/O 的总量除以每个路径的相对流量决定的 |
path_grouping_policy | 路径冗余策略,可能的值包括: failover:在一个设备组中,只有一条路径有优先权 multibus:所有有效路径具有相同优先级 |
prio | 路径优先级获取方法,可能的取值: const:所有路径优先级为 1 emc:为 emc 阵列生成优先权 alua:根据 SCSI-3 ALUA 设置生成优先级,在较新的系统中推荐设置为 alua ontap:为 NETAPP 生成优先级 |
path_checker | 检测路径状态的方法,可能的取值: readsector0:读取设备的第一扇区 tur:在设备中执行 TEST UNIT READY 命令 directio:直接 I/O 的方式检查链路状态。此为默认方式 |
failback | 故障恢复的方法,可能的取值: immediate:从高优先级的路径中选择一条 manual:手动恢复 followover:当故障路径恢复活跃时自动恢复 |
rr_min_io_rq | 使用 request-based DM 指定切换到当前路径组中 下一个路径前路由到该路径的 I/O 请求数。 默认值为 1 |
rr_weight | 路径的权重,默认值为 uniform 所有路径权重相同 |
no_path_retry | 指定系统在禁用系统队列前, 尝试使用失败路径的次数,可能的取值: fail:立即失败,无需排队 queue:在路径固定前一直排队 默认值为:0 |
user_friendly_names | 如果设为 yes,即指定系统使用 /etc/multipath/bindings 为该多路径分配一个持久且唯一的别名,格式为 mpath-n。 如果设置为 no,则使用 wwid 为路径别名 |
max_fds | multipath 及 multipathd 可打开的最大文件描述符数 |
安装及使用
1 | dnf install device-mapper-multipath \\安装多路径软 |