linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* How to move a btrfs volume to a smaller disk
@ 2016-03-09 21:46 Hendrik Friedel
  2016-03-09 21:50 ` Hugo Mills
  2016-03-11  3:29 ` Satoru Takeuchi
  0 siblings, 2 replies; 4+ messages in thread
From: Hendrik Friedel @ 2016-03-09 21:46 UTC (permalink / raw)
  To: Btrfs BTRFS

Hello,

I intend to move this subvolume to a new device.
btrfs fi show /mnt2/Data_Store/
Label: 'Data_Store'  uuid: 0ccc1e24-090d-42e2-9e61-d0a1b3101f93
         Total devices 1 FS bytes used 47.93GiB
         devid    1 size 102.94GiB used 76.03GiB path /dev/sdb4

(fi usage at the bottom of this message)

The new device (sda4) is 8G smaller unfortunately.
sda       8:0    0 111.8G  0 disk
└─sda4    8:4    0 103.5G  0 part
sdb       8:16   0 119.2G  0 disk
└─sdb4    8:20   0   111G  0 part  /mnt2/Data_Store

Thus, btrfs replace does not work

What would you suggest now to move the FS (it does contain many subvolumes)?

I tried btrfs send /mnt2/Data_Store/read_only_snapshot/ | btrfs receive 
/mnt/sda4/
but this only created an empty subvolume /mnt/sda4/read_only_snapshot/

So, then
btrfs device add /dev/sda4 /mnt/Data_Store
btrfs balance start /mnt/Data_Store
btrfs device remove /dev/sdb4 /mnt/Data_Store
?

Or is there a better option?

Regards,
Hendrik


  btrfs fi usage  /mnt2/Data_Store/
Overall:
     Device size:                 102.94GiB
     Device allocated:             74.03GiB
     Device unallocated:           28.91GiB
     Device missing:                  0.00B
     Used:                         47.96GiB
     Free (estimated):             53.24GiB      (min: 53.24GiB)
     Data ratio:                       1.00
     Metadata ratio:                   1.00
     Global reserve:              512.00MiB      (used: 0.00B)

Data,single: Size:69.00GiB, Used:44.67GiB
    /dev/sdb4      69.00GiB

Metadata,single: Size:5.00GiB, Used:3.29GiB
    /dev/sdb4       5.00GiB

System,single: Size:32.00MiB, Used:16.00KiB
    /dev/sdb4      32.00MiB

Unallocated:
    /dev/sdb4      28.91GiB


---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: How to move a btrfs volume to a smaller disk
  2016-03-09 21:46 How to move a btrfs volume to a smaller disk Hendrik Friedel
@ 2016-03-09 21:50 ` Hugo Mills
  2016-03-09 22:03   ` Hendrik Friedel
  2016-03-11  3:29 ` Satoru Takeuchi
  1 sibling, 1 reply; 4+ messages in thread
From: Hugo Mills @ 2016-03-09 21:50 UTC (permalink / raw)
  To: Hendrik Friedel; +Cc: Btrfs BTRFS

[-- Attachment #1: Type: text/plain, Size: 2499 bytes --]

On Wed, Mar 09, 2016 at 10:46:09PM +0100, Hendrik Friedel wrote:
> Hello,
> 
> I intend to move this subvolume to a new device.
> btrfs fi show /mnt2/Data_Store/
> Label: 'Data_Store'  uuid: 0ccc1e24-090d-42e2-9e61-d0a1b3101f93
>         Total devices 1 FS bytes used 47.93GiB
>         devid    1 size 102.94GiB used 76.03GiB path /dev/sdb4
> 
> (fi usage at the bottom of this message)
> 
> The new device (sda4) is 8G smaller unfortunately.
> sda       8:0    0 111.8G  0 disk
> └─sda4    8:4    0 103.5G  0 part
> sdb       8:16   0 119.2G  0 disk
> └─sdb4    8:20   0   111G  0 part  /mnt2/Data_Store
> 
> Thus, btrfs replace does not work
> 
> What would you suggest now to move the FS (it does contain many subvolumes)?

   btrfs dev resize to shrink it to (slightly smaller than) the
replacement device, then btrfs replace should work. Then btrfs dev
resize max to fill up the replacement device completely.

   Hugo.

> I tried btrfs send /mnt2/Data_Store/read_only_snapshot/ | btrfs
> receive /mnt/sda4/
> but this only created an empty subvolume /mnt/sda4/read_only_snapshot/
> 
> So, then
> btrfs device add /dev/sda4 /mnt/Data_Store
> btrfs balance start /mnt/Data_Store
> btrfs device remove /dev/sdb4 /mnt/Data_Store
> ?
> 
> Or is there a better option?
> 
> Regards,
> Hendrik
> 
> 
>  btrfs fi usage  /mnt2/Data_Store/
> Overall:
>     Device size:                 102.94GiB
>     Device allocated:             74.03GiB
>     Device unallocated:           28.91GiB
>     Device missing:                  0.00B
>     Used:                         47.96GiB
>     Free (estimated):             53.24GiB      (min: 53.24GiB)
>     Data ratio:                       1.00
>     Metadata ratio:                   1.00
>     Global reserve:              512.00MiB      (used: 0.00B)
> 
> Data,single: Size:69.00GiB, Used:44.67GiB
>    /dev/sdb4      69.00GiB
> 
> Metadata,single: Size:5.00GiB, Used:3.29GiB
>    /dev/sdb4       5.00GiB
> 
> System,single: Size:32.00MiB, Used:16.00KiB
>    /dev/sdb4      32.00MiB
> 
> Unallocated:
>    /dev/sdb4      28.91GiB
> 
> 
> ---
> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
> https://www.avast.com/antivirus
> 

-- 
Hugo Mills             | Well, sir, the floor is yours. But remember, the
hugo@... carfax.org.uk | roof is ours!
http://carfax.org.uk/  |
PGP: E2AB1DE4          |                                             The Goons

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: How to move a btrfs volume to a smaller disk
  2016-03-09 21:50 ` Hugo Mills
