Linux下实现dm0映射:简单而高效的磁盘管理方式 (linux dm0映射)

在计算机科学领域,磁盘管理一直是一个重要的话题。在操作系统中,磁盘管理是必要的,因为它为操作系统的存储提供了一种便利的方式。在Linux操作系统中,有很多不同的方法可以实现磁盘管理。其中,一种简单而高效的方式是使用dm0映射。

DM0(Device Mapper zero)是设备映射层的一个实现,是Linux内核的一个内置模块,提供了强大的磁盘管理功能。使用DM0,可以将一个物理存储设备映射为一个虚拟设备,然后可以在虚拟设备上进行各种操作,比如分区、格式化、安装文件系统等。

在DM0中,每个映射都被称为一个映射器(mapper),一个映射器由多个区域(region)组成。每个区域可以映射到原始设备的一个区域,也可以映射到另一个映射器的一个区域,从而形成一个层次结构。最上层的映射器被称为目标映射器(target mapper),它表示总的映射结果。

使用DM0进行磁盘管理非常简单。下面是一个使用DM0映射一个硬盘的示例:

1. 找到硬盘的设备文件名,例如/dev/sdb。

2. 使用dmsetup命令创建一个新的映射器,将硬盘设备映射为一个新的虚拟设备,例如/dev/mapper/data。

3. 在新的虚拟设备上创建分区,格式化,安装文件系统等操作。

以下是一个更详细的步骤:

1. 确定需要映射的设备名称。例如,想要将/dev/sdb映射到/dev/mapper/data,可以执行以下命令:sudo dmsetup create data –table “0 $(blockdev –getsize /dev/sdb) linear /dev/sdb 0”

此处的dmsetup命令创建了一个名为”data”的映射器,其表达式为”0 $(blockdev –getsize /dev/sdb) linear /dev/sdb 0″,表示将/dev/sdb的整个空间(即从0到设备的大小)映射为一个线性区域。

2. 创建虚拟设备上的分区。可以使用fdisk或parted命令创建分区,例如:sudo fdisk /dev/mapper/data。

3. 格式化整个虚拟设备,可以使用mkfs命令:sudo mkfs -t ext4 /dev/mapper/data。

4. 挂载虚拟设备:sudo mount /dev/mapper/data /mnt/data。

使用DM0进行磁盘管理的好处在于,可以非常灵活地管理磁盘,支持随时更改磁盘映射关系,支持多级映射关系,还可以实现各种磁盘管理高级功能,如快照、复制和RD等。

总而言之,使用DM0进行磁盘管理是一种简单而高效的方式,它可以帮助Linux用户更好地管理磁盘,并使其更具灵活性和强大的功能。如果你还没有使用DM0进行磁盘管理,那么现在就是时候了!

相关问题拓展阅读:

yum安装多路径

一、什么是多路径

普通的电脑主机都是一个硬盘挂接到一个总线上,这里是一对一的关系。而到了有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和存储通过了光纤交换机或者多块网卡及IP来连接,这样的话,就构成了多对多的关系。也就是说,主机到存储可以有多条路径可以选择。主机到存储之间的IO由多条路好宽径可以选择。每个主机到所对应的存储可以经过几条不同的路径,如果是同时使用的话,I/O流量如何分配?其中一条路径坏掉了,如何处理?还有在操作系统的角度来看,每条路径,操作系统会认为是友哗亮一个实际存在的物理盘,但实际上只是通向同一个物理盘的不同路径而已,这样是在使用的时候,就给用户带来了困惑。多路径软件就是为了解决上面的问题应运而生的。

多路径的主要功能就是和存储设备一起配合实现如下功能:

1.故障的切换和恢复

2.IO流量的负载均衡

3.磁盘的虚拟化

由于多路径软件是需要和存储在一起配合使用的,不同的厂商基于不同的操作系统,都提供了不同的版本。并且有的厂商,软件和硬件也不是一起卖的,如果要使用多路径软件的话,可能还需要向厂商购买license才行。比如EMC公司基于linux下的多路径软件,就需要单独的购买license。好在, RedHat和Suse的2.6的内核中都自带了免费的多路径软件包,并且可以免费使用,同时也是一个比较通用的包,可以支持大多数存储厂商的设备,即使是一些不是出名的厂商,通过对配置文件进行稍作修改,也是可以支持并运行的很好的。

二、Linux下multipath介绍,需要以下工具包:

在CentOS 5中,最小安装系统时multipath已经被安装,查看multipath是否安装如下:

