← Documents Documentation/admin-guide/device-mapper/delay.rst GitHub 원문 ↗

Linux 6.18.37 · Administration / Device Mapper

dm-delay target

Read·write·flush를 서로 다른 device와 offset에 map하고 millisecond 단위로 지연하는 dm-delay table 형식과 예제입니다.

Source pathDocumentation/admin-guide/device-mapper/delay.rst
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

3·6·9 argument 형식

delay.rst:1-28

Operation별 device, sector offset과 delay를 공유하거나 분리하는 table 형식을 설명합니다.

dmsetup script

delay.rst:29-54

동일 device 지연, read/write device 분리, read·write·flush별 독립 delay 예를 제공합니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 ========
2 dm-delay
3 ========
4
5 Device-Mapper's "delay" target delays reads and/or writes
6 and/or flushes and optionally maps them to different devices.
7
8 Arguments::
9
10 <device> <offset> <delay> [<write_device> <write_offset> <write_delay>
11 [<flush_device> <flush_offset> <flush_delay>]]
12
13 Table line has to either have 3, 6 or 9 arguments:
14
15 3: apply offset and delay to read, write and flush operations on device
16
17 6: apply offset and delay to device, also apply write_offset and write_delay
18 to write and flush operations on optionally different write_device with
19 optionally different sector offset
20
21 9: same as 6 arguments plus define flush_offset and flush_delay explicitly
22 on/with optionally different flush_device/flush_offset.
23
24 Offsets are specified in sectors.
25
26 Delays are specified in milliseconds.
27
28
29 Example scripts
30 ===============
31
32 ::
33 #!/bin/sh
34 #
35 # Create mapped device named "delayed" delaying read, write and flush operations for 500ms.
36 #
37 dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 500"
38
39 ::
40 #!/bin/sh
41 #
42 # Create mapped device delaying write and flush operations for 400ms and
43 # splitting reads to device $1 but writes and flushes to different device $2
44 # to different offsets of 2048 and 4096 sectors respectively.
45 #
46 dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 2048 0 $2 4096 400"
47
48 ::
49 #!/bin/sh
50 #
51 # Create mapped device delaying reads for 50ms, writes for 100ms and flushes for 333ms
52 # onto the same backing device at offset 0 sectors.
53 #
54 dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 50 $2 0 100 $1 0 333"
55

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

dm-delay argument 형식

1-28

Device-Mapper의 `delay` target은 read, write, flush를 지연시키며 선택적으로 서로 다른 device로 map할 수 있습니다.

Argument 형식은 다음과 같습니다.

    <device> <offset> <delay> [<write_device> <write_offset> <write_delay>
			       [<flush_device> <flush_offset> <flush_delay>]]
dm-delay table argument 수
개수적용 방식
3한 device의 read, write, flush 모두에 동일한 offset과 delay 적용
6Read는 첫 device 설정, write와 flush는 선택적 write_device/write_offset/write_delay 적용
96개 형식에 flush_device/flush_offset/flush_delay를 별도로 추가

Table line에는 정확히 3개, 6개 또는 9개 argument가 와야 합니다.

Offset은 sector 단위이고 delay는 millisecond 단위입니다.

Read, write, flush 지연 예

29-54

첫 script는 `delayed`라는 mapped device를 만들고 read, write, flush를 모두 500ms 지연합니다.

	#!/bin/sh
	#
	# Create mapped device named "delayed" delaying read, write and flush operations for 500ms.
	#
	dmsetup create delayed --table  "0 `blockdev --getsz $1` delay $1 0 500"

두 번째 script는 read를 `$1` device의 2048-sector offset으로 보내고, write와 flush는 다른 `$2` device의 4096-sector offset으로 보내면서 400ms 지연합니다. Argument가 6개이므로 write와 flush가 같은 두 번째 설정을 공유합니다.

	#!/bin/sh
	#
	# Create mapped device delaying write and flush operations for 400ms and
	# splitting reads to device $1 but writes and flushes to different device $2
	# to different offsets of 2048 and 4096 sectors respectively.
	#
	dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 2048 0 $2 4096 400"

세 번째 script는 같은 backing device의 offset 0에서 read를 50ms, write를 100ms, flush를 333ms 지연하도록 9개 argument를 사용합니다.

	#!/bin/sh
	#
	# Create mapped device delaying reads for 50ms, writes for 100ms and flushes for 333ms
	# onto the same backing device at offset 0 sectors.
	#
	dmsetup create delayed --table "0 `blockdev --getsz $1` delay $1 0 50 $2 0 100 $1 0 333"
dm-delay 예제 비교
예제ReadWriteFlush
3 args`$1`, 0, 500ms`$1`, 0, 500ms`$1`, 0, 500ms
6 args`$1`, 2048, 0ms`$2`, 4096, 400ms`$2`, 4096, 400ms
9 args`$1`, 0, 50ms`$2`, 0, 100ms`$1`, 0, 333ms

각 operation의 device, offset, delay 설정을 비교합니다.