lvm

package
v0.0.0-...-ee04f26 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 5, 2025 License: GPL-3.0 Imports: 6 Imported by: 0

Documentation

Index

Constants

View Source
const (
	LV_TYPE_LINEAR     = "linear"
	LV_TYPE_STRIPED    = "striped"
	LV_TYPE_SNAPSHOT   = "snapshot"
	LV_TYPE_RAID       = "raid"
	LV_TYPE_MIRROR     = "mirror"
	LV_TYPE_THIN       = "thin"
	LV_TYPE_THIN_POOL  = "thin-pool"
	LV_TYPE_VDO        = "vdo"
	LV_TYPE_VDO_POOL   = "vdo-pool"
	LV_TYPE_CACHE      = "cache"
	LV_TYPE_CACHE_POOL = "cache-pool"
	LV_TYPE_WRITECACHE = "writecache"
)
View Source
const (
	LV_RESIZE_EXTEND = iota
	LV_RESIZE_SHRINK = iota
)
View Source
const (
	LV_ATTR_VOL_TYPE_CACHE                    = 1 << iota
	LV_ATTR_VOL_TYPE_MIRRORED                 = 1 << iota
	LV_ATTR_VOL_TYPE_MIRRORED_NO_INITIAL_SYNC = 1 << iota
	LV_ATTR_VOL_TYPE_ORIGIN                   = 1 << iota
	LV_ATTR_VOL_TYPE_ORIGIN_MERGING_SNAPSHOT  = 1 << iota
	LV_ATTR_VOL_TYPE_RAID                     = 1 << iota
	LV_ATTR_VOL_TYPE_RAID_NO_INITIAL_SYNC     = 1 << iota
	LV_ATTR_VOL_TYPE_SNAPSHOT                 = 1 << iota
	LV_ATTR_VOL_TYPE_MERGING_SNAPSHOT         = 1 << iota
	LV_ATTR_VOL_TYPE_PVMOVE                   = 1 << iota
	LV_ATTR_VOL_TYPE_VIRTUAL                  = 1 << iota
	LV_ATTR_VOL_TYPE_IMAGE                    = 1 << iota
	LV_ATTR_VOL_TYPE_IMAGE_OUT_OF_SYNC        = 1 << iota
	LV_ATTR_VOL_TYPE_MIRROR_LOG_DEVICE        = 1 << iota
	LV_ATTR_VOL_TYPE_UNDER_CONVERSION         = 1 << iota
	LV_ATTR_VOL_TYPE_THIN_VOLUME              = 1 << iota
	LV_ATTR_VOL_TYPE_THIN_POOL                = 1 << iota
	LV_ATTR_VOL_TYPE_THIN_POOL_DATA           = 1 << iota
	LV_ATTR_VOL_TYPE_VDO_POOL                 = 1 << iota
	LV_ATTR_VOL_TYPE_VDO_POOL_DATA            = 1 << iota
	LV_ATTR_VOL_TYPE_METADATA                 = 1 << iota
)
View Source
const (
	LV_ATTR_PERMISSIONS_WRITEABLE              = 1 << iota
	LV_ATTR_PERMISSIONS_READONLY               = 1 << iota
	LV_ATTR_PERMISSIONS_READONLY_NON_RO_VOLUME = 1 << iota
)
View Source
const (
	LV_ATTR_ALLOC_POLICY_ANYWHERE   = 1 << iota
	LV_ATTR_ALLOC_POLICY_CONTIGUOUS = 1 << iota
	LV_ATTR_ALLOC_POLICY_INHERITED  = 1 << iota
	LV_ATTR_ALLOC_POLICY_CLING      = 1 << iota
	LV_ATTR_ALLOC_POLICY_NORMAL     = 1 << iota
)
View Source
const (
	LV_ATTR_STATE_ACTIVE                                    = 1 << iota
	LV_ATTR_STATE_HISTORICAL                                = 1 << iota
	LV_ATTR_STATE_SUSPENDED                                 = 1 << iota
	LV_ATTR_STATE_INVALID_SNAPSHOT                          = 1 << iota
	LV_ATTR_STATE_INVALID_SUSPENDED_SNAPSHOT                = 1 << iota
	LV_ATTR_STATE_SNAPSHOT_MERGE_FAILED                     = 1 << iota
	LV_ATTR_STATE_SUSPENDED_SNAPSHOT_MERGE_FAILED           = 1 << iota
	LV_ATTR_STATE_MAPPED_DEVICE_PRESENT_WITHOUT_TABLES      = 1 << iota
	LV_ATTR_STATE_MAPPED_DEVICE_PRESENT_WITH_INACTIVE_TABLE = 1 << iota
	LV_ATTR_STATE_THIN_POOL_CHECK_NEEDED                    = 1 << iota
	LV_ATTR_STATE_SUSPENDED_THIN_POOL_CHECK_NEEDED          = 1 << iota
	LV_ATTR_STATE_UNKNOWN                                   = 1 << iota
)
View Source
const (
	LV_ATTR_DEVICE_OPEN    = 1 << iota
	LV_ATTR_DEVICE_UNKNOWN = 1 << iota
)
View Source
const (
	LV_ATTR_TARGET_TYPE_CACHE    = 1 << iota
	LV_ATTR_TARGET_TYPE_MIRROR   = 1 << iota
	LV_ATTR_TARGET_TYPE_RAID     = 1 << iota
	LV_ATTR_TARGET_TYPE_SNAPSHOT = 1 << iota
	LV_ATTR_TARGET_TYPE_THIN     = 1 << iota
	LV_ATTR_TARGET_TYPE_UNKNOWN  = 1 << iota
	LV_ATTR_TARGET_TYPE_VIRTUAL  = 1 << iota
)
View Source
const (
	LV_ATTR_HEALTH_PARTIAL                      = 1 << iota
	LV_ATTR_HEALTH_UNKNOWN                      = 1 << iota
	LV_ATTR_HEALTH_RAID_REFRESH_NEEDED          = 1 << iota
	LV_ATTR_HEALTH_RAID_MISMATCHES_EXIST        = 1 << iota
	LV_ATTR_HEALTH_RAID_WRITEMOSTLY             = 1 << iota
	LV_ATTR_HEALTH_THIN_FAILED                  = 1 << iota
	LV_ATTR_HEALTH_THIN_POOL_OUT_OF_DATA_SPACE  = 1 << iota
	LV_ATTR_HEALTH_THIN_POOL_METADATA_READ_ONLY = 1 << iota
	LV_ATTR_HEALTH_WRITECACHE_ERROR             = 1 << iota
)
View Source
const (
	ECMD_PROCESSED    = iota + 1
	ENO_SUCH_CMD      = iota + 1
	EINVALID_CMD_LINE = iota + 1
	EINIT_FAILED      = iota + 1
	ECMD_FAILED       = iota + 1
)

