Это - довольно стандартная причина изменить оболочку. Обычно /bin/false
или другие оболочки как /bin/cat
используются.
Обычно Вы не можете сбежать /bin/cat
и это маловероятно это cat
имеет ошибку безопасности, но другие методы могут все еще работать, как создание DoS или обход правил Брандмауэра.
Другой, вероятно, более серьезная проблема состоит в том, если Вы используете internal-sftp
модуль для sftp
. Это позволило бы пользователям с /bin/cat
как окружают для использования sftp
получить доступ к Вашей файловой системе и просмотреть ее содержание.
Для Вашего определенного примера использования я рекомендовал бы использовать туннели или vpns вместо того, чтобы предоставить ssh доступ Вашим клиентам.
btrfs balance status /mountpoint
man 8 btrfs
[filesystem] balance status [-v] <path>
Show status of running or paused balance.
Options
-v be verbose
sudo btrfs fi show
это будет примерно так:
Label: none uuid: 2c97e7cd-06d4-4df0-b1bc-651397edf74c
Total devices 16 FS bytes used 5.36TiB
devid 1 size 931.51GiB used 770.48GiB path /dev/sdc
devid 2 size 931.51GiB used 770.48GiB path /dev/sdg
devid 3 size 931.51GiB used 770.48GiB path /dev/sdj
devid 4 size 0.00 used 10.02GiB path
devid 5 size 931.51GiB used 770.48GiB path /dev/sdh
devid 6 size 931.51GiB used 770.48GiB path /dev/sdi
devid 7 size 931.51GiB used 770.48GiB path /dev/sdd
devid 8 size 931.51GiB used 770.48GiB path /dev/sdo
devid 9 size 465.76GiB used 384.31GiB path /dev/sdn
devid 10 size 931.51GiB used 770.48GiB path /dev/sdp
devid 11 size 931.51GiB used 770.48GiB path /dev/sdr
devid 12 size 931.51GiB used 770.48GiB path /dev/sdm
devid 13 size 931.51GiB used 769.48GiB path /dev/sdq
devid 14 size 931.51GiB used 770.48GiB path /dev/sdl
devid 15 size 931.51GiB used 770.48GiB path /dev/sde
devid 16 size 3.64TiB used 587.16GiB path /dev/sdf
Btrfs v3.12
И если вы заметили, что идентификатор устройства №4 выглядит немного иначе, чем остальные. когда вы выполняете команду «btrfs device delete missing / mntpoint», он начнет восстанавливать мета / данные рейда, необходимые для освобождения этого «отсутствующего» диска.
если вы сделаете что-то вроде
"watch -n 10 sudo btrfs fi show"
, то вы увидите, что пространство на "пропавшем" устройстве, которое нарушает, постепенно становится все меньше и меньше, пока операция не завершится и оно не будет удалено из fi.
Перед записью BTRFS может потребоваться некоторое время на чтение или изменение порядка данных. на диск, на который вы ожидаете писать.
Вы можете увидеть, сколько процессорного времени посвящено операциям BTRFS, включая ребалансировку, добавление, удаление, преобразование и т. Д .:
ps -ef | grep btrfs
Чтобы узнать, насколько занят каждый диск, установите sysstat и запустите:
iostat
Добавьте некоторые параметры чтобы iostat показывал статистику в мегабайтах и обновлялся каждые 30 секунд:
iostat -m -d 30
Пример вывода из scrub, чтобы в течение этого интервала записи не выполнялись:
Device: tps MB_read/s MB_wrtn/s MB_read MB_wrtn
sda 700.30 170.10 0.00 6804 0
sdb 0.78 0.00 0.01 0 0
sdc 520.20 127.98 0.00 5119 0
sdd 405.72 92.02 0.00 3680 0
sde 630.05 153.66 0.00 6146 0
sdf 627.43 153.60 0.00 6144 0
Установите и запустите munin, чтобы просмотреть исторические графики активности диска и много другой информации. https://www.digitalocean.com/community/tutorials/how-to-install-the-munin-monitoring-tool-on-ubuntu-14-04
Мне также было интересно, когда завершится долговременное удаление, поэтому я придумал этот небольшой фрагмент шелл-кода:
get_bytes() {
btrfs device usage --raw /mnt/data | egrep -- '-[0-9]+' | sed -E 's/[^0-9]+([0-9]+)/\1/'
}
prev=$(get_bytes)
while [ 1 ]; do
current=$(get_bytes)
diff=$((current-prev))
if [ "$diff" -gt 0 ]; then
dd if=/dev/zero iflag=count_bytes count="$diff" 2>/dev/null
fi
prev="$current"
sleep 1
done | pv -petraW -s $(get_bytes) >/dev/null
Это даст вам хороший индикатор выполнения, подобный этому:
0:13:54 [0,00 B/s] [16,0MiB/s] [> ] 1% ETA 19:23:19
Общая идея состоит в том, чтобы использовать pv
для отображения прогресса. Поскольку эта команда позволяет отслеживать только байты, проходящие через конвейер, мы используем dd
для генерации соответствующего количества нулей и передачи их в pv
.
Преимущество этого метода в том, что вы получаете хороший индикатор выполнения. Однако, поскольку кажется, что btrfs
всегда удаляет данные по одному ГБ за раз, требуется некоторое время, прежде чем можно будет наблюдать новую разницу в размерах байтов.
Для решения этой проблемы к флагам по умолчанию pv
добавляется флаг -a
, чтобы он отображал среднюю скорость передачи (, поскольку нормальная текущая скорость передачи большую часть времени будет равна 0 ).
Я понимаю, что это не лучшее решение, но лучшее, что я смог придумать. Если у кого-то есть идеи по улучшению, дайте знать!:)
Balance on '/volume1' is running
28 out of about 171 chunks balanced (1156 considered), 84% left
. Необычно, процент считает в обратном порядке. – mwfearnley 30.04.2018, 12:41