附录 A. 设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​(Device Mapper)

设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​是​​​​​​​一​​​​​​​个​​​​​​​为​​​​​​​卷​​​​​​​管​​​​​​​理​​​​​​​提​​​​​​​供​​​​​​​通​​​​​​​用​​​​​​​构​​​​​​​架​​​​​​​的​​​​​​​内​​​​​​​核​​​​​​​驱​​​​​​​动​​​​​​​程​​​​​​​序​​​​​​​。​​​​​​​它​​​​​​​提​​​​​​​供​​​​​​​可​​​​​​​用​​​​​​​来​​​​​​​创​​​​​​​建​​​​​​​用​​​​​​​作​​​​​​​逻​​​​​​​辑​​​​​​​卷​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​映​​​​​​​射​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​通​​​​​​​用​​​​​​​方​​​​​​​法​​​​​​​。​​​​​​​它​​​​​​​不​​​​​​​一​​​​​​​定​​​​​​​要​​​​​​​特​​​​​​​别​​​​​​​了​​​​​​​解​​​​​​​卷​​​​​​​组​​​​​​​或​​​​​​​者​​​​​​​元​​​​​​​数​​​​​​​据​​​​​​​格​​​​​​​式​​​​​​​。​​​​​​​
设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​为​​​​​​​一​​​​​​​组​​​​​​​高​​​​​​​级​​​​​​​技​​​​​​​术​​​​​​​提​​​​​​​供​​​​​​​了​​​​​​​基​​​​​​​础​​​​​​​。​​​​​​​除​​​​​​​ LVM 之​​​​​​​外​​​​​​​,设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​和​​​​​​​ dmraid 命​​​​​​​令​​​​​​​也​​​​​​​使​​​​​​​用​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​。​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​的​​​​​​​应​​​​​​​用​​​​​​​程​​​​​​​序​​​​​​​界​​​​​​​面​​​​​​​是​​​​​​​ioctl 系​​​​​​​统​​​​​​​调​​​​​​​用​​​​​​​。​​​​​​​用​​​​​​​户​​​​​​​界​​​​​​​面​​​​​​​是​​​​​​​ dmsetup 命​​​​​​​令​​​​​​​。​​​​​​​
LVM logical volumes are activated using the Device Mapper. Each logical volume is translated into a mapped device. Each segment translates into a line in the mapping table that describes the device. The Device Mapper supports a variety of mapping targets, including linear mapping, striped mapping, and error mapping. So, for example, two disks may be concatenated into one logical volume with a pair of linear mappings, one for each disk. When LVM2 creates a volume, it creates an underlying device-mapper device that can be queried with the dmsetup command. For information about the format of devices in a mapping table, see 第 A.1 节 “设​​​​​​​备​​​​​​​列​​​​​​​表​​​​​​​映​​​​​​​射​​​​​​​”. For information about using the dmsetup command to query a device, see 第 A.2 节 “dmsetup 命​​​​​​​令​​​​​​​”.

A.1. 设​​​​​​​备​​​​​​​列​​​​​​​表​​​​​​​映​​​​​​​射​​​​​​​

映​​​​​​​射​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​是​​​​​​​由​​​​​​​一​​​​​​​个​​​​​​​列​​​​​​​表​​​​​​​定​​​​​​​义​​​​​​​的​​​​​​​,该​​​​​​​列​​​​​​​表​​​​​​​指​​​​​​​定​​​​​​​如​​​​​​​何​​​​​​​使​​​​​​​用​​​​​​​支​​​​​​​持​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​列​​​​​​​表​​​​​​​映​​​​​​​射​​​​​​​将​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​每​​​​​​​个​​​​​​​逻​​​​​​​辑​​​​​​​分​​​​​​​段​​​​​​​行​​​​​​​进​​​​​​​行​​​​​​​匹​​​​​​​配​​​​​​​。​​​​​​​映​​​​​​​射​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​列​​​​​​​表​​​​​​​由​​​​​​​以​​​​​​​下​​​​​​​格​​​​​​​式​​​​​​​行​​​​​​​组​​​​​​​成​​​​​​​:
start length mapping [mapping_parameters...]
在​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​列​​​​​​​表​​​​​​​的​​​​​​​第​​​​​​​一​​​​​​​行​​​​​​​中​​​​​​​,start 参​​​​​​​数​​​​​​​必​​​​​​​须​​​​​​​等​​​​​​​于​​​​​​​ 0。​​​​​​​某​​​​​​​行​​​​​​​中​​​​​​​的​​​​​​​ start + length 参​​​​​​​数​​​​​​​必​​​​​​​须​​​​​​​与​​​​​​​下​​​​​​​一​​​​​​​行​​​​​​​的​​​​​​​ start 相​​​​​​​等​​​​​​​。​​​​​​​在​​​​​​​映​​​​​​​射​​​​​​​列​​​​​​​表​​​​​​​中​​​​​​​指​​​​​​​定​​​​​​​哪​​​​​​​个​​​​​​​映​​​​​​​射​​​​​​​参​​​​​​​数​​​​​​​取​​​​​​​决​​​​​​​于​​​​​​​在​​​​​​​该​​​​​​​行​​​​​​​中​​​​​​​指​​​​​​​定​​​​​​​的​​​​​​​ mapping 类​​​​​​​型​​​​​​​。​​​​​​​
设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​中​​​​​​​的​​​​​​​大​​​​​​​小​​​​​​​总​​​​​​​是​​​​​​​以​​​​​​​扇​​​​​​​区​​​​​​​(512 字​​​​​​​节​​​​​​​)为​​​​​​​单​​​​​​​位​​​​​​​指​​​​​​​定​​​​​​​。​​​​​​​
当​​​​​​​将​​​​​​​某​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​指​​​​​​​定​​​​​​​为​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​中​​​​​​​的​​​​​​​映​​​​​​​射​​​​​​​参​​​​​​​数​​​​​​​,它​​​​​​​就​​​​​​​被​​​​​​​该​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​(比​​​​​​​如​​​​​​​ /dev/hda)中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​或​​​​​​​者​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​ major:minor 的​​​​​​​格​​​​​​​式​​​​​​​进​​​​​​​行​​​​​​​参​​​​​​​考​​​​​​​。​​​​​​​首​​​​​​​选​​​​​​​ major:minor 格​​​​​​​式​​​​​​​因​​​​​​​为​​​​​​​这​​​​​​​样​​​​​​​可​​​​​​​避​​​​​​​免​​​​​​​查​​​​​​​找​​​​​​​路​​​​​​​径​​​​​​​名​​​​​​​称​​​​​​​。​​​​​​​
以​​​​​​​下​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​某​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​映​​​​​​​像​​​​​​​列​​​​​​​表​​​​​​​示​​​​​​​例​​​​​​​。​​​​​​​在​​​​​​​这​​​​​​​个​​​​​​​列​​​​​​​表​​​​​​​中​​​​​​​有​​​​​​​四​​​​​​​个​​​​​​​线​​​​​​​性​​​​​​​对​​​​​​​象​​​​​​​:
0 35258368 linear 8:48 65920
35258368 35258368 linear 8:32 65920
70516736 17694720 linear 8:16 17694976
88211456 17694720 linear 8:16 256
每​​​​​​​行​​​​​​​的​​​​​​​前​​​​​​​两​​​​​​​个​​​​​​​参​​​​​​​数​​​​​​​是​​​​​​​片​​​​​​​段​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​以​​​​​​​及​​​​​​​该​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​。​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​关​​​​​​​键​​​​​​​字​​​​​​​是​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​,在​​​​​​​此​​​​​​​示​​​​​​​例​​​​​​​中​​​​​​​全​​​​​​​部​​​​​​​是​​​​​​​ linear。​​​​​​​该​​​​​​​行​​​​​​​的​​​​​​​其​​​​​​​余​​​​​​​部​​​​​​​分​​​​​​​包​​​​​​​括​​​​​​​用​​​​​​​于​​​​​​​线​​​​​​​性​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​参​​​​​​​数​​​​​​​。​​​​​​​
以​​​​​​​下​​​​​​​部​​​​​​​分​​​​​​​描​​​​​​​述​​​​​​​了​​​​​​​以​​​​​​​下​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​:
  • 线​​​​​​​性​​​​​​​
  • 条​​​​​​​状​​​​​​​
  • 镜​​​​​​​像​​​​​​​
  • 快​​​​​​​照​​​​​​​以​​​​​​​及​​​​​​​ snapshot-origin
  • 错​​​​​​​误​​​​​​​
  • 零​​​​​​​
  • 多​​​​​​​路​​​​​​​径​​​​​​​
  • 加​​​​​​​密​​​​​​​

