{"id":3101,"date":"2020-09-18T06:00:22","date_gmt":"2020-09-18T05:00:22","guid":{"rendered":"https:\/\/kudzia.eu\/b\/?p=3101"},"modified":"2020-09-18T06:00:22","modified_gmt":"2020-09-18T05:00:22","slug":"resizing-btrfs-on-luks-on-mdadm-raid10","status":"publish","type":"post","link":"https:\/\/kudzia.eu\/b\/2020\/09\/resizing-btrfs-on-luks-on-mdadm-raid10\/","title":{"rendered":"resizing btrfs on luks on mdadm raid10"},"content":{"rendered":"<p>one of my KVM VMs keeps data on BTRFS on top of encrypted LUKS drive. that drive is a block device passed from virtualization server to VM&#8230; a block device which is mdadm software RAID10. below &#8211; steps taken to resize it.<br \/>\n<!--more--><\/p>\n<p>how is the block device passed to the VM? by using driver&#8217;s type=&#8217;raw&#8217;, here&#8217;s the relevant part of \/etc\/libvirt\/qemu\/myvm.xml:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\n  &lt;devices&gt;\r\n    &lt;emulator&gt;\/usr\/bin\/qemu-system-x86_64&lt;\/emulator&gt;\r\n    &lt;disk type='file' device='disk'&gt;\r\n      &lt;driver name='qemu' type='qcow2'\/&gt;\r\n      &lt;source file='\/mnt\/kvm\/myvm\/myvm-disk1.qcow2'\/&gt;\r\n      &lt;target dev='vda' bus='virtio'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'\/&gt;\r\n    &lt;\/disk&gt;\r\n    &lt;disk type='block' device='disk'&gt;\r\n      &lt;driver name='qemu' type='raw'\/&gt;\r\n      &lt;source dev='\/dev\/md127'\/&gt;\r\n      &lt;target dev='vdb' bus='virtio'\/&gt;\r\n      &lt;address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'\/&gt;\r\n    &lt;\/disk&gt;\r\n    ...\r\n<\/pre>\n<p>that&#8217;s how block devices look like on the virtualization host:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@virtserver ~ # lsblk\r\nNAME      MAJ:MIN RM  SIZE RO TYPE   MOUNTPOINT\r\nsda         8:0    0  5.5T  0 disk\r\n\u251c\u2500sda1      8:1    0    1G  0 part\r\n\u2502 \u2514\u2500md0     9:0    0 1022M  0 raid1  \/boot\r\n\u251c\u2500sda2      8:2    0   10G  0 part\r\n\u2502 \u2514\u2500md1     9:1    0   10G  0 raid1  \/\r\n\u251c\u2500sda3      8:3    0    1M  0 part\r\n\u2514\u2500sda4      8:4    0  2.1T  0 part\r\n  \u2514\u2500md127   9:127  0  4.2T  0 raid10\r\nsdb         8:16   0  5.5T  0 disk\r\n\u251c\u2500sdb1      8:17   0    1G  0 part\r\n\u2502 \u2514\u2500md0     9:0    0 1022M  0 raid1  \/boot\r\n\u251c\u2500sdb2      8:18   0   10G  0 part\r\n\u2502 \u2514\u2500md1     9:1    0   10G  0 raid1  \/\r\n\u251c\u2500sdb3      8:19   0    1M  0 part\r\n\u2514\u2500sdb4      8:20   0  2.1T  0 part\r\n  \u2514\u2500md127   9:127  0  4.2T  0 raid10\r\nsdc         8:32   0  5.5T  0 disk\r\n\u2514\u2500sdc1      8:33   0  2.1T  0 part\r\n  \u2514\u2500md127   9:127  0  4.2T  0 raid10\r\nsdd         8:48   0  5.5T  0 disk\r\n\u2514\u2500sdd1      8:49   0  2.1T  0 part\r\n  \u2514\u2500md127   9:127  0  4.2T  0 raid10\r\n\r\nroot@virtserver ~ # parted  \/dev\/sda print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sda: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags: pmbr_boot\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 3      1049kB  2097kB  1049kB                       bios_grub\r\n 1      2097kB  1076MB  1074MB                       raid\r\n 2      1076MB  11.8GB  10.7GB                       raid\r\n 4      11.8GB  2299GB  2287GB               backup\r\n\r\nroot@virtserver ~ # parted  \/dev\/sdb print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdb: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags: pmbr_boot\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 3      1049kB  2097kB  1049kB                       bios_grub\r\n 1      2097kB  1076MB  1074MB                       raid\r\n 2      1076MB  11.8GB  10.7GB                       raid\r\n 4      11.8GB  2299GB  2287GB               backup\r\n\r\nroot@virtserver ~ # parted  \/dev\/sdc print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdc: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags:\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 1      1049kB  2287GB  2287GB               backup\r\n\r\nroot@virtserver ~ # parted  \/dev\/sdd print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdd: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags:\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 1      1049kB  2287GB  2287GB               backup\r\n\r\nroot@virtserver ~ # cat \/proc\/mdstat\r\nPersonalities : &#x5B;raid10] &#x5B;raid1] &#x5B;linear] &#x5B;multipath] &#x5B;raid0] &#x5B;raid6] &#x5B;raid5] &#x5B;raid4]\r\nmd0 : active raid1 sdb1&#x5B;1] sda1&#x5B;0]\r\n      1046528 blocks super 1.2 &#x5B;2\/2] &#x5B;UU]\r\n\r\nmd1 : active raid1 sdb2&#x5B;1] sda2&#x5B;0]\r\n      10476544 blocks super 1.2 &#x5B;2\/2] &#x5B;UU]\r\n\r\nmd127 : active raid10 sda4&#x5B;0] sdb4&#x5B;1] sdd1&#x5B;3] sdc1&#x5B;2]\r\n      4466530304 blocks super 1.2 512K chunks 2 near-copies &#x5B;4\/4] &#x5B;UUUU]\r\n      bitmap: 0\/17 pages &#x5B;0KB], 131072KB chunk\r\n\r\nunused devices: &lt;none&gt;\r\n<\/pre>\n<p>and that&#8217;s what the myvm sees:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@myvm:~# lsblk\r\nNAME     MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT\r\nvda      254:0    0  2.8G  0 disk\r\n\u2514\u2500vda1   254:1    0  2.8G  0 part  \/\r\nvdb      254:16   0  4.2T  0 disk\r\n\u2514\u2500backup 253:0    0  4.2T  0 crypt \/mnt\/backup\r\n<\/pre>\n<p>as you can see on each of the physical drives &#8211; sda-sdd &#8211; there&#8217;s over 3700GB of unallocated space. my aim is to use some of that space and increase size of \/dev\/mapper\/backup on myvm by enlarging \/dev\/md127 on the virtualization server.<\/p>\n<p>#1 &#8211; shut down the myvm virtual machine. possibly unnecessarily. <\/p>\n<p>#2 &#8211; resize the sda4, sdb4, sdc1, sdd1 by adding 2000GB of space to each:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@virtserver ~ # parted \/dev\/sda\r\nGNU Parted 3.2\r\nUsing \/dev\/sda\r\nWelcome to GNU Parted! Type 'help' to view a list of commands.\r\n(parted) print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sda: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags: pmbr_boot\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 3      1049kB  2097kB  1049kB                       bios_grub\r\n 1      2097kB  1076MB  1074MB                       raid\r\n 2      1076MB  11.8GB  10.7GB                       raid\r\n 4      11.8GB  2299GB  2287GB               backup\r\n\r\n(parted) resizepart 4\r\nEnd?  &#x5B;2299GB]? 4299GB\r\n(parted)\r\nInformation: You may need to update \/etc\/fstab.\r\n\r\nroot@virtserver ~ # parted \/dev\/sdb\r\nGNU Parted 3.2\r\nUsing \/dev\/sdb\r\nWelcome to GNU Parted! Type 'help' to view a list of commands.\r\n(parted) print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdb: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags: pmbr_boot\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 3      1049kB  2097kB  1049kB                       bios_grub\r\n 1      2097kB  1076MB  1074MB                       raid\r\n 2      1076MB  11.8GB  10.7GB                       raid\r\n 4      11.8GB  2299GB  2287GB               backup\r\n\r\n(parted) resizepart 4\r\nEnd?  &#x5B;2299GB]? 4299GB\r\n(parted)\r\nInformation: You may need to update \/etc\/fstab.\r\n\r\nroot@virtserver ~ # parted \/dev\/sdc\r\nGNU Parted 3.2\r\nUsing \/dev\/sdc\r\nWelcome to GNU Parted! Type 'help' to view a list of commands.\r\n(parted) print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdc: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags:\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 1      1049kB  2287GB  2287GB               backup\r\n\r\n(parted) resizepart 1\r\nEnd?  &#x5B;2287GB]? 4287GB\r\n(parted)\r\nInformation: You may need to update \/etc\/fstab.\r\n\r\nroot@virtserver ~ # parted \/dev\/sdd\r\nGNU Parted 3.2\r\nUsing \/dev\/sdd\r\nWelcome to GNU Parted! Type 'help' to view a list of commands.\r\n(parted) print\r\nModel: ATA HGST HUS726060AL (scsi)\r\nDisk \/dev\/sdd: 6001GB\r\nSector size (logical\/physical): 512B\/4096B\r\nPartition Table: gpt\r\nDisk Flags:\r\n\r\nNumber  Start   End     Size    File system  Name    Flags\r\n 1      1049kB  2287GB  2287GB               backup\r\n\r\n(parted) resizepart 1\r\nEnd?  &#x5B;2287GB]? 4287GB\r\n(parted)\r\nInformation: You may need to update \/etc\/fstab.\r\n<\/pre>\n<p>#3 resize mdadm raid on top of sda4, sdb4, sdc1, sdd1:<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@virtserver ~ # dmesg\r\n&#x5B;32503.362525] md127: detected capacity change from 4573727031296 to 8573726752768\r\n&#x5B;32503.405402] md: resync of RAID array md127\r\nroot@virtserver ~ # cat \/proc\/mdstat\r\nPersonalities : &#x5B;raid10] &#x5B;raid1] &#x5B;linear] &#x5B;multipath] &#x5B;raid0] &#x5B;raid6] &#x5B;raid5] &#x5B;raid4]\r\nmd0 : active raid1 sdb1&#x5B;1] sda1&#x5B;0]\r\n      1046528 blocks super 1.2 &#x5B;2\/2] &#x5B;UU]\r\n\r\nmd1 : active raid1 sdb2&#x5B;1] sda2&#x5B;0]\r\n      10476544 blocks super 1.2 &#x5B;2\/2] &#x5B;UU]\r\n\r\nmd127 : active raid10 sda4&#x5B;0] sdb4&#x5B;1] sdd1&#x5B;3] sdc1&#x5B;2]\r\n      8372780032 blocks super 1.2 512K chunks 2 near-copies &#x5B;4\/4] &#x5B;UUUU]\r\n      &#x5B;==========&gt;..........]  resync = 54.5% (4567488064\/8372780032) finish=310.4min speed=204265K\/sec\r\n      bitmap: 15\/32 pages &#x5B;60KB], 131072KB chunk\r\n\r\nunused devices: &lt;none&gt;\r\n<\/pre>\n<p>#4 start the myvm VM again<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@virtserver ~ # virsh start myvm\r\n<\/pre>\n<p>#5 on myvm &#8211; open the luks container and resize it<\/p>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">\r\nroot@myvm:~# cryptsetup luksOpen \/dev\/vdb backup\r\nEnter passphrase for \/dev\/vdb:\r\nroot@myvm:~# cryptsetup resize backup -v\r\nEnter passphrase for \/dev\/vdb:\r\nKey slot 0 unlocked.\r\nCommand successful.\r\nroot@myvm:~# mount \/dev\/mapper\/backup \/mnt\/backup\/\r\nroot@myvm:~# btrfs filesystem resize max \/mnt\/backup\/\r\nResize '\/mnt\/backup\/' of 'max'\r\nroot@myvm:~# dmesg\r\n&#x5B;  130.727318] BTRFS info (device dm-0): new size for \/dev\/mapper\/backup is 8573709975552\r\nroot@myvm:~# lsblk\r\nNAME     MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT\r\nvda      254:0    0  2.8G  0 disk\r\n\u2514\u2500vda1   254:1    0  2.8G  0 part  \/\r\nvdb      254:16   0  7.8T  0 disk\r\n\u2514\u2500backup 253:0    0  7.8T  0 crypt \/mnt\/backup\r\n<\/pre>\n<p>there we have it &#8211; more space available for the \/mnt\/backup!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>one of my KVM VMs keeps data on BTRFS on top of encrypted LUKS drive. that drive is a block device passed from virtualization server to VM&#8230; a block device which is mdadm software RAID10. below &#8211; steps taken to resize it.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17,51],"tags":[109,108],"class_list":["post-3101","post","type-post","status-publish","format-standard","hentry","category-tech","category-unimportant","tag-luks","tag-mdadm"],"_links":{"self":[{"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/posts\/3101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/comments?post=3101"}],"version-history":[{"count":2,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/posts\/3101\/revisions"}],"predecessor-version":[{"id":3103,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/posts\/3101\/revisions\/3103"}],"wp:attachment":[{"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/media?parent=3101"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/categories?post=3101"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kudzia.eu\/b\/wp-json\/wp\/v2\/tags?post=3101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}