размонтирование источника привязки не сработает, а на устройстве недостаточно места

размонтирование источника привязки не сработает, а на устройстве недостаточно места

Кажется, я выстрелил себе в ногу. Давным-давно я пытался сделать резервную копию старой машины Linux на NAS с помощью команды mount bind:

mount --bind / /mnt/src tar -C /mnt/src -c . > /mnt/backup_to_nas/full-backup- date '+%d-%B-%Y'.tar.gz --exclude=tmp --exclude=mnt

Потом я понял, что никогда не размонтировал /mnt/src

Мой вопрос, это занимает в два раза больше места на /, чем у меня? У меня катастрофически не хватает места, и я не уверен, не гоняюсь ли я за своим хвостом, пытаясь удалить файлы, чтобы освободить место.

df -h показывает:

[root@web-server mnt]# df -h
Filesystem                        Size  Used Avail Use% Mounted on
devtmpfs                          1.9G     0  1.9G   0% /dev
tmpfs                             1.9G  4.0K  1.9G   1% /dev/shm
tmpfs                             1.9G  194M  1.7G  11% /run
tmpfs                             1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/vda2                         7.6G  7.6G     0 100% /
/dev/vda1                         190M  171M  5.3M  98% /boot
/dev/vdb                          230G  152G   67G  70% /usr/local
tmpfs                             379M     0  379M   0% /run/user/0
tmpfs                             379M     0  379M   0% /run/user/2527
tmpfs                             379M     0  379M   0% /run/user/2543
10.50.1.104:/data                 9.1T  8.0T  610G  94% /mnt/backup
tmpfs                             379M     0  379M   0% /run/user/2539
10.75.0.199://volume1/ICCBackups   32T  4.2T   28T  14% /mnt/backup_to_nas
tmpfs                             379M     0  379M   0% /run/user/500

lsblk показывает:

[root@web-server mnt]# lsblk
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
vda    253:0    0     8G  0 disk 
├─vda1 253:1    0   200M  0 part /boot
└─vda2 253:2    0   7.8G  0 part /mnt/src
vdb    253:16   0 232.8G  0 disk /usr/local

сделал проверку пространства в корне:

du -xhs * | сортировка -rh

134G    home
15G data
6.9G    mnt
186M    run
170M    boot
52M etc
848K    ARC-History.pdf
16K lost+found
8.0K    export
8.0K    backup
4.0K    media
4.0K    check_permissions.py
0   sys
0   proc
0   lib64
0   lib
0   dev
0   bin

Я не понимаю, почему некоторые большие папки, такие как /home, больше, чем выдает df -h, поэтому я выполнил mount | grep home и получил:

[root@web-server mnt]# mount | grep home
/dev/vdb on /home type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /usr/local/home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vdb on /home/workers/public_html/VM-SYSTEMS type ext4 (rw,relatime,data=ordered)
/dev/vdb on /usr/local/home/workers/public_html/VM-SYSTEMS type ext4 (rw,relatime,data=ordered)

Похоже, если бы я мог понять, что это такое и как переехать, я бы мог получить немного свободы действий:

/dev/vda2 on /home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)
/dev/vda2 on /usr/local/home/weather/public_html/weather_rrd type ext4 (rw,relatime,data=ordered)

И снова все это для того, чтобы сказать, моя команда mount --bind из / в /mnt/src заняла двойное пространство? Может быть, я чего-то не понял (вероятно), когда делал это? Я сделал lsof /mnt/src, и, похоже, все его используют.

но начал с этого, чтобы сообщить, не уверен, актуально ли это:

[root@web-server mnt]# lsof /mnt/src
lsof: WARNING: can't stat() ext4 file system /var/www/html/net-status/bw-mon (deleted)
      Output information may be incomplete.
lsof: WARNING: can't stat() ext4 file system /usr/local/www/net-status/bw-mon (deleted)
      Output information may be incomplete.

Так что не уверен, с чего начать удаление больших файлов, так как я нахожу их в /? (хотя кажется, что /home находится где-то в другом месте?). ls -lh не отображает его как символическую ссылку.