@ 2016-03-09 22:03   ` Hendrik Friedel
  0 siblings, 0 replies; 4+ messages in thread
From: Hendrik Friedel @ 2016-03-09 22:03 UTC (permalink / raw)
  To: Hugo Mills, Btrfs BTRFS

Hello Hugo,

thanks for your ultrafast reply.
Unfortunately, it does not work for me:
[root@homeserver mnt2]# btrfs filesystem resize 80G /mnt2/Data_Store/ && 
btrfs replace start /dev/sdb4 /dev/sda4 /mnt2/Data_Store/ -f && btrfs 
filesystem resize max /mnt2/Data_Store/
Resize '/mnt2/Data_Store/' of '80G'
ERROR: target device smaller than source device (required 119121379328 
bytes)
[root@homeserver mnt2]# btrfs filesystem show /mnt2/Data_Store/
Label: 'Data_Store'  uuid: 0ccc1e24-090d-42e2-9e61-d0a1b3101f93
         Total devices 1 FS bytes used 47.95GiB
         devid    1 size 80.00GiB used 66.03GiB path /dev/sdb4

[root@homeserver mnt2]# lsblk | grep sda4
└─sda4    8:4    0 103.5G  0 part


Greetings,
Hendrik

On 09.03.2016 22:50, Hugo Mills wrote:
> On Wed, Mar 09, 2016 at 10:46:09PM +0100, Hendrik Friedel wrote:
>> Hello,
>>
>> I intend to move this subvolume to a new device.
>> btrfs fi show /mnt2/Data_Store/
>> Label: 'Data_Store'  uuid: 0ccc1e24-090d-42e2-9e61-d0a1b3101f93
>>          Total devices 1 FS bytes used 47.93GiB
>>          devid    1 size 102.94GiB used 76.03GiB path /dev/sdb4
>>
>> (fi usage at the bottom of this message)
>>
>> The new device (sda4) is 8G smaller unfortunately.
>> sda       8:0    0 111.8G  0 disk
>> └─sda4    8:4    0 103.5G  0 part
>> sdb       8:16   0 119.2G  0 disk
>> └─sdb4    8:20   0   111G  0 part  /mnt2/Data_Store
>>
>> Thus, btrfs replace does not work
>>
>> What would you suggest now to move the FS (it does contain many subvolumes)?
>     btrfs dev resize to shrink it to (slightly smaller than) the
> replacement device, then btrfs replace should work. Then btrfs dev
> resize max to fill up the replacement device completely.
>
>     Hugo.
>
>> I tried btrfs send /mnt2/Data_Store/read_only_snapshot/ | btrfs
>> receive /mnt/sda4/
>> but this only created an empty subvolume /mnt/sda4/read_only_snapshot/
>>
>> So, then
>> btrfs device add /dev/sda4 /mnt/Data_Store
>> btrfs balance start /mnt/Data_Store
>> btrfs device remove /dev/sdb4 /mnt/Data_Store
>> ?
>>
>> Or is there a better option?
>>
>> Regards,
>> Hendrik
>>
>>
>>   btrfs fi usage  /mnt2/Data_Store/
>> Overall:
>>      Device size:                 102.94GiB
>>      Device allocated:             74.03GiB
>>      Device unallocated:           28.91GiB
>>      Device missing:                  0.00B
>>      Used:                         47.96GiB
>>      Free (estimated):             53.24GiB      (min: 53.24GiB)
>>      Data ratio:                       1.00
>>      Metadata ratio:                   1.00
>>      Global reserve:              512.00MiB      (used: 0.00B)
>>
>> Data,single: Size:69.00GiB, Used:44.67GiB
>>     /dev/sdb4      69.00GiB
>>
>> Metadata,single: Size:5.00GiB, Used:3.29GiB
>>     /dev/sdb4       5.00GiB
>>
>> System,single: Size:32.00MiB, Used:16.00KiB
>>     /dev/sdb4      32.00MiB
>>
>> Unallocated:
>>     /dev/sdb4      28.91GiB
>>
>>
>> ---
>> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
>> https://www.avast.com/antivirus
>>


---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: How to move a btrfs volume to a smaller disk
  2016-03-09 21:46 How to move a btrfs volume to a smaller disk Hendrik Friedel
  2016-03-09 21:50 ` Hugo Mills
