multipath

目录

文章目录

    • 目录
    • 什么是multipath
    • multipath配置文件
      • demo1(最小化配置)
      • demo2
      • demo3
      • 字段解析
    • 命令
      • **案例:查看多路径设备的信息。(常用)**
      • **案例:刷新multipath状态**
      • 案例:`-v2/-v3` 打印信息
      • 案例:查看当前活动路径的设备信息
      • 案例:查看硬盘的 WWID
      • 案例:查看状态 `multipath -d -l`
    • ==工作实战==
      • 实战:multipath配置-2023.12.5(测试成功)
      • 1、安装
      • 2、配置
      • 3、启动并查看multipath服务
      • 4、验证多路径
      • 5、交付前信息收集
      • 说明
    • 参考
    • 关于我
    • 最后

什么是multipath

multipath是linux系统中用于实现设备路径冗余和负载均衡的一种机制。通过multipath机制,能够实现在系统中同一个设备可以存在多条路径,并且可以通过系统内部自己实现的算法,实现这些路径上的读写或访问负载均衡。同时,如果某些路径出现故障,系统也可以自动切换到其他可用的路径上。这样,可以提高系统的可靠性以及存储的效率。

multipath配置文件

要配置multipath,需要使用multipath.conf配置文件。该文件位于/etc/multipath.conf中。该文件中包含了一些关于multipath的基本参数设置,同时还包含了一些不同存储设备的类型信息以及对应的路径优先级,这些参数可以通过修改multipath.conf来实现。

demo1(最小化配置)

[root@docker ~]#cat /etc/multipath.conf
defaults {user_friendly_names yesfind_multipaths yes
}

demo2

下面是multipath.conf文件的一个示例:

