在Linux系统中,多路径服务(multipath)是保证数据存储稳定性的常用技术。当存储设备出现故障或不可用时,多路径服务可以自动切换到可用路径继续读写数据。然而,在某些情况下,由于系统升级或出现异常,多路径服务可能会出现异常状态,导致数据存储不稳定。因此,本文将为您介绍如何在Linux系统中重启多路径服务,以确保数据存储安全稳定。
一、确认多路径服务的状态
在重启多路径服务之前,必须先确认当前多路径服务的状态。可以通过执行以下命令来查看:
# systemctl status multipathd
如果返回如下结果,则说明多路径服务正常运行:
multipathd.service – Device-Mapper Multipath Device Controller
Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2023-01-01 12:00:00 CST; 1 day 1h ago
如果返回如下结果,则说明多路径服务已停止运行:
multipathd.service – Device-Mapper Multipath Device Controller
Loaded: loaded (/usr/lib/systemd/system/multipathd.service; enabled; vendor preset: enabled)
Active: inactive (dead) since Thu 2023-01-01 12:00:00 CST; 3 days ago
二、重启多路径服务
如果当前多路径服务处于停止状态,则需要执行以下步骤来重启多路径服务:
1. 停止多路径服务:
# systemctl stop multipathd
2. 验证多路径服务是否已停止:
# systemctl status multipathd
3. 启动多路径服务:
# systemctl start multipathd
4. 验证多路径服务是否已启动:
# systemctl status multipathd
执行上述步骤后,多路径服务应已启动并正常运行。
三、处理异常情况
如果多路径服务未能成功启动,则可能出现了异常情况。在这种情况下,你需要做以下事情:
1. 重新安装多路径软件
如果多路径服务无法启动,可能是由于多路径软件的安装出现问题。在这种情况下,您可以考虑重新安装多路径软件。
2. 检查日志信息
多路径服务的异常状态通常伴随着日志信息的记录,您可以通过以下命令来查看日志信息:
# journalctl -u multipathd
通过查看日志信息,您可以判断出当前问题的具体原因,并相应地解决。
3. 重启系统
如果以上两种方法都无法解决问题,您可以尝试通过重启系统来解决。在重启后,多路径服务应该能够成功启动。
本文介绍了如何在Linux系统中重启多路径服务。在出现多路径服务异常状态时,您可以通过以上方法来解决问题,以保证数据的安全存储。同时,建议您定期检查多路径服务的状态,以确保多路径服务始终处于正常运行状态。
相关问题拓展阅读:
linux什么情况下用到多路径
1、安装多路径软件包:
device-mapper-1.02.67-2.el5
device-mapper-event-1.02.67.2.el5
device-mapper-multipath-0.4.7-48.el5
view plain copy print?
# rpm -ivh device-mapper-1.02.67-2.el5.x86_64.rpm
warning: device-mapper-1.02.67-2.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID
Preparing… ###########################################
package device-mapper-1.02.67-2.el5.x86_64 is already installed
# rpm -ivh device-mapper-event-1.02.67-2.el5.x86_64.rpm
warning: device-mapper-event-1.02.67-2.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID
Preparing… ###########################################
package device-mapper-event-1.02.67-2.el5.x86_64 is already installed
# rpm -ivh device-mapper-multipath-0.4.7-48.el5.x86_64.rpm
warning: device-mapper-multipath-0.4.7-48.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID
Preparing… ###########################################
package device-mapper-multipath-0.4.7-48.el5.x86_64 is already installed
2、设置开游圆机启动,并检查做早安装包是否正常:
chkconfig –level 345 multipathd on
lod |grep dm_multipath
view plain copy print?
# chkconfig –level 345 multipathd on
# lod |grep dm_multipath
dm_multipath
scsi_dhdm_multipath
dm_moddm_mirror,dm_multipath,dm_raid45,dm_log
3、配置multipathd 使其正常工作,编辑/etc/multipath.conf,开放如下内容:
view plain copy print?
udev_dir /dev
polling_interval
selector “round-robin 0″神胡塌
path_grouping_policy multibus
getuid_callout”/in/scsi_id -g -u -s /block/%n”
prio_calloutnone
path_checkerreadsector0
rr_min_io 100
rr_weight priorities
failback immediate
no_path_retryfail
user_friendly_names yes
blacklist {
devnode “^(ram|raw|loop|fd|md|dm-|sr|scd|st)*”
devnode “^hd”
4、并关闭如下内容
view plain copy print?
#blacklist {
#devnode “*”
#defauLTS {
#user_friendly_names yes
5、完成之后执行如下命令发现多路径:
view plain copy print?
# modprobe dm-multipath
# multipath -F
# multipath dm-multipath
# multipath dm-round-robin
# service multipathd restart
正在关闭multipathd 端口监控程序:
正在启动守护进程multipathd:
# multipath -v2
# multipath -v2
# multipath -ll
mpath1 (3600db16a5d57c6a1bd99a) dm-0 TOYOU,NetStor_iSUM510
\_ round-robin 0
\_ 1:0:0:0 sdb 8:16
\_ 1:0:1:0 sdc 8:32
6、重启 服务器 后,我们可以看到多路径信息了:
view plain copy print?
# ll /dev/mapper/
总计 0
crwroot root 10,:35 control
brw-rwroot disk 253,:35 mpath1
brw-rwroot disk 253,:35 mpath2
# multipath -ll
mpath2 (3600db76128b9c63138cf4) dm-1 TOYOU,NetStor_iSUM510
\_ round-robin 0
\_ 1:0:0:1 sdc 8:32
\_ 1:0:1:1 SDE 8:64
mpath1 (3600db16a5d57c6a1bd99a) dm-0 TOYOU,NetStor_iSUM510
\_ round-robin 0
\_ 1:0:0:0 sdb 8:16
\_ 1:0:1:0 sdd 8:48
7、通过fdisk 看可以生成了DM-0/DM-1两个盘,正是上面sdc/sde,sdb/sdd多路径后出来的:
view plain copy print?
Disk /dev/sda: 299.4 GB,bytes
255 heads, 63 sectors/track,cylinders
Units = cylinders of* 512 =bytes
Device Boot StartEnd Blocks Id System
/dev/sda1 *+ 83 Linux
/dev/sda 83 Linux

/dev/sda+ 83 Linux
/dev/sda+ 5 Extended
/dev/sda 83 Linux
/dev/sda 83 Linux
/dev/sda 82 Linux swap / Solaris
/dev/sda+ 83 Linux
Disk /dev/sdb: 21.4 GB,bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of* 512 =bytes
Disk /dev/sdb doesn’t contain a valid partition table
Disk /dev/sdc: 3568.4 GB, bytes
255 heads, 63 sectors/track,cylinders
Units = cylinders of* 512 =bytes
Disk /dev/sdc doesn’t contain a valid partition table
Disk /dev/sdd: 21.4 GB,bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of* 512 =bytes
Disk /dev/sdd doesn’t contain a valid partition table
Disk /dev/sde: 3568.4 GB, bytes
255 heads, 63 sectors/track,cylinders
Units = cylinders of* 512 =bytes
Disk /dev/sde doesn’t contain a valid partition table
Disk /dev/dm-0: 21.4 GB,bytes
255 heads, 63 sectors/track, 2610 cylinders
Units = cylinders of* 512 =bytes
Disk /dev/dm-0 doesn’t contain a valid partition table
Disk /dev/dm-1: 3568.4 GB, bytes
255 heads, 63 sectors/track,cylinders
Units = cylinders of* 512 =bytes
Disk /dev/dm-1 doesn’t contain a valid partition table
Disk /dev/sdf: 4009 MB,bytes
255 heads, 63 sectors/track, 487 cylinders
Units = cylinders of* 512 =bytes
Device Boot StartEnd Blocks Id System
/dev/sdf4 *+ b W95 FAT32
Partition 4 has different physical/logical endings:
phys=(486, 254, 63) logical=(487, 125, 22)
8、我们同时也可以在/dev/mapper目录中查看到多路径映射的信息:
view plain copy print?
# ll /dev/mapper/
总计 0
crwroot root 10,:49 control
brw-rwroot disk 253,:49>香港服务器首选树叶云,2H2G首月10元开通。树叶云(shuyeidc.com)提供简单好用,价格厚道的香港/美国云服务器和独立服务器。IDC+ISP+ICP资质。ARIN和APNIC会员。成熟技术团队15年行业经验。
嵌入式Linux系统下 如何在CPU占用率过高的时候重启
用脚本就可以搞定的! 当发现CPU占用率过高时,会自动重启相关程序。 。 #设置最大内存占用百分比PID_MEM_MAX=”85″#设置最大系统负载SYS_LOAD_MAX=”1″#设置需要监控的服务名称NAME_LIST=”php5-cgimysql”forNAMEin$NAME_LISTdo#初始化内存统计PID_MEM_SUM=0#获取该程序总进程数PID_NUM_SUM=`psaux|grep$NAME|wc-l`#列出每个进程内存占用百分比PID_MEM_LIST=`psaux|grep$NAME|awk‘{print$4}’`#计算所有进程总内存占用forPID_MEMin$PID_MEM_LISTdoPID_MEM_SUM=`echo$PID_MEM_SUM+$PID_MEM|bc`done#获取最近一分钟系统负载SYS_LOAD=`uptime|awk‘{print$(NF-2)}’|sed‘s/,//’`#比较内存占用和系统负载是否超过阀值MEM_VULE=`awk‘BEGIN{print(‘”$PID_MEM_SUM”‘>=’”$PID_MEM_MAX”‘?”1″:”0″)}’`LOAD_VULE=`awk‘BEGIN{print(‘”$SYS_LOAD”‘>=’”$SYS_LOAD_MAX”‘?”1″:”0″)}’`#如果系统内存占用和系统负载超过阀值,则进行下面操作。 if[$MEM_VULE=1]||[$LOAD_VULE=1];then#写入日志echo$(date+”%y-%m-%d%H:%M:%S”)“killall$NAME”“(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)”>>/var/log/#正常停止服务/etc/init.d/$NAMEstopsleep3#强制关闭pkill$NAME#重启/etc/init.d/$NAMEstart#写入日志echo$(date+”%y-%m-%d%H:%M:%S”)“start$NAME”“(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)”>>/var/log/“$NAMEveryhealth!(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)”>/dev/nullfidone以上代码保存为一个文件,例如:auto_添加计划任务,设置每分钟检查一次(注意文件的位置要搞正确)crontab-e*****/bin/bash/root/auto_请确保您的Linux系统中已经安装了bc,否则会出现错误。 查看是否安装了bc可以使用命令:bc-v如果没有安装,centos可以用yum-yinstallbc安装,然后执行命令:sh/bin/bash/root/auto_服务器根据CPU负载及内存占用自动重启的bashshell脚本:#!/bin/sh#usage:*/2****root/root/#[CentOS]VPS服务器根据CPU负载及内存占用自动重启脚本#设置最小剩余内存,一般至少要剩余50M可用(单位兆)FREE_MEM_MIN=”50″#设置最大系统负载SYS_LOAD_MAX=”3″#设置重启服务的最小剩余内存(单位兆)RESTART_FREE_MEM_MIN=”500″#设置需要监控的服务名称NAME_LIST=”httpdmysqld”forNAMEin$NAME_LISTdo#获得剩余内存(单位兆)FREE_MEM=`free-m|grepMem|awk‘{print$4}’`#获得已用内存(单位兆)#FREE_MEM=`free-m|grepMem|awk‘{print$3}’`#获取最近一分钟系统负载SYS_LOAD=`uptime|awk‘{print$(NF-2)}’|sed‘s/,//’`#比较内存占用和系统负载是否超过阀值MEM_VULE=`awk‘BEGIN{print(‘”$FREE_MEM”‘<’”$FREE_MEM_MIN”‘?”1″:”0″)}’`LOAD_VULE=`awk‘BEGIN{print(‘”$SYS_LOAD”‘>=’”$SYS_LOAD_MAX”‘?”1″:”0″)}’`#测试结果#LOAD_VULE=”1″#echo$(date+”%y-%m-%d%H:%M:%S”)“DEBUG$NAME”“(FREE_MEM:$FREE_MEM|$MEM_VULE,LOAD:$SYS_LOAD|$LOAD_VULE)”>>/var/log/autoreboot_#如果系统内存占用和系统负载超过阀值,则进行下面操作。 if[$MEM_VULE=1]||[$LOAD_VULE=1];then#写入日志echo$(date+”%y-%m-%d%H:%M:%S”)“killall$NAME”“(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)”>>/var/log/#正常停止服务service$NAMEstopsleep3#强制关闭skill$NAME#重启sleep10foriin123doFREE_MEM=`free-m|grepMem|awk‘{print$4}’`MEM_VULE=`awk‘BEGIN{print(‘”$FREE_MEM”‘>=’”$RESTART_FREE_MEM_MIN”‘?”1″:”0″)}’`if[`pgrep$NAME|wc-l`-le0]&&[$MEM_VULE=1]thenservice$NAMEstartsleep15echo“AutoStart:”$(date+”%y-%m-%d%H:%M:%S”)“start$NAME”`ps-ef|grep$NAME|wc-l`>/var/log/#写入日志echo$(date+”%y-%m-%d%H:%M:%S”)“start$NAME”“(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)”>>/var/log/_VULE=`awk‘BEGIN{print(‘”$FREE_MEM”‘>=’”$RESTART_FREE_MEM_MIN”‘?”1″:”0″)}’`if[`pgrep$NAME|wc-l`-le0]&&[$MEM_VULE=1]thenservice$NAMEstartsleep15echo“AutoStart:”$(date+”%y-%m-%d%H:%M:%S”)“start$NAME”`ps-ef|grep$NAME|wc-l`>/var/log/“$NAMEveryhealth!(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)”>/dev/nullfifidone
什么是 daemon 与服务 (service):daemon 的启动方式: service
知道了一些有关 daemon 的相关知识后,再来,那么我们如何启动一个 daemon 呢? 其实,我们知道所谓的 daemon 就是一支可以在系统背景下面运作的程式 (program) 啊, 所以,要启动该 daemon ,就是找到他的执行档,执行他就是了。 不过,因为该 daemon 的执行档所需要加的参数太多了!举例来说,你可以使用‘man syslogd’及‘man sshd’来查阅一下该 daemon 要启动时的设定参数!为了克服这样的困扰,所以各主要 Linux distributions 都会针对该服务设计一个比较亲和的 shell script 来进行启动的程序啊!那就是 /etc/init.d/ 底下的档案,以及 /etc/xinetd.d/ 底下的设定资料。 因此,启动服务的方法就变得很简单了。 只要设定好该服务的设定档,然后下达:1. 启动 stand alone 服务的方式:以 syslog 为例:[root@linux ~]# /etc/init.d/syslog start2. 启动 super daemon 服务的方式:以 telnet 为例:[root@linux ~]# vi /etc/xinetd.d/telnet (设定方式参考下节)[root@linux ~]# /etc/init.d/xinetd restart另外,除了这样的启动方式之外,我们还可以透过 Fedora ( Red Hat 系统 ) 所提供的 service 这个程式来进行 daemon 的启动喔!其实 service 仅是一支 script 啦, 他可以解析后面带有的参数,然后去到 /etc/init.d/ 去启动相对应的服务名称的 script 而已! 有兴趣的话,可以自行去解析 /sbin/service 这支 shell script 啊! 底下我们大略说明一下他的用法![root@linux ~]# service [service name] (start|stop|restart|...)参数:service name:亦即是需要启动的服务名称,需与 /etc/init.d/ 对应;start|... :亦即是该服务要进行的工作。 范例:范例一:重新启动 crond 这支 daemon :[root@linux ~]# service crond restart[root@linux ~]# /etc/init.d/crond restart在上面的范例当中,其实启动方式以 service 这个程式,或者直接去到 /etc/init.d/ 底下启动, 都一样啦!自行去解析 /sbin/service 就知道为啥了! ^_^Tips:事实上,在 Linux 系统中,要‘开或关某个 port ’,就是需要‘ 启动或关闭某个服务’啦!因此,你可以找出某个 port 对应的服务,程式对应的服务, 进而启动或关闭他,那么那个经由该服务而启动的 port ,自然就会关掉了!
如何添加永久静态路由
按 win键+X键,在弹出的列表中选择“命令提示符(管理员)”使用dos命令添加静态路由接下来我们所有的操作都是基于“route”命令来实现,可以再命令提示里面输入“ route ?”查看route命令的帮助及语法使用dos命令添加静态路由以图中内容为例,我这里添加了一条去往 10.10.10.0/24网段的静态路由,指定去往此网段的路由都走 172.20.153.254网关,确认添加的内容无误后按回车,弹出“操作完成!”内容表示路由添加成功;其中此处用到的几个参数的作用是:-p 表示永久路由,重启后不丢失Add 添加路由10.10.10.0 表示目的网段的网络地址Mask 固定命令,后面跟的是目标网段的子网掩码172.20.153.254 是去往目的网段的吓一跳使用dos命令添加静态路由可以通过“route print”命令来查看听见的静态路由使用dos命令添加静态路由可通过 “route delete 目的网段网络地址”删除添加的静态路由使用dos命令添加静态路由
发表评论