The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]



"Вопрос по FS UFS"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Файловые системы, диски / FreeBSD)
Изначальное сообщение [ Отслеживать ]

"Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 28-Окт-21, 10:41 
Предположим есть папка /MY и в ней лежит 10Gb мусора. Потом к ней примонтировали раздел "mount /dev/gpt/test /MY"

Мусор скрыт за примонтированной ширмой. Предположим переполнение root раздела.
Причины по которым это произошло не важны. Необходимо решение задачки "Найти и уничтожить"

А теперь вопросы:
1. Как обнаружить вот эти 10G мусора?
2. Как удалить этот мусор.

Все было бы достаточно просто, но при этом нельзя проводить размонтирование /MY и перегружать сервер.

:(
Спасибо за помощь.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Вопрос по FS UFS"  +/
Сообщение от DeerFriend (?), 28-Окт-21, 12:59 
Замонтировать ридонли в другом месте переполненный раздел и искать там.
Ответить | Правка | Наверх | Cообщить модератору

2. "Вопрос по FS UFS"  +/
Сообщение от DeerFriend (?), 28-Окт-21, 13:01 
> Замонтировать ридонли в другом месте переполненный раздел и искать там.

Когда найдёшь, читай в сторону mount bind нужного каталога. Там и удалить сможешь.

Ответить | Правка | Наверх | Cообщить модератору

3. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 28-Окт-21, 13:39 
> Замонтировать ридонли в другом месте переполненный раздел и искать там.

получит filesystem busy

ну как бы, допустим есть "/" - root fs и на ней директория /tmp
/tmp - не пуста. И есть еще размеченная пустая партиция с ufs.
Монтируем ее в /tmp.
Все что в /tmp теперь скрыто.


Ответить | Правка | К родителю #1 | Наверх | Cообщить модератору

4. "Вопрос по FS UFS"  +/
Сообщение от DeerFriend (?), 28-Окт-21, 15:41 
> получит filesystem busy

Когда / уже переполнен, никто не будет возражать на ребут и тд.
А вот чуть-чуть заранее всё отработает как надо.

Ответить | Правка | Наверх | Cообщить модератору

6. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 28-Окт-21, 16:13 
> Когда / уже переполнен, никто не будет возражать на ребут и тд.

Рассматриваем вариант близкий к переполнению. Система еще живая, доступ удаленный и другие радости. Перегружать не вариант.

На данный момент интересует решение задачи на будущее. Задачка на первый взгляд элементарная. Я столкнулся случайно с подобной ситуацией и решил что не знаю чего то элементарного. Но похоже дело не в этом. Неужели решения нет.  

Ответить | Правка | Наверх | Cообщить модератору

7. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 28-Окт-21, 17:05 
>> получит filesystem busy
> Когда / уже переполнен, никто не будет возражать на ребут и тд.
> А вот чуть-чуть заранее всё отработает как надо.

если /tmp, /var, /usr на одной fs == "/", вариантов нет.
если /var, /usr на отдельных fs - можно жить дальше.

Даже если кто-то возражает, вариантов нет.


Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

12. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 29-Окт-21, 10:07 
> если /tmp, /var, /usr на одной fs == "/", вариантов нет.
> если /var, /usr на отдельных fs - можно жить дальше.
> Даже если кто-то возражает, вариантов нет.

Да, все FS отдельно, это железное правило. И система действительно живет.

Но в случае если какой то скрипт рабочей областью опирается на root, то его ждет разочарование. Согласен, писать на root крайне нежелательно.


Всем спасибо.

Ответить | Правка | Наверх | Cообщить модератору

5. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 28-Окт-21, 15:47 
Да, получит "Device busy"

Lavr, спасибо за расшифровку задачки, так наверное понятнее выглядит.

Но решения так и нет. Может его не существует?

Ответить | Правка | К родителю #3 | Наверх | Cообщить модератору

8. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 28-Окт-21, 17:10 
> Да, получит "Device busy"
> Lavr, спасибо за расшифровку задачки, так наверное понятнее выглядит.
> Но решения так и нет. Может его не существует?

я навскидку не могу придумать.

с некоторыми точками монтирования, требуется сперва хорошо подумать.

Как пример: /tmp - внутри FS="/", я бы не стал монтировать в /tmp,
а создал бы /tmp/mnt и туда смонтировал, доступность /tmp сохранена.


Ответить | Правка | Наверх | Cообщить модератору

9. "Вопрос по FS UFS"  +1 +/
Сообщение от lavremail (ok), 28-Окт-21, 17:31 
> Да, получит "Device busy"
> Lavr, спасибо за расшифровку задачки, так наверное понятнее выглядит.
> Но решения так и нет. Может его не существует?

попробовал через mount_nullfs - работает и удалять позволяет.


Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

13. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 29-Окт-21, 10:09 
Проверяю. Неужели получилось.
Ответить | Правка | Наверх | Cообщить модератору

14. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 29-Окт-21, 11:20 
> попробовал через mount_nullfs - работает и удалять позволяет.

А у меня не получается.

При попытке монтирования root раздела в любую папку получаю "are not distinct paths"

Но даже при пробах не root раздела получил фокус!!!

Пусть есть папки /mnt/var и /mnt/mynull. Пусть есть чем то заполненный раздел /dev/gpt/test

Копирую в папку /mnt/var несколько папок и файлов. Полигон готов.

Монтирую nullfs  "mount_nullfs /mnt/var  /mnt/mynull"

Проверяю, да все как и нужно, в папке /mnt/mynull вижу то же что и /mnt/var - несколько папок и файлов.

Монтирую раздел "mount /dev/gpt/test /mnt/var"

Проверяю mynull. Да все как и нужно, в папке /mnt/mynull вижу несколько папок и файлов, как и ранее. А в папке /mnt/var вижу примонтированный раздел.

Пробую удалять создавать в папке mynull - все отлично удаляет и создает.

Похоже получилось но....

Если изменить порядок то ничего не получается:
Монтирую раздел "mount /dev/gpt/test /mnt/var"
Монтирую nullfs  "mount_nullfs /mnt/var  /mnt/mynull"
И теперь в /mnt/mynull вижу уже содержимое примонтированного раздела. То бишь - все в пустую.

Тестирую на FreeBSD 9.1-RELEASE-p1 (да, старенькая)

1. Прошу проверить возможность монтирования именно корневого раздела.
2. Прошу проверить монтирование nullfs уже после монтирования раздела.
Если получится прошу дать листинг команд, может я заблудился в трех соснах.
Спасибо.

Ответить | Правка | К родителю #9 | Наверх | Cообщить модератору

16. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 29-Окт-21, 11:29 
>> попробовал через mount_nullfs - работает и удалять позволяет.
> А у меня не получается.
> Тестирую на FreeBSD 9.1-RELEASE-p1 (да, старенькая)
> 1. Прошу проверить возможность монтирования именно корневого раздела.
> 2. Прошу проверить монтирование nullfs уже после монтирования раздела.
> Если получится прошу дать листинг команд, может я заблудился в трех соснах.

отписал.

Взял за основу все на корне "/", там отдельно монтируется /usr/ports - можно
не обращать внимания.
создал три файла по 500MB - заполнил /tmp
далее выполнил fsck на партицию которую буду монтировать
в /tmp
монтирую mount /dev/ada1p1 /tmp
теперь все что ранее создано в /tmp недоступно
делаем доступным (монтируем корень в /mnt):
# mount_nullfs / /mnt
# ls -la /mnt/tmp - все доступно
# rm -rf /mnt/tmp/*
# umount /mnt
все

Ответить | Правка | Наверх | Cообщить модератору

10. "Вопрос по FS UFS"  +/
Сообщение от анонимус (??), 29-Окт-21, 00:45 
Предложу точно рабочий, но сложный путь. Написать утилиту которая откроет блочное устройство в ro, просканирует все директории, и найдет этот мусор. Может такое уже и написал кто то, надо искать.

Другой вариант - возможно получится сделать dump и отправить его по сети на другуб машинку и там его развернуть, но тут не уверен.

А вот удалить... Можно модуль ядра написать

Ответить | Правка | Наверх | Cообщить модератору

11. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 29-Окт-21, 08:52 
> Предложу точно рабочий, но сложный путь. Написать утилиту которая откроет блочное устройство
> в ro, просканирует все директории, и найдет этот мусор. Может такое
> уже и написал кто то, надо искать.
> Другой вариант - возможно получится сделать dump и отправить его по сети
> на другуб машинку и там его развернуть, но тут не уверен.
> А вот удалить... Можно модуль ядра написать

Да, я как раз через дамп и искал. Создал дамп, развернул на этой же машине во временную папку и нашел мусор. Но для удаления мусора - метод не нашел.

По первому варианту, нужно разбираться, пока даже не понимаю как подступиться, второй хоть и долгий но работает.

А вот с удалением... я пока ничего не нашел. Пока вижу только через размонтирование - засада.

Ответить | Правка | Наверх | Cообщить модератору

15. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 29-Окт-21, 11:23 
root@bsd:~ # mount
/dev/ada0p2 on / (ufs, NFS exported, local, journaled soft-updates)
devfs on /dev (devfs)
/dev/ada0p3 on /usr/ports (ufs, NFS exported, local, journaled soft-updates)
root@bsd:~ # df -h
Filesystem     Size    Used   Avail Capacity  Mounted on
/dev/ada0p2    9.7G    1.6G    7.3G    18%    /
devfs          1.0K    1.0K      0B   100%    /dev
/dev/ada0p3    4.7G    1.0G    3.3G    23%    /usr/ports
root@bsd:~ # du -sh /tmp
20K    /tmp
root@bsd:~ # sh
# for i in $(seq 1 3);
> do
> dd if=/dev/random of=/tmp/file$i bs=1M count=500
> done

500+0 records in
500+0 records out
524288000 bytes transferred in 2.502629 secs (209494913 bytes/sec)
500+0 records in
500+0 records out
524288000 bytes transferred in 2.560358 secs (204771360 bytes/sec)
500+0 records in
500+0 records out
524288000 bytes transferred in 3.240919 secs (161771396 bytes/sec)
# du -sh /tmp
1.5G    /tmp
# ls -la /tmp
total 1536504
drwxrwxrwt   6 root  wheel        512 Oct 29 14:15 .
drwxr-xr-x  19 root  wheel       1024 Oct 29 13:55 ..
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .ICE-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .X11-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .XIM-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .font-unix
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:14 file1
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:15 file2
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:15 file3
# fsck_ffs -y /dev/ada1p1
** /dev/ada1p1
** Last Mounted on /tmp
** Phase 1 - Check Blocks and Sizes
** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts
** Phase 5 - Check Cyl groups
2 files, 2 used, 507803 free (27 frags, 63472 blocks, 0.0% fragmentation)

***** FILE SYSTEM IS CLEAN *****
# mount /dev/ada1p1 /tmp
# ls -la /tmp
total 12
drwxr-xr-x   3 root  wheel      512 Oct 28 20:27 .
drwxr-xr-x  19 root  wheel     1024 Oct 29 13:55 ..
drwxrwxr-x   2 root  operator   512 Oct 28 20:20 .snap
# du -sh /tmp
8.0K    /tmp
# mount_nullfs / /mnt
# du -sh /mnt/tmp
1.5G    /mnt/tmp
# ls -la /mnt/tmp
total 1536504
drwxrwxrwt   6 root  wheel        512 Oct 29 14:15 .
drwxr-xr-x  19 root  wheel       1024 Oct 29 13:55 ..
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .ICE-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .X11-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .XIM-unix
drwxrwxrwt   2 root  wheel        512 Oct 29 13:55 .font-unix
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:14 file1
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:15 file2
-rw-r--r--   1 root  wheel  524288000 Oct 29 14:15 file3
# rm -f /mnt/tmp/f*
# du -sh /mnt/tmp
20K    /mnt/tmp
# umount /mnt

как бы и все

Ответить | Правка | Наверх | Cообщить модератору

17. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 29-Окт-21, 12:02 
> # mount_nullfs / /mnt

По идеи эта команда должна отработать  на любой системе без подготовки.

Проверил на трех разных системах и версиях
x@g:/# mount_nullfs / /mnt
mount_nullfs: / (/) and /mnt are not distinct paths

Как бы и ответ логически понятен "нельзя примонтировать корень в подчиненную папку(зацикливание)". Но у Вас получилось. Капец, не понимаю.

x@g:/# mount
/dev/gpt/root on / (ufs, local, journaled soft-updates)
Отличие только в отсутствии NFS и у меня монтирование через gpt-метки

Что не так?

Ответить | Правка | Наверх | Cообщить модератору

18. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 29-Окт-21, 22:12 
>[оверквотинг удален]
> По идеи эта команда должна отработать  на любой системе без подготовки.
> Проверил на трех разных системах и версиях
> x@g:/# mount_nullfs / /mnt
> mount_nullfs: / (/) and /mnt are not distinct paths
> Как бы и ответ логически понятен "нельзя примонтировать корень в подчиненную папку(зацикливание)".
> Но у Вас получилось. Капец, не понимаю.
> x@g:/# mount
> /dev/gpt/root on / (ufs, local, journaled soft-updates)
> Отличие только в отсутствии NFS и у меня монтирование через gpt-метки
> Что не так?

в source от 9.1 идет проверка на то чтобы не было вложенности mount-point в target.

# cd /usr/src/sbin/mount_nullfs/
# cp mount_nullfs.c /var/tmp/
# vi mount_nullfs.c
...
        /* if (subdir(target, source) || subdir(source, target))
                errx(EX_USAGE, "%s (%s) and %s are not distinct paths",
                    argv[0], target, argv[1]); */

комментируете проверку, для Ваших целей на раз - сойдет, хоть это и неверно
и опасно.
# make depend
# make
# make install

# mount_nullfs / /mnt
# umount /mnt

ps. позже mount_nullfs доработали.

Ответить | Правка | Наверх | Cообщить модератору

19. "Вопрос по FS UFS"  +/
Сообщение от zakat (ok), 01-Ноя-21, 13:21 
Спасибо
Ответить | Правка | Наверх | Cообщить модератору

20. "Вопрос по FS UFS"  +/
Сообщение от lavremail (ok), 01-Ноя-21, 23:53 
> Спасибо

получилось?


Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2022 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру