-
Notifications
You must be signed in to change notification settings - Fork 155
HelenRAID #256
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft
mcimerman
wants to merge
270
commits into
HelenOS:master
Choose a base branch
from
mcimerman:helenraid-draft
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Draft
HelenRAID #256
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Also rename .devs -> .extents in hr_volume_t and when printing status, display each extent status, and parity disk when array is of type RAID4.
Compute total blocks, data blocks and set block size, data offset, strip size there.
A single function now handles all bd ops, just the type of IO reuqest is specified in bd op caller. Besides this design being more compact, it can be seen as preparation for workers and parallelization.
Following parity blocks in hexdump is easier.
One IPC call is for short volume states printing and other one for specific volume detailed info printing.
All syncs are now done with common util hr_sync_extents().
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
HelenRAID
Notes
Even though this project is not finished yet, I would like to get some
feedback before thesis submission (17.7.2025).
This is just a draft. Which means that I will gradually add planned
features and comment code.
For a quick introduction and start, please look at project HelenRAID_presentation.pdf.
Try it
There is
create_file_bd_disks.bdsh
atuspace/app/hrctl
which creates 4100MB virtual disks you can use for testing. When the image is created it is
copied to
/w/cfg/create_file_bd_disks.bdsh
.You can create a sample RAID 1 volume from
/w/cfg/sample_hrconfig_file_bd.sif
like this:
Print its state:
Add hotspare:
Check the state if you like.
Then fail an extent (give the index [0, 2]);
Check the state again, a rebuild should be in progress.
There is also
sample_hrconfig_pci.sif
for using QEMU disks.For some I/O testing there is
bdwrite
tool inuspace/app/bdwrite
,which writes cyclic blocks (filled A-Z) to specified block devices.
Run qemu with some disks attached, create a volume and run:
Then check for example with
hexdump -C hr_disk1.img
the contents.Or
blkdump
in HelenOS.When using the attached Qemu disks, you can try creating a volume,
restarting Qemu with smaller number of original disks and automatically
assembling with
hrctl -a
.Caveats
extent, even though there is a newly rebuilt extent (former hotspare)
raid
location service category,automatic disassembly and assembly of stacked level volumes is not
supported
hrctl -d
hrctl -a
are undefined whenthere are disks containing stacked levels connected to the system
To be added
Tree
High-level tree:
uspace/srv/bd/hr
tree: