요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
dmsetup script
delay.rst:29-54동일 device 지연, read/write device 분리, read·write·flush별 독립 delay 예를 제공합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
========
dm-delay
========
Device-Mapper's "delay" target delays reads and/or writes
and/or flushes and optionally maps them to different devices.
Arguments::
<device> <offset> <delay> [<write_device> <write_offset> <write_delay>
[<flush_device> <flush_offset> <flush_delay>]]
Table line has to either have 3, 6 or 9 arguments:
3: apply offset and delay to read, write and flush operations on device
6: apply offset and delay to device, also apply write_offset and write_delay
to write and flush operations on optionally different write_device with
optionally different sector offset
9: same as 6 arguments plus define flush_offset and flush_delay explicitly
on/with optionally different flush_device/flush_offset.
Offsets are specified in sectors.
Delays are specified in milliseconds.
Example scripts
===============
::
#!/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"
::
#!/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"
::
#!/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"
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
dm-delay argument 형식
1-28Device-Mapper의 `delay` target은 read, write, flush를 지연시키며 선택적으로 서로 다른 device로 map할 수 있습니다.
Argument 형식은 다음과 같습니다.
<device> <offset> <delay> [<write_device> <write_offset> <write_delay>
[<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"
각 operation의 device, offset, delay 설정을 비교합니다.
3·6·9 argument 형식
delay.rst:1-28Operation별 device, sector offset과 delay를 공유하거나 분리하는 table 형식을 설명합니다.