1、device-mapper-multipath:即multipath-tools。主要提供multipathd和multipath等工具和 multipath.conf等配置文件。这些工具通过device mapper的ioctr的接口创建和配置multipath设备(调用device-mapper的用户空间库。创建的多路径设备会在/dev /mapper中)。

2、 device-mapper:主要包括两大部分:内核部分和用户部分。内核部分主要由device mapper核心(dm.ko)和一些target driver(md-multipath.ko)。核心完成设备的映射,而target根据映射关系和自身特点具体处理从mappered device 下来的i/o。同时,在核心部分,提供了一个接口,用户通过ioctr可和内核部分通信,以指导内核驱动的行为,比如如何创建mappered device,这些divece的属性等。linux device mapper的用户空间部分主要包括device-mapper这个包。其中包括dmsetup工具和一些帮助创建和配置mappered device的库。这些库主要抽象,封装了与ioctr通信的接口,以便方便创建芦者和配置mappered device。multipath-tool的程序中就需要调用这些库。

3、dm-multipath.ko和dm.ko:dm.ko是device mapper驱动。它是实现multipath的基础。dm-multipath其实是dm的一个target驱动。

4、scsi_id: 包含在udev程序包中,可以在multipath.conf中配置该程序来获取scsi设备的序号。通过序号,便可以判断多个路径对应了同一设备。这个是多路径实现的关键。scsi_id是通过sg驱动,向设备发送EVPD page80或page83 的inquery命令来查询scsi设备的标识。但一些设备并不支持EVPD 的inquery命令,所以他们无法被用来生成multipath设备。但可以改写scsi_id,为不能提供scsi设备标识的设备虚拟一个标识符,并输出到标准输出。multipath程序在创建multipath设备时,会调用scsi_id,从其标准输出中获得该设备的scsi id。在改写时,需要修改scsi_id程序的返回值为0。因为在multipath程序中,会检查该直来确定scsi id是否已经成功得到。

三、multipath在CentOS 5中的基本配置过程:

1、安装和加载多路径软件包

# yum –y install device-mapper device-mapper-multipath

# chkconfig –level 2345 multipathd on #设置成开机自启动multipathd

# lod |grep dm_multipath #来检查安装是否正常

如果模块没有加载成功请使用下列命初始化DM,或重启系统

—Use the following commands to initialize and start DM for the first time:

# modprobe dm-multipath

# modprobe dm-round-robin

# service multipathd start

# multipath –v2

2、配置multipath:

Multipath的配置文件是/etc/multipath.conf , 如需要multipath正常工作只需要如下配置即可:(如果需要更加详细的配置,请看本文后续的介绍)

blacklist {

devnode “^sda”

}

defaults {

user_friendly_names yes

path_grouping_policy multibus

failback immediate

no_path_retry fail

}

# vi /etc/multipath.conf

3、multipath基本操作命令

# /etc/init.d/multipathd start #开启mulitipath服务

# multipath -F #删除现有路径

# multipath -v2 #格式化路径

# multipath -ll #查看多路径

如果配置正确的话就会在/dev/mapper/目录下多出mpath0、mpath1等之类设备。

用fdisk -l命令可以看到多路径软件创建的磁盘,如下图中的/dev/dm-

4、multipath磁盘的基本操作

要对多路径软件生成的磁盘进行操作直接操作/dev/mapper/目录下的磁盘就行.

在对多路径软件生成的磁盘进行分区之前更好运行一下pvcreate命令:

# pvcreate /dev/mapper/mpath0

# fdisk /dev/mapper/mpath0

用fdisk对多路径软件生成的磁盘进行分区保存时会有一个报错,此报错不用理会。

fdisk对多路径软件生成的磁盘进行分区之后,所生成的磁盘分区并没有马上添加到/dev/目录下,此时我们要重启IPSAN或者FCSAN的驱动,如果是用iscsi-initiator来连接IPSAN的重启ISCSI服务就可以发现所生成的磁盘分区了

# service iscsi restart

# ls -l /dev/mapper/

如上图中的mpath0p1和mpath1p1就是我们对multipath磁盘进行的分区

# mkfs.ext3 /dev/mapper/mpath0p1 #对mpath1p1分区格式化成ext3文件系统

# mount /dev/mapper/mpath0p1 /ipsan/ #挂载mpath1p1分区

四、multipath的高有配置

以上都是用multipath的默认配置来完成multipath的配置,比如映射设备的名称,multipath负载均衡的方法都是默认设置。那有没有按照我们自己定义的方法来配置multipath呢,当可以。

1、multipath.conf文件的配置

接下来的工作就是要编辑/etc/multipath.conf的配置文件

