Uploaded image for project: 'Core ReactOS'
  1. Core ReactOS
  2. CORE-19448

use subvolumes on BTRFS

    XMLWordPrintable

Details

    • New Feature
    • Resolution: Unresolved
    • Minor
    • None
    • None

    Description

      see the following directory structure as an example;
      DIR = directory, SUB = subvolume, LNK = symbolic link (for visibility shown in reverse: name -> target):

      DIR \Subvolumes
      DIR \Subvolumes\OS
      SUB \Subvolumes\Programs
      SUB \Subvolumes\ProgramData
      SUB \Subvolumes\Users
      DIR \Subvolumes\Snapshots
       
      SUB \Subvolumes\OS\Current
      SUB \Subvolumes\OS\{version}
      DIR \Subvolumes\OS\{version}\ReactOS
      DIR \Subvolumes\OS\{version}\Internet Explorer
       
      SUB \Subvolumes\Snapshots\{snapshot_version}
       
      DIR \Subvolumes\Programs\Program Files
      DIR \Subvolumes\Programs\Program Files (x86)
      DIR \Subvolumes\Programs\Games
      DIR \Subvolumes\Programs\XboxGames
       
      LNK \ReactOS -> \Subvolumes\OS\Current\ReactOS
      LNK \Program Files -> \Subvolumes\Programs\Program Files
      LNK \Program Files\Internet Explorer -> \Subvolumes\OS\Current\Internet Explorer
      LNK \Program Files (x86) -> \Subvolumes\Programs\Program Files (x86)
      LNK \Games -> \Subvolumes\Programs\Games
      LNK \XboxGames -> \Subvolumes\Programs\XboxGames
      LNK \Users -> \Subvolumes\Users
      LNK \ProgramData -> \Subvolumes\ProgramData

      i think you get the general idea:

      • snapshots (e.g. at every boot - it's fast enough)
      • by sending and receiving subvolumes as btrfs stream you could deliver and perform very quick system updates using a nested read-only \Subvolumes\OS\ {versions} \Image subvolume for example
      • rollback and roll-forward take a mere second and would allow to install and switch between every nightly build, alpha etc. as you like. even windows versions could be inserted for developers to do quick testing
      • make the need to use multiple virtual machines obsolete for developers, testers and users at the same time
      • mark the \Subvolumes directory hidden to make it visible for advanced users only
      • add compatibility options to run certain apps with libraries for a specific reactos (or windows) version
      • add freeloader options for various snapshots, like os versions, various changed hardware configurations or user defined ones
      • windows does directory localization using links anyways. i think that should work reliable

      probably a better way might be the ubuntu/timeshift convention of this: mount a subvolume (@) as root and the top-level volume (5), where all subvolumes and snapshots are located, under \Snapshots. that would be more familiar to linux users and could create a reasonable cross-platform convention;
      5 = top-level subvolume, MNT = mount (for visibility shown in reverse: name -> target), @ is the ubuntu convention for naming subvolumes:

       

      SUB 5:\@
      SUB 5:\@home
      SUB 5:\@programs
      SUB 5:\@programdata
      DIR 5:\os_versions (maybe instead of OS)
      DIR 5:\snapshots
       
      SUB 5:\os_versions\@current
      SUB 5:\os_versions\@{version}
      DIR 5:\os_versions\@{version}\ReactOS
      DIR 5:\os_versions\@{version}\Internet Explorer
       
      SUB 5:\snapshots\@{snapshot_version}
       
      DIR 5:\@programs\Program Files
      DIR 5:\@programs\Program Files (x86)
      DIR 5:\@programs\Games
      DIR 5:\@programs\XboxGames
       
      MNT \ -> 5:\@
      MNT \Subvolumes -> 5:
       
      LNK \ReactOS -> \Subvolumes\os_versions\@current\ReactOS
      LNK \Program Files -> \Subvolumes\@programs\Program Files
      LNK \Program Files\Internet Explorer -> \Subvolumes\os_versions\@current\Internet Explorer
      LNK \Program Files (x86) -> \Subvolumes\@programs\Program Files (x86)
      LNK \Games -> \Subvolumes\@programs\Games
      LNK \XboxGames -> \Subvolumes\@programs\XboxGames
      LNK \Users -> \Subvolumes\@home
      LNK \ProgramData -> \Subvolumes\@programdata

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            mayly mayly
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated: