Return to Level1Techs.com

How to partition my Linux system?


#1

Hello everyone,
I started using manjaro (i3 edition) on my laptop almost a year ago and I finally decided to change my main system’s operating system too. Anyhow I still have some questions regarding the change.

My current setup is:
Ryzen 5 1600
GTX 1060
32GB DDR4 (3400 Mhz)
Samsung 960 Pro 250GB (OS-Drive)
Samsung 850 Evo 500GB (SSD Cache using PrimoCache)
WD Gold 6TB (Steam library, Blender Stuff, etc… Accelerated by PrimoCache)

I heard many people recommending me to just mount /home to my HDD but this will also leave all user config files, etc. on the HDD while I only want large files (downloads, documents, pictures,…) on my slow HDD.

  • How can I leave /home on my SSD while storing some directories on my HDD, should I just create a symlink?

  • How can I share my Steam library between users, should I just change the steam library path to /mnt/hdd1/SteamLibrary or is there a better solution?

  • How about Snap apps, is there a way to save them to a specific drive/folder?

  • Can I use my old SSD as a HDD Cache on Linux?

I know there are already some guides talking about these problems online but everyone seems to have a different approach to solving these problems, some of the guides are dated and I don’t really know who I can trust so I decided to ask here.

Thanks for your help in advance and have a nice day everyone :slight_smile:


#2

I have similar setup where I have 1TB drive for large files like videos, music, pictures and documents and 128GB drive for OS. what i did was mounting 1TB drive as /home/user/.mass and then making symbolic links from /home/user/{Docs, Videos, Pictures, ...} to /home/user/.mass/{Docs, Videos, Pictures, ...}. I think it works quite well.


#3

I would say the best way would be to keep home on your SSD and just use symlinks if you want some large data elsewhere. As long as you have the other partitions auotmount on boot it should work fine.

An SSD of 250 gb should be more than enough for the systems files and most applications. Things that take a lot of space like games, or cloud services or other data you have the option to specify a specific folder and you can put them on an other partition as you see fit.

You can change your snap app diretory like so: https://askubuntu.com/questions/1029562/move-snap-packages-to-another-location-directory

But i am not sure it is worth it that much. You should have enough space.

As for sharing the Steam library between users y think just adding a common library path to Steam would be the best and easiest way to do it.

Mind you that Linux can read NTFS data no problem but if you want to store actual applications on an different partition that should be a linux partition to make sure their are executed correctly.


#4

I might be going against trend here, but I would install ZFS and use the HDD to create a zpool and use the old SSD as a cache for that. Using an SSD as a cache rather then messing around with symlinks would be optimisation enough (and probably surprisingly effective).

Having said that, it is rather dependent on keeping the desktop continually powered on as ZFS doesn’t currently keep cache drives populated through a reboot.


#5

I feel it’s important to mention that the ideal solution to your problem involves a NAS unit. Also, you make no mention of any sort of backup strategy or disaster recovery for your setup, all the more reason to take the following advice ;).

Avoid symlinks and magical COW filesystems like ZFS/BTRFS, not only do they come with management overhead, but a lot of your typical desktop apps won’t follow symlinks or cry about not being on a “supported filesystem.” Do NOT move your typical day-to-day tools (like the stuff you install with snap) to a drive other than the fast, reliable, root/home partition on your SSD (or you will regret it when your HDD bites it and your productivity goes with it).

I suggest that you only edit a single file on your box to achieve what you want (and tell Steam about that too, maybe). In your fstab (’/etc/fstab’) you tell the system what block devices to mount to what path and some parameters for these mounting operations. Configure the system to mount your large HDD somewhere like /mnt/hdd1 or wherever you feel works best for you, then you use this really powerful feature that we use all the time in DevOps called a “bind mount.” That’s essentially a symlink on steroids that’s far more reliable once setup. Speaking of setup, you can do it on the command line with:

sudo mount --bind <source> <mount point>

or because it’s just a parameter for a mount operation (remember those?), we can configure the system to do it in the fstab. This is also non-destructive, meaning that if you reverse the bind mount, then whatever state the mount point was in before we re-purposed it is restored (the files in your ‘~/Documents’ directory are still there even though you bind mounted ‘/mnt/hdd1/home/Documents’ on top of it). Undo bind mounts with:

