Здравствуйте.
Имею систему с корнем на btrfs raid1:
# cat /etc/issue
Ubuntu 16.04 LTS \n \l
# uname -a
Linux ubuntu 4.4.0-28-generic #47-Ubuntu SMP Fri Jun 24 10:09:13 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
# cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda1 during installation
UUID=1ad144de-0b74-48b1-864d-378b4c27c174 / btrfs defaults,subvol=@ 0 1
# /home was on /dev/sda1 during installation
UUID=1ad144de-0b74-48b1-864d-378b4c27c174 /home btrfs defaults,subvol=@home 0 2
# swap was on /dev/sda2 during installation
UUID=0d0c623a-6970-4db2-bc14-981349ba9bfb none swap sw 0 0
# swap was on /dev/sdb5 during installation
UUID=4ee020e0-0cf8-46b0-91e6-b2ebf3762832 none swap sw 0 0
Сымитировал выход из строя одного диска (вытащил из сервера).
# btrfs fi sh /
Label: 'root' uuid: 1ad144de-0b74-48b1-864d-378b4c27c174
Total devices 2 FS bytes used 1.77GiB
devid 2 size 225.79GiB used 6.06GiB path /dev/sda1
*** Some devices missing
Отформатировал снятый диск и вставил назад в сервер:
# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 btrfs root 1ad144de-0b74-48b1-864d-378b4c27c174
├─sda2
└─sda5 swap 4ee020e0-0cf8-46b0-91e6-b2ebf3762832 [SWAP]
sdc
├─sdc1
└─sdc2
В соответствии с рекомендациями пробуем удалить отсутствующий диск из raid1:
# btrfs device delete missing /
ERROR: error removing device 'missing': unable to go below two devices on raid1
Нельзя в raid1 иметь менее 2-ух устройств. С одной стороны логично, но с другой
по факту мы сейчас работаем на одном диске.
Попробуем произвести замену вышедшего из строя диска как советуют в официальной вики (Replacing failed devices):
# btrfs replace start -f 1 /dev/sdc1 /
ERROR: /dev/sdc1 is mounted
А вот это странно, так как диск никуда не смонтирован.
Так как произвести замену диска правильно?
Пользователь добавил сообщение 30 Июня 2016, 11:41:54:
Если посмотреть так:
# btrfs fi sh
Label: 'root' uuid: 1ad144de-0b74-48b1-864d-378b4c27c174
Total devices 2 FS bytes used 1.77GiB
devid 1 size 225.79GiB used 1.00GiB path /dev/sdc1
devid 2 size 225.79GiB used 5.06GiB path /dev/sda1
Диск оказывается уже используется. Непонятно.
Делаем балансировку:
# btrfs fi balance start /
ERROR: error during balancing '/': No space left on device
There may be more info in syslog - try dmesg | tail
В этой ситуации действуем так:
(http://unix.stackexchange.com/questions/174446/btrfs-error-error-during-balancing-no-space-left-on-device)Но мне не помогло. Пока читал форумы и шерстил инет по поводу проблемы,
запускал еще несколько раз и в какой-то момент команда отработала:
# btrfs fi balance start -v /
Dumping filters: flags 0x7, state 0x0, force is off
DATA (flags 0x0): balancing
METADATA (flags 0x0): balancing
SYSTEM (flags 0x0): balancing
Done, had to relocate 6 out of 6 chunks
Непонимаю. Симптомы схожи с этим топиком:
https://bbs.archlinux.org/viewtopic.php?id=200926# btrfs fi balance start -v / -f
Dumping filters: flags 0xf, state 0x0, force is on
DATA (flags 0x0): balancing
METADATA (flags 0x0): balancing
SYSTEM (flags 0x0): balancing
Но если посмотреть использование дисков, то видим что не все в порядке:
# btrfs fi u / -T
Overall:
Device size: 451.58GiB
Device allocated: 5.06GiB
Device unallocated: 446.51GiB
Device missing: 0.00B
Used: 3.54GiB
Free (estimated): 223.56GiB (min: 223.56GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Metadata System
Id Path DUP DUP DUP Unallocated
-- --------- ------- --------- -------- -----------
2 /dev/sda1 4.00GiB 1.00GiB 64.00MiB 220.73GiB
1 /dev/sdc1 - - - 225.78GiB
-- --------- ------- --------- -------- -----------
Total 2.00GiB 512.00MiB 32.00MiB 446.51GiB
Used 1.70GiB 71.52MiB 16.00KiB
Рейда как бы уже и нет.
Делаю ребут сервера. После ребута смотрим:
# mount | grep /dev/sda1
/dev/sda1 on / type btrfs (rw,relatime,degraded,space_cache,subvolid=257,subvol=/@)
/dev/sda1 on /home type btrfs (rw,relatime,degraded,space_cache,subvolid=258,subvol=/@home)
# mount | grep /dev/sdb1
# btrfs balance start -dconvert=raid1 -mconvert=raid1 /
Done, had to relocate 4 out of 4 chunks
# btrfs fi u / -T
Overall:
Device size: 451.58GiB
Device allocated: 8.06GiB
Device unallocated: 443.51GiB
Device missing: 0.00B
Used: 3.54GiB
Free (estimated): 223.06GiB (min: 223.06GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Data Metadata System
Id Path RAID1 DUP RAID1 RAID1 Unallocated
-- --------- ------- ------- -------- -------- -----------
1 /dev/sda1 2.00GiB 2.00GiB 1.00GiB 32.00MiB 220.75GiB
2 /dev/sdb1 2.00GiB - 1.00GiB 32.00MiB 222.76GiB
-- --------- ------- ------- -------- -------- -----------
Total 2.00GiB 1.00GiB 1.00GiB 32.00MiB 443.51GiB
Used 1.70GiB 0.00B 71.33MiB 16.00KiB
Повторяем с -f:
# btrfs balance start -dconvert=raid1 -mconvert=raid1 / -f
Done, had to relocate 5 out of 5 chunks
root@ubuntu-zab01:~# btrfs fi u / -T
Overall:
Device size: 451.58GiB
Device allocated: 6.06GiB
Device unallocated: 445.51GiB
Device missing: 0.00B
Used: 3.54GiB
Free (estimated): 223.06GiB (min: 223.06GiB)
Data ratio: 2.00
Metadata ratio: 2.00
Global reserve: 32.00MiB (used: 0.00B)
Data Metadata System
Id Path RAID1 RAID1 RAID1 Unallocated
-- --------- ------- -------- -------- -----------
1 /dev/sda1 2.00GiB 1.00GiB 32.00MiB 222.75GiB
2 /dev/sdb1 2.00GiB 1.00GiB 32.00MiB 222.76GiB
-- --------- ------- -------- -------- -----------
Total 2.00GiB 1.00GiB 32.00MiB 445.51GiB
Used 1.70GiB 71.20MiB 16.00KiB
Теперь все в порядке.
Выводы делайте сами.
PS: Если есть замечания и пожелания обязательно пишите, и у меня знаний прибавится и другим может поможет.