A.1.1. 线​​​​​​​性​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

线​​​​​​​性​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​将​​​​​​​块​​​​​​​的​​​​​​​连​​​​​​​续​​​​​​​行​​​​​​​映​​​​​​​射​​​​​​​到​​​​​​​另​​​​​​​一​​​​​​​个​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​。​​​​​​​线​​​​​​​性​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length linear device offset
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
device
块​​​​​​​设​​​​​​​备​​​​​​​,被​​​​​​​该​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​或​​​​​​​者​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​ major:minor 的​​​​​​​格​​​​​​​式​​​​​​​参​​​​​​​考​​​​​​​
offset
该​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​位​​​​​​​于​​​​​​​虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​ 0,片​​​​​​​段​​​​​​​长​​​​​​​度​​​​​​​为​​​​​​​ 1638400,major:minor 号​​​​​​​码​​​​​​​对​​​​​​​为​​​​​​​ 8:2,起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​为​​​​​​​ 41146992 的​​​​​​​线​​​​​​​性​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 16384000 linear 8:2 41156992
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​是​​​​​​​含​​​​​​​有​​​​​​​在​​​​​​​设​​​​​​​备​​​​​​​ /dev/hda 中​​​​​​​指​​​​​​​定​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​参​​​​​​​数​​​​​​​的​​​​​​​线​​​​​​​性​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 20971520 linear /dev/hda 384

A.1.2. 条​​​​​​​状​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

条​​​​​​​状​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​支​​​​​​​持​​​​​​​所​​​​​​​有​​​​​​​跨​​​​​​​物​​​​​​​理​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​条​​​​​​​块​​​​​​​。​​​​​​​它​​​​​​​使​​​​​​​用​​​​​​​条​​​​​​​块​​​​​​​数​​​​​​​目​​​​​​​和​​​​​​​成​​​​​​​条​​​​​​​的​​​​​​​组​​​​​​​集​​​​​​​大​​​​​​​小​​​​​​​以​​​​​​​及​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​和​​​​​​​扇​​​​​​​区​​​​​​​对​​​​​​​作​​​​​​​为​​​​​​​参​​​​​​​数​​​​​​​。​​​​​​​条​​​​​​​状​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length striped #stripes chunk_size device1 offset1 ... deviceN offsetN
每​​​​​​​个​​​​​​​条​​​​​​​块​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​组​​​​​​​ device 和​​​​​​​ offset 参​​​​​​​数​​​​​​​。​​​​​​​
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
#stripes
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​条​​​​​​​数​​​​​​​
chunk_size
切​​​​​​​换​​​​​​​到​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​条​​​​​​​之​​​​​​​前​​​​​​​写​​​​​​​入​​​​​​​每​​​​​​​个​​​​​​​条​​​​​​​的​​​​​​​扇​​​​​​​区​​​​​​​数​​​​​​​,必​​​​​​​须​​​​​​​至​​​​​​​少​​​​​​​是​​​​​​​内​​​​​​​核​​​​​​​页​​​​​​​面​​​​​​​大​​​​​​​小​​​​​​​的​​​​​​​两​​​​​​​倍​​​​​​​
device
块​​​​​​​设​​​​​​​备​​​​​​​,可​​​​​​​被​​​​​​​该​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​或​​​​​​​者​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​格​​​​​​​式​​​​​​​ major:minor 参​​​​​​​考​​​​​​​。​​​​​​​
offset
该​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​一​​​​​​​个​​​​​​​有​​​​​​​三​​​​​​​个​​​​​​​条​​​​​​​,且​​​​​​​组​​​​​​​集​​​​​​​大​​​​​​​小​​​​​​​为​​​​​​​ 128 的​​​​​​​条​​​​​​​状​​​​​​​对​​​​​​​象​​​​​​​:
0 73728 striped 3 128 8:9 384 8:8 384 8:7 9789824
0
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
73728
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
striped 3 128
三​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​组​​​​​​​集​​​​​​​大​​​​​​​小​​​​​​​为​​​​​​​ 128 块​​​​​​​的​​​​​​​条​​​​​​​
8:9
第​​​​​​​一​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​ major:minor 号​​​​​​​码​​​​​​​
384
第​​​​​​​一​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
8:8
第​​​​​​​二​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​ major:minor 号​​​​​​​码​​​​​​​
384
第​​​​​​​二​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
8:7
第​​​​​​​三​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​ major:minor 号​​​​​​​码​​​​​​​
9789824
第​​​​​​​三​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​含​​​​​​​有​​​​​​​两​​​​​​​个​​​​​​​ 256KiB 条​​​​​​​,使​​​​​​​用​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​而​​​​​​​不​​​​​​​是​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​指​​​​​​​定​​​​​​​设​​​​​​​备​​​​​​​参​​​​​​​数​​​​​​​的​​​​​​​条​​​​​​​状​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 65536 striped 2 512 /dev/hda 0 /dev/hdb 0