sudo umount <mount point>

Let me know if you think you could use more help with the fstab.


#6

First of all thanks for all your suggestions and tips.

I don’t really have a backup plan, I have an external drive that I secure my stuff on (a bit old school but it works).

I just asked about moving snap because if I for example install Spotify through Snap my Spotify download cache will be forced to be inside the snap app too or can I still just move this out to my HDD? Currently I have everything installed on my SSD (960 Pro) and just moved all my Downloads, Games,…
Edit: Never mind, I just tried it on a ubuntu live version and moving it outside of the snap app works fine

I already edited /etc/fstab on my laptop to have a separate /var and /tmp partition but I didn’t know that I can also mount folders using this. Are there any advices you can give me? Can I just mount /home/user/Downloads to /mnt/hdd1/home/user/Downloads or how does it work? I heared about special options in fstab like ‘noatime’, etc. is there something you would recommend me to use?

After all of that I just have to find a way to replace PrimoCache on Linux. I need something like an algorithm that copies my often used stuff from my HDD to my 2nd SSD if someone knows a good tool for that purpose (non-destructive would be great).


#7

mirroring file copy

https://asperasoft.com/index.php?id=408&S_PKG=AW&cm_mmc=Search_Google--Cloud_Aspera--WW_NA--fast+copy+software_Broad&cm_mmca1=000013EG&cm_mmca2=10008878&cm_mmca7=9006500&cm_mmca8=kwd-296354663742&cm_mmca9=k_EAIaIQobChMIrbja7bTa3wIVGoezCh1qRAkIEAAYASAAEgLH6PD_BwE_k&cm_mmca10=276730143807&cm_mmca11=b&mkwid=k_EAIaIQobChMIrbja7bTa3wIVGoezCh1qRAkIEAAYASAAEgLH6PD_BwE_k|1474|11278&cvosrc=ppc.google.fast%20copy%20software&cvo_campaign=000013EG&cvo_crid=276730143807&Matchtype=b&gclid=EAIaIQobChMIrbja7bTa3wIVGoezCh1qRAkIEAAYASAAEgLH6PD_BwE

https://blogs.technet.microsoft.com/filecab/2008/07/31/robocopy-mir-switch-mirroring-file-permissions/

linux
http://main.linuxfocus.org/~guido/scripts/recursive-file-copy-linux.html

hope these help


#8

These links really helped me out, thank you :slight_smile:

Are there any more tips you would give me as a beginner? I plan on using manjaro i3 edition (like on my laptop).

Which distro would you use in my case (mostly gaming and web development)? I don’t wanna start a distro war here but I can’t decide between debian testing and marjaro/arch… Personally I prefer debian but I heared the performance on majaro is much better since it’s packages are much newer than their debian counterparts…


#9

Solus is a good option if you want a low maintenance OS. If you want a lot of customization and performance optimization, manjaro is probably better but it comes with more of a learning curve and will require more maintenance.

For your mounting, anything that isn’t top level (like /home), I would just use symlinks. On a server, you might find some more baroque fstab's, but for a laptop or desktop, I think it’s better to go with the path of least resistance.


#10

Thanks, @claude, for the “mount --bind” tip – I’ve always overlooked it.

Maybe I’m misunderstanding some pros/cons on this one, but I’ve always just mounted extra ‘/home’ space directly where needed, by mounting the extra hdd directly under my home directory (like /home/me/chunk-o-storage), using fstab to ensure the same device gets remounted the same way each time:

(fstab entry:)
UUID=ceb3f418-67(…some very long string…) /home/me/chunk-o-storage ext4 defaults,nofail 0 0

If the drive is not present (such as if it’s a USB external drive, disconnected), then the directory (in this case /home/me/chunk-o-storage) simply appears to be empty. Once the drive is reconnected and mounted, the directory’s contents reappear.

@claude, is it better practice to mount the hdd at some more conventional location, like /mnt/hdd1, and then mount --bind it to some folder in the user’s home folder? What are the upsides/downsides?
Thanks!