$ 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,46GB/40GB точен. Но моя Ubuntu перестала работать, потому что она говорит, что не имеет никакого дискового пространства. У меня были способные ошибки, программам установки наклона и моему mysql серверу не удалось запуститься из-за этого.
И я знаю о не полагаться df
Я просто включал его для полноты.
Я думаю использование 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
Btrfs отличается от традиционных файловых систем. Это не просто слой, который переводит имена файлов в смещения на блочном устройстве, это - больше слоя, который комбинирует традиционную файловую систему с LVM и RAID. И как LVM, это имеет понятие выделения места на базовом устройстве, но не на самом деле использования его для файлов.
Традиционная файловая система разделена на файлы и свободное пространство. Легко вычислить, сколько пространства используется или свободно:
|--------files--------| |
|------------------------drive partition-------------------------------|
Btrfs комбинирует LVM, RAID и файловую систему. Диск разделен на подобъемы, каждый динамично измеренный и дублируемый:
|--files--| |--files--| |files| | |
|----@raid1----|------@raid1-------|-----@home-----|metadata| |
|------------------------drive partition-------------------------------|
Схема показывает раздел, разделенный на два подобъема и метаданные. Один из подобъемов дублирован (RAID1), таким образом, существует две копии каждого файла на устройстве. Теперь у нас не только есть понятие того, сколько пространства свободно на слое файловой системы, но также и сколько пространства свободно на слое блока (раздел диска) ниже его. Пространство также поднято метаданными.
При рассмотрении свободного пространства в Btrfs мы должны разъясниться, какое свободное пространство мы говорим о - слой блока или слой файла? На слое блока данные выделяются в блоках на 1 ГБ, таким образом, значения довольно крупны, и не могли бы перенести отношение на сумму пространства, которое может на самом деле использовать пользователь. На слое файла невозможно сообщить о количестве свободного пространства, потому что сумма пространства зависит от того, как это используется. В вышеупомянутом примере файл, хранивший на дублируемом подобъеме @raid1, займет вдвое больше места как тот же файл, хранивший на @home подобъеме. Снимки только хранят копии файлов, которые были впоследствии изменены. Больше нет отображения 1-1 между файлом, поскольку пользователь видит его, и файл, как сохранено на диске.
Можно проверить свободное пространство на слое блока с btrfs filesystem show /
и свободное пространство на слое подобъема с btrfs filesystem df /
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/sda4_crypt 38G 12G 13M 100% /
Для этого смонтированного подобъема df сообщает о диске общего размера 38G, с 12G используемый, и 13M свободный. 100% свободного места использовались. Помните, что общий размер 38G разделен между различными подобъемами и метаданными - это не эксклюзивно к этому подобъему.
# btrfs filesystem 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
Каждая строка показывает общее пространство и использованное пространство для различного типа данных и типа репликации. Показанные значения являются данными сохраненные а не необработанные байты на диске, поэтому при использовании RAID-1 или RAID 10 подобъемов сумма необработанного используемого устройства хранения данных удваивает значения, которые Вы видите здесь.
Первый столбец показывает тип сохраненного объекта (Данные, Система, Метаданные). Второй столбец показывает, хранится ли единственная копия каждого объекта (единственная), или хранятся ли две копии каждого объекта (DUP). Две копии используются для уязвимых данных, таким образом, существует резервное копирование, если одна копия повреждается. Для строк DUP используемое значение должно быть удвоено для получения суммы пространства, использованного на фактическом диске (потому что btrfs фс df сообщает о хранивших данных, не используемое дисковое пространство). Третьи и четвертые столбцы показывают общее и использованное пространство. Нет никакого бесплатного столбца, так как количество "свободного пространства" зависит от того, как оно используется.
Вещь, которая выделяется об этом диске, состоит в том, что Вам выделили 9.47 ГиБ пространства для обычных файлов, из которых Вы использовали 9.46 ГиБ - это - то, почему Вы не получаете пространства, оставленного на ошибках устройства. Вам выделили 13.88 ГиБ пространства для дублированных метаданных, которых Вы использовали 1.13 ГиБ. Так как этими метаданными является дублированный DUP, это означает, что 27.76 ГиБ пространства были выделены на фактическом диске, которого Вы использовали 2.26 ГиБ. Следовательно 25.5 ГиБ диска не используются, но в то же время не доступны для файлов, которые будут сохранены в. Это - "Btrfs, огромные метаданные выделили" проблему. Чтобы попытаться исправить это, работать btrfs balance start -m /
.-m параметр говорит btrfs только восстанавливать равновесие метаданных.
Подобная проблема исчерпывает пространство метаданных. Если вывод показал, что метаданные были на самом деле полны (используемое значение близко к общему количеству), то решение будет состоять в том, чтобы попытаться бесплатное почти пустой (<используемых 5%) блоки данных с помощью команды btrfs balance start -dusage=5 /
. Эти свободные блоки могли затем быть снова использованы для хранения метаданных.
Для получения дополнительной информации посмотрите часто задаваемые вопросы Btrfs:
Кредит переходит к @ignis и @bain. Только, чтобы иметь простое прямо к ссылке точки отвечают здесь без всей лекции и совместно использовать то, что я на самом деле сделал для получения системы, работающей снова.
btrfs balance start -m /mountpoint
Волшебная строка должна решить проблемы как это.
Я столкнулся с некоторой проблемой, с которой я не хочу к скуке Вас, и я не знаю, что было необходимо выполнить это от живого CD, но что я сделал в конце после того, как система была испорчена, не загрузившись, работал, btrfsck на устройствах (разблокировал crypto картопостроители), и она сделала на самом деле найденные ошибки, затем смонтировала корень btrfs файловая система без любых опций к /mnt
, в противоположность в моей установленной системе, где /
единственное смонтированный @
подобъем. Таким образом, у меня были все снимки и другие подобъемы также там. Я не знаю об этом, имеет значение.
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% /
Таким образом, я думаю, что все прекрасно теперь.
Короткий ответ: метаданные раздела Btrfs показывают, как 'используется' утилитами Стандартного диска как df.
проверяют проблемный объем. например: /
btrfs subvolume list /
Наиболее вероятные снимки заполняют объем. Удалите снимок, в котором Вы не нуждаетесь. помешайте один последняя дата, Вы уверены, что система работала хорошо.
btrfs subvolume delete <path>
, Где путь из предыдущего списка подобъема команды, в котором говорится "снимок".
Перезагрузка и Вы сделаны
, Причиной проблемы мог бы быть Ваш дистрибутив или диспетчер пакетов, делающий snaphots каждый раз, когда Вы обновляете систему.
нбар: сбалансируйте сбои команды, если диск полон, поскольку нет никакого свободного пространства к blance к.
В моем случае не понизилось бы использование диска, даже когда я удалил файлы и снимки.
баланс btrfs (данные и метаданные) не работал с ошибкой "никакое пространство, оставленное на устройстве"
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://unix.stackexchange.com/questions/239765/how-to-fix-btrfs-superblock-error-after-resize-shrink-btrfs-couldnt-get-super
btrfs filesystem resize 1:430g /
btrfs filesystem resize 2:430g /
(команды занимают время, проверяют системный журнал для наблюдения блоков перемещения),
после этого измените размер:
btrfs filesystem resize 1:450g /
btrfs filesystem resize 2:450g /
После этого, btrfs баланс (метаданные) работал снова:
btrfs balance -m /
Затем баланс btrfs данных (перемещают блоки данных, которые имеют ниже, чем 33%-е использование):
btrfs balance -dusage=33 /