A.1.3. 镜​​​​​​​像​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

镜​​​​​​​像​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​支​​​​​​​持​​​​​​​镜​​​​​​​像​​​​​​​的​​​​​​​逻​​​​​​​辑​​​​​​​设​​​​​​​备​​​​​​​。​​​​​​​镜​​​​​​​像​​​​​​​对​​​​​​​象​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length mirror log_type #logargs logarg1 ... logargN #devs device1 offset1 ... deviceN offsetN
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
log_type
可​​​​​​​能​​​​​​​的​​​​​​​日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​及​​​​​​​其​​​​​​​参​​​​​​​数​​​​​​​如​​​​​​​下​​​​​​​:
core
镜​​​​​​​像​​​​​​​是​​​​​​​本​​​​​​​地​​​​​​​的​​​​​​​,镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​核​​​​​​​内​​​​​​​存​​​​​​​中​​​​​​​。​​​​​​​这​​​​​​​个​​​​​​​日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​有​​​​​​​ 1-3 个​​​​​​​参​​​​​​​数​​​​​​​:
regionsize [[no]sync] [block_on_error]
disk
镜​​​​​​​像​​​​​​​是​​​​​​​本​​​​​​​地​​​​​​​的​​​​​​​,镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​磁​​​​​​​盘​​​​​​​中​​​​​​​。​​​​​​​这​​​​​​​个​​​​​​​日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​有​​​​​​​ 2-4 个​​​​​​​参​​​​​​​数​​​​​​​:
logdevice regionsize [[no]sync] [block_on_error]
clustered_core
镜​​​​​​​像​​​​​​​是​​​​​​​群​​​​​​​集​​​​​​​的​​​​​​​,镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​核​​​​​​​内​​​​​​​存​​​​​​​中​​​​​​​。​​​​​​​这​​​​​​​个​​​​​​​日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​有​​​​​​​ 2-4 个​​​​​​​参​​​​​​​数​​​​​​​:
regionsize UUID [[no]sync] [block_on_error]
clustered_disk
镜​​​​​​​像​​​​​​​是​​​​​​​群​​​​​​​集​​​​​​​的​​​​​​​,镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​磁​​​​​​​盘​​​​​​​中​​​​​​​。​​​​​​​这​​​​​​​个​​​​​​​日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​有​​​​​​​ 3-5 个​​​​​​​参​​​​​​​数​​​​​​​:
logdevice regionsize UUID [[no]sync] [block_on_error]
LVM 保​​​​​​​存​​​​​​​一​​​​​​​个​​​​​​​小​​​​​​​日​​​​​​​志​​​​​​​用​​​​​​​来​​​​​​​跟​​​​​​​踪​​​​​​​与​​​​​​​该​​​​​​​镜​​​​​​​像​​​​​​​或​​​​​​​者​​​​​​​多​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​同​​​​​​​步​​​​​​​的​​​​​​​区​​​​​​​域​​​​​​​。​​​​​​​regionsize 参​​​​​​​数​​​​​​​指​​​​​​​定​​​​​​​这​​​​​​​些​​​​​​​区​​​​​​​域​​​​​​​的​​​​​​​大​​​​​​​小​​​​​​​。​​​​​​​
在​​​​​​​群​​​​​​​集​​​​​​​环​​​​​​​境​​​​​​​中​​​​​​​,UUID 参​​​​​​​数​​​​​​​是​​​​​​​与​​​​​​​镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​设​​​​​​​备​​​​​​​关​​​​​​​联​​​​​​​的​​​​​​​特​​​​​​​定​​​​​​​识​​​​​​​别​​​​​​​符​​​​​​​,以​​​​​​​便​​​​​​​可​​​​​​​通​​​​​​​过​​​​​​​该​​​​​​​群​​​​​​​集​​​​​​​维​​​​​​​护​​​​​​​日​​​​​​​志​​​​​​​状​​​​​​​态​​​​​​​。​​​​​​​
The optional [no]sync argument can be used to specify the mirror as "in-sync" or "out-of-sync". The block_on_error argument is used to tell the mirror to respond to errors rather than ignoring them.
#log_args
将​​​​​​​在​​​​​​​映​​​​​​​射​​​​​​​中​​​​​​​指​​​​​​​定​​​​​​​的​​​​​​​日​​​​​​​志​​​​​​​参​​​​​​​数​​​​​​​数​​​​​​​目​​​​​​​
logargs
镜​​​​​​​像​​​​​​​的​​​​​​​日​​​​​​​志​​​​​​​参​​​​​​​数​​​​​​​;提​​​​​​​供​​​​​​​的​​​​​​​日​​​​​​​志​​​​​​​参​​​​​​​数​​​​​​​数​​​​​​​目​​​​​​​是​​​​​​​由​​​​​​​ #log-args 参​​​​​​​数​​​​​​​指​​​​​​​定​​​​​​​的​​​​​​​,且​​​​​​​有​​​​​​​效​​​​​​​日​​​​​​​志​​​​​​​参​​​​​​​数​​​​​​​由​​​​​​​ log_type 参​​​​​​​数​​​​​​​决​​​​​​​定​​​​​​​。​​​​​​​
#devs
镜​​​​​​​像​​​​​​​中​​​​​​​的​​​​​​​分​​​​​​​支​​​​​​​数​​​​​​​目​​​​​​​;为​​​​​​​每​​​​​​​个​​​​​​​分​​​​​​​支​​​​​​​指​​​​​​​定​​​​​​​一​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​和​​​​​​​一​​​​​​​个​​​​​​​误​​​​​​​差​​​​​​​。​​​​​​​
device
每​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​分​​​​​​​支​​​​​​​的​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​,使​​​​​​​用​​​​​​​该​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​或​​​​​​​者​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​ major:minor 的​​​​​​​格​​​​​​​式​​​​​​​参​​​​​​​考​​​​​​​。​​​​​​​每​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​分​​​​​​​支​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​和​​​​​​​误​​​​​​​差​​​​​​​,如​​​​​​​ #devs 参​​​​​​​数​​​​​​​中​​​​​​​所​​​​​​​示​​​​​​​。​​​​​​​
offset
设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​。​​​​​​​每​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​分​​​​​​​支​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​和​​​​​​​误​​​​​​​差​​​​​​​,如​​​​​​​ #devs 参​​​​​​​数​​​​​​​中​​​​​​​所​​​​​​​示​​​​​​​。​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​某​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​磁​​​​​​​盘​​​​​​​中​​​​​​​的​​​​​​​群​​​​​​​集​​​​​​​镜​​​​​​​像​​​​​​​的​​​​​​​镜​​​​​​​像​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 52428800 mirror clustered_disk 4 253:2 1024 UUID block_on_error 3 253:3 0 253:4 0 253:5 0
0
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
52428800
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
mirror clustered_disk
日​​​​​​​志​​​​​​​类​​​​​​​型​​​​​​​指​​​​​​​定​​​​​​​其​​​​​​​为​​​​​​​群​​​​​​​集​​​​​​​镜​​​​​​​像​​​​​​​且​​​​​​​镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​磁​​​​​​​盘​​​​​​​中​​​​​​​的​​​​​​​镜​​​​​​​像​​​​​​​对​​​​​​​象​​​​​​​
4
附​​​​​​​带​​​​​​​ 4 个​​​​​​​镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​参​​​​​​​数​​​​​​​
253:2
日​​​​​​​志​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​ major:minor 号​​​​​​​码​​​​​​​
1024
镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​用​​​​​​​来​​​​​​​跟​​​​​​​踪​​​​​​​哪​​​​​​​些​​​​​​​进​​​​​​​行​​​​​​​同​​​​​​​步​​​​​​​的​​​​​​​区​​​​​​​域​​​​​​​大​​​​​​​小​​​​​​​
UUID
镜​​​​​​​像​​​​​​​日​​​​​​​志​​​​​​​的​​​​​​​ UUID,用​​​​​​​来​​​​​​​通​​​​​​​过​​​​​​​群​​​​​​​集​​​​​​​维​​​​​​​护​​​​​​​日​​​​​​​志​​​​​​​信​​​​​​​息​​​​​​​
block_on_error
镜​​​​​​​像​​​​​​​应​​​​​​​该​​​​​​​响​​​​​​​应​​​​​​​错​​​​​​​误​​​​​​​
3
镜​​​​​​​像​​​​​​​中​​​​​​​的​​​​​​​分​​​​​​​支​​​​​​​
253:3 0 253:4 0 253:5 0
构​​​​​​​成​​​​​​​镜​​​​​​​像​​​​​​​的​​​​​​​每​​​​​​​个​​​​​​​分​​​​​​​支​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​ major:minor 号​​​​​​​码​​​​​​​和​​​​​​​误​​​​​​​差​​​​​​​