[root@web-server /]# ls -lh
total 1.2M
-rw-------    1 root root 847K Jul 27  2020 ARC-History.pdf
drwxr-xr-x    3 root root 4.0K Sep 13 17:21 backup
lrwxrwxrwx    1 root root    7 May 11  2018 bin -> usr/bin
dr-xr-xr-x.   5 root root 3.0K Aug 16 18:06 boot
-rw-r--r--    1 root root 3.3K May 12  2019 check_permissions.py
-rw-------    1 root root    0 Sep 13 17:33 core.20448
-rw-------    1 root root    0 Sep 13 17:46 core.28055
drwxr-xr-x    7 root root 4.0K Sep 13 17:16 data
drwxr-xr-x   18 root root 3.1K Sep 12 18:08 dev
drwxr-xr-x. 148 root root  12K Aug 31 17:26 etc
drwxr-xr-x    3 root root 4.0K Apr  2  2015 export
drwxr-xr-x   22 root root 4.0K Aug 27 18:06 home
lrwxrwxrwx    1 root root    7 May 11  2018 lib -> usr/lib
lrwxrwxrwx    1 root root    9 May 11  2018 lib64 -> usr/lib64
drwx------.   2 root root  16K Mar 31  2015 lost+found
drwxr-xr-x.   2 root root 4.0K Apr 12  2018 media
drwxr-xr-x.   6 root root 4.0K Feb  9  2023 mnt
drwxr-xr-x.   7 root root 4.0K Aug 25 15:13 opt
dr-xr-xr-x  225 root root    0 Nov  8  2021 proc
dr-xr-x---.  26 root root  12K Aug 25 15:19 root
drwxr-xr-x   48 root root 1.5K Sep 13 17:01 run
lrwxrwxrwx    1 root root    8 May 11  2018 sbin -> usr/sbin
-rw-r--r--    1 root root    0 May 15  2019 searchresults.txt
drwxr-xr-x.   2 root root 4.0K Apr 12  2018 srv
dr-xr-xr-x   13 root root    0 Nov 29  2021 sys
drwxrwxrwt.  16 root root 244K Sep 13 17:49 tmp
drwxr-xr-x.  14 root root 4.0K May 11  2018 usr
drwxr-xr-x.  25 root root 4.0K Aug  9 20:21 var
drwxr-xr-x    2 root root 4.0K Aug  9  2015 zaphod-data

EDIT: посмотрел файл fstab, который пролил свет на то, где что находится:

UUID=c9d6c99f-d7a5-4117-93ba-029cc34d8b61 /                       ext4    defaults        1 1
UUID=19fcad32-0fcb-423a-87e9-586d03d2e406 /boot                   ext4    defaults        1 2
#LABEL=/home    /home       ext4 defaults 1 2
#192.41.211.105:/export/images      /export/images          nfs     rsize=32768,wsize=32768,actimeo=0,bg,intr
LABEL=local-web-server  /usr/local  ext4    defaults    1 2
/usr/local/home     /home       none    bind        0 0
/usr/local/www      /var/www/html   none    bind        0 0
/usr/local/data     /data       none    bind        0 0
/tmp/rrdweather     /home/weather/public_html/weather_rrd   none    bind    0 0
/usr/local/data     /data       none    bind        0 0
/home/workers/Site/VM-SYSTEMS /home/workers/public_html/VM-SYSTEMS none bind 0 0
#/home/workers/public_html/WebCalendar-1.2.3 /home/workers/public_html/WebCalendar none bind 0 0
#/home/workers/public_html/WebCalendar-1.2.0 /home/workers/public_html/WebCalendar~ none bind 0 0
/home/workers/public_html/net-status /usr/local/www/net-status none bind 0 0
/tmp/bw-mon     /var/www/html/net-status/bw-mon     none    bind        0 0
/var/lib/smokeping/images /var/www/html/smokeping/images none   bind        0 0

#mounting for our cheezy backup of web-server
10.50.1.104:/data /mnt/backup nfs

Редактирование 2: Итак, я понял, что если я выполню команду sort в /mnt/src, то получу более точную информацию...