@ 2016-03-11  3:29 ` Satoru Takeuchi
  1 sibling, 0 replies; 4+ messages in thread
From: Satoru Takeuchi @ 2016-03-11  3:29 UTC (permalink / raw)
  To: Hendrik Friedel, Btrfs BTRFS

On 2016/03/10 6:46, Hendrik Friedel wrote:
> Hello,
>
> I intend to move this subvolume to a new device.
> btrfs fi show /mnt2/Data_Store/
> Label: 'Data_Store'  uuid: 0ccc1e24-090d-42e2-9e61-d0a1b3101f93
>          Total devices 1 FS bytes used 47.93GiB
>          devid    1 size 102.94GiB used 76.03GiB path /dev/sdb4
>
> (fi usage at the bottom of this message)
>
> The new device (sda4) is 8G smaller unfortunately.
> sda       8:0    0 111.8G  0 disk
> └─sda4    8:4    0 103.5G  0 part
> sdb       8:16   0 119.2G  0 disk
> └─sdb4    8:20   0   111G  0 part  /mnt2/Data_Store
>
> Thus, btrfs replace does not work
>
> What would you suggest now to move the FS (it does contain many subvolumes)?
>
> I tried btrfs send /mnt2/Data_Store/read_only_snapshot/ | btrfs receive /mnt/sda4/
> but this only created an empty subvolume /mnt/sda4/read_only_snapshot/

I suspect that you captured snapshot as

   ==========================
   btrfs sub snap -r /mnt2/Data_Store /mnt2/Data_Store/read_only_snapshot
   ==========================

and /mnt2/Data_Store only contains subvolumes
instead of having files/directries directly.
Then send/receive work as you said. Probably if you run
"ls -li /mnt2/Data_Store", all files have
inode 256 (it means subvolume). In addition,
all the directories under
/mnt2/Data_Store/read_only_snapshot are empty.

It's because "sub snap" only handles one subvolume
and doesn't handle subvolumes inside it. So, if you'd
like to copy all the data by send/receive, you should
capture and send/receive snapshot for each subvolume.

>
> So, then
> btrfs device add /dev/sda4 /mnt/Data_Store
> btrfs balance start /mnt/Data_Store
> btrfs device remove /dev/sdb4 /mnt/Data_Store
> ?

balance is not necessary. When you run
device remove /dev/sdb4, then all the contents of
/dev/sdb4 migrate to /dev/sda4 properly.

Thanks,
Satoru

>
> Or is there a better option?
>
> Regards,
> Hendrik
>
>
>   btrfs fi usage  /mnt2/Data_Store/
> Overall:
>      Device size:                 102.94GiB
>      Device allocated:             74.03GiB
>      Device unallocated:           28.91GiB
>      Device missing:                  0.00B
>      Used:                         47.96GiB
>      Free (estimated):             53.24GiB      (min: 53.24GiB)
>      Data ratio:                       1.00
>      Metadata ratio:                   1.00
>      Global reserve:              512.00MiB      (used: 0.00B)
>
> Data,single: Size:69.00GiB, Used:44.67GiB
>     /dev/sdb4      69.00GiB
>
> Metadata,single: Size:5.00GiB, Used:3.29GiB
>     /dev/sdb4       5.00GiB
>
> System,single: Size:32.00MiB, Used:16.00KiB
>     /dev/sdb4      32.00MiB
>
> Unallocated:
>     /dev/sdb4      28.91GiB
>
>
> ---
> Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
> https://www.avast.com/antivirus
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-03-11  3:29 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-09 21:46 How to move a btrfs volume to a smaller disk Hendrik Friedel
2016-03-09 21:50 ` Hugo Mills
2016-03-09 22:03   ` Hendrik Friedel
2016-03-11  3:29 ` Satoru Takeuchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).