A.1.4. 快​​​​​​​照​​​​​​​以​​​​​​​及​​​​​​​ snapshot-origin 映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

当​​​​​​​您​​​​​​​生​​​​​​​成​​​​​​​某​​​​​​​个​​​​​​​卷​​​​​​​的​​​​​​​第​​​​​​​一​​​​​​​个​​​​​​​ LVM 快​​​​​​​照​​​​​​​时​​​​​​​,要​​​​​​​使​​​​​​​用​​​​​​​四​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​设​​​​​​​备​​​​​​​:
  1. 包​​​​​​​含​​​​​​​源​​​​​​​卷​​​​​​​原​​​​​​​始​​​​​​​映​​​​​​​射​​​​​​​列​​​​​​​表​​​​​​​线​​​​​​​性​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​。​​​​​​​
  2. 作​​​​​​​为​​​​​​​源​​​​​​​卷​​​​​​​即​​​​​​​写​​​​​​​即​​​​​​​拷​​​​​​​(copy-on-write,COW)设​​​​​​​备​​​​​​​使​​​​​​​用​​​​​​​的​​​​​​​有​​​​​​​线​​​​​​​性​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​;每​​​​​​​次​​​​​​​写​​​​​​​入​​​​​​​时​​​​​​​,会​​​​​​​将​​​​​​​原​​​​​​​始​​​​​​​数​​​​​​​据​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​每​​​​​​​个​​​​​​​快​​​​​​​照​​​​​​​的​​​​​​​ COW 设​​​​​​​备​​​​​​​中​​​​​​​以​​​​​​​便​​​​​​​保​​​​​​​持​​​​​​​不​​​​​​​更​​​​​​​改​​​​​​​可​​​​​​​见​​​​​​​内​​​​​​​容​​​​​​​(直​​​​​​​到​​​​​​​ COW 设​​​​​​​备​​​​​​​写​​​​​​​满​​​​​​​为​​​​​​​止​​​​​​​)。​​​​​​​
  3. 带​​​​​​​快​​​​​​​照​​​​​​​映​​​​​​​射​​​​​​​合​​​​​​​并​​​​​​​ #1 和​​​​​​​ #2 的​​​​​​​设​​​​​​​备​​​​​​​,它​​​​​​​是​​​​​​​可​​​​​​​见​​​​​​​快​​​​​​​照​​​​​​​卷​​​​​​​
  4. The "original" volume (which uses the device number used by the original source volume), whose table is replaced by a "snapshot-origin" mapping from device #1.
用​​​​​​​来​​​​​​​创​​​​​​​建​​​​​​​这​​​​​​​些​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​固​​​​​​​定​​​​​​​命​​​​​​​名​​​​​​​方​​​​​​​案​​​​​​​,例​​​​​​​如​​​​​​​:您​​​​​​​可​​​​​​​以​​​​​​​使​​​​​​​用​​​​​​​以​​​​​​​下​​​​​​​命​​​​​​​令​​​​​​​生​​​​​​​成​​​​​​​名​​​​​​​为​​​​​​​ base 的​​​​​​​ LVM 卷​​​​​​​以​​​​​​​及​​​​​​​基​​​​​​​于​​​​​​​该​​​​​​​卷​​​​​​​的​​​​​​​名​​​​​​​为​​​​​​​ snap 快​​​​​​​照​​​​​​​卷​​​​​​​。​​​​​​​
# lvcreate -L 1G -n base volumeGroup
# lvcreate -L 100M --snapshot -n snap volumeGroup/base
这​​​​​​​产​​​​​​​生​​​​​​​四​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​,您​​​​​​​可​​​​​​​以​​​​​​​使​​​​​​​用​​​​​​​以​​​​​​​下​​​​​​​命​​​​​​​令​​​​​​​浏​​​​​​​览​​​​​​​:
# dmsetup table|grep volumeGroup
volumeGroup-base-real: 0 2097152 linear 8:19 384
volumeGroup-snap-cow: 0 204800 linear 8:19 2097536
volumeGroup-snap: 0 2097152 snapshot 254:11 254:12 P 16
volumeGroup-base: 0 2097152 snapshot-origin 254:11

