Внутреннее устройство оверлейного драйвера хранилища

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

!/bin/bash

printf "\n Пожалуйста, введите имя файла "

read num3

if [ find / -type f -name $num3 2>/dev/null| wc -l -gt 0 ]; then echo "Это правильный сценарий" else echo "Неверное имя файла" fi

2
07.04.2019, 07:17
1 ответ

Я пытался сделать mkdir -p /srv/postgres/data/mydir, но поскольку

drwxr-xr-x 3 root root 4.0K Apr 7 08:26 srvесть владелецroot

ниinstall -d -o <user> -g <group> -m <mode> <path>@user2313838

ни sudo -u postgres mkdir -p /srv/postgres/data/mydirработает @maGz

Поэтому я разделил его на две команды:

sudo mkdir -p /srv/postgres/data/mydir
sudo chown postgres:postgres /srv/postgres -R
-121 ---16731 ​​-

OverlayFS — это объединенная файловая система, и на уровне Docker есть два драйвера хранилища, которые используют ее :: исходная/более старая версия с именем overlayи более новая версия с именем overlay2. В OverlayFS есть каталог более низкого уровня -, который доступен только для чтения -. Поверх этого каталога находится каталог верхнего уровня -, который разрешает чтение -и запись. Каждый из этих каталогов называется слоем. Объединенное представление директорий нижнего -и верхнего -уровней представлено как единое целое, называемое "объединенным" каталогом.

Более новый overlay2драйвер хранилища изначально поддерживает до 128 таких слоев. Старый драйвер overlayможет работать только с двумя слоями одновременно. Поскольку большинство образов Docker создаются с использованием нескольких слоев, это ограничение довольно существенно. Чтобы обойти это ограничение, каждый слой реализован как отдельный каталог, имитирующий полное изображение.

Чтобы изучить различия в моей тестовой системе, я вытащил образ «ubuntu» из Docker Hub и изучил различия в структуре каталогов между драйверами overlay2и overlay:

[root@testvm1 overlay2]$ ls */diff
4864f14e58c1d6d5e7904449882b9369c0c0d5e1347b8d6faa7f40dafcc9d231/diff:
run

4abcfa714b4de6a7f1dd092070b1e109e8650a7a9f9900b6d4c3a7ca441b8780/diff:
var

a58c4e78232ff36b2903ecaab2ec288a092e6fc55a694e5e2d7822bf98d2c214/diff:
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

c3f1a237c46ed330a2fd05ab2a0b6dcc17ad08686bd8dc49ecfada8d85b93a00/diff:
etc  sbin  usr  var


[root@testvm1 overlay]# ls */root/
001311c618ad7b94d4dc9586f26e421906e7ebf5c28996463a355abcdcd501bf/root/:
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

048f81f400f7d74f969c4fdaff6553c782d12c04890ad869d75313505c868fbc/root/:
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

8060f0c647f24050e1a4bff71096ffdf9665bff26e6187add87ecb8a18532af9/root/:
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

fbdef944657234468ee55b12c7910aa495d13936417f9eb905cdc39a40fb5361/root/:
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

В представлении overlayкаждый слой имитирует полное изображение, в то время как слои overlay2содержат только точные различия между слоями. В подходе драйвера overlayжесткие ссылки используются как способ экономии места между различными уровнями. Однако этот метод все еще не идеален, и требуются новые индексы, когда данные изображения содержат специальные файлы, такие как символические ссылки и символьные устройства. Это может быстро привести к большому количеству инодов.

Распределение inode между драйверами overlay2и overlayв моей тестовой системе показано ниже.

[root@testvm1 overlay2]$ du --inodes -s *
8       4864f14e58c1d6d5e7904449882b9369c0c0d5e1347b8d6faa7f40dafcc9d231
27      4abcfa714b4de6a7f1dd092070b1e109e8650a7a9f9900b6d4c3a7ca441b8780
3311    a58c4e78232ff36b2903ecaab2ec288a092e6fc55a694e5e2d7822bf98d2c214
1       backingFsBlockDev
25      c3f1a237c46ed330a2fd05ab2a0b6dcc17ad08686bd8dc49ecfada8d85b93a00
5       l

[root@testvm1 overlay]# du --inodes -s *
3298    001311c618ad7b94d4dc9586f26e421906e7ebf5c28996463a355abcdcd501bf
783     048f81f400f7d74f969c4fdaff6553c782d12c04890ad869d75313505c868fbc
768     8060f0c647f24050e1a4bff71096ffdf9665bff26e6187add87ecb8a18532af9
765     fbdef944657234468ee55b12c7910aa495d13936417f9eb905cdc39a40fb5361

Общее количество инодов на overlay2в моей системе достигает 3378. При использовании overlayэто число увеличивается до 5615. Это значение учитывает один образ и отсутствие запущенных контейнеров, поэтому большая система с несколькими контейнерами и образами докеров может быстро достичь предела индексов, налагаемого резервной файловой системой (. ] XFS или EXT4, где находится каталог /var/lib/docker/overlay).

По этой причине более новый overlay2драйвер хранилища в настоящее время рекомендуется для большинства новых установок. Драйвер overlayустарел, начиная с Docker v18.09, и ожидается, что он будет удален в будущем выпуске.

2
27.01.2020, 22:08

Теги

Похожие вопросы