linux-btrfs.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* migrating drives (device delete)
@ 2010-11-10 11:04 Oliver Večernik
  2010-11-10 11:31 ` Helmut Hullen
       [not found] ` <20101110123403.GA11460@vlad.carfax.org.uk>
  0 siblings, 2 replies; 4+ messages in thread
From: Oliver Večernik @ 2010-11-10 11:04 UTC (permalink / raw)
  To: linux-btrfs

Hi,

running on Ubuntu server 10.10 (2.6.35-22-server) I've got a 160GB disk
for / (/boot is on another partition with ext2).  I added another 750GB
drive with the following command:

# btrfs device add /dev/sdb2 /
# btrfs device balance /

As far as I can see it is a RAID 0 and now full:

# sudo btrfs filesystem show 
Label: none  uuid: cd4fd4c1-0632-4cbe-bf3b-ba7a9acda1e0
        Total devices 2 FS bytes used 291.62GB
        devid    2 size 696.77GB used 146.63GB path /dev/sdb2
        devid    1 size 147.19GB used 146.64GB path /dev/sda2

Now I want to remove the smaller drive:

# mount -t btrfs -o remount,degraded /dev/sda2 /
# mount | grep /dev/sda2
/dev/sda2 on / type btrfs (rw,degraded)
# btrfs device delete /dev/sda2 /
ERROR: error removing the device '/dev/sda2'

Do I have to move the data first to /dev/sdb2 (how?) and then
delete /dev/sda2? Is there a better way to handle a situation like this?

Thanks!

-- 
Regards,
Oliver




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

* Re: migrating drives (device delete)
  2010-11-10 11:04 migrating drives (device delete) Oliver Večernik
@ 2010-11-10 11:31 ` Helmut Hullen
  2010-11-10 12:15   ` Oliver Večernik
       [not found] ` <20101110123403.GA11460@vlad.carfax.org.uk>
  1 sibling, 1 reply; 4+ messages in thread
From: Helmut Hullen @ 2010-11-10 11:31 UTC (permalink / raw)
  To: linux-btrfs

Hallo, Oliver,

Du meintest am 10.11.10:

> # sudo btrfs filesystem show
> Label: none  uuid: cd4fd4c1-0632-4cbe-bf3b-ba7a9acda1e0
>         Total devices 2 FS bytes used 291.62GB
>         devid    2 size 696.77GB used 146.63GB path /dev/sdb2
>         devid    1 size 147.19GB used 146.64GB path /dev/sda2

What tells "df": about 300 GByte in use?

> Now I want to remove the smaller drive:

> # mount -t btrfs -o remount,degraded /dev/sda2 /
> # mount | grep /dev/sda2
> /dev/sda2 on / type btrfs (rw,degraded)
> # btrfs device delete /dev/sda2 /
> ERROR: error removing the device '/dev/sda2'

I've tried (with the above device names)

        btrfs device delete /dev/sda2 /
        btrfs filesystem balance /

Ok - I don't try these commands under "/" ...
And I haven't told the system to make a "raid0". I've created the first  
btrfs partition only with

        mkfs.btrfs /dev/sdxn

And I haven't used "degraded" after balancing the 2 partitions.

The "balance" command may take a long time; I've just seen about 2 days  
for 1.5 TByte.

As long as "balance" works it throws messages into "/var/log/messages"  
and can be watched with "top".

When "balance" has finished:

        btrfs filesystem show 2>/dev/null

shouldn't show the "deleted" partition.

Viele Gruesse!
Helmut

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

* Re: migrating drives (device delete)
  2010-11-10 11:31 ` Helmut Hullen
@ 2010-11-10 12:15   ` Oliver Večernik
  0 siblings, 0 replies; 4+ messages in thread
From: Oliver Večernik @ 2010-11-10 12:15 UTC (permalink / raw)
  To: helmut; +Cc: linux-btrfs

Hallo Helmut,

> What tells "df": about 300 GByte in use?

# df -h | head -n 2 
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             844G  293G  552G  35% /
# btrfs filesystem df /
Metadata: total=896.00MB, used=484.77MB
Data: total=291.50GB, used=291.15GB
System: total=12.00MB, used=28.00KB

> And I haven't told the system to make a "raid0". I've created the first  
> btrfs partition only with
> 
>         mkfs.btrfs /dev/sdxn

I also just started with:

# mkfs.btrfs /dev/sda2

> And I haven't used "degraded" after balancing the 2 partitions.

# mount -o remount /dev/sdb2 /
# df -h 
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             844G  293G  552G  35% /
none                  429M  200K  429M   1% /dev
none                  435M     0  435M   0% /dev/shm
none                  435M   48K  435M   1% /var/run
none                  435M     0  435M   0% /var/lock
/dev/sdc1             2.0G   26M  1.9G   2% /boot
# btrfs device delete /dev/sda2 /
ERROR: error removing the device '/dev/sda2'

> The "balance" command may take a long time; I've just seen about 2 days  
> for 1.5 TByte.

I balanced immediately after installing the server.  It was less than
1GB and took just a couple of seconds.

The only idea I have now is to copy everthing to a new fs, chroot into
it and update-grub.  Is this the best way to go?

-- 
Regards,
Oliver


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

* Re: migrating drives (device delete)
       [not found] ` <20101110123403.GA11460@vlad.carfax.org.uk>
@ 2010-11-10 14:40   ` Oliver Večernik
  0 siblings, 0 replies; 4+ messages in thread
From: Oliver Večernik @ 2010-11-10 14:40 UTC (permalink / raw)
  To: Hugo Mills; +Cc: linux-btrfs

> This isn't necessarily RAID-0. It's just spread the block group
> allocations across both drives. Block groups are 1 GiB in size. if you
> use RAID-0, it will allocate block groups in pairs, on different
> drives, and stripe the data within the pair (on some much smaller
> stripe size). If you use basic allocation as you've got here, it
> allocates the block groups one at a time.

Thanks for clarification!  This explains why df says there should be
552GB free.

> There's no need to mount degraded, as there's no duplication in
> your filesystem to degrade. :)

Ok.

> Try running the dev del operation under strace (on a freshly
> mounted filesystem -- this will probably involve a reboot in your
> case), and report back on what the return value from the ioctl
> was. That _might_ give us some indication of what's wrong. It would
> also be good to know if subsequent attempts to run the dev del
> operation return the same error code.

I rebooted the box, here is my output:

# strace btrfs dev del /dev/sda2 /
execve("/sbin/btrfs", ["btrfs", "dev", "del", "/dev/sda2", "/"], [/* 19
vars */]) = 0
brk(0)                                  = 0x902000
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
directory)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7f0ebb6cf000
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or
directory)
open("/etc/ld.so.cache", O_RDONLY)      = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=12540, ...}) = 0
mmap(NULL, 12540, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f0ebb6cb000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
directory)
open("/lib/libuuid.so.1", O_RDONLY)     = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\320\25\0\0\0\0\0
\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0644, st_size=19008, ...}) = 0
mmap(NULL, 2113920, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f0ebb2ac000
mprotect(0x7f0ebb2b0000, 2093056, PROT_NONE) = 0
mmap(0x7f0ebb4af000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x3000) = 0x7f0ebb4af000
close(3)                                = 0
access("/etc/ld.so.nohwcap", F_OK)      = -1 ENOENT (No such file or
directory)
open("/lib/libc.so.6", O_RDONLY)        = 3
read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\240\356\1\0\0\0
\0\0"..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1572232, ...}) = 0
mmap(NULL, 3680296, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7f0ebaf29000
mprotect(0x7f0ebb0a3000, 2093056, PROT_NONE) = 0
mmap(0x7f0ebb2a2000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_DENYWRITE, 3, 0x179000) = 0x7f0ebb2a2000
mmap(0x7f0ebb2a7000, 18472, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|
MAP_ANONYMOUS, -1, 0) = 0x7f0ebb2a7000
close(3)                                = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7f0ebb6ca000
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
= 0x7f0ebb6c8000
arch_prctl(ARCH_SET_FS, 0x7f0ebb6c8740) = 0
mprotect(0x7f0ebb2a2000, 16384, PROT_READ) = 0
mprotect(0x7f0ebb4af000, 4096, PROT_READ) = 0
mprotect(0x61c000, 4096, PROT_READ)     = 0
mprotect(0x7f0ebb6d1000, 4096, PROT_READ) = 0
munmap(0x7f0ebb6cb000, 12540)           = 0
brk(0)                                  = 0x902000
brk(0x923000)                           = 0x923000
stat("/", {st_mode=S_IFDIR|0755, st_size=244, ...}) = 0
open("/", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
fcntl(3, F_GETFD)                       = 0x1 (flags FD_CLOEXEC)
ioctl(3, 0x5000940b, 0x7fff5385a5f0)    = -1 EINVAL (Invalid argument)
write(2, "ERROR: error removing the device"..., 45ERROR: error removing
the device '/dev/sda2'
) = 45
close(3)                                = 0
exit_group(21)                          = ?

I repeated btrfs dev del a couple of times.  I it *always* gave a return
code of 21 and ioctl = -1 EINVAL respectively.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2             844G  293G  552G  35% /
none                  429M  180K  429M   1% /dev
none                  435M     0  435M   0% /dev/shm
none                  435M   44K  435M   1% /var/run
none                  435M     0  435M   0% /var/lock
none                  844G  293G  552G  35% /var/lib/ureadahead/debugfs
/dev/sdc1             2.0G   26M  1.9G   2% /boot

-- 
Regards,
Oliver



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

end of thread, other threads:[~2010-11-10 14:40 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-11-10 11:04 migrating drives (device delete) Oliver Večernik
2010-11-10 11:31 ` Helmut Hullen
2010-11-10 12:15   ` Oliver Večernik
     [not found] ` <20101110123403.GA11460@vlad.carfax.org.uk>
2010-11-10 14:40   ` Oliver Večernik

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).