multipath.conf主要包括blacklist、multipaths、devices三部份的配置

blacklist配置

blacklist {

devnode “^sda”

}

Multipaths部分配置multipaths和devices两部份的配置。

multipaths {

multipath {

wwid **************** #此值multipath -v3可以看到

alias iscsi-dm0 #映射后的别名,可以随便取

path_grouping_policy multibus #路径组策略

path_checker tur #决定路径状态的方法

path_selector “round-robin 0” #选择那条路径进行下一个IO操作的方法

}

}

Devices部分配置

devices {

device {

vendor “iSCSI-Enterprise” #厂商名称

product “Virtual disk” #产品型号

path_grouping_policy multibus #默认的路径组策略

getuid_callout “/in/scsi_id -g -u -s /block/%n” #获得唯一设备号使用的默认程序

prio_callout “/in/acs_prio_alua %d” #获取有限级数值使用的默认程序

path_checker readsector0 #决定路径状态的方法

path_selector “round-robin 0” #选择那条路径进行下一个IO操作的方法

failback immediate #故障恢复的模式

no_path_retry queue #在disable queue之前系统尝试使用失效路径的次数的数值

rr_min_io 100 #在当前的用户组中,在切换到另外一条路径之前的IO请求的数目

}

}

如下是一个完整的配置文件

blacklist {

devnode “^sda”

}

defaults {

user_friendly_names no

}

multipaths {

multipath {

wwid0000a67854c6270b4359c66c272e2f356321

alias iscsi-dm0

path_grouping_policy multibus

path_checker tur

path_selector “round-robin 0”

}

multipath {

wwid0000dcca2eda91d70b81edbcfce2357f99ee

alias iscsi-dm1

path_grouping_policy multibus

path_checker tur

path_selector “round-robin 0”

}

multipath {

wwid000020f763489c3957ed96

alias iscsi-dm2

path_grouping_policy multibus

path_checker tur

path_selector “round-robin 0”

}

multipath {

wwidca813020a195422ba3663e1f03cc3

alias iscsi-dm3

path_grouping_policy multibus

path_checker tur

path_selector “round-robin 0”

}

}

devices {

device {

vendor “iSCSI-Enterprise”

product “Virtual disk”

path_grouping_policy multibus

getuid_callout “/in/scsi_id -g -u -s /block/%n”

path_checker readsector0

path_selector “round-robin 0”

}

}

获取wwid的方法:

(1)默认情况下,将使用 /var/lib/multipath/bindings 内的配置设定具体每个多路径设备名,如果在/etc/multipath.conf中有设定各wwid 别名,别名会覆盖此设定。

(2)# multipath -v3命令查找

2、负载均衡测试

使用dd命令来对设备进行写操作,并同时通过iostat来查看I/0状态,命令及输出如下:

# dd if=/dev/zero of=/dev/mapper/iscsi-dm1p1

开启另外一个终端用以下命令查看IO情况

# iostat 10 10

通过上述输出,我们看到,在对/dev/mapper/iscsi-dm1p1读写时,实际上是通过对/dev/md-1包含的当前active的所有设备,即/dev/sde1,/dev/shl这2条路径来完成对实际的LUN的写过程。

3、路径切换测试

首先,我们拔掉服务器上一根网线,经过不到10秒,我们看到:MPIO成功地从上述“失败”的路径/dev/sel切换到了另外一条路径/dev/sdh1上。

©著作权归作者所有:来自51作者rtking的原创作品,请联系作者获取转载授权,否则将追究法律责任

linux如何把一个内网地址映射到另外一一个公网地址上

1.启用网关服务器路由转发功能

# vi /etc/sysctl.conf

net.ipv4.ip_forward=1

# sysctl -p

2.为局域网访族扮问Internet 的数据包采用SNAT策略,将源地址更改为服务器的公网IP地尘穗激址

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT –to-source 公网IP

(eth0 这个派袜我不知道你配得哪个口 自己改)

如何使用Linux自带多路径DM

一、多路径解释

多路径,顾名春桥轮思义就是有多种选择的路径。在SAN或IPSAN环境,主机和存储之间外加了光纤交换机,这就导致主机和存储之间交换速度和效率增强,一条路径肯定是不行的,也是不安全不稳定的。多路径就是要来解决从主机到磁盘之间最快,更高效的问题。主要实现如下几个功能

故障的切换和恢复

IO流量的负载均衡

磁盘的虚拟化

多路径之前一直是存储厂商负责解决,竟来被拆分出来单独卖钱了。消扒