LVM command return codes

View Source
const (
	PV_ATTR_MISSING     = 1 << iota
	PV_ATTR_EXPORTED    = 1 << iota
	PV_ATTR_DUPLICATE   = 1 << iota
	PV_ATTR_ALLOCATABLE = 1 << iota
	PV_ATTR_USED        = 1 << iota
)

PV attributes

View Source
const (
	VG_ATTR_WRITABLE   = 1 << iota
	VG_ATTR_READONLY   = 1 << iota
	VG_ATTR_RESIZABLE  = 1 << iota
	VG_ATTR_EXPORTED   = 1 << iota
	VG_ATTR_PARTIAL    = 1 << iota
	VG_ATTR_CONTIGUOUS = 1 << iota
	VG_ATTR_CLING      = 1 << iota
	VG_ATTR_NORMAL     = 1 << iota
	VG_ATTR_ANYWHERE   = 1 << iota
	VG_ATTR_CLUSTERED  = 1 << iota
	VG_ATTR_SHARED     = 1 << iota
)

VG attributes

View Source
const (
	LV_ATTR_BLOCKS_ARE_OVERWRITTEN_WITH_ZEROES_BEFORE_USE = 1 << iota
)
View Source
const (
	LV_ATTR_FIXED_MINOR = 1 << iota
)
View Source
const (
	LV_ATTR_SKIP_ACTIVATION = 1 << iota
)

Variables

