From 8e7eeaa4dd14621bda15e396fcd7b9187bc500c5 Mon Sep 17 00:00:00 2001 From: Anders F Björklund Date: Sun, 5 Sep 2021 22:16:59 +0200 Subject: Implement virtfs volumes for podman machine MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow using the built-in 9pfs feature of qemu, mounting host directories into vm mountpoints. The volumes are generic, the mounts are specific. Wait for the machine to be "running", otherwise the SSH function might throw an error instead. Increase the default msize from 8 KiB to 128 KiB [NO NEW TESTS NEEDED] Signed-off-by: Anders F Björklund --- docs/source/markdown/podman-machine-init.1.md | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'docs/source/markdown') diff --git a/docs/source/markdown/podman-machine-init.1.md b/docs/source/markdown/podman-machine-init.1.md index aead6c695..b936447fb 100644 --- a/docs/source/markdown/podman-machine-init.1.md +++ b/docs/source/markdown/podman-machine-init.1.md @@ -61,6 +61,16 @@ Set the timezone for the machine and containers. Valid values are `local` or a `timezone` such as `America/Chicago`. A value of `local`, which is the default, means to use the timezone of the machine host. +#### **--volume**, **-v**=*source:target* + +Mounts a volume from source to target. + +Create a mount. If /host-dir:/machine-dir is specified as the `*source:target*`, +Podman mounts _host-dir_ in the host to _machine-dir_ in the Podman machine. + +The root filesystem is mounted read-only in the default operating system, +so mounts must be created under the /mnt directory. + #### **--help** Print usage statement. @@ -72,6 +82,7 @@ $ podman machine init $ podman machine init myvm $ podman machine init --disk-size 50 $ podman machine init --memory=1024 myvm +$ podman machine init -v /Users:/mnt/Users ``` ## SEE ALSO -- cgit v1.2.3-54-g00ecf From 6630e5cf66cf76aefcfe9caebe5df4f37dd0bdd5 Mon Sep 17 00:00:00 2001 From: Anders F Björklund Date: Mon, 13 Dec 2021 20:34:37 +0100 Subject: Make it possible to select the volume driver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use the same type of mounts for all the machine volumes. The default could change in the future, depending on OS. [NO NEW TESTS NEEDED] Signed-off-by: Anders F Björklund --- cmd/podman/machine/init.go | 4 ++++ docs/source/markdown/podman-machine-init.1.md | 4 ++++ pkg/machine/config.go | 1 + pkg/machine/qemu/machine.go | 12 ++++++++++-- 4 files changed, 19 insertions(+), 2 deletions(-) (limited to 'docs/source/markdown') diff --git a/cmd/podman/machine/init.go b/cmd/podman/machine/init.go index b913a252e..ed04239c4 100644 --- a/cmd/podman/machine/init.go +++ b/cmd/podman/machine/init.go @@ -92,6 +92,10 @@ func init() { flags.StringArrayVarP(&initOpts.Volumes, VolumeFlagName, "v", []string{}, "Volumes to mount, source:target") _ = initCmd.RegisterFlagCompletionFunc(VolumeFlagName, completion.AutocompleteDefault) + VolumeDriverFlagName := "volume-driver" + flags.StringVar(&initOpts.VolumeDriver, VolumeDriverFlagName, "", "Optional volume driver") + _ = initCmd.RegisterFlagCompletionFunc(VolumeDriverFlagName, completion.AutocompleteDefault) + IgnitionPathFlagName := "ignition-path" flags.StringVar(&initOpts.IgnitionPath, IgnitionPathFlagName, "", "Path to ignition file") _ = initCmd.RegisterFlagCompletionFunc(IgnitionPathFlagName, completion.AutocompleteDefault) diff --git a/docs/source/markdown/podman-machine-init.1.md b/docs/source/markdown/podman-machine-init.1.md index b936447fb..b515e8763 100644 --- a/docs/source/markdown/podman-machine-init.1.md +++ b/docs/source/markdown/podman-machine-init.1.md @@ -71,6 +71,10 @@ Podman mounts _host-dir_ in the host to _machine-dir_ in the Podman machine. The root filesystem is mounted read-only in the default operating system, so mounts must be created under the /mnt directory. +#### **--volume-driver** + +Driver to use for mounting volumes from the host, such as `virtfs`. + #### **--help** Print usage statement. diff --git a/pkg/machine/config.go b/pkg/machine/config.go index 162ef43e2..33a352898 100644 --- a/pkg/machine/config.go +++ b/pkg/machine/config.go @@ -19,6 +19,7 @@ type InitOptions struct { IgnitionPath string ImagePath string Volumes []string + VolumeDriver string IsDefault bool Memory uint64 Name string diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index fde520f03..f09107c71 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -172,8 +172,16 @@ func (v *MachineVM) Init(opts machine.InitOptions) (bool, error) { // Add arch specific options including image location v.CmdLine = append(v.CmdLine, v.addArchOptions()...) - // TODO: add to opts - volumeType := VolumeTypeVirtfs + var volumeType string + switch opts.VolumeDriver { + case "virtfs": + volumeType = VolumeTypeVirtfs + case "": // default driver + volumeType = VolumeTypeVirtfs + default: + err := fmt.Errorf("unknown volume driver: %s", opts.VolumeDriver) + return false, err + } mounts := []Mount{} for i, volume := range opts.Volumes { -- cgit v1.2.3-54-g00ecf