From mboxrd@z Thu Jan 1 00:00:00 1970 From: Fredrik Salomonsson Subject: Re: btrfs raid configuration vs mdraid Date: Mon, 20 May 2019 12:59:57 -0700 Message-ID: <87d0kc522q.fsf@gmail.com> References: <877earc513.fsf@roquette.mug.biscuolo.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([209.51.188.92]:39050) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hSoS6-0004Gi-Jm for help-guix@gnu.org; Mon, 20 May 2019 16:00:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hSoS4-0004lJ-Nc for help-guix@gnu.org; Mon, 20 May 2019 16:00:06 -0400 Received: from mail-pl1-x643.google.com ([2607:f8b0:4864:20::643]:36572) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hSoS3-0004i4-TP for help-guix@gnu.org; Mon, 20 May 2019 16:00:04 -0400 Received: by mail-pl1-x643.google.com with SMTP id d21so7213052plr.3 for ; Mon, 20 May 2019 13:00:01 -0700 (PDT) In-Reply-To: <877earc513.fsf@roquette.mug.biscuolo.net> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: Giovanni Biscuolo , help-guix@gnu.org --=-=-= Content-Type: text/plain Hi Giovanni, Giovanni Biscuolo writes: > Hello Guix! > > My preferred storage setup until now was using RAID-1 software RAID > built with mdadm; for a new machine I'm considering setting up a RAID-1 > btrfs volume as root, but I have much less experience with btrfs > > Assuming I'm going to format the root filesystem as: > > mkfs.btrfs -m raid1 -d raid1 /dev/sda3 /dev/sdb3 > > how should I configure (file-system...)? this way: > > (file-system > (mount-point "/") > (type "btrfs") > (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) > > with UUID taken from "lsblk -f"? That should work. Creating a label will also work and might be easier to handle as you won't need to update the config file incase you reformat your disks. One thing you should note is that guix might generate incorrect paths for grub if you are using subvolumes. At least guix < 1.0 does that for me, haven't tested 1.0+ yet. But I have been using a shell script that works around that issue. > From you experience is RAID on brtfs as solid as the one on mdadm? I have very little experience with mdadm, so can only speak of my experience with btrfs and RAID-1. Which I have been using for 3+ years. For me it has been solid. Only issue I have encountered was when my fileserver lost power a few times leaving the filesystem corrupt. A "btrfs check --repair" fixed that issue. -- s/Fred[re]+i[ck]+/Fredrik/g --=-=-= Content-Type: application/x-sh Content-Disposition: attachment; filename=fix-grub.sh Content-Transfer-Encoding: base64 Content-Description: Script for fixing broken paths in grub after guix reconfigure IyEgL2Jpbi9lbnYgc2gKCnN1ZG8gY2htb2QgK3cgL2Jvb3QvZ3J1Yi9ncnViLmNmZwpzdWRvIHNl ZCAtaUUgJ3N8IC9zdG9yZXwgL19fY3VycmVudC9nbnUvc3RvcmV8JyAvYm9vdC9ncnViL2dydWIu Y2ZnCnN1ZG8gY2htb2QgLXcgL2Jvb3QvZ3J1Yi9ncnViLmNmZwo= --=-=-= Content-Type: text Content-Disposition: attachment; filename=config.scm Content-Description: Guix configuration ;; This is an operating system configuration template ;; for a "desktop" setup without full-blown desktop ;; environments. (use-modules (gnu) (gnu packages) (gnu system nss) (gnu system locale) (gnu services nfs) (ice-9 rdelim) (ice-9 format)) (use-service-modules desktop networking ssh base xorg) (use-package-modules wm certs shells xdisorg) (define plattfot (user-account (name "plattfot") (group "users") ;; Define a G-Expr to find the path of the zsh binary: ;; https://gitlab.com/rain1/guix-wiki/wikis/FAQ#how-do-i-make-my-login-shell-zsh ;;(shell #~(string-append #$zsh "/bin/zsh")) (supplementary-groups '("wheel" "netdev" "audio" "video")) (home-directory "/home/plattfot"))) ;; Specify a mapped device for the encrypted root partition. ;; The UUID is that returned by 'cryptsetup luksUUID'. (define mapped-root (mapped-device (source (uuid "ab43f8be-1a18-4999-836d-71dac382dfb5")) (target "root") (type luks-device-mapping))) (define mapped-swap (mapped-device (source (uuid "9f04f917-efd3-4036-b3f5-24705fee7ffa")) (target "swap") (type luks-device-mapping))) ;; Partion layout for /dev/mapper/root ;; under __current/ ;; | subvol | Mountpoint | Comment | Shared | ;; |-------------+--------------+--------------------+----------| ;; | arch-root | / | root for Arch | no | ;; | guixsd-root | / | root for GuixSD | no | ;; | grub | /boot/grub | grub config | yes | ;; | guix | /var/guix | guix stuff | yes | ;; | gnu | /gnu | Store etc | yes | ;; | home | /home | home partition | yes | (define btrfs-common-options '("defaults" "discard" "compress=lzo" "space_cache" "autodefrag")) (define (btrfs-mount-options subvol) "Return the btrfs mount options I use. Where SUBVOL is the subvolume to mount" (string-join `(,@btrfs-common-options ,(format #f "subvol=~a" subvol)) ",")) (define fs-root (file-system (mount-point "/") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/guixsd-root")) (needed-for-boot? #t) (dependencies `(,mapped-root)))) (define fs-grub (file-system (mount-point "/boot/grub") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/grub")) (needed-for-boot? #t) (dependencies `(,fs-root)))) (define fs-gnu (file-system (mount-point "/gnu") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/gnu")) (needed-for-boot? #t) (dependencies `(,fs-root)))) (define fs-guix (file-system (mount-point "/var/guix") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/guix")) (needed-for-boot? #t) (dependencies `(,fs-root)))) (define fs-home (file-system (mount-point "/home") (type "btrfs") (device (file-system-label "root")) (options (btrfs-mount-options "__current/home")) (needed-for-boot? #t) (dependencies `(,fs-root)))) (define nfs-valhalla (file-system (device "fafner:/srv/nfs4/Valhalla") (mount-point "/media/Valhalla") (type "nfs4") (mount? #f) (check? #f))) (define menu-arch (menu-entry (label "Arch Linux") (linux "/__current/arch-root/boot/vmlinuz-linux") (linux-arguments '("luks.uuid=ab43f8be-1a18-4999-836d-71dac382dfb5" "luks.name=ab43f8be-1a18-4999-836d-71dac382dfb5=root" "luks.key=ab43f8be-1a18-4999-836d-71dac382dfb5=/boot/rootkey.bin" "luks.options=ab43f8be-1a18-4999-836d-71dac382dfb5=discard,luks" "luks.uuid=9f04f917-efd3-4036-b3f5-24705fee7ffa" "luks.name=9f04f917-efd3-4036-b3f5-24705fee7ffa=swap" "luks.key=9f04f917-efd3-4036-b3f5-24705fee7ffa=/boot/swapkey.bin" "luks.options=9f04f917-efd3-4036-b3f5-24705fee7ffa=swap,discard,luks" "root=LABEL=root" "resume=/dev/mapper/swap" "rootflags=compress=lzo,subvol=__current/arch-root")) (initrd (string-join '("/__current/arch-root/boot/intel-ucode.img" "/__current/arch-root/boot/initramfs-linux.img") " ")))) (operating-system (host-name "loke") (timezone "Canada/Pacific") (locale "en_US.utf8") (locale-definitions (list (locale-definition (name "en_US.utf8") (source "en_US") (charset "UTF-8")) (locale-definition (name "sv_SE.utf8") (source "sv_SE") (charset "UTF-8")))) ;; Assuming /dev/sda is the target hard disk, and "root" ;; is the label of the target root file system. (bootloader (grub-configuration (target "/dev/sda") (menu-entries `(,menu-arch)))) ;; Kernel arguments (kernel-arguments '("rootflags=compress=lzo,subvol=__current/guixsd-root")) (mapped-devices (list mapped-root mapped-swap)) (file-systems (cons* fs-home fs-grub fs-gnu fs-guix fs-root nfs-valhalla %base-file-systems)) (swap-devices '("/dev/mapper/swap")) (users (cons plattfot %base-user-accounts)) ;; Add a bunch of window managers; we can choose one at ;; the log-in screen with F1. (packages (cons* i3-wm i3status rofi ;window managers ;;zsh nss-certs ;for HTTPS access %base-packages)) ;; Use the "desktop" services, which include the X11 ;; log-in service, networking with Wicd, and more. (services ;;%desktop-services (cons* (service openssh-service-type (openssh-configuration (port-number 6060) (password-authentication? #f))) (extra-special-file "/bin/env" (file-append coreutils "/bin/env")) (set-xorg-configuration (xorg-configuration (keyboard-layout ;; Keyboard layout for English and Swedish. CAPS as Ctrl, ;; toggle between the two layouts with scroll lock. (keyboard-layout "us,se" #:options '("ctrl:nocaps" "grp:sclk_toggle" "grp_led:scroll" ":2"))))) %desktop-services)) ;; Allow resolution of '.local' host names with mDNS. (name-service-switch %mdns-host-lookup-nss)) --=-=-=--