[root@web-server src]# du -xhs * | sort -rh
4.8G    usr
707M    var
421M    opt
397M    backup
168M    root
150M    tmp
52M etc
848K    ARC-History.pdf
16K lost+found
12K mnt
8.0K    export
4.0K    zaphod-data
4.0K    sys
4.0K    srv
4.0K    run
4.0K    proc
4.0K    media
4.0K    home
4.0K    dev
4.0K    data
4.0K    check_permissions.py
4.0K    boot
0   searchresults.txt
0   sbin
0   lib64
0   lib
0   core.28055
0   core.20448
0   bin

Показывает мне, возможно, место для очистки в usr (не знаю, что, я не гуру Linux), var содержит некоторые полезные вещи, которые я смог очистить (старые журналы). Все еще работаю над этим, но, как я полагаю, суть того, о чем я спрашиваю, заключается в том, должен ли я действительно отмонтировать этот /mnt/src? или это нормально, оставить его в таком состоянии, поскольку каждый раз, когда я пытаюсь выполнить команду, он говорит, что он занят.

решение1

Проблема

/mnt/srcне занимает места, но вам следует размонтировать его, чтобы не путать некоторые инструменты, включая инструменты, выполняющие резервное копирование. Например, lsblkвыбирает для отображения первое соответствующее монтирование и отображает /mnt/srcвместо /для /dev/vda2, что не является оптимальным.

Большинство систем Linux работаютсистемдпоэтому я предполагаю, что эта система работаетсистемд.

системдперемонтируется / какобщиймонтировать вместо значения по умолчанию ядра Linuxчастный. Смотрите документацию ядра о распространении монтирования здесь:Общие поддеревья. Это означает, что когда позже добавляются (или удаляются и переустанавливаются) дополнительные крепления, /они также автоматически монтируются /mnt/srcмеханизмом распространения, итак как этообщий(скорее, чемраб) попытка отключить их /mnt/srcтакже отключит их от/, либо потерпев неудачу (потому что используются процессами), либо нанеся возможный вред в случае успеха (они также исчезнут из своей исходной точки монтирования).

Что нужно было сделать?

Всегда делайте такие крепления с помощьючастныйвариант распространения. Пока это так, когда это для целей резервного копирования, также сделайте так, чтобы монтирование привязки было (пере)монтировано только для чтения:

mount --bind --make-private -o ro / /mnt/src

Таким образом, никакого дальнейшего взаимодействия с другимимонтируетпроизойдет, и это можно будет отключить в любое время простым способом umount /mnt/srcбез каких-либо побочных эффектов.

Что можно сделать для решения текущей проблемы?

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

Я привожу здесь пример (все каккореньпользователь) подражая случаю OP, когда после того, как было сделано:

# mkdir -p /mnt/src
# mount --bind -o ro / /mnt/src

И затем позже (в месте, которое не может быть опасным):

# mkdir -p /root/intheway
# mount -t tmpfs tmpfs /root/intheway

что приводит к:

# umount /mnt/src
umount: /mnt/src: target is busy.
  • определить проблемные крепления с помощьюfindmnt:

    # findmnt --kernel --submounts --list -o +PROPAGATION /mnt/src
    TARGET                  SOURCE     FSTYPE  OPTIONS                        PROPAGATION
    /mnt/src                /dev/vda2  ext4    ro,relatime,errors=remount-ro  shared
    /mnt/src/root/intheway  tmpfs      tmpfs   rw,relatime,inode64            shared
    
  • Установить все такие найденныеобщиймонтируется какчастный, включая /mnt/src:

    # mount --make-private /mnt/src/root/intheway
    # mount --make-private /mnt/src
    
  • демонтируйте их (в обратном порядке их монтажа, если глубины несколько), заканчивая/mnt/src

    # umount /mnt/src/root/intheway
    # umount /mnt/src
    

Это не нарушило (общее) крепление, которое было на пути:

# findmnt --kernel --list -o +PROPAGATION /root/intheway
TARGET         SOURCE FSTYPE OPTIONS             PROPAGATION
/root/intheway tmpfs  tmpfs  rw,relatime,inode64 shared

Связанный контент