reb

package
v1.3.18 Latest Latest
Warning

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

Go to latest
Published: Jun 6, 2023 License: MIT Imports: 34 Imported by: 0

Documentation

Overview

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package ais provides core functionality for the AIStore object storage.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2023, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.

Package reb provides global cluster-wide rebalance upon adding/removing storage nodes.

  • Copyright (c) 2018-2021, NVIDIA CORPORATION. All rights reserved.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func IsGFN

func IsGFN() bool

func OffTimedGFN

func OffTimedGFN(detail string)

func OnTimedGFN

func OnTimedGFN()

Types

type Reb

type Reb struct {
	// contains filtered or unexported fields
}

func New

func New(t cluster.Target, config *cmn.Config) *Reb

func (*Reb) AbortLocal

func (reb *Reb) AbortLocal(olderSmapV int64, err error)

(limited usage; compare with `abortAndBroadcast` below)

func (*Reb) FilterAdd

func (reb *Reb) FilterAdd(uname []byte)

func (*Reb) RebID

func (reb *Reb) RebID() int64

func (*Reb) RebStatus

func (reb *Reb) RebStatus(status *Status)

via GET /v1/health (apc.Health)

func (*Reb) RunRebalance

func (reb *Reb) RunRebalance(smap *meta.Smap, id int64, notif *xact.NotifXact)

run sequence: non-EC and EC global

main method: serialized to run one at a time and goes through controlled enumerated stages A note on stage management:

  1. Non-EC and EC rebalances run in parallel
  2. Execution starts after the `Reb` sets the current stage to rebStageTraverse
  3. Only EC rebalance changes the current stage
  4. Global rebalance performs checks such as `stage > rebStageTraverse` or `stage < rebStageWaitAck`. Since all EC stages are between `Traverse` and `WaitAck` non-EC rebalance does not "notice" stage changes.

type Status

type Status struct {
	Targets     meta.Nodes    `json:"targets"`             // targets I'm waiting for ACKs from
	SmapVersion int64         `json:"smap_version,string"` // current Smap version (via smapOwner)
	RebVersion  int64         `json:"reb_version,string"`  // Smap version of *this* rebalancing op
	RebID       int64         `json:"reb_id,string"`       // rebalance ID
	Stats       cluster.Stats `json:"stats"`               // transmitted/received totals
	Stage       uint32        `json:"stage"`               // the current stage - see enum above
	Aborted     bool          `json:"aborted"`             // aborted?
	Running     bool          `json:"running"`             // running?
	Quiescent   bool          `json:"quiescent"`           // true when queue is empty
}

Jump to

Keyboard shortcuts

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