[HN Gopher] Keep your files inside your VM
___________________________________________________________________
 
Keep your files inside your VM
 
Author : exec1
Score  : 18 points
Date   : 2023-08-31 20:29 UTC (2 hours ago)
 
web link (msimkunas.lt)
w3m dump (msimkunas.lt)
 
| miller_joe wrote:
| I've been experimenting with working in a gcp VM for a few months
| and like it quite a bit. Between ssh+tmux+nvim and vscode-remote
| I have a remote and local dev exp that is basically identical.
| 
| Syncthing is my key to keeping my ~/git tree in sync between the
| two environments. Just have to be careful not to try to flip back
| and forth quickly between local/remote as syncthing delays can be
| ~10s.
 
  | aaplok wrote:
  | > Syncthing is my key to keeping my ~/git tree in sync between
  | the two environments.
  | 
  | Why don't you use git directly for that?
 
    | johnmaguire wrote:
    | I assume to avoid commit spam.
 
  | lgvld wrote:
  | I always had trouble when using Syncthing for .git folders:
  | they usually end up corrupted / messed up if I push on both the
  | local and remote .git folders.
 
  | skydhash wrote:
  | Mutagen is great for syncing. It's very fast and painless to
  | setup.
 
| nneonneo wrote:
| I've used a VMWare Fusion shared folder between a Mac host and
| Linux/Windows guests for several years with zero issues.
| Performance has generally been very good, basic permissions work
| (haven't needed anything beyond rwx), and I gain the ability to
| pretty freely move between host and guest with ease. For example,
| my Linux guest is headless, so I do most of my editing in a GUI
| editor or IDE on the Mac side on shared files.
| 
| I also have some little quality-of-life scripts on the Linux side
| for things like editing shared files in the Mac editor, opening
| shared folders in Finder, etc. These make it a fairly seamless
| experience to go back and forth between the two OSes.
 
  | exec1 wrote:
  | Depends on your requirements, I guess. I wanted a solution that
  | would allow me to work with Linux ACLs and symlinks as well as
  | get me the best possible performance so going native was
  | basically the only choice. I started from this and then
  | basically just worked around this premise. The only
  | alternatives here were 2 - file syncing or sharing a directory
  | with the host.
 
| rwmj wrote:
| virtio-fs (https://virtio-fs.gitlab.io/) is a more modern option
| for sharing files between host and guest. Also if the VM is
| offline and you need to pull files on or off, then guestfish
| (https://libguestfs.org/guestfish.1.html).
 
  | exec1 wrote:
  | I didn't know about Guestfish, thanks for the reference!
  | 
  | Yes, virtio-fs is an option but I should have added that one of
  | my goals was to not lock myself into a platform... I want to
  | have the possibility of running my VMs on Windows as well and
  | Samba seems like the easiest choice there. Just spin up a Samba
  | share inside the VM, mount it on the Windows host and you're
  | good to go. No need to install any additional dependencies on
  | the host.
  | 
  | I've tried the Windows NFS driver for Vagrant a while back and
  | my conclusion is that it's best not to force a square peg into
  | a round hole... Not to mention that these custom solutions can
  | experience software rot throughout the years.
 
| predictabl3 wrote:
| Hard to trust this when the conclusion is to use NFS instead of
| VirtioFS. I don't buy that NFS over network, to a VM is faster
| than 9p, and certainly isn't faster than VirtioFS. Though "share
| from the VM" is good advice for NFS, since you can just reboot
| the guest when some part of NFS inevitably hangs (not-so-distant
| trauma here, including learning how to force power-off when
| shutdown is broken by NFS).
| 
| And yes, it works with Windows: https://virtio-
| fs.gitlab.io/howto-windows.html
 
  | exec1 wrote:
  | The point I was trying to make in the article was more about
  | reversing the direction of mounts so that instead of mounting a
  | host directory on the guest you share a directory from the
  | guest and mount it with a client on the host. You can achieve
  | this using whatever - NFS, Samba, etc. This is obviously not a
  | new concept but I find it astonishing that perhaps the majority
  | of articles on the internet always talk about mounting a host
  | directory on the guest which is problematic due to the reasons
  | I covered in my article.
  | 
  | The main advantage of this approach is that your code resides
  | on a native file system. This allows you to take advantage of
  | this performance gain where it matters most, which for me is
  | during runtime (I develop web applications and IO performance
  | is of paramount importance). I care much, much less about
  | performance on the host side.
 
  | exec1 wrote:
  | Also, regarding VirtioFS: this is indeed something I have not
  | yet tried. I'm wary of this though because this requires
  | installing additional drivers on Windows and I usually prefer
  | using tools that are already at my disposal (e.g. Samba on
  | Windows).
 
| gomoboo wrote:
| I use PyCharm+Vagrant in my day job. Bidirectional syncing comes
| by default there and has been pretty seamless. I don't usually
| need to create files in the VM but when I do having them appear
| on the host for inspection is great. I also haven't noticed any
| performance issues with the setup compared to developing solely
| on the host.
 
  | exec1 wrote:
  | Are you referring to bidirectional syncing built into Jetbrains
  | IDEs? If so, I have mixed feelings about it.
  | 
  | I gave this setup a go with PhpStorm. Host-to-VM sync is pretty
  | seamless but you always have to manually sync changes from the
  | guest to the host, so there's that. Additionally, syncing can
  | be very slow on large directory trees. I often found myself
  | staring at a loading animation waiting for the IDE to catch all
  | the changes and sync them to the guest.
  | 
  | AFAIK it is not recommended to open a project located on a
  | network drive in a Jetbrains IDE but my experience with it so
  | far has been great. Latency is not a concern because the VM is
  | local.
  | 
  | Most importantly, I wanted to avoid a syncing situation where
  | you have the source and the destination with two possibly
  | differing states. This difference implies the possibility of
  | conflicts which complicates things even further.
 
| YarickR2 wrote:
| So, basically: performance accessing files on the host from the
| VM over NFS is not great, and this is bad. performance accessing
| files in the VM from the host over NFS is not great, and this is
| ok . Kind of self-contradictory
 
| Zambyte wrote:
| I mainly use GNU, but sometimes I develop with a VM running
| Windows. I mainly live inside Emacs. A nice way to access my
| Windows system is through TRAMP, which (T)ransparently extends
| the filesystem at an application level over various protocols. I
| have found that using Emacs as a Samba client to access Windows
| works quite well for me.
| 
| Unfortunately recent versions of Samba makes it hard
| (impossible?) to spawn remote processes; else I would be able to
| use eshell inside Emacs, which is pretty awesome over SSH.
 
  | hsbauauvhabzb wrote:
  | I doubt the latest assertion, the impacket tooling is well
  | known for executing code over various interfaces. I have no
  | idea how it works, but I imagine it would be difficult to
  | truely prevent exec over smb.
  | 
  | Fwiw though, windows now supports openssh via a powershell
  | command to install (e.g it's not some third party binary). I'm
  | not sure if it supports sftp, but it may be worth looking into.
 
    | Zambyte wrote:
    | I'll have to give execing over smb another look.
    | 
    | I did try using OpenSSH, but there were issues with using
    | Powershell through eshell over TRAMP. It expects a POSIX
    | shell. I also tried using Cygwin to run OpenSSH, but that
    | didn't work well for my needs.
 
  | exec1 wrote:
  | Is TRAMP similar to SSHFS?
 
  | sgt wrote:
  | [flagged]
 
___________________________________________________________________
(page generated 2023-08-31 23:01 UTC)