Ubuntu считает, что диск Btrfs заполнен, но это не

$ cat /etc/fstab
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
UUID=a168d1ac-4e13-4643-976d-6e47ea1732b1 /boot        ext2  defaults                                                                   0 1
/dev/mapper/sda4_crypt                    /            btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@          0 2
/dev/mapper/sda4_crypt                    /tmp         btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@tmp       0 2
/dev/mapper/sda4_crypt                    /run         btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@run       0 2
/dev/mapper/sda4_crypt                    /var/crash   btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@var-crash 0 2
/dev/mapper/sda4_crypt                    /var/tmp     btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@var-tmp   0 2
/dev/mapper/sda4_crypt                    /var/log     btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@var-log   0 2
/dev/mapper/sda4_crypt                    /var/spool   btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@var-spool 0 2
/dev/mapper/sda5_crypt                    /home        btrfs defaults,autodefrag,compress=lzo,inode_cache,space_cache,subvol=@home      0 3
/dev/mapper/750er                         /media/750er ext4  defaults                                                                   0 4
/dev/mapper/cswap                         none         swap  defaults                                                                   0 5
➜  ~  df -h         
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/sda4_crypt   38G   12G   13M 100% /
none                    4,0K     0  4,0K   0% /sys/fs/cgroup
udev                    2,0G  4,0K  2,0G   1% /dev
tmpfs                   396M  1,3M  394M   1% /run
none                    5,0M     0  5,0M   0% /run/lock
none                    2,0G  208K  2,0G   1% /run/shm
none                    100M   36K  100M   1% /run/user
/dev/mapper/sda4_crypt   38G   12G   13M 100% /tmp
/dev/sda2               231M   44M  175M  21% /boot
/dev/mapper/sda4_crypt   38G   12G   13M 100% /var/crash
/dev/mapper/sda4_crypt   38G   12G   13M 100% /var/tmp
/dev/mapper/sda4_crypt   38G   12G   13M 100% /var/log
/dev/mapper/sda4_crypt   38G   12G   13M 100% /var/spool
/dev/mapper/sda5_crypt  3,7T  2,4T  1,2T  67% /home
/dev/mapper/750er       688G  276G  377G  43% /media/750er
/dev/mapper/2tb         1,8T  1,7T  141G  93% /media/2tb
➜  ~  sudo btrfs fi df /
Data, single: total=9.47GiB, used=9.46GiB
System, DUP: total=8.00MiB, used=16.00KiB
System, single: total=4.00MiB, used=0.00
Metadata, DUP: total=13.88GiB, used=1.13GiB
Metadata, single: total=8.00MiB, used=0.00
➜  ~  

Это раздел размером 40 ГБ с некоторыми снимками. Но он сжат, поэтому я думаю, что 9,46 ГБ / 40 ГБ является точной. Но мой Ubuntu терпит неудачу, потому что он говорит, что у него нет дискового пространства.

И я знаю, что не полагаться на df Я просто включил его для полноты.

d2] Я думаю, Ubuntu использует df, который, как известно, неправильно сообщает Btrfs и по этой причине не работает. Это имеет смысл для APT, когда он проверяет пространство. Но на самом деле он не записывается на диск.

$ sudo time dd if=/dev/zero of=large bs=2G count=1
dd: error writing ‘large’: No space left on device
0+1 records in
0+0 records out
11747328 bytes (12 MB) copied, 1,29706 s, 9,1 MB/s
Command exited with non-zero status 1
0.00user 1.40system 0:01.44elapsed 97%CPU (0avgtext+0avgdata 2098028maxresident)k
160inputs+23104outputs (0major+383008minor)pagefaults 0swaps
1
задан 3 September 2017 в 16:30

3 ответа

Краткий ответ: метаданные раздела Btrfs отображаются как «используемые» стандартными дисковыми утилитами, такими как df.

