Documentation
¶
Overview ¶
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2025, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2025, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2021-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Package fs provides mountpath and FQN abstractions and methods to resolve/map stored content
- Copyright (c) 2018-2024, NVIDIA CORPORATION. All rights reserved.
Index ¶
- Constants
- Variables
- func AllMpathBcks(opts *WalkOpts) (bcks []cmn.Bck, err error)
- func CapStatusGetWhat() (fsInfo apc.CapacityInfo)
- func CleanPathErr(err error)
- func ComputeDiskSize()
- func ContainsCT(fqn, bname string) bool
- func CountPersisted(fname string) (cnt int)
- func CreateBucket(bck *cmn.Bck, nilbmd bool) (errs []error)
- func Decommission(mdOnly bool)
- func DestroyBucket(op string, bck *cmn.Bck, bid uint64) (err error)
- func DirectOpen(path string, flag int, perm os.FileMode) (*os.File, error)
- func DiskStats(allds cos.AllDiskStats, tcdf *Tcdf, config *cmn.Config, refreshCap bool)
- func ExpireCapCache()
- func Get() (MPI, MPI)
- func GetAllMpathUtils() (utils *ios.MpathUtil)
- func GetDiskSize() uint64
- func GetMaxUtil() (util int64)
- func GetMpathUtil(mpath string) int64
- func GetXattr(fqn, attrName string) ([]byte, error)
- func GetXattrBuf(fqn, attrName string, buf []byte) (b []byte, err error)
- func HasAlert(disks []string) (alert string, idx int)
- func HasPrefixFntl(s string) bool
- func InitCDF(tcdf *Tcdf)
- func IsDirEmpty(dir string) (names []string, empty bool, err error)
- func IsFntl(objName string) bool
- func IsMicroThrottle(n int64) bool
- func IsMiniThrottle(n int64) bool
- func IsThrottle(n int64) bool
- func LikelyCT(s string) bool
- func LoadNodeID(mpaths cos.StrKVs) (mDaeID string, err error)
- func MarkerExists(marker string) bool
- func New(fshc HC, num int) (blockDevs ios.BlockDevices)
- func NoneShared(numMpaths int) bool
- func NumAvail() int
- func OnDiskSize(bck *cmn.Bck, prefix string) (size uint64)
- func PersistMarker(marker string) (fatalErr, writeErr error)
- func PersistOnMpaths(fname, backupName string, meta jsp.Opts, atMost int, b []byte, sgl *memsys.SGL) (cnt, availCnt int)
- func PutMPI(avail, disabled MPI)
- func RemoveAll(dir string) (err error)
- func RemoveMarker(marker string, stup cos.StatsUpdater) (err error)
- func RenameBucketDirs(bckFrom, bckTo *cmn.Bck) (err error)
- func SetXattr(fqn, attrName string, data []byte) (err error)
- func ShortenFntl(s string) string
- func TestNew(iostater ios.IOS)
- func ThrottlePct() (int, int64, float64)
- func ToMPL() (mpl *apc.MountpathList)
- func ValidateNCopies(tname string, copies int) (err error)
- func Walk(opts *WalkOpts) error
- func WalkBck(opts *WalkBckOpts) error
- func WalkDir(dir string, ucb func(string, DirEntry) error) error
- type CDF
- type CDFv322
- type CapStatus
- type Capacity
- type ContentInfo
- type ContentResolver
- type DirEntry
- type ECMetaContentResolver
- type ECSliceContentResolver
- type ErrStorageIntegrity
- type HC
- type MFS
- type MPI
- type Mountpath
- func Add(mpath, tid string) (mi *Mountpath, err error)
- func AddMpath(tid, mpath string, label cos.MountpathLabel, cb func()) (mi *Mountpath, err error)
- func BeginDD(action string, flags uint64, mpath string) (mi *Mountpath, numAvail int, noResil bool, err error)
- func Disable(mpath string, cb ...func()) (disabledMpath *Mountpath, err error)
- func Enable(mpath string) (enabledMpath *Mountpath, err error)
- func EnableMpath(mpath, tid string, cb func()) (enabledMpath *Mountpath, err error)
- func FQN2Mpath(fqn string) (found *Mountpath, relativePath string, err error)
- func Hrw(uname []byte) (mi *Mountpath, digest uint64, err error)
- func NewMountpath(mpath string, label cos.MountpathLabel) (*Mountpath, error)
- func Remove(mpath string, cb ...func()) (*Mountpath, error)
- func (mi *Mountpath) AddDisabled(disabled MPI)
- func (mi *Mountpath) AddEnabled(tid string, avail MPI, config *cmn.Config, blockDevs ios.BlockDevices) (err error)
- func (mi *Mountpath) CheckFS() (err error)
- func (mi *Mountpath) ClearDD()
- func (mi *Mountpath) ClearMDs(inclBMD bool) (rerr error)
- func (mi *Mountpath) CreateMissingBckDirs(bck *cmn.Bck) (err error)
- func (mi *Mountpath) DeletedRoot() string
- func (mi *Mountpath) GetUtil() int64
- func (mi *Mountpath) IsAnySet(flags uint64) bool
- func (mi *Mountpath) IsAvail() bool
- func (mi *Mountpath) MakePathBck(bck *cmn.Bck) string
- func (mi *Mountpath) MakePathCT(bck *cmn.Bck, contentType string) string
- func (mi *Mountpath) MakePathFQN(bck *cmn.Bck, contentType, objName string) string
- func (mi *Mountpath) MoveToDeleted(dir string) (err error)
- func (mi *Mountpath) RemoveDeleted(who string) (rerr error)
- func (mi *Mountpath) RescanDisks() (warn, err error)
- func (mi *Mountpath) SetDaemonIDXattr(tid string) error
- func (mi *Mountpath) SetFlags(flags uint64) (ok bool)
- func (mi *Mountpath) String() string
- func (mi *Mountpath) TempDir(dir string) string
- type ObjectContentResolver
- type ParsedFQN
- type PartsFQN
- type TargetCDFv322
- type Tcdf
- type TcdfExt
- type WalkBckOpts
- type WalkOpts
- type WorkfileContentResolver
Constants ¶
const ( DiskFault = "(faulted)" // disabled by FSHC DiskOOS = "(out-of-space)" // (capacity) Disk2Disable = "(->disabled)" // FlagBeingDisabled (in transition) Disk2Detach = "(->detach)" // FlagBeingDetached (ditto) DiskHighWM = "(low-free-space)" // (capacity) )
available mountpaths: disk name suffix NOTE: when adding/updating, check HasAlert below
const ( DiskDisabled = "(mp-disabled)" DiskDetached = "(mp-detached)" )
!available mountpath // TODO: not yet used; readability
const ( ObjectType = "ob" WorkfileType = "wk" ECSliceType = "ec" ECMetaType = "mt" )
const ( SieMpathIDMismatch = (1 + iota) * 10 SieTargetIDMismatch SieNotEqVMD SieMetaCorrupted SieFsDiffers SieMpathNotFound )
const ( // prefixes for workfiles created by various services WorkfileRemote = "remote" // getting object from neighbor target when rebalancing WorkfileColdget = "cold" // object GET: coldget WorkfilePut = "put" // object PUT WorkfileCopy = "copy" // copy object WorkfileAppend = "append" // APPEND to object (as file) WorkfileAppendToArch = "append-to-arch" // APPEND to existing archive WorkfileCreateArch = "create-arch" // CREATE multi-object archive )
const ( FlagBeingDisabled uint64 = 1 << iota FlagBeingDetached FlagDisabledByFSHC // TODO -- FIXME: niy )
enum Mountpath.Flags
const ( Throttle1ms = time.Millisecond Throttle10ms = 10 * time.Millisecond Throttle100ms = 100 * time.Millisecond )
const FlagWaitingDD = FlagBeingDisabled | FlagBeingDetached
const MaxThrottlePct = 75 // vs ratio pct returned by ThrottlePct() below
Variables ¶
var CSM *contentSpecMgr
Functions ¶
func CapStatusGetWhat ¶
func CapStatusGetWhat() (fsInfo apc.CapacityInfo)
func CleanPathErr ¶ added in v1.3.18
func CleanPathErr(err error)
func ContainsCT ¶ added in v1.3.26
func CountPersisted ¶
func Decommission ¶
func Decommission(mdOnly bool)
func DestroyBucket ¶
NOTE: caller must evict LOM cache
func DirectOpen ¶
DirectOpen opens a file with direct disk access (with OS caching disabled).
func ExpireCapCache ¶ added in v1.3.23
func ExpireCapCache()
func GetAllMpathUtils ¶
func GetDiskSize ¶ added in v1.3.21
func GetDiskSize() uint64
func GetMaxUtil ¶ added in v1.3.26
func GetMaxUtil() (util int64)
max disk utilization across mountpaths
func GetMpathUtil ¶
func GetXattrBuf ¶
GetXattr gets xattr by name via provided buffer
func HasAlert ¶ added in v1.3.24
[convention] <DISK-NAME>[(<alert>)] Returns "" and (-1) when no alerts found otherwise, returns alert name and its index in the DISK-NAME string
func HasPrefixFntl ¶ added in v1.3.26
func IsMicroThrottle ¶ added in v1.3.26
func IsMiniThrottle ¶ added in v1.3.26
func IsThrottle ¶ added in v1.3.26
func MarkerExists ¶
func NoneShared ¶ added in v1.3.23
func OnDiskSize ¶ added in v1.3.21
bucket and bucket+prefix on-disk sizing
func PersistMarker ¶
func PersistOnMpaths ¶
func PersistOnMpaths(fname, backupName string, meta jsp.Opts, atMost int, b []byte, sgl *memsys.SGL) (cnt, availCnt int)
PersistOnMpaths persists `what` on mountpaths under "mountpath.Path/path" filename. It does it on maximum `atMost` mountPaths. If `atMost == 0`, it does it on every mountpath. If `backupPath != ""`, it removes files from `backupPath` and moves files from `path` to `backupPath`. Returns how many times it has successfully stored a file.
func RemoveMarker ¶
func RemoveMarker(marker string, stup cos.StatsUpdater) (err error)
func RenameBucketDirs ¶
func ShortenFntl ¶ added in v1.3.26
func ThrottlePct ¶ added in v1.3.26
- max disk utilization across mountpaths - max (1 minute, 5 minute) load average
func ToMPL ¶ added in v1.3.24
func ToMPL() (mpl *apc.MountpathList)
func ValidateNCopies ¶
Types ¶
type CDF ¶ added in v1.3.16
type CDF struct { Label cos.MountpathLabel `json:"mountpath_label"` FS cos.FS `json:"fs"` Disks []string `json:"disks"` // owned or shared disks (ios.FsDisks map => slice); "name[.faulted | degraded]" Capacity }
Capacity, Disks, Filesystem (CDF)
type CapStatus ¶
type CapStatus struct { // config HighWM int64 OOS int64 // metrics TotalUsed uint64 // bytes TotalAvail uint64 // bytes PctAvg int32 // average used (%) PctMax int32 // max used (%) PctMin int32 // max used (%) }
func CapPeriodic ¶
func CapPeriodic(now int64, config *cmn.Config, tcdf *Tcdf) (cs CapStatus, updated bool, err, errCap error)
called only and exclusively by `stats.Trunner` providing `config.Periodic.StatsTime` tick
func CapRefresh ¶ added in v1.3.16
sum up && compute %% capacities while skipping already _counted_ filesystems
type ContentInfo ¶
type ContentResolver ¶
type ContentResolver interface { // Generates unique base name for original one. This function may add // additional information to the base name. // prefix - user-defined marker GenUniqueFQN(base, prefix string) (ufqn string) // Parses generated unique fqn to the original one. ParseUniqueFQN(base string) (orig string, old, ok bool) }
type ECMetaContentResolver ¶
type ECMetaContentResolver struct{}
func (*ECMetaContentResolver) GenUniqueFQN ¶
func (*ECMetaContentResolver) GenUniqueFQN(base, _ string) string
func (*ECMetaContentResolver) ParseUniqueFQN ¶
func (*ECMetaContentResolver) ParseUniqueFQN(base string) (orig string, old, ok bool)
type ECSliceContentResolver ¶
type ECSliceContentResolver struct{}
func (*ECSliceContentResolver) GenUniqueFQN ¶
func (*ECSliceContentResolver) GenUniqueFQN(base, _ string) string
func (*ECSliceContentResolver) ParseUniqueFQN ¶
func (*ECSliceContentResolver) ParseUniqueFQN(base string) (orig string, old, ok bool)
type ErrStorageIntegrity ¶
func (*ErrStorageIntegrity) Error ¶
func (sie *ErrStorageIntegrity) Error() string
type Mountpath ¶ added in v1.3.16
type Mountpath struct { LomCaches cos.MultiHashMap // LOM caches Path string // clean path Label cos.MountpathLabel // (disk sharing; storage class; user-defined grouping) cos.FS // underlying filesystem Disks []string // owned disks (ios.FsDisks map => slice) PathDigest uint64 // (HRW logic) // contains filtered or unexported fields }
func AddMpath ¶
func AddMpath(tid, mpath string, label cos.MountpathLabel, cb func()) (mi *Mountpath, err error)
(via attach-mpath)
func BeginDD ¶
func BeginDD(action string, flags uint64, mpath string) (mi *Mountpath, numAvail int, noResil bool, err error)
begin (disable | detach) transaction: CoW-mark the corresponding mountpath
func Disable ¶
Disables a mountpath, i.e., removes it from usage but keeps in the volume (for possible future re-enablement). If successful, returns the disabled mountpath. Otherwise, returns nil (also in the case if the mountpath was already disabled).
func EnableMpath ¶
Enable enables previously disabled mountpath. enabled is set to true if mountpath has been moved from disabled to available and exists is set to true if such mountpath even exists.
func NewMountpath ¶
func NewMountpath(mpath string, label cos.MountpathLabel) (*Mountpath, error)
func Remove ¶
Remove removes mountpaths from the target's mountpaths. It searches for the mountpath in `available` and, if not found, in `disabled`.
func (*Mountpath) AddDisabled ¶ added in v1.3.16
func (*Mountpath) AddEnabled ¶ added in v1.3.16
func (*Mountpath) CreateMissingBckDirs ¶ added in v1.3.16
func (*Mountpath) DeletedRoot ¶ added in v1.3.16
func (*Mountpath) MakePathBck ¶ added in v1.3.16
func (*Mountpath) MakePathCT ¶ added in v1.3.16
func (*Mountpath) MakePathFQN ¶ added in v1.3.16
func (*Mountpath) MoveToDeleted ¶ added in v1.3.16
MoveToDeleted removes directory in steps: 1. Synchronously gets temporary directory name 2. Synchronously renames old folder to temporary directory
func (*Mountpath) RemoveDeleted ¶ added in v1.3.16
func (*Mountpath) RescanDisks ¶ added in v1.3.24
func (*Mountpath) SetDaemonIDXattr ¶ added in v1.3.16
type ObjectContentResolver ¶
type ObjectContentResolver struct{}
func (*ObjectContentResolver) GenUniqueFQN ¶
func (*ObjectContentResolver) GenUniqueFQN(base, _ string) string
func (*ObjectContentResolver) ParseUniqueFQN ¶
func (*ObjectContentResolver) ParseUniqueFQN(base string) (orig string, old, ok bool)
type ParsedFQN ¶
type TargetCDFv322 ¶ added in v1.3.23
type TargetCDFv322 struct { Mountpaths map[string]*CDFv322 CsErr string `json:"cs_err"` PctMax int32 `json:"pct_max"` PctAvg int32 `json:"pct_avg"` PctMin int32 `json:"pct_min"` }
[backward compatibility]: v3.22 cdf* structures
type Tcdf ¶ added in v1.3.24
type Tcdf struct { Mountpaths map[string]*CDF // mpath => [Capacity, Disks, FS (CDF)] CsErr string `json:"cs_err"` // OOS or high-wm error message; disk fault TotalUsed uint64 `json:"total_used,string"` // bytes TotalAvail uint64 `json:"total_avail,string"` // bytes PctMax int32 `json:"pct_max"` // max used (%) PctAvg int32 `json:"pct_avg"` // avg used (%) PctMin int32 `json:"pct_min"` // min used (%) }
Target (cumulative) CDF
type TcdfExt ¶ added in v1.3.24
type TcdfExt struct { cos.AllDiskStats Tcdf }
type WalkBckOpts ¶
type WalkBckOpts struct { ValidateCb walkFunc // should return filepath.SkipDir to skip directory without an error WalkOpts }
type WorkfileContentResolver ¶
type WorkfileContentResolver struct{}
func (*WorkfileContentResolver) GenUniqueFQN ¶
func (*WorkfileContentResolver) GenUniqueFQN(base, prefix string) string
func (*WorkfileContentResolver) ParseUniqueFQN ¶
func (*WorkfileContentResolver) ParseUniqueFQN(base string) (orig string, old, ok bool)
Source Files
¶
Directories
¶
Path | Synopsis |
---|---|
Package health is a basic mountpath health monitor.
|
Package health is a basic mountpath health monitor. |
Package lpi: local page iterator
|
Package lpi: local page iterator |
Package mpather provides per-mountpath concepts.
|
Package mpather provides per-mountpath concepts. |