Слоистая или виртуальная файловая система на Linux

Слегка расширенный (но в значительной степени эквивалентный) сценарий:

{
if($0 ~ /^ora/)  {         # look for lines starting (^) with "ora"
    split($0, temp, ".");  # find the elements of the line an put in array
    serverName = temp[2];  # the "middle bit" - what was found between two dots
    next;                  # nothing else to do with this line
  }
else  {
    print serverName, serverName$1, $3, $4; # string together the bits
    # note that each $n corresponds to the nth "word"
    # by default fields are separated by white space
    # you can set the variable FS to something else (e.g. FS=",")
    # to deal with other formate
  }
}

Поместите его в файл server.awk , и, если ваш ввод находится в log.txt , вызовите его с помощью

awk -f server.awk log.txt

Надеюсь, объяснение добавит некоторой ценности ...

2
08.12.2018, 19:57
2 ответа

Если вы не возражаете против некоторых пользовательских сценариев, вы можете использовать OverlayFS (, включенную в ядро ​​​​Linux с 2014 года ).

OverlayFS накладывает два местоположения файловой системы друг на друга :точка монтирования наложения показывает все из lower, если только она не была изменена или затенена чем-либо в upper. Все изменения точки монтирования оверлея записываются в upper; lowerникогда не трогали.
Кроме того, для OverlayFS требуется каталог work, который четко не задокументирован, но, по-видимому, служит временной областью перед переносом изменений в upper.

Используя это, вы можете создать тип контейнера, который вы ищете (см. ниже возможные крайние случаи):

mkdir -p /var/tmp/myoverlay/{upper,work,mount}
mount -t overlay -o lowerdir=/,upperdir=/var/tmp/myoverlay/upper,workdir=/var/tmp/myoverlay/work overlayfs /var/tmp/myoverlay/mount

Чтобы «войти» в контейнер, вы можете использовать командуchroot(«изменить корневой каталог» )для запуска командной (оболочки или другой )внутри вновь созданной/var/tmp/myoverlay/mount:

chroot /var/tmp/myoverlay/mount
# or
chroot /var/tmp/myoverlay/mount /usr/bin/apt moo # paths are relative to the new root directory

Обратите внимание, что этого может быть недостаточно для программ, которые пытаются получить доступ к аппаратным устройствам, псевдо--терминалам, процессам или системным функциям, :которые предоставляются ядром как специальные монтируемые файловые системы — см. вывод из mountниже:

proc on /proc type proc
sysfs on /sys type sysfs
udev on /dev type devtmpfs
devpts on /dev/pts type devpts

Вы можете смонтировать их в точку монтирования наложения (перед входом в нее):

mount -t proc proc /var/tmp/myoverlay/mount/proc
mount -t sysfs sys /var/tmp/myoverlay/mount/sys
mount -t devtmpfs dev /var/tmp/myoverlay/mount/dev
mount -t devpts devpts /var/tmp/myoverlay/mount/dev/pts

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


Могут возникнуть дополнительные трудности, в зависимости от схемы вашей файловой системы :каталог lowerберется как есть, без каких-либо дополнительных файловых систем, смонтированных под ним. Если, например, ваша /homeявляется отдельной файловой системой, OverlayFS покажет вам только пустую точку монтирования в /home.

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

4
27.01.2020, 21:52

Вы можете использовать файловую систему overlay.

modprobe overlay
mkdir -p /path/data /path/work /path/mount
mount -t overlay overlay -o lowerdir=/,upperdir=/path/data,workdir=/path/work /path/mount

Теперь вы можете chroot- /path/mountи видеть все из вашего корневого каталога, но изменения будут записываться в /path/data. Вы можете размонтировать /path/mountи перемонтировать его позже с теми же параметрами.

3
27.01.2020, 21:52

Теги

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