проверяют объем проблемы. например: /
btrfs subvolume list /
Скорее всего, моментальные снимки заполняют громкость. Удалите снимок, который вам не нужен. держите его с последней даты, когда вы уверены, что система работает нормально.
btrfs subvolume delete <path> 
Где находится путь из предыдущего списка подвыборки команд, в котором говорится «моментальный снимок». Перезагрузка и завершение работы

Причиной проблемы может быть ваш диспетчер дистрибутивов или диспетчер пакетов, делающий моментальные снимки при каждом обновлении системы.

NB: команда баланса не работает, если диск заполнен, поскольку нет свободное пространство для бланка.

3
ответ дан 24 May 2018 в 07:54

В моем случае использование диска не снизилось бы даже при удалении файлов и моментальных снимков.

баланс btrfs (данные и метаданные) не работал с ошибкой «на устройстве нет места» [!d1 ]

btrfs balance start -m /
ERROR: error during balancing '/': No space left on device
There may be more info in syslog - try dmesg | tail

RAID1 показал полное использование на обоих дисках, хотя фактическое использование данных было ниже трети этого.

# btrfs fi sh
Label: none  uuid: 61a20f1a-c133-11e6-964b-d3bac0c48bbd
    Total devices 2 FS bytes used 153.94GiB
    devid    1 size 455.76GiB used 455.76GiB path /dev/sda2
    devid    2 size 455.76GiB used 455.76GiB path /dev/sdb2


# btrfs filesystem df /
Data, RAID1: total=452.73GiB, used=151.51GiB
System, RAID1: total=32.00MiB, used=80.00KiB
Metadata, RAID1: total=3.00GiB, used=2.42GiB
GlobalReserve, single: total=512.00MiB, used=0.00B

«На устройстве нет места» , не требует дополнительного пространства:

btrfs balance start -dusage=0 /

btrfs balance start -musage=0 /

Источник: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-balance#ENOSPC

Альтернатива: Мое решение состояло в том, чтобы сжать диски. Смотрите: https://btrfs.wiki.kernel.org/index.php/Manpage/btrfs-balance#ENOSPC

btrfs filesystem resize 1:430g /
btrfs filesystem resize 2:430g /
[d11 ] (команды принимают время, проверяют syslog, чтобы видеть блоки перемещения)

после этого изменить размер:

btrfs filesystem resize 1:450g /
btrfs filesystem resize 2:450g /

После этого снова восстановился баланс btrfs (метаданные):

btrfs balance -m /

Затем btrfs баланс данных (переместите куски данных, которые имеют менее 33% использования):

btrfs balance -dusage=33 /
2
ответ дан 24 May 2018 в 07:54

Кредит отправляется на @ignis и @bain. Просто, чтобы получить простой прямой ответ на этот вопрос без всякой лекции и поделиться тем, что я на самом деле сделал, чтобы система снова работала.

btrfs balance start -m /mountpoint

Является ли волшебная линия для решения таких проблем. [ ! d1]

Я столкнулся с некоторыми проблемами, которые я не хочу вас утомлять, и я не знаю, что нужно было запускать это с живого компакт-диска, но то, что я сделал в конце после того, как система была испорчена не загружался btrfsck на устройствах (разблокированные криптографические устройства), и он действительно обнаруживал ошибки, а затем монтировал корневую файловую систему btrfs без каких-либо опций /mnt, в отличие от моей установленной системы, где / является единственным установленным @ subvolume. Поэтому у меня были все снимки и другие вспомогательные части. Я не знаю, что это имеет значение.

btrfs balance start -m /mnt

Я получил метаданные от

Metadata, DUP: total=13.88GiB, used=1.13GiB

до

Metadata, DUP: total=1.38GiB, used=1.05GiB

И обновление:

$ sudo df -h /
Filesystem              Size  Used Avail Use% Mounted on
/dev/mapper/sda4_crypt   38G   12G   26G  31% /

Итак, я думаю, теперь все в порядке.

1
ответ дан 24 May 2018 в 07:54

Другие вопросы по тегам:

Похожие вопросы: