Skip to content

Commit 895ab6e

Browse files
committed
writable: support config sparse file
Signed-off-by: yuchen.cc <yuchen.cc@alibaba-inc.com>
1 parent 81a52e6 commit 895ab6e

File tree

5 files changed

+39
-26
lines changed

5 files changed

+39
-26
lines changed

cmd/convertor/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func prepareWritableLayer(ctx context.Context, dir string) error {
7373
indexPath := path.Join(dir, "writable_index")
7474
os.RemoveAll(dataPath)
7575
os.RemoveAll(indexPath)
76-
out, err := exec.CommandContext(ctx, binpath,
76+
out, err := exec.CommandContext(ctx, binpath, "-s",
7777
dataPath, indexPath, "64").CombinedOutput()
7878
if err != nil {
7979
return errors.Wrapf(err, "failed to prepare writable layer: %s", out)

cmd/overlaybd-snapshotter/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ func parseConfig(fpath string) error {
4949
if err := json.Unmarshal(data, pconfig); err != nil {
5050
return errors.Wrapf(err, "failed to parse plugin config from %s", string(data))
5151
}
52+
logrus.Infof("snapshotter rwMode: %s, autoRemove: %v, writableLayerType: %s",
53+
pconfig.RwMode, pconfig.AutoRemoveDev, pconfig.WritableLayerType)
5254
return nil
5355
}
5456

docs/WRITABLE.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ There are two kinds of mount mode, `dir` mod and `dev` mod:
5555
{
5656
"root": "/var/lib/containerd/io.containerd.snapshotter.v1.overlaybd",
5757
"address": "/run/overlaybd-snapshotter/overlaybd.sock",
58-
"mode": "dev"
58+
"rwMode": "dev", // overlayfs, dir or dev
59+
"writableLayerType": "sparse" // append or sparse
5960
}
6061
```

pkg/snapshot/overlay.go

Lines changed: 26 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -150,13 +150,14 @@ const (
150150
)
151151

152152
type BootConfig struct {
153-
Address string `json:"address"`
154-
Root string `json:"root"`
155-
LogLevel string `json:"verbose"`
156-
LogReportCaller bool `json:"logReportCaller"`
157-
RwMode string `json:"rwMode"` // overlayfs, dir or dev
158-
AutoRemoveDev bool `json:"autoRemoveDev"`
159-
ExporterConfig metrics.ExporterConfig `json:"exporterConfig"`
153+
Address string `json:"address"`
154+
Root string `json:"root"`
155+
LogLevel string `json:"verbose"`
156+
LogReportCaller bool `json:"logReportCaller"`
157+
RwMode string `json:"rwMode"` // overlayfs, dir or dev
158+
AutoRemoveDev bool `json:"autoRemoveDev"`
159+
ExporterConfig metrics.ExporterConfig `json:"exporterConfig"`
160+
WritableLayerType string `json:"writableLayerType"` // append or sparse
160161
}
161162

162163
func DefaultBootConfig() *BootConfig {
@@ -170,6 +171,7 @@ func DefaultBootConfig() *BootConfig {
170171
UriPrefix: "/metrics",
171172
Port: 9863,
172173
},
174+
WritableLayerType: "append",
173175
}
174176
}
175177

@@ -226,13 +228,14 @@ type Opt func(config *SnapshotterConfig) error
226228
// #
227229
// - metadata.db
228230
type snapshotter struct {
229-
root string
230-
rwMode string
231-
config SnapshotterConfig
232-
metacopyOption string
233-
ms *storage.MetaStore
234-
indexOff bool
235-
autoRemoveDev bool
231+
root string
232+
rwMode string
233+
config SnapshotterConfig
234+
metacopyOption string
235+
ms *storage.MetaStore
236+
indexOff bool
237+
autoRemoveDev bool
238+
writableLayerType string
236239

237240
locker *locker.Locker
238241
}
@@ -271,14 +274,15 @@ func NewSnapshotter(bootConfig *BootConfig, opts ...Opt) (snapshots.Snapshotter,
271274
}
272275

273276
return &snapshotter{
274-
root: bootConfig.Root,
275-
rwMode: bootConfig.RwMode,
276-
ms: ms,
277-
indexOff: indexOff,
278-
config: config,
279-
metacopyOption: metacopyOption,
280-
autoRemoveDev: bootConfig.AutoRemoveDev,
281-
locker: locker.New(),
277+
root: bootConfig.Root,
278+
rwMode: bootConfig.RwMode,
279+
ms: ms,
280+
indexOff: indexOff,
281+
config: config,
282+
metacopyOption: metacopyOption,
283+
autoRemoveDev: bootConfig.AutoRemoveDev,
284+
writableLayerType: bootConfig.WritableLayerType,
285+
locker: locker.New(),
282286
}, nil
283287
}
284288

pkg/snapshot/storage.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -637,9 +637,15 @@ func (o *snapshotter) prepareWritableOverlaybd(ctx context.Context, snID string)
637637
binpath := filepath.Join(o.config.OverlayBDUtilBinDir, "overlaybd-create")
638638

639639
// TODO(fuweid): 256GB can be configurable?
640-
out, err := exec.CommandContext(ctx, binpath,
640+
args := []string{
641641
o.overlaybdWritableDataPath(snID),
642-
o.overlaybdWritableIndexPath(snID), "64").CombinedOutput()
642+
o.overlaybdWritableIndexPath(snID),
643+
"64",
644+
}
645+
if o.writableLayerType == "sparse" {
646+
args = append(args, "-s")
647+
}
648+
out, err := exec.CommandContext(ctx, binpath, args...).CombinedOutput()
643649
if err != nil {
644650
err := errors.Wrapf(err, "failed to prepare writable overlaybd: %s", out)
645651
log.G(ctx).Errorln(err)

0 commit comments

Comments
 (0)