构架基本是这样的:存储,多路径软件,光纤交换机,主机,主机系统。

二、LINUX下的multipath

1、查看是否自带安装?

# rpm -qa|grep device

device-mapper-1.02.39-1.el5

device-mapper-1.02.39-1.el5

device-mapper-multipath-0.4.7-34.el5

device-mapper-event-1.02.39-1.el5

#

2、安装

rpm -ivh device-mapper-1.02.39-1.el5.rpm #安装映射包

rpm -ivh device-mapper-multipath-0.4.7-34.el5.rpm #安装多路径包

外加加入开机启动

chkconfig –level 2345 multipathd on#设置成开机自启动multipathd

lod |grep dm_multipath#来检查安装是扒信否正常

3、配置

# on the default devices.

blacklist {

devnode “^(ram|raw|loop|fd|md|dm-|sr|sr|scd|st)*”

devnode “^hd”

}

devices {

device {

vendor “HP”

path_grouping_policy multibus

features “1 queue_if_no_path”

path_checker readsector()

failback immediate

}

}

完整的配置如下:

blacklist {

devnode “^sda”

}

defaults {

user_friendly_names no

}

multipaths {

multipath {

wwida67854c6270b4359c66c272e2f356321

alias iscsi-dm0

path_grouping_policy multibus

path_checkertur

path_selector”round-robin 0″

}

multipath {

wwiddcca2eda91d70b81edbcfce2357f99ee

alias iscsi-dm1

path_grouping_policy multibus

path_checkertur

path_selector”round-robin 0″

}

multipath {

wwidf763489c3957ed96

alias iscsi-dm2

path_grouping_policy multibus

path_checkertur

path_selector”round-robin 0″

}

multipath {

wwidca813020a195422ba3663e1f03cc3

alias iscsi-dm3

path_grouping_policy multibus

path_checkertur

path_selector”round-robin 0″

}

}

devices {

device {

vendor “iSCSI-Enterprise”

product “Virtual disk”

path_grouping_policy multibus

getuid_callout”/in/scsi_id -g -u -s /block/%n”

path_checkerreadsector0

path_selector”round-robin 0″

}

}

4、命令

# multipath -h

multipath-tools v0.4.7 (03/12, 2023)

Usage: multipath

v levelverbosity level

no output

print created devmap names only

default verbosity

print debug information

hprint this usage text

b filebindings file location

ddry run, do not create or update devmaps

lshow multipath topology (sysfs and DM info)

llshow multipath topology (maximum info)

fflush a multipath device map

Fflush all multipath device maps

rforce devmap reload

p policyforce all maps to specified policy :

failover path per priority group

multibusall paths in 1 priority group

group_by_serialpriority group per serial

group_by_priopriority group per priority lvl

group_by_node_name 1 priority group per target node

devicelimit scope to the device’s multipath

(udev-style $DEVNAME reference, eg /dev/sdb

or major:minor or a device map name)

#

5、启动关闭

# /etc/init.d/multipathd start #开启mulitipath服务

service multipath start

service multipath restart

service multipath shutdown

6、如何获取wwid

1、

# cat /var/lib/multipath/bindings

# Multipath bindings, Version : 1.0

# NOTE: this file is automatically maintained by the multipath program.

# You should not need to edit this file in normal circumstances.

#

# Format:

# alias wwid

#

mpathd50ec912de11

mpathd50ec912de11

mpathd50ec912de11

mpathd50ec912de11

mpathd50e003a744871c912de11

2、

# multipath -v3 |grep 3600

sdb: uid =d50e003a744871c912de11 (callout)

sdc: uid =d50e003a744871c912de11 (callout)

sdd: uid =d50e003a744871c912de11 (callout)

sde: uid =d50e003a744871c912de11 (callout)

d50e003a744871c912de11 1:0:0:0 sdb 8: DGC,RAI

d50e003a744871c912de11 1:0:1:0 sdc 8: DGC,RAI

d50e003a744871c912de11 2:0:0:0 sdd 8: DGC,RAI

d50e003a744871c912de11 2:0:1:0 sde 8: DGC,RAI

Found matching wwid in bindings file.

比较详细的文字:

RHEL官网资料:

linux dm0映射的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux dm0映射,Linux下实现dm0映射:简单而高效的磁盘管理方式,yum安装多路径,linux如何把一个内网地址映射到另外一一个公网地址上,如何使用Linux自带多路径DM的信息别忘了在本站进行查找喔。


数据运维技术 » Linux下实现dm0映射:简单而高效的磁盘管理方式 (linux dm0映射)