:py:mod:`dissect.volume.lvm.metadata` ===================================== .. py:module:: dissect.volume.lvm.metadata Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: dissect.volume.lvm.metadata.MetaBase dissect.volume.lvm.metadata.VolumeGroup dissect.volume.lvm.metadata.PhysicalVolume dissect.volume.lvm.metadata.LogicalVolume dissect.volume.lvm.metadata.HistoricalLogicalVolume dissect.volume.lvm.metadata.Segment dissect.volume.lvm.metadata.StripedSegment dissect.volume.lvm.metadata.MirrorSegment dissect.volume.lvm.metadata.SnapshotSegment dissect.volume.lvm.metadata.ThinSegment dissect.volume.lvm.metadata.ThinPoolSegment dissect.volume.lvm.metadata.CacheSegment dissect.volume.lvm.metadata.CachePoolSegment dissect.volume.lvm.metadata.WriteCacheSegment dissect.volume.lvm.metadata.IntegritySegment dissect.volume.lvm.metadata.ErrorSegment dissect.volume.lvm.metadata.FreeSegment dissect.volume.lvm.metadata.ZeroSegment dissect.volume.lvm.metadata.VdoSegment dissect.volume.lvm.metadata.VdoPoolSegment dissect.volume.lvm.metadata.RAIDSegment .. py:class:: MetaBase .. py:method:: from_dict(obj: dict, name: Optional[str] = None, parent: Optional[MetaBase] = None) -> MetaBase :classmethod: .. py:class:: VolumeGroup Bases: :py:obj:`MetaBase` .. py:property:: name :type: str .. py:property:: pv :type: list[PhysicalVolume] .. py:property:: lv :type: list[LogicalVolume] .. py:attribute:: id :type: str .. py:attribute:: seqno :type: int .. py:attribute:: status :type: list[str] .. py:attribute:: flags :type: list[str] .. py:attribute:: extent_size :type: int .. py:attribute:: max_lv :type: int .. py:attribute:: max_pv :type: int .. py:attribute:: physical_volumes :type: dict[str, PhysicalVolume] .. py:attribute:: logical_volumes :type: dict[str, LogicalVolume] .. py:attribute:: system_id :type: Optional[str] .. py:attribute:: allocation_policy :type: Optional[str] .. py:attribute:: profile :type: Optional[str] .. py:attribute:: metadata_copies :type: Optional[int] .. py:attribute:: tags :type: Optional[list[str]] .. py:attribute:: historical_logical_volumes :type: Optional[dict[str, HistoricalLogicalVolume]] .. py:attribute:: format :type: Optional[str] .. py:attribute:: lock_type :type: Optional[str] .. py:attribute:: lock_args :type: Optional[str] .. py:method:: __repr__() -> str Return repr(self). .. py:method:: attach(devices: dict[str, dissect.volume.lvm.physical.LVM2Device]) -> None .. py:class:: PhysicalVolume Bases: :py:obj:`MetaBase` .. py:property:: name :type: str .. py:property:: vg :type: VolumeGroup .. py:property:: volume_group :type: VolumeGroup .. py:property:: dev :type: Optional[dissect.volume.lvm.physical.LVM2Device] .. py:attribute:: id :type: str .. py:attribute:: status :type: list[str] .. py:attribute:: pe_start :type: int .. py:attribute:: pe_count :type: int .. py:attribute:: dev_size :type: Optional[int] .. py:attribute:: device :type: Optional[str] .. py:attribute:: device_id :type: Optional[str] .. py:attribute:: device_id_type :type: Optional[str] .. py:attribute:: ba_start :type: Optional[int] .. py:attribute:: ba_size :type: Optional[int] .. py:attribute:: tags :type: Optional[list[str]] .. py:method:: __repr__() -> str Return repr(self). .. py:class:: LogicalVolume Bases: :py:obj:`MetaBase` .. py:property:: name :type: str .. py:property:: vg :type: VolumeGroup .. py:property:: volume_group :type: VolumeGroup .. py:property:: segments :type: list[Segment] .. py:property:: is_visible :type: bool .. py:property:: type :type: Optional[str] .. py:attribute:: id :type: str .. py:attribute:: status :type: list[str] .. py:attribute:: flags :type: list[str] .. py:attribute:: segment_count :type: int .. py:attribute:: creation_time :type: Optional[datetime.datetime] .. py:attribute:: creation_host :type: Optional[str] .. py:attribute:: lock_args :type: Optional[str] .. py:attribute:: allocation_policy :type: Optional[str] .. py:attribute:: profile :type: Optional[str] .. py:attribute:: read_ahead :type: Optional[int] .. py:attribute:: tags :type: Optional[list[str]] .. py:method:: __repr__() -> str Return repr(self). .. py:method:: open() -> BinaryIO .. py:class:: HistoricalLogicalVolume Bases: :py:obj:`MetaBase` .. py:property:: vg :type: VolumeGroup .. py:property:: volume_group :type: VolumeGroup .. py:attribute:: id :type: str .. py:attribute:: name :type: Optional[str] .. py:attribute:: creation_time :type: Optional[datetime.datetime] .. py:attribute:: removal_time :type: Optional[datetime.datetime] .. py:attribute:: origin :type: Optional[str] .. py:attribute:: descendants :type: Optional[list[str]] .. py:method:: __repr__() -> str Return repr(self). .. py:class:: Segment Bases: :py:obj:`MetaBase` .. py:property:: name :type: str .. py:property:: lv :type: LogicalVolume .. py:property:: logical_volume :type: LogicalVolume .. py:property:: flags :type: list[str] .. py:attribute:: start_extent :type: int .. py:attribute:: extent_count :type: int .. py:attribute:: type :type: str .. py:attribute:: reshape_count :type: Optional[int] .. py:attribute:: data_copies :type: Optional[int] .. py:attribute:: tags :type: Optional[list[str]] .. py:method:: __repr__() -> str Return repr(self). .. py:method:: open() -> BinaryIO :abstractmethod: .. py:method:: from_dict(obj: dict, name: Optional[str] = None, parent: Optional[MetaBase] = None) -> Segment :classmethod: .. py:class:: StripedSegment Bases: :py:obj:`Segment` .. py:attribute:: stripe_count :type: int .. py:attribute:: stripe_size :type: Optional[int] .. py:attribute:: stripes :type: list[tuple[str, int]] .. py:method:: open() -> BinaryIO .. py:class:: MirrorSegment Bases: :py:obj:`Segment` .. py:attribute:: mirror_count :type: int .. py:attribute:: extents_moved :type: Optional[int] .. py:attribute:: region_size :type: Optional[int] .. py:attribute:: mirror_log :type: Optional[str] .. py:attribute:: mirrors :type: Optional[list[tuple[str, int]]] .. py:method:: open() -> BinaryIO .. py:class:: SnapshotSegment Bases: :py:obj:`Segment` .. py:attribute:: chunk_size :type: int .. py:attribute:: merging_store :type: Optional[str] .. py:attribute:: cow_store :type: Optional[str] .. py:attribute:: origin :type: Optional[str] .. py:class:: ThinSegment Bases: :py:obj:`Segment` .. py:attribute:: thin_pool :type: str .. py:attribute:: transaction_id :type: int .. py:attribute:: origin :type: Optional[str] .. py:attribute:: merge :type: Optional[str] .. py:attribute:: device_id :type: Optional[int] .. py:attribute:: external_origin :type: Optional[str] .. py:method:: open() -> BinaryIO .. py:class:: ThinPoolSegment Bases: :py:obj:`Segment` .. py:attribute:: metadata :type: str .. py:attribute:: pool :type: str .. py:attribute:: transaction_id :type: int .. py:attribute:: chunk_size :type: int .. py:attribute:: discards :type: Optional[str] .. py:attribute:: zero_new_blocks :type: Optional[int] .. py:attribute:: crop_metadata :type: Optional[int] .. py:method:: open() -> BinaryIO .. py:method:: open_pool() -> dissect.volume.dm.thin.ThinPool .. py:class:: CacheSegment Bases: :py:obj:`Segment` .. py:attribute:: cache_pool :type: str .. py:attribute:: origin :type: str .. py:attribute:: cleaner :type: Optional[int] .. py:attribute:: chunk_size :type: Optional[int] .. py:attribute:: cache_mode :type: Optional[str] .. py:attribute:: policy :type: Optional[str] .. py:attribute:: policy_settings :type: Optional[dict[str, int]] .. py:attribute:: metadata_format :type: Optional[int] .. py:attribute:: metadata_start :type: Optional[int] .. py:attribute:: metadata_len :type: Optional[int] .. py:attribute:: data_start :type: Optional[int] .. py:attribute:: data_len :type: Optional[int] .. py:attribute:: metadata_id :type: Optional[str] .. py:attribute:: data_id :type: Optional[str] .. py:class:: CachePoolSegment Bases: :py:obj:`Segment` .. py:attribute:: data :type: str .. py:attribute:: metadata :type: str .. py:attribute:: metadata_format :type: Optional[int] .. py:attribute:: chunk_size :type: Optional[int] .. py:attribute:: cache_mode :type: Optional[str] .. py:attribute:: policy :type: Optional[str] .. py:attribute:: policy_settings :type: Optional[dict[str, int]] .. py:class:: WriteCacheSegment Bases: :py:obj:`Segment` .. py:attribute:: origin :type: str .. py:attribute:: writecache :type: str .. py:attribute:: writecache_block_size :type: int .. py:attribute:: high_watermark :type: Optional[int] .. py:attribute:: low_watermark :type: Optional[int] .. py:attribute:: writeback_jobs :type: Optional[int] .. py:attribute:: autocommit_blocks :type: Optional[int] .. py:attribute:: autocommit_time :type: Optional[int] .. py:attribute:: fua :type: Optional[int] .. py:attribute:: nofua :type: Optional[int] .. py:attribute:: cleaner :type: Optional[int] .. py:attribute:: max_age :type: Optional[int] .. py:attribute:: metadata_only :type: Optional[int] .. py:attribute:: pause_writeback :type: Optional[int] .. py:attribute:: writecache_setting_key :type: Optional[str] .. py:attribute:: writecache_setting_val :type: Optional[str] .. py:class:: IntegritySegment Bases: :py:obj:`Segment` .. py:attribute:: origin :type: str .. py:attribute:: data_sectors :type: int .. py:attribute:: mode :type: str .. py:attribute:: tag_size :type: int .. py:attribute:: block_size :type: int .. py:attribute:: internal_hash :type: str .. py:attribute:: meta_dev :type: Optional[str] .. py:attribute:: recalculate :type: Optional[int] .. py:attribute:: journal_sectors :type: Optional[int] .. py:attribute:: interleave_sectors :type: Optional[int] .. py:attribute:: buffer_sectors :type: Optional[int] .. py:attribute:: journal_watermark :type: Optional[int] .. py:attribute:: commit_time :type: Optional[int] .. py:attribute:: bitmap_flush_interval :type: Optional[int] .. py:attribute:: sectors_per_bit :type: Optional[int] .. py:class:: ErrorSegment Bases: :py:obj:`Segment` .. py:class:: FreeSegment Bases: :py:obj:`Segment` .. py:class:: ZeroSegment Bases: :py:obj:`Segment` .. py:class:: VdoSegment Bases: :py:obj:`Segment` .. py:attribute:: vdo_pool :type: str .. py:attribute:: vdo_offset :type: int .. py:class:: VdoPoolSegment Bases: :py:obj:`Segment` .. py:attribute:: data :type: str .. py:attribute:: header_size :type: int .. py:attribute:: virtual_extents :type: int .. py:attribute:: use_compression :type: bool .. py:attribute:: use_deduplication :type: bool .. py:attribute:: use_metadata_hints :type: bool .. py:attribute:: minimum_io_size :type: int .. py:attribute:: block_map_cache_size_mb :type: int .. py:attribute:: block_map_era_length :type: int .. py:attribute:: use_sparse_index :type: int .. py:attribute:: index_memory_size_mb :type: int .. py:attribute:: max_discard :type: int .. py:attribute:: slab_size_mb :type: int .. py:attribute:: ack_threads :type: int .. py:attribute:: bio_threads :type: int .. py:attribute:: bio_rotation :type: int .. py:attribute:: cpu_threads :type: int .. py:attribute:: hash_zone_threads :type: int .. py:attribute:: logical_threads :type: int .. py:attribute:: physical_threads :type: int .. py:attribute:: write_policy :type: Optional[str] .. py:class:: RAIDSegment Bases: :py:obj:`Segment` .. py:attribute:: device_count :type: int .. py:attribute:: stripe_count :type: int .. py:attribute:: region_size :type: int .. py:attribute:: stripe_size :type: int .. py:attribute:: writebehind :type: int .. py:attribute:: min_recovery_rate :type: int .. py:attribute:: max_recovery_rate :type: int .. py:attribute:: data_copies :type: Optional[int] .. py:attribute:: data_offset :type: Optional[int] .. py:attribute:: raids :type: Optional[list[str]] .. py:attribute:: raid0_lvs :type: Optional[list[str]]