The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Вопрос по FS UFS, !*! zakat, 28-Окт-21, 10:41  [смотреть все]
Предположим есть папка /MY и в ней лежит 10Gb мусора. Потом к ней примонтировали раздел "mount /dev/gpt/test /MY"

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

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

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

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

  • Вопрос по FS UFS, !*! DeerFriend, 12:59 , 28-Окт-21 (1)
    Замонтировать ридонли в другом месте переполненный раздел и искать там.
    • Вопрос по FS UFS, !*! DeerFriend, 13:01 , 28-Окт-21 (2)
      > Замонтировать ридонли в другом месте переполненный раздел и искать там.

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

    • Вопрос по FS UFS, !*! lavr, 13:39 , 28-Окт-21 (3)
      > Замонтировать ридонли в другом месте переполненный раздел и искать там.

      получит filesystem busy

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


      • Вопрос по FS UFS, !*! DeerFriend, 15:41 , 28-Окт-21 (4)
        > получит filesystem busy

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

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

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

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

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

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

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


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

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

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


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

      • Вопрос по FS UFS, !*! zakat, 15:47 , 28-Окт-21 (5)
        Да, получит "Device busy"

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

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

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

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

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

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


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

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


          • Вопрос по FS UFS, !*! zakat, 10:09 , 29-Окт-21 (13)
            Проверяю. Неужели получилось.
          • Вопрос по FS UFS, !*! zakat, 11:20 , 29-Окт-21 (14)
            > попробовал через 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 уже после монтирования раздела.
            Если получится прошу дать листинг команд, может я заблудился в трех соснах.
            Спасибо.

            • Вопрос по FS UFS, !*! lavr, 11:29 , 29-Окт-21 (16)
              >> попробовал через 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
              все

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

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

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

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

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

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

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

      • Вопрос по FS UFS, !*! lavr, 11:23 , 29-Окт-21 (15)
        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

        как бы и все

        • Вопрос по FS UFS, !*! zakat, 12:02 , 29-Окт-21 (17)
          > # 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-метки

          Что не так?

          • Вопрос по FS UFS, !*! lavr, 22:12 , 29-Окт-21 (18)
            >[оверквотинг удален]
            > По идеи эта команда должна отработать  на любой системе без подготовки.
            > Проверил на трех разных системах и версиях
            > 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 доработали.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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