View Source
var (
	AttrVolTypeMap = map[byte]int{
		'C': LV_ATTR_VOL_TYPE_CACHE,
		'm': LV_ATTR_VOL_TYPE_MIRRORED,
		'M': LV_ATTR_VOL_TYPE_MIRRORED_NO_INITIAL_SYNC,
		'o': LV_ATTR_VOL_TYPE_ORIGIN,
		'O': LV_ATTR_VOL_TYPE_ORIGIN_MERGING_SNAPSHOT,
		'r': LV_ATTR_VOL_TYPE_RAID,
		'R': LV_ATTR_VOL_TYPE_RAID_NO_INITIAL_SYNC,
		's': LV_ATTR_VOL_TYPE_SNAPSHOT,
		'S': LV_ATTR_VOL_TYPE_MERGING_SNAPSHOT,
		'p': LV_ATTR_VOL_TYPE_PVMOVE,
		'v': LV_ATTR_VOL_TYPE_VIRTUAL,
		'i': LV_ATTR_VOL_TYPE_IMAGE,
		'I': LV_ATTR_VOL_TYPE_IMAGE_OUT_OF_SYNC,
		'l': LV_ATTR_VOL_TYPE_MIRROR_LOG_DEVICE,
		'c': LV_ATTR_VOL_TYPE_UNDER_CONVERSION,
		'V': LV_ATTR_VOL_TYPE_THIN_VOLUME,
		't': LV_ATTR_VOL_TYPE_THIN_POOL,
		'T': LV_ATTR_VOL_TYPE_THIN_POOL_DATA,
		'd': LV_ATTR_VOL_TYPE_VDO_POOL,
		'D': LV_ATTR_VOL_TYPE_VDO_POOL_DATA,
		'e': LV_ATTR_VOL_TYPE_METADATA,
		'-': 0,
	}

	AttrPermissionsMap = map[byte]int{
		'w': LV_ATTR_PERMISSIONS_WRITEABLE,
		'r': LV_ATTR_PERMISSIONS_READONLY,
		'R': LV_ATTR_PERMISSIONS_READONLY_NON_RO_VOLUME,
		'-': 0,
	}

	AttrAllocPolicyMap = map[byte]int{
		'a': LV_ATTR_ALLOC_POLICY_ANYWHERE,
		'c': LV_ATTR_ALLOC_POLICY_CONTIGUOUS,
		'i': LV_ATTR_ALLOC_POLICY_INHERITED,
		'l': LV_ATTR_ALLOC_POLICY_CLING,
		'n': LV_ATTR_ALLOC_POLICY_NORMAL,
		'-': 0,
	}

	AttrStateMap = map[byte]int{
		'a': LV_ATTR_STATE_ACTIVE,
		'h': LV_ATTR_STATE_HISTORICAL,
		's': LV_ATTR_STATE_SUSPENDED,
		'I': LV_ATTR_STATE_INVALID_SNAPSHOT,
		'S': LV_ATTR_STATE_INVALID_SUSPENDED_SNAPSHOT,
		'm': LV_ATTR_STATE_SNAPSHOT_MERGE_FAILED,
		'M': LV_ATTR_STATE_SUSPENDED_SNAPSHOT_MERGE_FAILED,
		'd': LV_ATTR_STATE_MAPPED_DEVICE_PRESENT_WITHOUT_TABLES,
		'i': LV_ATTR_STATE_MAPPED_DEVICE_PRESENT_WITH_INACTIVE_TABLE,
		'c': LV_ATTR_STATE_THIN_POOL_CHECK_NEEDED,
		'C': LV_ATTR_STATE_SUSPENDED_THIN_POOL_CHECK_NEEDED,
		'X': LV_ATTR_STATE_UNKNOWN,
		'-': 0,
	}

	AttrDeviceMap = map[byte]int{
		'o': LV_ATTR_DEVICE_OPEN,
		'X': LV_ATTR_DEVICE_UNKNOWN,
		'-': 0,
	}

	AttrTargetTypeMap = map[byte]int{
		'C': LV_ATTR_TARGET_TYPE_CACHE,
		'm': LV_ATTR_TARGET_TYPE_MIRROR,
		'r': LV_ATTR_TARGET_TYPE_RAID,
		's': LV_ATTR_TARGET_TYPE_SNAPSHOT,
		't': LV_ATTR_TARGET_TYPE_THIN,
		'u': LV_ATTR_TARGET_TYPE_UNKNOWN,
		'v': LV_ATTR_TARGET_TYPE_VIRTUAL,
		'-': 0,
	}

	AttrHealthMap = map[byte]int{
		'p': LV_ATTR_HEALTH_PARTIAL,
		'X': LV_ATTR_HEALTH_UNKNOWN,
		'r': LV_ATTR_HEALTH_RAID_REFRESH_NEEDED,
		'm': LV_ATTR_HEALTH_RAID_MISMATCHES_EXIST,
		'w': LV_ATTR_HEALTH_RAID_WRITEMOSTLY,
		'F': LV_ATTR_HEALTH_THIN_FAILED,
		'D': LV_ATTR_HEALTH_THIN_POOL_OUT_OF_DATA_SPACE,
		'M': LV_ATTR_HEALTH_THIN_POOL_METADATA_READ_ONLY,
		'E': LV_ATTR_HEALTH_WRITECACHE_ERROR,
		'-': 0,
	}
)

Functions

func LvThinCreate

func LvThinCreate(name string, vg, pool interface{}, size float64) error

func Lvcreate

func Lvcreate(name string, vg interface{}, lvType LVType, size interface{}) error

lvcreate (create lv)

func Lvremove

func Lvremove(lv interface{}) error

lvremove (remove lv)

func MakeThinPool

func MakeThinPool(poolMetadata, pool interface{}) error

func Pvcreate

func Pvcreate(diskLabel string) error

pvcreate (create pv)

func Pvremove

func Pvremove(pv interface{}) error

pvremove (make partition stop being a pv)

func Pvresize

func Pvresize(pv interface{}, setPvSize ...float64) error

pvresize (resize pv)

func RunCommand

func RunCommand(command string, args ...interface{}) (string, error)

func Vgcreate

func Vgcreate(name string, pvs ...interface{}) error

vgcreate (create vg)

func Vgextend

func Vgextend(vg interface{}, pvs ...interface{}) error

vgextend (add pv to vg)

func Vgreduce

func Vgreduce(vg interface{}, pvs ...interface{}) error

vgreduce (remove pv from vg)

func Vgremove

func Vgremove(vg interface{}) error

vgremove (remove vg)

Types

type LVResizeMode

type LVResizeMode int

type LVType

type LVType string

type Lv

type Lv struct {
	Name, VgName, Pool string
	AttrVolType        int
	AttrPermissions    int
	AttrAllocPolicy    int
	AttrFixed          int
	AttrState          int
	AttrDevice         int
	AttrTargetType     int
	AttrBlocks         int
	AttrHealth         int
	AttrSkip           int
	Size               float64
}

func FindLv

func FindLv(name string, lvName ...string) (Lv, error)

FindLv fetches an LVM logical volume by its name. You can pass the name either as a single string (as in `vg_name/lv_name`) or as two separate variables, where the first is the VG name and, the second, the LV name.

func Lvrename

func Lvrename(oldName, newName string, vg interface{}) (Lv, error)

lvrename (rename lv)

func Lvs

func Lvs(filter ...string) ([]Lv, error)

lvs (list lvs)

func (*Lv) Remove

func (l *Lv) Remove() error

func (*Lv) Rename

func (l *Lv) Rename(newName string) error

type Pv

type Pv struct {
	Path, VgName, PvFmt string
	Attr                int
	Size, Free          float64
}

func FindPv

func FindPv(path string) (Pv, error)

func Pvs

func Pvs(filter ...string) ([]Pv, error)

pvs (list pvs)

func (*Pv) IsAllocatable

func (p *Pv) IsAllocatable() bool

func (*Pv) IsDuplicate

func (p *Pv) IsDuplicate() bool

func (*Pv) IsExported

func (p *Pv) IsExported() bool

func (*Pv) IsMissing

func (p *Pv) IsMissing() bool

func (*Pv) IsUsed

func (p *Pv) IsUsed() bool

func (*Pv) Remove

func (p *Pv) Remove() error

type Vg

type Vg struct {
	Name       string
	Pvs        []Pv
	Lvs        []Lv
	Attr       int
	Size, Free float64
}

func FindVg

func FindVg(name string) (Vg, error)

func Vgrename

func Vgrename(oldName, newName string) (Vg, error)

vgrename (rename vg)

func Vgs

func Vgs(filter ...string) ([]Vg, error)

vgs (list vgs)

func (*Vg) Extend

func (v *Vg) Extend(pvs ...interface{}) error

func (*Vg) IsAnywhere

func (v *Vg) IsAnywhere() bool

func (*Vg) IsCling

func (v *Vg) IsCling() bool

func (*Vg) IsClustered

func (v *Vg) IsClustered() bool

func (*Vg) IsContiguous

func (v *Vg) IsContiguous() bool

func (*Vg) IsExported

func (v *Vg) IsExported() bool

func (*Vg) IsNormal

func (v *Vg) IsNormal() bool

func (*Vg) IsPartial

func (v *Vg) IsPartial() bool

func (*Vg) IsReadonly

func (v *Vg) IsReadonly() bool

func (*Vg) IsResizable

func (v *Vg) IsResizable() bool

func (*Vg) IsShared

func (v *Vg) IsShared() bool

func (*Vg) IsWritable

func (v *Vg) IsWritable() bool

func (*Vg) Reduce

func (v *Vg) Reduce(pvs ...interface{}) error

func (*Vg) Remove

func (v *Vg) Remove() error

func (*Vg) Rename

func (v *Vg) Rename(newName string) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL