Я заменяю неисправный жесткий диск в зеркальном btrfs.
btrfs device delete missing /[mountpoint]
Это занимает очень много времени, поэтому я предполагаю, что на самом деле происходит перебалансировка данных на сменном диске.
Есть ли способ следить за ходом такой операции?
Я не обязательно ожидаю красивый графический интерфейс или даже счетчик%; и я готов написать пару строк сценария оболочки, если это необходимо, но я даже не знаю, с чего начать поиск соответствующих данных. btrfs filesystem show
например, просто зависает, по-видимому, ожидая завершения операции балансировки, прежде чем она отобразит какую-либо информацию о зеркальных фс.
Balance on '/volume1' is running
28 out of about 171 chunks balanced (1156 considered), 84% left
. Необычно, процент отсчитывается.это выведет что-то вроде этого:
И если вы заметите, что идентификатор устройства № 4 выглядит немного иначе, чем остальные. когда вы выполняете «btrfs устройство удалить отсутствующее / mntpoint», тогда оно начнет восстанавливать метаданные / данные raid, необходимые для освобождения этого «отсутствующего» диска.
если вы делаете что-то вроде
затем вы можете видеть, что пространство на «недостающем» устройстве, которое нарушает работу, постепенно становится все меньше и меньше, пока операция не будет завершена, и она будет удалена из файла.
источник
BTRFS может занять некоторое время для чтения или перестановки данных перед записью данных на диск, на который вы ожидаете их записать.
Вы можете увидеть, сколько процессорного времени отводится операциям BTRFS, включая перебалансировку, добавление, удаление, преобразование и т. Д .:
Чтобы увидеть, насколько занят каждый диск, установите sysstat и запустите:
Добавьте некоторые параметры, чтобы iostat отображал статистику в мегабайтах и обновлялся каждые 30 секунд:
Пример вывода из скраба, поэтому нет записи в течение этого интервала:
Установите и запустите munin, чтобы увидеть исторические графики активности дисков и много другой информации. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04
источник
Мне также было интересно, когда закончится длительное удаление, поэтому я придумал этот небольшой кусочек шелл-кода:
Это даст вам хороший индикатор, например:
Общая идея заключается в использовании
pv
для отображения прогресса. Поскольку эта команда позволяет отслеживать только байты, проходящие через канал, который мы используем,dd
чтобы сгенерировать соответствующее количество нулей и направить их в каналpv
.Преимущество этого метода в том, что вы получаете хороший индикатор выполнения. Однако, поскольку кажется, что
btrfs
данные всегда удаляются по одному ГБ за раз, требуется некоторое время, пока не появится новая разница в размерах байтов.Чтобы решить эту проблему, флаг
-a
добавляется к флагам по умолчанию,pv
чтобы он отображал среднюю скорость передачи (поскольку нормальная текущая скорость передачи в большинстве случаев будет равна 0).Я понимаю, что это не лучшее решение, но лучшее, что я мог придумать. Если у кого-то есть идеи по улучшению, пожалуйста, дайте мне знать! :)
источник