{"id":137363,"date":"2026-05-29T08:00:00","date_gmt":"2026-05-29T08:00:00","guid":{"rendered":"https:\/\/fedoramagazine.org\/?p=43395"},"modified":"2026-05-29T08:00:00","modified_gmt":"2026-05-29T08:00:00","slug":"installing-fedora-linux-across-two-disks","status":"publish","type":"post","link":"https:\/\/sickgaming.net\/blog\/2026\/05\/29\/installing-fedora-linux-across-two-disks\/","title":{"rendered":"Installing Fedora Linux Across Two Disks"},"content":{"rendered":"<p><img decoding=\"async\" width=\"300\" height=\"127\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks.jpg\" class=\"webfeedsFeaturedVisual wp-post-image\" alt=\"\" style=\"margin: auto;margin-bottom: 5px;max-width: 100%\" loading=\"lazy\" \/><\/p>\n<p>A year ago, a family member gave me a 2019 laptop that wouldn\u2019t run Windows anymore. And of course, I immediately installed Fedora Linux on it. While my day-to-day Fedora Linux system is a desktop PC, it\u2019s nice to have a laptop to take with me when I do workshops or conference demos.<\/p>\n<p>However, the laptop has a physical \u201cspinning heads\u201d hard disk, so it is really slow to boot. I timed it; the laptop takes almost two minutes to go from \u201cpower on\u201d to \u201clogin prompt.\u201d And that\u2019s a very long time when you\u2019re at the front of the room, waiting to start a demo.<\/p>\n<p>I thought about replacing the hard disk with a solid state drive, but when I opened the laptop to make sure the drive was replaceable, I saw that the laptop also supports an NVMe solid state drive in addition to the hard disk.<\/p>\n<p> <span id=\"more-43395\"><\/span> <\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"880\" height=\"495\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks-1.jpg\" alt=\"Laptop motherboard, with an empty NVMe slot\" class=\"wp-image-43393\" \/><\/figure>\n<\/div>\n<p>This presented an interesting opportunity: I could put in an NVMe drive and install Fedora Linux across two disks. Specifically, I wanted to boot Fedora Linux from the NVME drive, and keep extra apps and other data on the hard disk. I use several big third-party apps for my demos, which I install in both <em>\/opt<\/em> and <em>\/usr\/local<\/em>, and it\u2019s a huge pain to download and install those extra applications whenever I upgrade Fedora Linux. (I prefer to wipe and reinstall when I upgrade Fedora Linux, so I always have a clean starting point.) If I could keep <em>\/opt<\/em> and <em>\/usr\/local<\/em> on the hard disk, I could preserve those when I install the next version of Fedora Linux.<\/p>\n<h2 class=\"wp-block-heading\">Installing Fedora Linux to the NVMe<\/h2>\n<p>After installing a new NVMe drive in the laptop, I needed to reinstall Fedora Linux. I prefer the Xfce desktop, so I downloaded the <a href=\"https:\/\/fedoraproject.org\/spins\/xfce\/\">Fedora Xfce spin<\/a> and booted the installer. When the installer reached the \u201cDestination\u201d step, it prompted me for the target disk. I clicked \u201cChoose destination\u201d and selected the NVMe disk:<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1366\" height=\"768\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks.png\" alt=\"Fedora 44 Xfce install to NVMe. Text reads 'Select destination'\" class=\"wp-image-43396\" \/><\/figure>\n<\/div>\n<p>The rest of the installation ran normally. The Fedora Linux installer set up the partitions automatically on the new NVMe drive, encrypted my data, and installed the operating system.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1366\" height=\"768\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks-1.png\" alt=\"Fedora 44 Xfce install to NVMe. Text reads 'Review and install'\" class=\"wp-image-43397\" \/><\/figure>\n<\/div>\n<p>With Fedora Linux on the NVMe drive, booting took seconds instead of minutes. Again, I timed it: about 20 seconds to go from \u201cpower on\u201d to \u201clogin prompt.\u201d That\u2019s a huge improvement!<\/p>\n<h2 class=\"wp-block-heading\">Setting up partitions on the hard disk<\/h2>\n<p>The disk partition app in the Fedora Xfce is GParted, which makes it easy to set up the hard disk with new partitions. However, GParted\u2019s main limitation is that it <a href=\"https:\/\/gparted.org\/features.php\">can\u2019t set up encrypted volumes<\/a> for you. If you want to use encryption, you\u2019ll need to use the command line and run <em>cryptsetup<\/em> on your own.<\/p>\n<p>However, I\u2019m not very concerned about encrypting my <em>\/opt<\/em> and <em>\/usr\/local<\/em> partitions. These are just third-party apps, not private data. My personal data will be saved to my home directory, which is safely encrypted on the NVMe drive. So I decided to set up regular partitions, formatted as ext4 filesystems.<\/p>\n<p>I used GParted to delete the old partitions on the hard disk, and define three partitions that were each about 300 GB: <em>\/opt<\/em> (which I labeled as <em>opt<\/em>), <em>\/usr\/local<\/em> (labeled <em>usrlocal<\/em>) and <em>\/backup<\/em> (labeled <em>backup<\/em>). GParted created the partitions and wrote an ext4 filesystem on each.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"785\" height=\"534\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks-2.png\" alt=\"Disk partition app showing 3 new partitions, each about 300 GB\" class=\"wp-image-43390\" \/><\/figure>\n<\/div>\n<p>However, the <em>\/usr\/local<\/em> filesystem has a directory tree in it already, such as <em>\/usr\/local\/bin<\/em> and <em>\/usr\/local\/lib<\/em>, although these directories will be empty after installing Fedora Linux. I wanted to copy the original directories to the new filesystem. The easiest way to do that is to add the new <em>usrlocal<\/em> partition somewhere else and then copy the old <em>\/usr\/local<\/em> to the new partition. Adding a partition to a directory is called mounting, and the directory itself is called a mount point.<\/p>\n<p>First, I needed to create a new mount point for the <em>usrlocal<\/em> partition, which can be located anywhere on the filesystem. Since this was temporary, I created it under <em>\/tmp<\/em> then mounted the new partition using the <em>mount<\/em> command:<\/p>\n<pre class=\"wp-block-preformatted\">$ sudo mkdir \/tmp\/usrlocal\n$ sudo mount LABEL=usrlocal \/tmp\/usrlocal<\/pre>\n<p>Then I copied the contents of the old <em>\/usr\/local<\/em> to the new \/tmp\/usrlocal mount point. The <strong>-a<\/strong> or <strong>&#8211;archive<\/strong> option copies everything:<\/p>\n<pre class=\"wp-block-preformatted\">$ cd \/usr\/local\n$ sudo cp --archive * \/tmp\/usrlocal<\/pre>\n<p>After the process is complete, I unmounted the new partition:<\/p>\n<pre class=\"wp-block-preformatted\">$ sudo umount \/tmp\/usrlocal<\/pre>\n<h2 class=\"wp-block-heading\">Adding the partitions to the system<\/h2>\n<p>To make sure the new partitions are automatically mounted every time my laptop reboots, I needed to add them to my <em>\/etc\/fstab<\/em> file. This is a special file that contains the filesystem table, which is a list of partitions that the system can find on the disk and where to mount them. For example, my default <em>\/etc\/fstab<\/em> file looks like this:<\/p>\n<pre class=\"wp-block-preformatted\">#\n# \/etc\/fstab\n# Created by anaconda on Sat May 23 20:15:13 2026\n#\n# Accessible filesystems, by reference, are maintained under '\/dev\/disk\/'.\n# See man pages fstab(5), findfs(8), mount(8) and\/or blkid(8) for more info.\n#\n# After editing this file, run 'systemctl daemon-reload' to update systemd\n# units generated from this file.\n#\nUUID=c10ec138-be4b-4513-89b7-749ef4a0605e \/ btrfs subvol=root,compress=zstd:1,x-systemd.device-timeout=0 0 0\nUUID=a87b1ed4-4951-4da1-a4a4-a5c48f1f3b28 \/boot ext4 defaults 1 2\nUUID=9AD9-2C52 \/boot\/efi vfat umask=0077,shortname=winnt 0 2\nUUID=c10ec138-be4b-4513-89b7-749ef4a0605e \/home btrfs subvol=home,compress=zstd:1,x-systemd.device-timeout=0 0 0<\/pre>\n<p>Each line in the <em>\/etc\/fstab<\/em> file is divided into several fields: the identifier for the filesystem (to learn more about these, see <a href=\"https:\/\/docs.fedoraproject.org\/en-US\/quick-docs\/persistent-identifiers-for-storage-devices\/#_filesystem_identifiers\">Persistent Identifiers for Storage Devices<\/a> in the Fedora online documentation), the mount point, the filesystem type, a list of mount options, and two optional fields that control if backup software should \u201cdump\u201d the filesystem to backup media (use 0 for <em>never<\/em>) and what order the <em>fsck<\/em> command should check filesystems when needed (usually 1 for the root filesystem, or 2 for other filesystems). I added these lines to my <em>\/etc\/fstab<\/em> file, which defined the mount points for each of my new filesystems:<\/p>\n<pre class=\"wp-block-preformatted\">LABEL=backup \/backup ext4 defaults,noatime 0 2\nLABEL=opt \/opt ext4 defaults,noatime 0 2\nLABEL=usrlocal \/usr\/local ext4 defaults,noatime 0 2<\/pre>\n<p>This is an internal drive, so it should be there every time the laptop boots up. If you add removable storage to the <em>\/etc\/fstab<\/em> file, such as a USB drive, you should add the <strong>nofail<\/strong> option to this list of mount options. Otherwise, if the partition is not available when Linux starts up, the system will hang.<\/p>\n<p>With these lines in the <em>\/etc\/fstab<\/em> file, I ran these commands to reload the <em>\/etc\/fstab<\/em> file, create the <em>\/backup<\/em> mount point, and mount each of the filesystems:<\/p>\n<pre class=\"wp-block-preformatted\">$ sudo systemctl daemon-reload\n$ sudo mkdir \/backup $ sudo mount \/backup\n$ sudo mount \/opt\n$ sudo mount \/usr\/local<\/pre>\n<p>This generated an SELinux alert right away, complaining that the new <em>\/usr\/local<\/em> filesystem lacked the correct security context. The security information wasn\u2019t \u201ccarried over\u201d when copying the old <em>\/usr\/local<\/em> directory tree. Fortunately, the SELinux error provides the solution:<\/p>\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" loading=\"lazy\" width=\"1239\" height=\"725\" src=\"https:\/\/sickgaming.net\/blog\/wp-content\/uploads\/2026\/05\/installing-fedora-linux-across-two-disks-3.png\" alt=\"Text reads 'If you want to fix the label, default label should be usr_r'\" class=\"wp-image-43398\" \/><\/figure>\n<p>To restore the default SELinux security contexts to the new <em>\/usr\/local<\/em> directory tree, I ran the <em>restorecon<\/em> command. The <strong>-v<\/strong> option will print what it does to fix the system:<\/p>\n<pre class=\"wp-block-preformatted\">$ sudo restorecon -v \/usr\/local<br \/>Relabeled \/usr\/local from system_u:object_r:unlabeled_t:s0 to system_u:object_r:usr_t:s0<br \/>Relabeled \/usr\/local\/lost+found from system_u:object_r:unlabeled_t:s0 to system_u:object_r:usr_t:s0<\/pre>\n<h2 class=\"wp-block-heading\">Filesystem flexibility<\/h2>\n<p>With just a few extra steps, I was able to use two disks with Fedora Linux, which lets me take full advantage of the storage on my laptop. The operating system now runs from the very fast NVMe drive, while my big third-party applications in <em>\/usr\/local<\/em> and <em>\/opt<\/em> run from the hard disk.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A year ago, a family member gave me a 2019 laptop that wouldn\u2019t run Windows anymore. And of course, I immediately installed Fedora Linux on it. While my day-to-day Fedora Linux system is a desktop PC, it\u2019s nice to have a laptop to take with me when I do workshops or conference demos. However, the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":137364,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[48],"tags":[45,61,46,47],"class_list":["post-137363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-fedora-os","tag-fedora","tag-fedora-project-community","tag-magazine","tag-news"],"_links":{"self":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/137363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/comments?post=137363"}],"version-history":[{"count":0,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/posts\/137363\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media\/137364"}],"wp:attachment":[{"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/media?parent=137363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/categories?post=137363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sickgaming.net\/blog\/wp-json\/wp\/v2\/tags?post=137363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}