Segment Type
63|< >|48
0000 0000 0000 0000
^
+------------------- SEG_UNKNOWN (63)
47|< >|32
0000 0000 0000 0000
^ ^ [
| +--------- SEG_STRIPED_TARGET (39)
+----------- SEG_LINEAR_TARGET (40)
31|< >|16
0000 0000 0000 0000
SEG_RAID ] ^^
|+- SEG_ONLY_EXCLUSIVE1ULL (16)
+-- SEG_CAN_ERROR_WHEN_FULL(17)
15|< >|0
0000 0000 0000 0000
^^^^ ^^ ^^^^ ^^^^
|||| || |||| |||+- SEG_CAN_SPLIT (0)
|||| || |||| ||+-- SEG_AREAS_STRIPED (1)
|||| || |||| |+--- SEG_AREAS_MIRRORED (2)
|||| || |||| +---- SEG_SNAPSHOT (3)
|||| || |||+------ SEG_FORMAT1_SUPPORT (4)
|||| || ||+------- SEG_VIRTUAL (5)
|||| || |+-------- SEG_CANNOT_BE_ZEROED (6)
|||| || +--------- SEG_MONITORED (7)
|||| |+------------- SEG_RAID (10)
|||| +-------------- SEG_THIN_POOL (11)
|||+---------------- SEG_THIN_VOLUME (12)
||+----------------- SEG_CACHE (13)
|+------------------ SEG_CACHE_POOL (14)
+------------------- SEG_MIRROR (15)
※(Number) : shift point
Examples
thick_vol
: seg->segtype = 0x8000000013 =SEG_CAN_SPLIT & SEG_AREAS_STRIPED & SEG_FORMAT1_SUPPORT & SEG_STRIPED_TARGET
thick_snap
: seg->segtype = 0x8000000013snapshot0
: seg->segtype = 0x100c8 =SEG_SNAPSHOT & SEG_CANNOT_BE_ZEROED & SEG_MONITORED & SEG_ONLY_EXCLUSIVE1ULL
Usages
check_lv_segments
:segtype
으로 validate 검증, segment->le 연속성 확인_check_lv_segment
:segtype
중mirror
,cache
,raid
,thin_pool
,thin
의 경우 validate 검증read_segment
:settype
으로lv->status
적용
기타 참고사항
seg->areas 중 type 이 AREA_PV 인 경우
_read_segment
=>_stripted_text_import
=>text_import_areas
에서 pv 의 정보와 같은 이름의 항목이 있다면AREA_PV
로 지정
seg->area_count
segment
의type = "striped"
이면stripe_count
를area_count
로 지정
8 breakpoint keep y 0x000055555562f240 in check_lv_segments at metadata/merge.c:551
breakpoint already hit 10 times
9 breakpoint keep y 0x0000555555647d50 in check_pv_segments at metadata/pv_manip.c:394
breakpoint already hit 1 time
10 breakpoint keep y 0x000055555561c170 in set_lv_segment_area_pv
at metadata/lv_manip.c:1172
breakpoint already hit 1 time
11 breakpoint keep y 0x0000555555609de0 in text_import_areas
at format_text/import_vsn1.c:458
Thin lv status and segments
Read thinpool LV segment
lv->status = 0x2000000340
segments->areas[0]->type = AREA_LV
segments->areas[0]->u->lv->lv = pool_data_lv
segments->areas[0]->u->lv->status = 0x4000000300
segments->areas[0]->u->lv->le = 0
segments->metadata_lv = metadata_lv
segments->metadata_lv->status = 0x8000000300
segments->chuck_size (thick 와 동일)
segments->zero_new_blocks (thick 와 동일)
segments->discards (thick 과 동일)
segments->transaction_id
segments->size = 2097152 = 256(le_count) * 8192(extent_size)
thinvol lv segment
lv->status = 0x1000010340
lv->segments->areas[0]->type = AREA_UNASSIGNED
thinsnap lv segment
lv->status = 0x41000010340
lv->segments->areas[0]->type = AREA_UNASSIGNED
lvol0_pmspare
lv->status = 0x10000000300
lv->segments->areas[0]->type = AREA_PV
lv->segments->areas[0]->u->pv->pvseg->pv = pv0
thinpool_tmeta
lv->status = 0x8000000300
lv->segments->areas[0]->type = AREA_PV
lv->segments->areas[0]->u->pv->pvseg->pv = pv0
thinpool_tdata
lv->status = 0x4000000300
lv->segments->areas[0]->type = AREA_PV
lv->segments->areas[0]->u->pv->pvseg->pv = pv0
VISIBLE_LV UINT64_C(0x0000000000000040)
LVM_READ UINT64_C(0x0000000000000100) /* LV, VG */
LVM_WRITE UINT64_C(0x0000000000000200)
VIRTUAL UINT64_C(0x0000000000010000)
THIN_VOLUME UINT64_C(0x0000001000000000)
THIN_POOL UINT64_C(0x0000002000000000) /* LV - Internal use only */
THIN_POOL_DATA UINT64_C(0x0000004000000000) /* LV - Internal use only */
THIN_POOL_METADATA UINT64_C(0x0000008000000000) /* LV - Internal use only */
LV_ACTIVATION_SKIP UINT64_C(0x0000040000000000)
HeonJe Lee | 선임연구원
게이트웨이 On-promise 제품 팀에서 시스템 모니터링 및 관리를 쉽게 다가갈 수 있도록 하기 위한 업무를 하고 있습니다.
Contact: lhjnano@gmail.com
게이트웨이 On-promise 제품 팀에서 시스템 모니터링 및 관리를 쉽게 다가갈 수 있도록 하기 위한 업무를 하고 있습니다.
Contact: lhjnano@gmail.com