# ls -lL /dev/mapper/volumeGroup-*
brw-------  1 root root 254, 11 29 ago 18:15 /dev/mapper/volumeGroup-base-real
brw-------  1 root root 254, 12 29 ago 18:15 /dev/mapper/volumeGroup-snap-cow
brw-------  1 root root 254, 13 29 ago 18:15 /dev/mapper/volumeGroup-snap
brw-------  1 root root 254, 10 29 ago 18:14 /dev/mapper/volumeGroup-base
snapshot-origin 对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length snapshot-origin origin
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
origin
快​​​​​​​照​​​​​​​基​​​​​​​础​​​​​​​卷​​​​​​​
snapshot-origin 一​​​​​​​般​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​或​​​​​​​者​​​​​​​多​​​​​​​个​​​​​​​基​​​​​​​于​​​​​​​它​​​​​​​的​​​​​​​快​​​​​​​照​​​​​​​。​​​​​​​会​​​​​​​将​​​​​​​读​​​​​​​取​​​​​​​操​​​​​​​作​​​​​​​直​​​​​​​接​​​​​​​与​​​​​​​后​​​​​​​备​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​。​​​​​​​每​​​​​​​次​​​​​​​写​​​​​​​入​​​​​​​时​​​​​​​,会​​​​​​​将​​​​​​​原​​​​​​​始​​​​​​​数​​​​​​​据​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​每​​​​​​​个​​​​​​​快​​​​​​​照​​​​​​​的​​​​​​​ COW 设​​​​​​​备​​​​​​​中​​​​​​​以​​​​​​​便​​​​​​​保​​​​​​​持​​​​​​​其​​​​​​​不​​​​​​​更​​​​​​​改​​​​​​​的​​​​​​​可​​​​​​​见​​​​​​​内​​​​​​​容​​​​​​​(直​​​​​​​到​​​​​​​ COW 设​​​​​​​备​​​​​​​写​​​​​​​满​​​​​​​为​​​​​​​止​​​​​​​)。​​​​​​​
快​​​​​​​照​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length snapshot origin COW-device P|N chunksize
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
origin
快​​​​​​​照​​​​​​​基​​​​​​​础​​​​​​​卷​​​​​​​
COW-device
保​​​​​​​存​​​​​​​更​​​​​​​改​​​​​​​组​​​​​​​集​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​
P|N
P(持​​​​​​​久​​​​​​​)或​​​​​​​者​​​​​​​N(不​​​​​​​持​​​​​​​久​​​​​​​);指​​​​​​​示​​​​​​​快​​​​​​​照​​​​​​​是​​​​​​​否​​​​​​​可​​​​​​​在​​​​​​​重​​​​​​​启​​​​​​​后​​​​​​​保​​​​​​​留​​​​​​​。​​​​​​​对​​​​​​​于​​​​​​​瞬​​​​​​​时​​​​​​​快​​​​​​​照​​​​​​​(N)必​​​​​​​须​​​​​​​将​​​​​​​ less metadata 保​​​​​​​存​​​​​​​在​​​​​​​磁​​​​​​​盘​​​​​​​中​​​​​​​;内​​​​​​​核​​​​​​​可​​​​​​​将​​​​​​​其​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​内​​​​​​​存​​​​​​​中​​​​​​​。​​​​​​​
chunksize
将​​​​​​​保​​​​​​​存​​​​​​​到​​​​​​​ COW 设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​有​​​​​​​数​​​​​​​据​​​​​​​更​​​​​​​改​​​​​​​的​​​​​​​组​​​​​​​集​​​​​​​的​​​​​​​扇​​​​​​​区​​​​​​​的​​​​​​​大​​​​​​​小​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​起​​​​​​​始​​​​​​​设​​​​​​​备​​​​​​​为​​​​​​​ 254:11 的​​​​​​​ snapshot-origin 对​​​​​​​象​​​​​​​。​​​​​​​
0 2097152 snapshot-origin 254:11
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​起​​​​​​​始​​​​​​​设​​​​​​​备​​​​​​​为​​​​​​​ 254:11、​​​​​​​COW 设​​​​​​​备​​​​​​​为​​​​​​​ 254:12 的​​​​​​​ snapshot-origin 对​​​​​​​象​​​​​​​。​​​​​​​这​​​​​​​个​​​​​​​快​​​​​​​照​​​​​​​设​​​​​​​备​​​​​​​在​​​​​​​重​​​​​​​启​​​​​​​后​​​​​​​仍​​​​​​​然​​​​​​​保​​​​​​​留​​​​​​​,且​​​​​​​保​​​​​​​存​​​​​​​在​​​​​​​ COW 设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​数​​​​​​​据​​​​​​​组​​​​​​​集​​​​​​​大​​​​​​​小​​​​​​​为​​​​​​​ 16 个​​​​​​​扇​​​​​​​区​​​​​​​。​​​​​​​
0 2097152 snapshot 254:11 254:12 P 16

A.1.5. 错​​​​​​​误​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

