На это был дан ответ здесь .
Сначала сделайте образ раздела.
Затем используйте команду lossup для монтирования образа. Поскольку это не диск, а раздел, вам не нужен флаг partscan.
# lsblk
# losetup --find foo.img
Поиск только что созданного кольцевого устройства
# lsblk
loop1 7:1 0 4096M 0 loop
Обнуление оставшегося места путем записи большого пустого файла.
# mount /dev/loop1 /mnt
# dd if=/dev/zero of=/mnt/filler conv=fsync bs=1M
# rm /mnt/filler
# umount /dev/loop1
Теперь сожмите изображение.
# ls -s
4096M foo.img
# gzip foo.img
# ls -s
11M foo.img.gz
Что касается образа раздела.
Если на разделе есть файловая система ext4, вы можете изменить его размер с помощью resize2fs до минимального размера. Это перемещает все данные в первые блоки.
e2fsck -f /dev/loop1
resize2fs -M /dev/loop1
Are the pids related in some way?
Не обязательно. Однако они должны принадлежать одному и тому же эффективному идентификатору пользователя, чтобы предотвратить перехват порта.
Can multiple processes listen same
pid/port at the same time?
Да, с опцией сокета SO _REUSEPORT. На этой странице(пример Python, включенный ), объясняет, как он работает и как он связан с SO _REUSEADDR (, также используемым на серверах ).
Это отрывок со страницы:
SO_REUSEPORT
The behaviour of this option is similar concept to SO_REUSEADDR, but this option allow us to bind multiple TCP/UDP server sockets onto exact same IP and same port.
But there is 1 limitation on socket to share exact same IP and same port which is not in SO_REUSEADDR. All sockets to share the IP/port should be spawned by the process having same effective user. This can be applied for both protocol UDP/TCP, notice that binding multiple UDP server socket was possible with just SO_REUSEADDR without taking care effective user (processA executed by root open *:80 and processB executed by userA can open *:80 with SO_REUSEADDR). But SO_REUSEPORT doesn’t allow it. As for looking at just this point, we can think SO_REUSEPORT as more restricted.