요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
UBI device attribute
sysfs-class-ubi:33-132Available·total·bad eraseblock, background thread, character device, I/O 단위, MTD 번호, bad-block reserve와 read-only 상태를 다룹니다.
UBI volume attribute
sysfs-class-ubi:134-221Volume alignment, corruption, data size, reserved eraseblock, dynamic·static type, update marker와 usable eraseblock size를 다룹니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
What: /sys/class/ubi/
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
The ubi/ class sub-directory belongs to the UBI subsystem and
provides general UBI information, per-UBI device information
and per-UBI volume information.
What: /sys/class/ubi/version
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
This file contains version of the latest supported UBI on-media
format. Currently it is 1, and there is no plan to change this.
However, if in the future UBI needs on-flash format changes
which cannot be done in a compatible manner, a new format
version will be added. So this is a mechanism for possible
future backward-compatible (but forward-incompatible)
improvements.
What: /sys/class/ubiX/
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
The /sys/class/ubi0, /sys/class/ubi1, etc directories describe
UBI devices (UBI device 0, 1, etc). They contain general UBI
device information and per UBI volume information (each UBI
device may have many UBI volumes)
What: /sys/class/ubi/ubiX/avail_eraseblocks
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Amount of available logical eraseblock. For example, one may
create a new UBI volume which has this amount of logical
eraseblocks.
What: /sys/class/ubi/ubiX/bad_peb_count
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Count of bad physical eraseblocks on the underlying MTD device.
What: /sys/class/ubi/ubiX/bgt_enabled
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Contains ASCII "0\n" if the UBI background thread is disabled,
and ASCII "1\n" if it is enabled.
What: /sys/class/ubi/ubiX/dev
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Major and minor numbers of the character device corresponding
to this UBI device (in <major>:<minor> format).
What: /sys/class/ubi/ubiX/eraseblock_size
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Maximum logical eraseblock size this UBI device may provide. UBI
volumes may have smaller logical eraseblock size because of their
alignment.
What: /sys/class/ubi/ubiX/max_ec
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Maximum physical eraseblock erase counter value.
What: /sys/class/ubi/ubiX/max_vol_count
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Maximum number of volumes which this UBI device may have.
What: /sys/class/ubi/ubiX/min_io_size
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Minimum input/output unit size. All the I/O may only be done
in fractions of the contained number.
What: /sys/class/ubi/ubiX/mtd_num
Date: January 2008
KernelVersion: 2.6.25
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Number of the underlying MTD device.
What: /sys/class/ubi/ubiX/reserved_for_bad
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Number of physical eraseblocks reserved for bad block handling.
What: /sys/class/ubi/ubiX/ro_mode
Date: April 2016
KernelVersion: 4.7
Contact: linux-mtd@lists.infradead.org
Description:
Contains ASCII "1\n" if the read-only flag is set on this
device, and "0\n" if it is cleared. UBI devices mark themselves
as read-only when they detect an unrecoverable error.
What: /sys/class/ubi/ubiX/total_eraseblocks
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Total number of good (not marked as bad) physical eraseblocks on
the underlying MTD device.
What: /sys/class/ubi/ubiX/volumes_count
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Count of volumes on this UBI device.
What: /sys/class/ubi/ubiX/ubiX_Y/
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
The /sys/class/ubi/ubiX/ubiX_0/, /sys/class/ubi/ubiX/ubiX_1/,
etc directories describe UBI volumes on UBI device X (volumes
0, 1, etc).
What: /sys/class/ubi/ubiX/ubiX_Y/alignment
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Volume alignment - the value the logical eraseblock size of
this volume has to be aligned on. For example, 2048 means that
logical eraseblock size is multiple of 2048. In other words,
volume logical eraseblock size is UBI device logical eraseblock
size aligned to the alignment value.
What: /sys/class/ubi/ubiX/ubiX_Y/corrupted
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Contains ASCII "0\n" if the UBI volume is OK, and ASCII "1\n"
if it is corrupted (e.g., due to an interrupted volume update).
What: /sys/class/ubi/ubiX/ubiX_Y/data_bytes
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
The amount of data this volume contains. This value makes sense
only for static volumes, and for dynamic volume it equivalent
to the total volume size in bytes.
What: /sys/class/ubi/ubiX/ubiX_Y/dev
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Major and minor numbers of the character device corresponding
to this UBI volume (in <major>:<minor> format).
What: /sys/class/ubi/ubiX/ubiX_Y/name
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Volume name.
What: /sys/class/ubi/ubiX/ubiX_Y/reserved_ebs
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Count of physical eraseblock reserved for this volume.
Equivalent to the volume size in logical eraseblocks.
What: /sys/class/ubi/ubiX/ubiX_Y/type
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Volume type. Contains ASCII "dynamic\n" for dynamic volumes and
"static\n" for static volumes.
What: /sys/class/ubi/ubiX/ubiX_Y/upd_marker
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Contains ASCII "0\n" if the update marker is not set for this
volume, and "1\n" if it is set. The update marker is set when
volume update starts, and cleaned when it ends. So the presence
of the update marker indicates that the volume is being updated
at the moment of the update was interrupted. The later may be
checked using the "corrupted" sysfs file.
What: /sys/class/ubi/ubiX/ubiX_Y/usable_eb_size
Date: July 2006
KernelVersion: 2.6.22
Contact: Artem Bityutskiy <dedekind@infradead.org>
Description:
Logical eraseblock size of this volume. Equivalent to logical
eraseblock size of the device aligned on the volume alignment
value.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
UBI class와 on-media format version
1-21/sys/class/ubi/는 UBI subsystem의 class subdirectory로 일반 UBI 정보, UBI device별 정보와 UBI volume별 정보를 제공한다. 2006년 7월 kernel 2.6.22에 도입됐고 담당자는 Artem Bityutskiy <dedekind@infradead.org>다.
/sys/class/ubi/version은 지원하는 최신 UBI on-media format version을 담는다. 현재 값은 1이며 바꿀 계획은 없다. 향후 호환 방식으로 처리할 수 없는 on-flash format 변경이 필요하면 새 version을 추가한다. 따라서 이 값은 backward-compatible하지만 forward-incompatible할 수 있는 미래 개선을 위한 mechanism이다.
UBI device directory
23-31/sys/class/ubi0, /sys/class/ubi1 등의 directory는 UBI device 0, 1 등을 설명한다. 일반 UBI device 정보와 UBI volume별 정보를 포함하며 UBI device 하나는 여러 UBI volume을 가질 수 있다.
Eraseblock와 device capacity
33-108별도 표시가 없는 아래 attribute는 2006년 7월 kernel 2.6.22에 도입됐고 담당자는 Artem Bityutskiy다.
| 경로 | 의미 |
|---|---|
| /sys/class/ubi/ubiX/avail_eraseblocks | 사용 가능한 logical eraseblock 수다. 예를 들어 이 수만큼 logical eraseblock을 가진 새 UBI volume을 만들 수 있다. |
| /sys/class/ubi/ubiX/bad_peb_count | Underlying MTD device의 bad physical eraseblock 수다. |
| /sys/class/ubi/ubiX/bgt_enabled | UBI background thread가 disabled면 ASCII 0\n, enabled면 ASCII 1\n이다. |
| /sys/class/ubi/ubiX/dev | 이 UBI device에 대응하는 character device의 major·minor를 <major>:<minor> 형식으로 표시한다. |
| /sys/class/ubi/ubiX/eraseblock_size | 이 UBI device가 제공할 수 있는 최대 logical eraseblock size다. Volume alignment 때문에 UBI volume은 더 작은 logical eraseblock을 가질 수 있다. |
| /sys/class/ubi/ubiX/max_ec | Physical eraseblock erase counter의 최댓값이다. |
| /sys/class/ubi/ubiX/max_vol_count | 이 UBI device가 가질 수 있는 최대 volume 수다. |
| /sys/class/ubi/ubiX/min_io_size | 최소 I/O unit size다. 모든 I/O는 이 값의 배수 단위로만 수행할 수 있다. |
| /sys/class/ubi/ubiX/mtd_num | Underlying MTD device number다. 2008년 1월 kernel 2.6.25에 도입됐다. |
| /sys/class/ubi/ubiX/reserved_for_bad | Bad-block handling을 위해 reserve한 physical eraseblock 수다. |
Read-only 상태와 device 전체 수
110-132| 경로 | 도입·담당 | 의미 |
|---|---|---|
| /sys/class/ubi/ubiX/ro_mode | 2016년 4월 · kernel 4.7 · linux-mtd@lists.infradead.org | Device read-only flag가 설정됐으면 ASCII 1\n, 해제됐으면 0\n이다. UBI device는 복구할 수 없는 error를 감지하면 스스로 read-only로 표시한다. |
| /sys/class/ubi/ubiX/total_eraseblocks | 2006년 7월 · kernel 2.6.22 · Artem Bityutskiy | Underlying MTD device에서 bad로 표시되지 않은 good physical eraseblock의 전체 수다. |
| /sys/class/ubi/ubiX/volumes_count | 2006년 7월 · kernel 2.6.22 · Artem Bityutskiy | 이 UBI device의 volume 수다. |
UBI volume identity, alignment와 data
134-192/sys/class/ubi/ubiX/ubiX_0/, ubiX_1/ 등의 directory는 UBI device X의 volume 0, 1 등을 설명한다. 아래 attribute는 2006년 7월 kernel 2.6.22에 도입됐고 담당자는 Artem Bityutskiy다.
| 경로 | 의미 |
|---|---|
| .../alignment | Volume logical eraseblock size가 정렬돼야 하는 값이다. 2048이면 logical eraseblock size가 2048의 배수다. 즉 UBI device logical eraseblock size를 volume alignment 값에 맞춘 결과다. |
| .../corrupted | UBI volume이 정상이면 ASCII 0\n, 중단된 volume update 등의 이유로 손상됐으면 ASCII 1\n이다. |
| .../data_bytes | Volume이 담은 data 양이다. Static volume에서 의미가 있으며 dynamic volume에서는 전체 volume byte size와 같다. |
| .../dev | 이 UBI volume에 대응하는 character device의 major·minor를 <major>:<minor>로 표시한다. |
| .../name | Volume 이름이다. |
| .../reserved_ebs | 이 volume을 위해 reserve한 physical eraseblock 수다. Logical eraseblock 단위 volume size와 같다. |
Volume type, update marker와 usable eraseblock
194-221| 경로 | 의미 |
|---|---|
| /sys/class/ubi/ubiX/ubiX_Y/type | Dynamic volume은 ASCII dynamic\n, static volume은 static\n이다. |
| /sys/class/ubi/ubiX/ubiX_Y/upd_marker | Update marker가 없으면 ASCII 0\n, 있으면 1\n이다. Volume update 시작 때 set하고 끝나면 clear한다. |
| /sys/class/ubi/ubiX/ubiX_Y/usable_eb_size | 이 volume의 logical eraseblock size다. Device logical eraseblock size를 volume alignment 값에 맞춘 결과와 같다. |
upd_marker가 있으면 volume update가 현재 진행 중이거나 update가 중단됐다는 뜻이다. 중단 여부와 손상 상태는 corrupted sysfs file로 확인할 수 있다.
UBI class와 format version
sysfs-class-ubi:1-31UBI 전체 정보와 device·volume directory, 향후 backward-compatible format versioning을 다룹니다.