如​​​​​​​果​​​​​​​有​​​​​​​错​​​​​​​误​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​,任​​​​​​​何​​​​​​​对​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​扇​​​​​​​区​​​​​​​的​​​​​​​ I/O 操​​​​​​​作​​​​​​​会​​​​​​​失​​​​​​​败​​​​​​​。​​​​​​​
错​​​​​​​误​​​​​​​映​​​​​​​射​​​​​​​可​​​​​​​用​​​​​​​来​​​​​​​进​​​​​​​行​​​​​​​测​​​​​​​试​​​​​​​。​​​​​​​要​​​​​​​测​​​​​​​试​​​​​​​某​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​在​​​​​​​失​​​​​​​败​​​​​​​后​​​​​​​如​​​​​​​何​​​​​​​动​​​​​​​作​​​​​​​,您​​​​​​​可​​​​​​​以​​​​​​​创​​​​​​​建​​​​​​​一​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​,且​​​​​​​在​​​​​​​该​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​部​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​坏​​​​​​​扇​​​​​​​区​​​​​​​,或​​​​​​​者​​​​​​​您​​​​​​​可​​​​​​​以​​​​​​​换​​​​​​​出​​​​​​​一​​​​​​​个​​​​​​​镜​​​​​​​像​​​​​​​分​​​​​​​支​​​​​​​并​​​​​​​用​​​​​​​错​​​​​​​误​​​​​​​对​​​​​​​象​​​​​​​替​​​​​​​换​​​​​​​之​​​​​​​。​​​​​​​
错​​​​​​​误​​​​​​​对​​​​​​​象​​​​​​​可​​​​​​​用​​​​​​​于​​​​​​​出​​​​​​​错​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​,是​​​​​​​一​​​​​​​种​​​​​​​避​​​​​​​免​​​​​​​超​​​​​​​时​​​​​​​或​​​​​​​者​​​​​​​在​​​​​​​实​​​​​​​际​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​重​​​​​​​试​​​​​​​的​​​​​​​方​​​​​​​法​​​​​​​。​​​​​​​您​​​​​​​在​​​​​​​失​​​​​​​败​​​​​​​时​​​​​​​重​​​​​​​新​​​​​​​部​​​​​​​署​​​​​​​ LVM 元​​​​​​​数​​​​​​​据​​​​​​​时​​​​​​​可​​​​​​​将​​​​​​​其​​​​​​​作​​​​​​​为​​​​​​​中​​​​​​​间​​​​​​​对​​​​​​​象​​​​​​​使​​​​​​​用​​​​​​​。​​​​​​​
错​​​​​​​误​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​除​​​​​​​ start 和​​​​​​​ length 参​​​​​​​数​​​​​​​外​​​​​​​不​​​​​​​使​​​​​​​用​​​​​​​其​​​​​​​它​​​​​​​参​​​​​​​数​​​​​​​。​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​的​​​​​​​是​​​​​​​错​​​​​​​误​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 65536 error

A.1.6. 零​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

零​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​是​​​​​​​与​​​​​​​ /dev/zero 等​​​​​​​同​​​​​​​的​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​。​​​​​​​对​​​​​​​这​​​​​​​个​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​读​​​​​​​取​​​​​​​操​​​​​​​作​​​​​​​会​​​​​​​返​​​​​​​回​​​​​​​零​​​​​​​块​​​​​​​。​​​​​​​写​​​​​​​入​​​​​​​这​​​​​​​个​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​数​​​​​​​据​​​​​​​会​​​​​​​被​​​​​​​丢​​​​​​​弃​​​​​​​,但​​​​​​​写​​​​​​​入​​​​​​​操​​​​​​​作​​​​​​​会​​​​​​​成​​​​​​​功​​​​​​​。​​​​​​​零​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​除​​​​​​​ start 和​​​​​​​ length 参​​​​​​​数​​​​​​​外​​​​​​​没​​​​​​​有​​​​​​​其​​​​​​​它​​​​​​​参​​​​​​​数​​​​​​​。​​​​​​​
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​了​​​​​​​一​​​​​​​个​​​​​​​ 16Tb 设​​​​​​​备​​​​​​​的​​​​​​​零​​​​​​​对​​​​​​​象​​​​​​​。​​​​​​​
0 65536 zero

A.1.7. 多​​​​​​​路​​​​​​​径​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