defaults {user_friendly_names yesfind_multipaths yespath_grouping_policy group_by_priopath_selector "round-robin 0"failback immediaterr_min_io 100
}blacklist {devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"devnode "^hd[a-z][[0-9]*"devnode "^cciss!c[0-9]*d[0-9]*"devnode "^ssv-(.*)(zer|tic)"
}blacklist_exceptions {wwid ".*"
}devices {device {vendor "NETAPP"product "LUN"path_grouping_policy group_by_prioprio "alua"features "1 queue_if_no_path"hardware_handler "1 alua"}
}

可以看到,multipath.conf文件包括了以下几个部分:

  • defaults: 这个部分包含了一些默认设置,如user_friendly_names(指是否启用友好设备名称)、find_multipaths(指是否查找多路径)等。
  • blacklist: 这个部分包含了需要屏蔽的设备类型或名称。在上面的示例中,会屏蔽一些设备类型和名称,如ram、raw、loop、fd等。
  • blacklist_exceptions: 这个部分包含了不需要屏蔽的设备类型或名称。在上面的示例中,所有的设备都不需要屏蔽。
  • devices: 这个部分包含了需要配置的设备信息。在上面的示例中,我们定义了一个设备,并指定了它的厂商、产品名称以及一些其他参数。

demo3

blacklist {wwid    3600508b1001c044c39717726236c68d5
}defaults {user_friendly_names       yespolling_interval            10queue_without_daemon    noflush_on_last_del          yeschecker_timeout 120
}devices {device {vendor                 "3par8400"product                "HP"path_grouping_policy    asmdiskno_path_retry           30prio                    hp_swpath_checker            turpath_selector           "round-robin 0"hardware_handler       "0"failback                15}
}multipaths {multipath {wwid    360002ac0000000000000000300023867alias    mpathdisk01}
}如果有两个或者多个就再加一条即可。
multipaths {multipath {wwid    360002ac0000000000000000400023867alias    mpathdisk02}
}

字段解析

这段代码是一个 multipath.conf 配置文件,用于配置 Linux 操作系统中的多路径设备。以下是每个字段的含义:

blacklist:定义了一些被禁用的设备,只要 WWID 匹配了列表中的任何一个,它就会被黑名单所拒绝。
wwid:唯一标识多路径设备的 32 位十六进制字符串。
defaults:定义了一些默认设置,这些设置可以在其他部分被重写。
user_friendly_names:使多路径设备更易于理解和使用。
polling_interval:检查路径状态的频率(以秒为单位)。
queue_without_daemon:定义了当 multipathd 守护程序处于未运行状态时处理 I/O 请求的行为。
flush_on_last_del:在删除最后一个路径时是否刷新 IO 缓存。
checker_timeout:指定检查器超时的时间。
devices:包含一个或多个
device 块,每个块都描述了一个特定的多路径设备。
device:描述了一个多路径设备及其属性。
vendor、product:设备的制造商和产品名称。
path_grouping_policy:指定将路径分组到哪个组中。
no_path_retry:当无法访问某个路径时进行重试的次数。
prio:指定优先级算法,如 alua、emc、hp_sw 等。
path_checker:指定 IO 路径检查器的类型。
path_selector:指定选择路径的算法。例如,“round-robin 0” 表示依次将请求分发到每个路径上。
hardware_handler:指定用于处理硬件错误的脚本或程序。
failback:指定多长时间后进行故障切换。
multipaths:包含一个或多个
multipath 块,每个块都描述了一个设备的多个路径。
alias:为指定的多路径设备定义别名。

prio 是 multipath.conf 配置文件中的一个关键字,表示优先级算法。它可以指定多路径设备使用哪种算法来选择 I/O 请求路径。例如:

prio alua

以上配置指定了使用 Asymmetric Logical Unit Access(ALUA) 算法进行路径选择。这个算法主要用于 SAN 存储环境下,能够更好地处理存储阵列并发访问的问题。

除了 ALUA,还有其他一些可用的优先级算法,如:
emc:用于与 EMC 存储阵列配合使用。
hp_sw:用于与 HP 存储阵列配合使用。
rdac:用于与 LSI 存储阵列配合使用。

如果没有指定 prio 设置,则默认为 const(优先选择第一个路径)算法,或者是上层应用程序自己控制路径选择。

命令

multipath工具提供了一些命令行命令来实现对设备路径的操作。以下是一些常用命令:

  • multipath -ll: 查看多路径设备的信息。(常用)
  • multipath -l: 查看当前活动路径的设备信息。
  • multipath -F: 刷新multipath状态。(常用)
  • multipath -f: 阻止设备出现在多路径设备列表中。
  • multipath -r: 重新配置multipath。

除此之外,还有很多其他的命令可以使用。可以通过man multipath试图获取更多的信息。

案例:查看多路径设备的信息。(常用)

用以下命令列出系统中所有的多路径设备及其 WWID

multipath -ll

这个命令将显示多路径设备的别名、WWID 和路径等信息。

[root@NSR-db1 ~]# multipath -ll
mpathd (360060e80072be00000302be000000280) dm-10 HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:3 sdf 8:80  active ready running|- 7:0:1:3 sdj 8:144 active ready running|- 8:0:0:3 sdn 8:208 active ready running`- 8:0:1:3 sdr 65:16 active ready running
mpathc (360060e80072be00000302be00000027f) dm-9 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:2 sde 8:64  active ready running|- 7:0:1:2 sdi 8:128 active ready running|- 8:0:0:2 sdm 8:192 active ready running`- 8:0:1:2 sdq 65:0  active ready running
mpathb (360060e80072be00000302be00000027e) dm-8 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:1 sdd 8:48  active ready running|- 7:0:1:1 sdh 8:112 active ready running|- 8:0:0:1 sdl 8:176 active ready running`- 8:0:1:1 sdp 8:240 active ready running
mpatha (360060e80072be00000302be00000027a) dm-7 HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:0 sdc 8:32  active ready running|- 7:0:1:0 sdg 8:96  active ready running|- 8:0:0:0 sdk 8:160 active ready running`- 8:0:1:0 sdo 8:224 active ready running
[root@NSR-db1 ~]# 

案例:刷新multipath状态

multipath -F: 刷新multipath状态。(常用)

  -v lvl  verbosity level. 0 no output. 1 print created devmap names only. 2 default verbosity. 3 print debug information#刷新
multipath -F#刷新
multipath -v2 -F
multipath -v2#重新扫描设备 multipath -v3
multipath -v3 -F
multipath -v3
[root@NSR-db1 ~]# multipath -F[root@NSR-db1 ~]# multipath -v2 -F
[root@NSR-db1 ~]# multipath -v3 -F
Dec 05 14:37:55 | set open fds limit to 1048576/1048576
Dec 05 14:37:55 | loading /lib64/multipath/libcheckdirectio.so checker
Dec 05 14:37:55 | loading /lib64/multipath/libprioconst.so prioritizer
Dec 05 14:37:55 | unloading const prioritizer
Dec 05 14:37:55 | unloading directio checker
[root@NSR-db1 ~]# 

案例:-v2/-v3 打印信息

  -v lvl  verbosity level. 0 no output. 1 print created devmap names only. 2 default verbosity. 3 print debug information
[root@NSR-db1 ~]# multipath -v2
create: mpatha (360060e80072be00000302be00000027a) undef HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef|- 7:0:0:0 sdc 8:32  undef ready running|- 7:0:1:0 sdg 8:96  undef ready running|- 8:0:0:0 sdk 8:160 undef ready running`- 8:0:1:0 sdo 8:224 undef ready running
create: mpathb (360060e80072be00000302be00000027e) undef HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef|- 7:0:0:1 sdd 8:48  undef ready running|- 7:0:1:1 sdh 8:112 undef ready running|- 8:0:0:1 sdl 8:176 undef ready running`- 8:0:1:1 sdp 8:240 undef ready running
create: mpathc (360060e80072be00000302be00000027f) undef HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef|- 7:0:0:2 sde 8:64  undef ready running|- 7:0:1:2 sdi 8:128 undef ready running|- 8:0:0:2 sdm 8:192 undef ready running`- 8:0:1:2 sdq 65:0  undef ready running
create: mpathd (360060e80072be00000302be000000280) undef HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=undef
`-+- policy='service-time 0' prio=1 status=undef|- 7:0:0:3 sdf 8:80  undef ready running|- 7:0:1:3 sdj 8:144 undef ready running|- 8:0:0:3 sdn 8:208 undef ready running`- 8:0:1:3 sdr 65:16 undef ready running
[root@NSR-db1 ~]# [root@NSR-db1 ~]# multipath -v3
Dec 05 14:39:09 | set open fds limit to 1048576/1048576
Dec 05 14:39:09 | loading /lib64/multipath/libcheckdirectio.so checker
Dec 05 14:39:09 | loading /lib64/multipath/libprioconst.so prioritizer
Dec 05 14:39:09 | sda: not found in pathvec
Dec 05 14:39:09 | sda: mask = 0x3f
Dec 05 14:39:09 | sda: dev_t = 8:0
Dec 05 14:39:09 | sda: size = 937406464
Dec 05 14:39:09 | sda: vendor = PM8060- 
Dec 05 14:39:09 | sda: product = 1               
Dec 05 14:39:09 | sda: rev = V1.0
Dec 05 14:39:09 | sda: h:b:t:l = 0:0:0:0
Dec 05 14:39:09 | sda: path state = runningDec 05 14:39:09 | sda: 58350 cyl, 255 heads, 63 sectors/track, start at 0
Dec 05 14:39:09 | sda: serial = E274D1D3
Dec 05 14:39:09 | sda: get_state
Dec 05 14:39:09 | sda: detect_checker = 1 (config file default)
Dec 05 14:39:09 | sda: path checker = directio (internal default)
Dec 05 14:39:09 | sda: checker timeout = 45000 ms (sysfs setting)
Dec 05 14:39:09 | directio: starting new request
Dec 05 14:39:09 | directio: io finished 4096/0
Dec 05 14:39:09 | sda: directio state = up
Dec 05 14:39:09 | sda: uid_attribute = ID_SERIAL (internal default)
Dec 05 14:39:09 | sda: uid = 2d3d174e200d00000 (udev)
Dec 05 14:39:09 | sda: detect_prio = 1 (config file default)
Dec 05 14:39:09 | sda: prio = const (internal default)
Dec 05 14:39:09 | sda: prio args =  (internal default)
Dec 05 14:39:09 | sda: const prio = 1
Dec 05 14:39:09 | sdb: not found in pathvec
Dec 05 14:39:09 | sdb: mask = 0x3f
Dec 05 14:39:09 | sdb: dev_t = 8:16
Dec 05 14:39:09 | sdb: size = 4676648960
Dec 05 14:39:09 | sdb: vendor = PM8060- 
Dec 05 14:39:09 | sdb: product = raid10          
Dec 05 14:39:09 | sdb: rev = V1.0
Dec 05 14:39:09 | sdb: h:b:t:l = 0:0:1:0
Dec 05 14:39:09 | sdb: path state = running

案例:查看当前活动路径的设备信息

multipath -l: 查看当前活动路径的设备信息。

[root@NSR-db1 ~]# multipath -l
mpathd (360060e80072be00000302be000000280) dm-10 HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:3 sdf 8:80  active undef running|- 7:0:1:3 sdj 8:144 active undef running|- 8:0:0:3 sdn 8:208 active undef running`- 8:0:1:3 sdr 65:16 active undef running
mpathc (360060e80072be00000302be00000027f) dm-9 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:2 sde 8:64  active undef running|- 7:0:1:2 sdi 8:128 active undef running|- 8:0:0:2 sdm 8:192 active undef running`- 8:0:1:2 sdq 65:0  active undef running
mpathb (360060e80072be00000302be00000027e) dm-8 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:1 sdd 8:48  active undef running|- 7:0:1:1 sdh 8:112 active undef running|- 8:0:0:1 sdl 8:176 active undef running`- 8:0:1:1 sdp 8:240 active undef running
mpatha (360060e80072be00000302be00000027a) dm-7 HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:0 sdc 8:32  active undef running|- 7:0:1:0 sdg 8:96  active undef running|- 8:0:0:0 sdk 8:160 active undef running`- 8:0:1:0 sdo 8:224 active undef running
[root@NSR-db1 ~]# 

案例:查看硬盘的 WWID

使用以下命令来查看硬盘的 WWID:

sudo udevadm info --query=all --name=/dev/sdX | grep ID_SERIAL

将 /dev/sdX 替换为您要查看的磁盘设备,例如 /dev/sda 或 /dev/sdb。该命令将打印出设备的所有属性,然后使用 grep 命令过滤出包含 ID_SERIAL 的行,从而找到设备的 WWID。

案例:查看状态 multipath -d -l

-d      dry run, do not create or update devmaps
[root@NSR-db1 ~]# multipath -d -l
mpathd (360060e80072be00000302be000000280) dm-10 HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:3 sdf 8:80  active undef running|- 7:0:1:3 sdj 8:144 active undef running|- 8:0:0:3 sdn 8:208 active undef running`- 8:0:1:3 sdr 65:16 active undef running
mpathc (360060e80072be00000302be00000027f) dm-9 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:2 sde 8:64  active undef running|- 7:0:1:2 sdi 8:128 active undef running|- 8:0:0:2 sdm 8:192 active undef running`- 8:0:1:2 sdq 65:0  active undef running
mpathb (360060e80072be00000302be00000027e) dm-8 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:1 sdd 8:48  active undef running|- 7:0:1:1 sdh 8:112 active undef running|- 8:0:0:1 sdl 8:176 active undef running`- 8:0:1:1 sdp 8:240 active undef running
mpatha (360060e80072be00000302be00000027a) dm-7 HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=0 status=active|- 7:0:0:0 sdc 8:32  active undef running|- 7:0:1:0 sdg 8:96  active undef running|- 8:0:0:0 sdk 8:160 active undef running`- 8:0:1:0 sdo 8:224 active undef running
[root@NSR-db1 ~]# 

工作实战

这个是经过工作实际测试过的。

实战:multipath配置-2023.12.5(测试成功)

环境:

centos7.9

默认情况下,linux是没安装multipath服务的,需要我们手动安装。

1、安装

  • 安装multipath服务
yum install device-mapper-multipath
  • 注意:自己经实际测试,这里是不用将多路径软件添加至内核模块中,默认会自动添加的

[root@docker ~]#lsmod |grep multipath
dm_multipath           27792  0 
dm_mod                128595  10 dm_multipath,dm_log,dm_mirror

2、配置

  • 安装multipath软件后的现象
[root@docker ~]#multipath -ll
Dec 05 08:41:19 | DM multipath kernel driver not loaded
Dec 05 08:41:19 | /etc/multipath.conf does not exist, blacklisting all devices.
Dec 05 08:41:19 | A default multipath.conf file is located at
Dec 05 08:41:19 | /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
Dec 05 08:41:19 | You can run /sbin/mpathconf --enable to create
Dec 05 08:41:19 | /etc/multipath.conf. See man mpathconf(8) for more details
Dec 05 08:41:19 | DM multipath kernel driver not loaded
[root@docker ~]#
  • 继续处理,我们来看下提示文件/usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf的内容
[root@docker ~]#cat /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf
# This is a basic configuration file with some examples, for device mapper
# multipath.
#
# For a complete list of the default configuration values, run either
# multipath -t
# or
# multipathd show config
#
# For a list of configuration options with descriptions, see the multipath.conf
# man page### By default, devices with vendor = "IBM" and product = "S/390.*" are
### blacklisted. To enable mulitpathing on these devies, uncomment the
### following lines.
#blacklist_exceptions {
#	device {
#		vendor	"IBM"
#		product	"S/390.*"
#	}
#}### Use user friendly names, instead of using WWIDs as names.
defaults {user_friendly_names yesfind_multipaths yes
}
###
### Here is an example of how to configure some standard options.
###
#
#defaults {
#	polling_interval 	10
#	path_selector		"round-robin 0"
#	path_grouping_policy	multibus
#	uid_attribute		ID_SERIAL
#	prio			alua
#	path_checker		readsector0
#	rr_min_io		100
#	max_fds			8192
#	rr_weight		priorities
#	failback		immediate
#	no_path_retry		fail
#	user_friendly_names	yes
#}
###
### The wwid line in the following blacklist section is shown as an example
### of how to blacklist devices by wwid.  The 2 devnode lines are the
### compiled in default blacklist. If you want to blacklist entire types
### of devices, such as all scsi devices, you should use a devnode line.
### However, if you want to blacklist specific devices, you should use
### a wwid line.  Since there is no guarantee that a specific device will
### not change names on reboot (from /dev/sda to /dev/sdb for example)
### devnode lines are not recommended for blacklisting specific devices.
###
#blacklist {
#       wwid 26353900f02796769
#	devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
#	devnode "^hd[a-z]"
#}
#multipaths {
#	multipath {
#		wwid			3600508b4000156d700012000000b0000
#		alias			yellow
#		path_grouping_policy	multibus
#		path_selector		"round-robin 0"
#		failback		manual
#		rr_weight		priorities
#		no_path_retry		5
#	}
#	multipath {
#		wwid			1DEC_____321816758474
#		alias			red
#	}
#}
#devices {
#	device {
#		vendor			"COMPAQ  "
#		product			"HSV110 (C)COMPAQ"
#		path_grouping_policy	multibus
#		path_checker		readsector0
#		path_selector		"round-robin 0"
#		hardware_handler	"0"
#		failback		15
#		rr_weight		priorities
#		no_path_retry		queue
#	}
#	device {
#		vendor			"COMPAQ  "
#		product			"MSA1000         "
#		path_grouping_policy	multibus
#	}
#}

(默认multipath文件已经存在系统上了,需要我们使用以下命令来启用它)

[root@docker ~]#/sbin/mpathconf --enable

我们再次看下multipath的配置文件:

[root@docker ~]#cat /etc/multipath.conf
……
defaults {user_friendly_names yesfind_multipaths yes
}
……

3、启动并查看multipath服务

[root@docker ~]#systemctl enable multipathd --now
[root@docker ~]#systemctl status multipathd
● multipathd.service - Device-Mapper Multipath Device ControllerLoaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)Active: active (running) since 二 2023-12-05 08:45:24 CST; 1s agoProcess: 16025 ExecStart=/sbin/multipathd (code=exited, status=0/SUCCESS)Process: 16022 ExecStartPre=/sbin/multipath -A (code=exited, status=0/SUCCESS)Process: 16020 ExecStartPre=/sbin/modprobe dm-multipath (code=exited, status=0/SUCCESS)Main PID: 16028 (multipathd)Tasks: 6Memory: 2.2MCGroup: /system.slice/multipathd.service└─16028 /sbin/multipathd12月 05 08:45:24 docker systemd[1]: Starting Device-Mapper Multipath Device Controller...
12月 05 08:45:24 docker systemd[1]: Started Device-Mapper Multipath Device Controller.
12月 05 08:45:24 docker multipathd[16028]: path checkers start up###重启服务命令
systemctl restart multipathdcentos6用以下方式重启服务
/etc/init.d/multipathd restart
  • centos6 用以下方式
查看启动级别
chkconfig --list|grep multipathd
multipathd         0:off    1:off    2:off    3:off    4:off    5:off    6:off配置启动级别
chkconfig --level 2345 multipathd on
chkconfig --list|grep multipathd
multipathd         0:off    1:off    2:on    3:on    4:on    5:on    6:off

4、验证多路径

[root@docker ~]#multipath -ll

5、交付前信息收集

  • 2台机器信息

  • node1
[root@NSR-db1 ~]# lsblk 
NAME                   MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                      8:0    1  447G  0 disk  
├─sda1                   8:1    1 1000M  0 part  /boot
└─sda2                   8:2    1  446G  0 part  ├─sys_vg00-root_lv00 253:0    0  100G  0 lvm   /├─sys_vg00-swap_lv00 253:1    0   64G  0 lvm   [SWAP]├─sys_vg00-usr_lv00  253:2    0   10G  0 lvm   /usr├─sys_vg00-opt_lv00  253:3    0   20G  0 lvm   /opt├─sys_vg00-tmp_lv00  253:4    0   10G  0 lvm   /tmp├─sys_vg00-var_lv00  253:5    0   50G  0 lvm   /var└─sys_vg00-home_lv00 253:6    0  100G  0 lvm   /home
sdb                      8:16   1  2.2T  0 disk  
└─sdb1                   8:17   1  2.2T  0 part  /data1
sdc                      8:32   0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdd                      8:48   0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sde                      8:64   0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdf                      8:80   0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdg                      8:96   0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdh                      8:112  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdi                      8:128  0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdj                      8:144  0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdk                      8:160  0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdl                      8:176  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdm                      8:192  0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdn                      8:208  0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdo                      8:224  0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdp                      8:240  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdq                     65:0    0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdr                     65:16   0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
[root@NSR-db1 ~]# [root@NSR-db1 ~]# multipath -ll
mpathd (360060e80072be00000302be000000280) dm-10 HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:3 sdf 8:80  active ready running|- 7:0:1:3 sdj 8:144 active ready running|- 8:0:0:3 sdn 8:208 active ready running`- 8:0:1:3 sdr 65:16 active ready running
mpathc (360060e80072be00000302be00000027f) dm-9 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:2 sde 8:64  active ready running|- 7:0:1:2 sdi 8:128 active ready running|- 8:0:0:2 sdm 8:192 active ready running`- 8:0:1:2 sdq 65:0  active ready running
mpathb (360060e80072be00000302be00000027e) dm-8 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:1 sdd 8:48  active ready running|- 7:0:1:1 sdh 8:112 active ready running|- 8:0:0:1 sdl 8:176 active ready running`- 8:0:1:1 sdp 8:240 active ready running
mpatha (360060e80072be00000302be00000027a) dm-7 HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:0 sdc 8:32  active ready running|- 7:0:1:0 sdg 8:96  active ready running|- 8:0:0:0 sdk 8:160 active ready running`- 8:0:1:0 sdo 8:224 active ready running[root@NSR-db1 ~]# ls /dev/sd
sda   sda1  sda2  sdb   sdb1  sdc   sdd   sde   sdf   sdg   sdh   sdi   sdj   sdk   sdl   sdm   sdn   sdo   sdp   sdq   sdr   
[root@NSR-db1 ~]# ls /dev/sd[root@NSR-db1 ~]# fdisk -lDisk /dev/sda: 480.0 GB, 479952109568 bytes, 937406464 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: 0x000d0e82Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2050047     1024000   83  Linux
/dev/sda2         2050048   937406463   467678208   8e  Linux LVM
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.Disk /dev/sdb: 2394.4 GB, 2394444267520 bytes, 4676648960 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: C94C497D-46C4-47D8-85B6-3C28768F5470#         Start          End    Size  Type            Name1           34   4676647007    2.2T  Microsoft basic primaryDisk /dev/mapper/sys_vg00-root_lv00: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/sys_vg00-swap_lv00: 68.7 GB, 68719476736 bytes, 134217728 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/sys_vg00-usr_lv00: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/sys_vg00-opt_lv00: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/sys_vg00-tmp_lv00: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/sys_vg00-var_lv00: 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 bytesDisk /dev/mapper/sys_vg00-home_lv00: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdc: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdd: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sde: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdf: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdg: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdh: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdi: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdj: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdk: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdl: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdm: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdn: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdo: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdp: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdq: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/sdr: 32.2 GB, 32212254720 bytes, 62914560 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/mpatha: 1073.7 GB, 1073741824000 bytes, 2097152000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/mpathb: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/mpathc: 214.7 GB, 214748364800 bytes, 419430400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytesDisk /dev/mapper/mpathd: 32.2 GB, 32212254720 bytes, 62914560 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[root@NSR-db1 ~]# 
  • node2
[root@NSR-db2 ~]# lsblk 
NAME                   MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
sda                      8:0    1  447G  0 disk  
├─sda1                   8:1    1 1000M  0 part  /boot
└─sda2                   8:2    1  446G  0 part  ├─sys_vg00-root_lv00 253:0    0  100G  0 lvm   /├─sys_vg00-swap_lv00 253:1    0   64G  0 lvm   [SWAP]├─sys_vg00-usr_lv00  253:2    0   10G  0 lvm   /usr├─sys_vg00-opt_lv00  253:3    0   20G  0 lvm   /opt├─sys_vg00-tmp_lv00  253:4    0   10G  0 lvm   /tmp├─sys_vg00-var_lv00  253:5    0   50G  0 lvm   /var└─sys_vg00-home_lv00 253:6    0  100G  0 lvm   /home
sdb                      8:16   1  3.3T  0 disk  
└─sdb1                   8:17   1  3.3T  0 part  /data1
sdc                      8:32   0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdd                      8:48   0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sde                      8:64   0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdf                      8:80   0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdg                      8:96   0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdh                      8:112  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdi                      8:128  0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdj                      8:144  0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdk                      8:160  0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdl                      8:176  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdm                      8:192  0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdn                      8:208  0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
sdo                      8:224  0 1000G  0 disk  
└─mpatha               253:7    0 1000G  0 mpath 
sdp                      8:240  0  200G  0 disk  
└─mpathb               253:8    0  200G  0 mpath 
sdq                     65:0    0  200G  0 disk  
└─mpathc               253:9    0  200G  0 mpath 
sdr                     65:16   0   30G  0 disk  
└─mpathd               253:10   0   30G  0 mpath 
[root@NSR-db2 ~]# [root@NSR-db2 ~]# multipath -ll
mpathd (360060e80072be00000302be000000280) dm-10 HITACHI ,OPEN-V          
size=30G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:3 sdf 8:80  active ready running|- 7:0:1:3 sdj 8:144 active ready running|- 8:0:0:3 sdn 8:208 active ready running`- 8:0:1:3 sdr 65:16 active ready running
mpathc (360060e80072be00000302be00000027f) dm-9 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:2 sde 8:64  active ready running|- 7:0:1:2 sdi 8:128 active ready running|- 8:0:0:2 sdm 8:192 active ready running`- 8:0:1:2 sdq 65:0  active ready running
mpathb (360060e80072be00000302be00000027e) dm-8 HITACHI ,OPEN-V          
size=200G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:1 sdd 8:48  active ready running|- 7:0:1:1 sdh 8:112 active ready running|- 8:0:0:1 sdl 8:176 active ready running`- 8:0:1:1 sdp 8:240 active ready running
mpatha (360060e80072be00000302be00000027a) dm-7 HITACHI ,OPEN-V          
size=1000G features='0' hwhandler='0' wp=rw
`-+- policy='service-time 0' prio=1 status=active|- 7:0:0:0 sdc 8:32  active ready running|- 7:0:1:0 sdg 8:96  active ready running|- 8:0:0:0 sdk 8:160 active ready running`- 8:0:1:0 sdo 8:224 active ready running
[root@NSR-db2 ~]# 

说明

这个只是一个简单的multipath服务配置,具体配置细节会由业务dba去配置的,这里只是检查底层zone配置过来的硬盘路径是否一致。

参考

gpt

centos7.9如何配置multipath服务?

在CentOS 7.9及其他版本中,Multipath是一种用于冗余和负载平衡的存储设备的技术。下面是配置Multipath服务的一般步骤:

  1. 安装Multipath软件包

    sudo yum install -y device-mapper-multipath
    
  2. 编辑Multipath配置文件

    打开Multipath配置文件 /etc/multipath.conf 并进行必要的修改。可以使用任何文本编辑器,比如 vi

    sudo vi /etc/multipath.conf
    

    确保以下配置项的存在或进行相应的设置:

    defaults {user_friendly_names yes
    }
    

    user_friendly_names 用于生成更容易理解的设备名称。

  3. 启用Multipath服务

    sudo systemctl enable multipathd
    sudo systemctl start multipathd
    

    这将启用Multipath服务并立即启动它。

  4. 验证Multipath设置

    使用以下命令验证Multipath是否正确配置:

    sudo multipath -ll
    

    这将显示多路径设备信息,确保所有路径都正确识别。

  5. 更新Initramfs

    在修改了Multipath配置之后,可能需要更新Initramfs以确保内核在启动时正确加载Multipath设置:

    sudo dracut -f
    
  6. 重启系统

    为了应用所有更改,最好重新启动系统:

    sudo reboot
    

这些步骤应该能够帮助你在CentOS 7.9上配置Multipath服务。请注意,具体的配置可能会因系统和存储设备的不同而有所不同。在进行任何更改之前,请确保备份关键数据,并根据你的环境进行相应的调整。


https://www.python100.com/html/MT38R0OB557Y.html

https://blog.csdn.net/m0_61069946/article/details/131043755

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码
x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号
《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http://onedayxyy.cn/

🍀 语雀

https://www.yuque.com/xyy-onlyone

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20231016062113861

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200372.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第17章 匿名函数

第17.1节 匿名函数的基本语法 [捕获列表](参数列表) mutable(可选) 异常属性 -> 返回类型 { // 函数体 }语法规则:lambda表达式可以看成是一般函数的函数名被略去,返回值使用了一个 -> 的形式表示。唯一与普通函数不同的是增加了“捕获列表”。 …

羊大师讲解鲜羊奶的营养价值

羊大师讲解鲜羊奶的营养价值 鲜羊奶是一种天然、营养丰富的食品,拥有独特的健康价值。它不仅具备高蛋白、低脂肪的特点,还富含各种维生素和矿物质,对人体健康有着卓越的贡献。今天,我们就来一探鲜羊奶的营养奥秘。 鲜羊奶的营养…

Data Linked UI

DataLinkedUl是一个Unity框架,它允许您在为您的应用程序创建用户界面时实现专业的数据驱动方法。使用此资产,您可以创建灵活的基于瓦片的任意大小的复杂接口系统。 核心功能: 灵活性-允许适应和调整数据变化,允许各种结构和功能配置,而不需要对现有系统进行重大破坏。 可伸…

AI封测需求强劲, AMD、英伟达等巨头将助推产业链增长 | 百能云芯

近期,超微(AMD)和英伟达(NVIDIA)相继发布了新一轮AI芯片,为封测产业链注入了新的活力。据业内人士透露,客户端对AI封测的需求愈发强劲,整体量能超过原先的估计,其中日月光…

我有才满足于自媒体行业的知识付费平台课程

行业资讯 实时行业热点新闻、企业动态资讯、社区热门话题,一榜打尽 通过图文、音频、视频、动态在内的多元媒介形式,致力于为企业提供多元化的资讯内容展示方式。 自定义咨询专栏,归类资讯内容,建立结构化内容体系 可以把资讯归…

循环使用接口返回的多值老大难?看我教你使用jmeter掌握72变!

有同学在用jmeter做接口测试的时候,经常会遇到这样一种情况: 就是一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。 这种要怎么做呢? 有一定基础的人,可能第一反应就是先提取前一个接口返回…

公有云迁移研究——AWS Route53

大纲 1 什么是Route 532 Route 53能做些什么# 3 通过DNS托管来实现分流3.1 创建DNS托管3.2 对托管创建记录对流量进行分配 4 通过流量策略来对流量进行分流4.1 创建流量策略 5 对比两者的区别6 推荐 在给客户从本地机房往AWS迁移的过程中,我们接到如下需求&#xff…

mysql中year函数有什么用

YEAR()函数用于提取日期或日期时间值中的年份。可以用于提取DATE、DATETIME或TIMESTAMP列中的年份。 SELECT YEAR(date_column) FROM table;# 提取字符串中的数据SELECT YEAR(2023-07-19) FROM table_name;

华容道问题求解第一部分_思路即方案设计

一、前言 华容道是一种传统的益智游戏,通常由一个长方形木板和若干个方块组成。其中包括一个或多个不同颜色的方块(也称为车块)和其他大小相同的方块(也称为障碍块)。游戏的目标是将车块从木板的一个端点移动到另一个…

销售工作中如何满足客户的需求?

销售工作中如何满足客户的需求? 在销售工作中,如果想要满足客户需求,第一步是要搞清楚客户的需求是什么,不能仅仅听客户的表面需求,在表面需求下隐藏的潜在需求是什么,另外还有客户的核心需求是什么&#…

举个栗子!Alteryx 技巧(8):运用批处理宏,巧妙实现分析流程重复使用

分析用户在 Alteryx Designer 做了一个比较复杂的逻辑处理,因为它的使用频率比较高,如果可以复用就能事半功倍。那么,如何实现多次快速使用呢?方法很简单:运用批处理宏,巧妙实现分析流程重复使用&#xff0…

【Tomcat】java.net.BindException “Address already in use: NET_Bind“

问题 17:37 Error running Tomcat 7.0.76: Unable to open debugger port (127.0.0.1:14255): java.net.BindException "Address already in use: NET_Bind"调整 把14255 改成 49963就正常了 附件 netstat -aon|findstr "49963" taskkill -f -pid xxx…

Linux入门笔记

1 Linux概述 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心…

【网络奇缘】- 如何自己动手做一个五类|以太网|RJ45|网络电缆

​ ​ 🌈个人主页: Aileen_0v0🔥系列专栏: 一见倾心,再见倾城 --- 计算机网络~💫个人格言:"没有罗马,那就自己创造罗马~" 本篇文章关于计算机网络的动手小实验---如何自己动手做一个网线, 也是为后面的物理层学习进…

旋转设备状态监测与预测性维护:提高设备可靠性的关键

在工业领域的各个行业中,旋转设备都扮演着重要的角色。为了确保设备的可靠运行和预防潜在的故障,旋转设备状态监测及预测性维护变得至关重要。本文将介绍一些常见的旋转设备状态监测方法,并探讨如何利用这些方法来实施预测性维护,…

我最喜欢的白版应用,AI加持的新功能开源!强烈推荐

Excalidraw 把他们的文本到图表的功能开源了 Excalidraw是一个虚拟白板应用,专门用于绘制类似手绘的图表。它提供了一个无限的、基于画布的白板,具有手绘风格,支持多种功能。 之前我分享的:72张PNG,图解机器学习 里面…

数电笔记之寄存器

数电 1 数字电路基础 1.2 二进制数据表达 1.2.1 二进制简介 1.2.2 用二进制表达文字 常用的中文字符集:GBK,UTF8 1.2.3 用二进制表达图片 图片像素化,像素数字化 1.2.4 用二进制表达声音 1.2.5 用二进制表达视频 1.3 数字电路 1.3…

harmony开发之image组件的使用

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。 在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机、PC、智能音箱、耳机、AR/VR眼镜等多种终端…

一位半加法器,一位全加器,四位全加器

我们这里的加法器只考虑一位的情况。 当我们两个一位相加的话,那么就有两个输入,两个输出,两个输入很好理解,就是两个个位上的数字,0或者是1,那么为什么需要有有个输出呢?难道不是输出一个数就…

【3】PyQt文本和图片

1. 文本控件 文本控件是QLabel from PyQt5.QtWidgets import QWidget, QApplication, QLabel import sys# 1.创建应用程序 app QApplication(sys.argv)# 2.创建窗口 w QWidget()# 修改窗口标题 w.setWindowTitle(文本展示)# ---------------------------------------------…