• 0 Posts
  • 11 Comments
Joined 1 year ago
cake
Cake day: June 13th, 2023

help-circle

  • Raid0 (combining both drives’ capacities) is not really tiered storage. You would want Raid1 (each drive is a copy of the other drive ), but doing this isn’t a backup. How will you be monitoring the drives so that you know if one of them actually fails?

    I don’t think the RPi has a new enough kernel, but with bcachefs you can do tiered storage. By combining the storage of the ssd + hardrives, into a single block device, then make the ssd the read/write cache, and give the whole pool replicas=2, so that that if one drive dies you still have the failover of the other drive. Do be aware this setup is still not a backup however.


  • It does make sense. Thank you. I appreciate the link!

    However, my cloud usage is purely as a proxy/load balancer, as none of my cloud providers hold any actual data. They’re just routing traffic, and all data/processing is on premises. What I’m interested in, is how to setup something like what you describe, but on premises also. From a design stand point, if I wanted to protect myself from a ransomware attack, obviously my cloud backups would be lost because they’re a mounted filesystem during a backup eventually. So I don’t know how to wrap my head around handling this, just storage design wise as specific tools I can figure out. How does one create a recovery point, and keep it safe from something like this? Just image the entire file system from a live booted offline environment? Feels like a chicken-egg problem to me.


  • I’ve thought about how I could handle disaster recovery for my homelab environment, but I haven’t come to any good solutions. For example, if my main concern was being hit by crypto. I can’t just recover from a regular backup, since I’m not sure how I can make a backup without that backup just being encrypted along side everything else. Since I mainly just backup everything to my file server, which is then synced to the cloud. In that setup, my cloud backups would be lost as well.

    Would you have some starting points on how others handle disaster recovery? I’d like to avoid manually making an offline backup, because inevitably I’d forget to do it, which would make it useless anyway.


  • No worries, I’ll link to some Arch Wiki stuff to help explain. Containers are a very cool system for isolating environments. Similar to how python uses VENV to contain all the dependencies for a python program, containers let you have a full environment beyond just the python stuff. I use podman to actually run the container on my computer. You use a Containerfile, to define what you want this environment to look like, and docker/podman does all the hard work for you, by making an image file that holds the whole thing in one place separate from our real OS.

    This is my start script.

    #!/usr/bin/env bash
    
    podman run -it --rm --name stablediff2 -p 7860:7860 \
    -e COMMANDLINE_ARGS="--api --listen --port 7860 --enable-insecure-extension-access --medvram-sdxl --cors-allow-origins *" \
            --device /dev/dri:dev/dri \
            --device /dev/kfd:/dev/kfd \
            -v ./models:/dockerx/stable-diffusion-webui/models:z \
            -v ./repos:/dockerx/stable-diffusion-webui/repositories:z \
            -v ./extensions:/dockerx/stable-diffusion-webui/extensions:z \
            -v ./embeddings:/dockerx/stable-diffusion-webui/embeddings:z \
            -v ./outputs:/dockerx/stable-diffusion-webui/outputs:z \
            -v ./inputfiles:/dockerx/stable-diffusion-webui/inputfiles:z
            localhost:stablediffusion:latest
    

    This is just telling podman to start the container, give it an actual terminal to connect to, remove the container if it stops running, give it a name, and tell it what ports it can run on.

    podman run -it --rm --name stablediff2 -p 7860:7860

    These are the arguments passed to the webui start script itself, mostly for my own convenience. The medvram-sdxl is not required, since my card has enough vram, but then I can’t be doing anything else with it. So I sacrifice a bit of generation speed for more free memory for the rest of my computer. I’m running this locally, so insecure extension access also doesn’t matter since I’m the only one using this, just makes installing extensions from the webui directly.

    -e COMMANDLINE_ARGS="--api --listen --port 7860 --enable-insecure-extension-access --medvram-sdxl --cors-allow-origins *" \

    These are just the device files that correspond to my GPU, so that the container has access to it. Without this, the container would only have access to CPU based generation. Everything else is just the folders that holds my models, extensions etc. You have to give the container exactly what you want it to, because its isolated away from your normal files unless you tell it otherwise.

    --device /dev/dri:dev/dri \
    --device /dev/kfd:/dev/kfd \
    

    This is iterations per second, I believe. It’s basically a measure of how fast stablediffusion is is running a particular generation of an image. It lets people compare performance across different software and hardware configurations.

    10 it/s

    NixOS is the name of the GNU/Linux operating system I’m using, similar to how MacOS is different than Windows, NixOS is another type of operating system. I’ve only been using it for a few months, but its extremely cool. Before that I mostly used Debian and Fedora, but the main difference between NixOS and them is that you can define you whole OS as a configuration files, and then the tools it’s designed around build your system for you. So instead of say, installing a program, opening it up and going into settings and changing everything to be how you like it. You can instead just make a file that lists everything the way you want it from the start, and Nix installs the program and sets it all up all in one go. It has a pretty big learning curve, and its features are numerous that I have yet to take full advantage of them. Probably not the best to start with if you are new to GNU/Linux systems, but once you see the benefits of why it does things differently, its awesome.

    Hopefully that explains most of the words I used. Pardon my formatting, as I don’t know markdown very well and I think I separated everything okay. :)


  • by default, set up to run in a venv

    It does, but since I’m running inside a container, I disable that behavior, and run it as a user package. Some extensions also require additional libraries, but they don’t pull the correct ROCm dependencies and I have to modify part of the install scripts to manually define the correct versions.

    The main webui code is excellent, even if sometimes the documention is out of step because of how fast everything moves. Its the extensions that are not always to the same level of quality that make fiddling with python dependencies a bit of extra work.



  • I use stable diffusion with automatic1111’s webui ran locally with an AMD GPU. I use the card for gaming and encoding too, so the cost for just AI is basically free. The webui is excellent, and I learn about new things it can do every time I use it. Setting it up took some time, but nothing beyond what I am familiar with. I do loathe that so much data science/AI stuff is python based, because python’s dependency management is an unruly beast, but oh well.


  • Perfect examples of why OSX is an Unix-like just like GNU/Linux. It’s got a shared history with the original Unix, but isn’t literally Unix. This community is around Unix-likes, and under the Unix-like banner, I’d gladly welcome ReactOS. WSL isn’t in the spirit of it though.

    OSX has been on a number of occasions actively hostile towards FLOSS as well (particularly anything GPL), which in the last decades, have become synonymous with Unix-likes, though that’s a matter of personal taste. What isn’t a matter of taste however, is that OSX uses the XNU kernel, which is an acronym for X is Not Unix. It is not a monolithic Unix style kernel either. I would argue that OSX is only loosely Unix-like, and only mimics Unix functions for compatibility. Should Apple have the inclination, they would happily abandon it for something invented by them given the opportunity.

    Not picking a fight with you over semantics, I just loathe Apple as a business and Microsoft gets a lot of flack for their old “Embrace Extend Extinguish” policies when Apple has been exceptionally hostile towards OSS. Apple so often gets a pass when being considered a part of Unix communities yet they absolutely do not embrace the spirit of Unix-likes and FLOSS at all.