多​​​​​​​路​​​​​​​径​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​支​​​​​​​持​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​映​​​​​​​射​​​​​​​。​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length  multipath  #features [feature1 ... featureN] #handlerargs [handlerarg1 ... handlerargN] #pathgroups pathgroup pathgroupargs1 ... pathgroupargsN
每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​群​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​组​​​​​​​ pathgroupargs 参​​​​​​​数​​​​​​​。​​​​​​​
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
#features
在​​​​​​​那​​​​​​​些​​​​​​​特​​​​​​​性​​​​​​​之​​​​​​​后​​​​​​​是​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​特​​​​​​​性​​​​​​​的​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​如​​​​​​​果​​​​​​​这​​​​​​​个​​​​​​​参​​​​​​​数​​​​​​​是​​​​​​​ 0,则​​​​​​​没​​​​​​​有​​​​​​​ feature 参​​​​​​​数​​​​​​​,且​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​参​​​​​​​数​​​​​​​为​​​​​​​ #handlerargs。​​​​​​​目​​​​​​​前​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​支​​​​​​​持​​​​​​​的​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​特​​​​​​​性​​​​​​​ queue_if_no_path。​​​​​​​这​​​​​​​说​​​​​​​明​​​​​​​如​​​​​​​果​​​​​​​没​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​可​​​​​​​用​​​​​​​,则​​​​​​​将​​​​​​​这​​​​​​​个​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​设​​​​​​​定​​​​​​​为​​​​​​​队​​​​​​​列​​​​​​​ I/O。​​​​​​​
例​​​​​​​如​​​​​​​:如​​​​​​​果​​​​​​​只​​​​​​​在​​​​​​​尝​​​​​​​试​​​​​​​使​​​​​​​用​​​​​​​所​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​后​​​​​​​将​​​​​​​其​​​​​​​标​​​​​​​记​​​​​​​为​​​​​​​失​​​​​​​败​​​​​​​时​​​​​​​从​​​​​​​才​​​​​​​将​​​​​​​ multipath.conf 文​​​​​​​件​​​​​​​的​​​​​​​ no_path_retry 选​​​​​​​项​​​​​​​设​​​​​​​定​​​​​​​为​​​​​​​只​​​​​​​有​​​​​​​ I/O 操​​​​​​​作​​​​​​​的​​​​​​​队​​​​​​​列​​​​​​​,该​​​​​​​映​​​​​​​射​​​​​​​应​​​​​​​显​​​​​​​示​​​​​​​如​​​​​​​下​​​​​​​除​​​​​​​非​​​​​​​所​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​检​​​​​​​查​​​​​​​程​​​​​​​序​​​​​​​进​​​​​​​行​​​​​​​的​​​​​​​指​​​​​​​定​​​​​​​检​​​​​​​查​​​​​​​次​​​​​​​数​​​​​​​都​​​​​​​是​​​​​​​失​​​​​​​败​​​​​​​的​​​​​​​。​​​​​​​
0 71014400 multipath 1 queue_if_no_path 0 2 1 round-robin 0 2 1 66:128 \
1000 65:64 1000 round-robin 0 2 1 8:0 1000 67:192 1000
在​​​​​​​所​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​检​​​​​​​查​​​​​​​程​​​​​​​序​​​​​​​完​​​​​​​成​​​​​​​指​​​​​​​定​​​​​​​数​​​​​​​目​​​​​​​的​​​​​​​检​​​​​​​查​​​​​​​并​​​​​​​失​​​​​​​败​​​​​​​后​​​​​​​,会​​​​​​​出​​​​​​​现​​​​​​​如​​​​​​​下​​​​​​​映​​​​​​​射​​​​​​​。​​​​​​​
0 71014400 multipath 0 0 2 1 round-robin 0 2 1 66:128 1000 65:64 1000 \
round-robin 0 2 1 8:0 1000 67:192 1000
#handlerargs
那​​​​​​​些​​​​​​​参​​​​​​​数​​​​​​​后​​​​​​​是​​​​​​​硬​​​​​​​件​​​​​​​处​​​​​​​理​​​​​​​器​​​​​​​参​​​​​​​数​​​​​​​的​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​硬​​​​​​​件​​​​​​​处​​​​​​​理​​​​​​​器​​​​​​​指​​​​​​​定​​​​​​​在​​​​​​​切​​​​​​​换​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​或​​​​​​​者​​​​​​​处​​​​​​​理​​​​​​​ I/O 错​​​​​​​误​​​​​​​时​​​​​​​用​​​​​​​来​​​​​​​执​​​​​​​行​​​​​​​硬​​​​​​​件​​​​​​​特​​​​​​​定​​​​​​​的​​​​​​​动​​​​​​​作​​​​​​​。​​​​​​​如​​​​​​​果​​​​​​​将​​​​​​​其​​​​​​​设​​​​​​​定​​​​​​​为​​​​​​​ 0,那​​​​​​​么​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​参​​​​​​​数​​​​​​​则​​​​​​​为​​​​​​​ #pathgroups。​​​​​​​
#pathgroups
路​​​​​​​径​​​​​​​组​​​​​​​的​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​一​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​是​​​​​​​一​​​​​​​组​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​进​​​​​​​行​​​​​​​负​​​​​​​载​​​​​​​平​​​​​​​衡​​​​​​​的​​​​​​​路​​​​​​​径​​​​​​​。​​​​​​​每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​组​​​​​​​ pathgroupargs 参​​​​​​​数​​​​​​​。​​​​​​​
pathgroup
下​​​​​​​一​​​​​​​个​​​​​​​要​​​​​​​尝​​​​​​​试​​​​​​​的​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​。​​​​​​​
pathgroupsargs
每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​包​​​​​​​括​​​​​​​以​​​​​​​下​​​​​​​参​​​​​​​数​​​​​​​:
pathselector #selectorargs #paths #pathargs device1 ioreqs1 ... deviceN ioreqsN 
路​​​​​​​径​​​​​​​组​​​​​​​中​​​​​​​的​​​​​​​每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​都​​​​​​​有​​​​​​​一​​​​​​​组​​​​​​​路​​​​​​​径​​​​​​​参​​​​​​​数​​​​​​​。​​​​​​​
pathselector
指​​​​​​​定​​​​​​​用​​​​​​​来​​​​​​​决​​​​​​​定​​​​​​​使​​​​​​​用​​​​​​​这​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​中​​​​​​​的​​​​​​​哪​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​进​​​​​​​行​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​ I/O 操​​​​​​​作​​​​​​​的​​​​​​​算​​​​​​​法​​​​​​​。​​​​​​​
#selectorargs
在​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​映​​​​​​​射​​​​​​​中​​​​​​​这​​​​​​​个​​​​​​​参​​​​​​​数​​​​​​​后​​​​​​​的​​​​​​​路​​​​​​​径​​​​​​​选​​​​​​​择​​​​​​​程​​​​​​​序​​​​​​​参​​​​​​​数​​​​​​​的​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​目​​​​​​​前​​​​​​​,这​​​​​​​个​​​​​​​参​​​​​​​数​​​​​​​的​​​​​​​值​​​​​​​总​​​​​​​是​​​​​​​ 0。​​​​​​​
#paths
这​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​中​​​​​​​的​​​​​​​路​​​​​​​径​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​
#pathargs
在​​​​​​​这​​​​​​​个​​​​​​​组​​​​​​​群​​​​​​​中​​​​​​​为​​​​​​​每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​指​​​​​​​定​​​​​​​的​​​​​​​路​​​​​​​径​​​​​​​参​​​​​​​数​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​目​​​​​​​前​​​​​​​,这​​​​​​​个​​​​​​​数​​​​​​​值​​​​​​​总​​​​​​​是​​​​​​​ 1,即​​​​​​​ ioreqs 参​​​​​​​数​​​​​​​。​​​​​​​
device
该​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​块​​​​​​​设​​​​​​​备​​​​​​​,使​​​​​​​用​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​ major:minor 格​​​​​​​式​​​​​​​参​​​​​​​考​​​​​​​
ioreqs
切​​​​​​​换​​​​​​​到​​​​​​​当​​​​​​​前​​​​​​​组​​​​​​​群​​​​​​​的​​​​​​​下​​​​​​​一​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​前​​​​​​​路​​​​​​​由​​​​​​​到​​​​​​​这​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​ I/O 请​​​​​​​求​​​​​​​数​​​​​​​目​​​​​​​。​​​​​​​
多​​​​​​​路​​​​​​​径​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

图 A.1. 多​​​​​​​路​​​​​​​径​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​对​​​​​​​同​​​​​​​一​​​​​​​个​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​一​​​​​​​个​​​​​​​纯​​​​​​​故​​​​​​​障​​​​​​​排​​​​​​​除​​​​​​​对​​​​​​​象​​​​​​​定​​​​​​​义​​​​​​​。​​​​​​​在​​​​​​​这​​​​​​​个​​​​​​​对​​​​​​​象​​​​​​​中​​​​​​​有​​​​​​​四​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​,其​​​​​​​中​​​​​​​每​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​只​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​,以​​​​​​​便​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​每​​​​​​​次​​​​​​​只​​​​​​​能​​​​​​​使​​​​​​​用​​​​​​​一​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​。​​​​​​​
0 71014400 multipath 0 0 4 1 round-robin 0 1 1 66:112 1000 \
round-robin 0 1 1 67:176 1000 round-robin 0 1 1 68:240 1000 \
round-robin 0 1 1 65:48 1000
以​​​​​​​下​​​​​​​示​​​​​​​例​​​​​​​显​​​​​​​示​​​​​​​为​​​​​​​同​​​​​​​一​​​​​​​个​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​设​​​​​​​备​​​​​​​完​​​​​​​全​​​​​​​展​​​​​​​开​​​​​​​(多​​​​​​​总​​​​​​​线​​​​​​​)对​​​​​​​象​​​​​​​定​​​​​​​义​​​​​​​。​​​​​​​在​​​​​​​这​​​​​​​个​​​​​​​对​​​​​​​象​​​​​​​中​​​​​​​只​​​​​​​有​​​​​​​一​​​​​​​个​​​​​​​路​​​​​​​径​​​​​​​组​​​​​​​,其​​​​​​​中​​​​​​​包​​​​​​​含​​​​​​​所​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​。​​​​​​​在​​​​​​​这​​​​​​​个​​​​​​​设​​​​​​​定​​​​​​​中​​​​​​​,多​​​​​​​路​​​​​​​径​​​​​​​将​​​​​​​所​​​​​​​有​​​​​​​负​​​​​​​载​​​​​​​平​​​​​​​均​​​​​​​分​​​​​​​配​​​​​​​到​​​​​​​所​​​​​​​有​​​​​​​路​​​​​​​径​​​​​​​中​​​​​​​。​​​​​​​
0 71014400 multipath 0 0 1 1 round-robin 0 4 1 66:112 1000 \
 67:176 1000 68:240 1000 65:48 1000
有​​​​​​​关​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​的​​​​​​​详​​​​​​​情​​​​​​​请​​​​​​​参​​​​​​​考​​​​​​​《​​​​​​​使​​​​​​​用​​​​​​​设​​​​​​​备​​​​​​​映​​​​​​​射​​​​​​​器​​​​​​​多​​​​​​​路​​​​​​​径​​​​​​​》​​​​​​​文​​​​​​​档​​​​​​​。​​​​​​​

A.1.8. 加​​​​​​​密​​​​​​​映​​​​​​​射​​​​​​​对​​​​​​​象​​​​​​​

加​​​​​​​密​​​​​​​对​​​​​​​象​​​​​​​会​​​​​​​加​​​​​​​密​​​​​​​通​​​​​​​过​​​​​​​指​​​​​​​定​​​​​​​设​​​​​​​备​​​​​​​的​​​​​​​所​​​​​​​有​​​​​​​数​​​​​​​据​​​​​​​。​​​​​​​它​​​​​​​使​​​​​​​用​​​​​​​内​​​​​​​核​​​​​​​ Crypto API。​​​​​​​
加​​​​​​​密​​​​​​​对​​​​​​​象​​​​​​​的​​​​​​​格​​​​​​​式​​​​​​​如​​​​​​​下​​​​​​​:
start length crypt cipher key IV-offset device offset
start
虚​​​​​​​拟​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​块​​​​​​​
length
这​​​​​​​个​​​​​​​片​​​​​​​段​​​​​​​的​​​​​​​长​​​​​​​度​​​​​​​
cipher
Cipher 包​​​​​​​含​​​​​​​ cipher[-chainmode]-ivmode[:iv options]。​​​​​​​
cipher
可​​​​​​​用​​​​​​​密​​​​​​​码​​​​​​​位​​​​​​​于​​​​​​​ /proc/crypto(例​​​​​​​如​​​​​​​:aes)。​​​​​​​
chainmode
总​​​​​​​是​​​​​​​使​​​​​​​用​​​​​​​ cbc。​​​​​​​不​​​​​​​要​​​​​​​使​​​​​​​用​​​​​​​ ebc,它​​​​​​​不​​​​​​​使​​​​​​​用​​​​​​​初​​​​​​​始​​​​​​​向​​​​​​​量​​​​​​​(IV)。​​​​​​​
ivmode[:iv options]
IV 是​​​​​​​一​​​​​​​个​​​​​​​用​​​​​​​来​​​​​​​区​​​​​​​分​​​​​​​加​​​​​​​密​​​​​​​法​​​​​​​的​​​​​​​初​​​​​​​始​​​​​​​向​​​​​​​量​​​​​​​。​​​​​​​IV 模​​​​​​​式​​​​​​​是​​​​​​​ plain或​​​​​​​者​​​​​​​ essiv:hash。​​​​​​​-plain 的​​​​​​​ ivmode 使​​​​​​​用​​​​​​​扇​​​​​​​区​​​​​​​号​​​​​​​码​​​​​​​(加​​​​​​​ IV 误​​​​​​​差​​​​​​​)作​​​​​​​为​​​​​​​ IV。​​​​​​​-essiv 的​​​​​​​ ivmode 是​​​​​​​一​​​​​​​个​​​​​​​改​​​​​​​进​​​​​​​,可​​​​​​​避​​​​​​​免​​​​​​​水​​​​​​​印​​​​​​​弱​​​​​​​点​​​​​​​
key
加​​​​​​​密​​​​​​​密​​​​​​​钥​​​​​​​,在​​​​​​​ hex 中​​​​​​​提​​​​​​​供​​​​​​​
IV-offset
初​​​​​​​始​​​​​​​向​​​​​​​量​​​​​​​(IV)误​​​​​​​差​​​​​​​
device
块​​​​​​​设​​​​​​​备​​​​​​​,被​​​​​​​该​​​​​​​文​​​​​​​件​​​​​​​系​​​​​​​统​​​​​​​中​​​​​​​的​​​​​​​设​​​​​​​备​​​​​​​名​​​​​​​称​​​​​​​或​​​​​​​者​​​​​​​主​​​​​​​号​​​​​​​码​​​​​​​和​​​​​​​副​​​​​​​号​​​​​​​码​​​​​​​以​​​​​​​ major:minor 的​​​​​​​格​​​​​​​式​​​​​​​参​​​​​​​考​​​​​​​
offset
该​​​​​​​设​​​​​​​备​​​​​​​中​​​​​​​映​​​​​​​射​​​​​​​的​​​​​​​起​​​​​​​始​​​​​​​误​​​​​​​差​​​​​​​
以​​​​​​​下​​​​​​​是​​​​​​​加​​​​​​​密​​​​​​​对​​​​​​​象​​​​​​​示​​​​​​​例​​​​​​​。​​​​​​​
0 2097152 crypt aes-plain 0123456789abcdef0123456789abcdef 0 /dev/hda 0