From 0dbdf592cffd20571fb53da63cadb001e111bf9e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Thu, 23 Jan 2025 10:33:10 +0800 Subject: [PATCH] fix(host): cephfs mount (#22010) --- pkg/hostman/container/volume_mount/cephfs.go | 20 ++------------------ pkg/util/mountutils/mount.go | 13 +++++++++++++ 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/pkg/hostman/container/volume_mount/cephfs.go b/pkg/hostman/container/volume_mount/cephfs.go index f9c804c88c..37d7ad3eed 100644 --- a/pkg/hostman/container/volume_mount/cephfs.go +++ b/pkg/hostman/container/volume_mount/cephfs.go @@ -18,12 +18,12 @@ import ( "fmt" "path/filepath" - "yunion.io/x/log" "yunion.io/x/pkg/errors" "yunion.io/x/onecloud/pkg/apis" hostapi "yunion.io/x/onecloud/pkg/apis/host" container_storage "yunion.io/x/onecloud/pkg/hostman/container/storage" + "yunion.io/x/onecloud/pkg/util/mountutils" "yunion.io/x/onecloud/pkg/util/procutils" ) @@ -38,27 +38,11 @@ func (h cephFS) Mount(pod IPodInfo, ctrId string, vm *hostapi.ContainerVolumeMou if err != nil { return err } - if err := EnsureDir(dir); err != nil { - return errors.Wrap(err, "EnsureDir") - } - if err := procutils.NewRemoteCommandAsFarAsPossible("mountpoint", dir).Run(); err == nil { - log.Warningf("mountpoint %s is already mounted", dir) - return nil - } options := fmt.Sprintf("name=%s,secret=%s", vm.CephFS.Name, vm.CephFS.Secret) if vm.ReadOnly { options += ",ro" } - args := []string{ - "-t", "ceph", - fmt.Sprintf("%s:%s", vm.CephFS.MonHost, vm.CephFS.Path), dir, - "-o", options, - } - out, err := procutils.NewRemoteCommandAsFarAsPossible("mount", args...).Output() - if err != nil { - return errors.Wrapf(err, "mount %s: %s", dir, out) - } - return nil + return mountutils.MountWithParams(fmt.Sprintf("%s:%s", vm.CephFS.MonHost, vm.CephFS.Path), dir, "ceph", []string{"-o", options}) } func (h cephFS) Unmount(pod IPodInfo, ctrId string, vm *hostapi.ContainerVolumeMount) error { diff --git a/pkg/util/mountutils/mount.go b/pkg/util/mountutils/mount.go index 15d0ad9d44..76937de894 100644 --- a/pkg/util/mountutils/mount.go +++ b/pkg/util/mountutils/mount.go @@ -55,6 +55,19 @@ func Mount(devPath string, mountPoint string, fsType string) error { }) } +func MountWithParams(devPath string, mountPoint string, fsType string, opts []string) error { + return mountWrap(mountPoint, func() error { + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + args := []string{"-t", fsType, devPath, mountPoint} + args = append(args, opts...) + if out, err := procutils.NewRemoteCommandContextAsFarAsPossible(ctx, "mount", args...).Output(); err != nil { + return errors.Wrapf(err, "mount %s to %s with fs %s: %s", devPath, mountPoint, fsType, string(out)) + } + return nil + }) +} + func MountOverlay(lowerDir []string, upperDir string, workDir string, mergedDir string) error { return mountOverlay(lowerDir, upperDir, workDir, mergedDir, nil) }