Namespace ya wakati katika Linux inaruhusu offsets za per-namespace kwa saa za mfumo wa monotonic na boot-time. Inatumika sana katika kontena za Linux kubadilisha tarehe/saa ndani ya kontena na kurekebisha saa baada ya kurejesha kutoka kwa checkpoint au snapshot.
Lab:
Create different Namespaces
CLI
sudounshare-T [--mount-proc] /bin/bash
Kwa kuunganisha mfano mpya wa mfumo wa /proc ikiwa unatumia param --mount-proc, unahakikisha kwamba namespace mpya ya kuunganisha ina mtazamo sahihi na wa kutengwa wa taarifa za mchakato maalum kwa namespace hiyo.
Wakati unshare inatekelezwa bila chaguo la -f, hitilafu inakutana kutokana na jinsi Linux inavyoshughulikia namespaces mpya za PID (Kitambulisho cha Mchakato). Maelezo muhimu na suluhisho yameelezwa hapa chini:
Maelezo ya Tatizo:
Kernel ya Linux inaruhusu mchakato kuunda namespaces mpya kwa kutumia wito wa mfumo wa unshare. Hata hivyo, mchakato unaoanzisha uundaji wa namespace mpya ya PID (inayojulikana kama mchakato wa "unshare") hauingii kwenye namespace mpya; ni watoto wake tu wanajumuishwa.
Kukimbia %unshare -p /bin/bash% kunaanzisha /bin/bash katika mchakato sawa na unshare. Kwa hivyo, /bin/bash na watoto wake wako katika namespace ya awali ya PID.
Mchakato wa kwanza wa mtoto wa /bin/bash katika namespace mpya unakuwa PID 1. Wakati mchakato huu unapoondoka, unachochea usafishaji wa namespace ikiwa hakuna mchakato mwingine, kwani PID 1 ina jukumu maalum la kupokea mchakato wa yatima. Kernel ya Linux itazima kuteua PID katika namespace hiyo.
Matokeo:
Kuondoka kwa PID 1 katika namespace mpya kunasababisha kusafishwa kwa bendera ya PIDNS_HASH_ADDING. Hii inasababisha kazi ya alloc_pid kushindwa kugawa PID mpya wakati wa kuunda mchakato mpya, ikitoa hitilafu ya "Haiwezekani kugawa kumbukumbu".
Suluhisho:
Tatizo linaweza kutatuliwa kwa kutumia chaguo la -f pamoja na unshare. Chaguo hili linafanya unshare kuunda mchakato mpya baada ya kuunda namespace mpya ya PID.
Kutekeleza %unshare -fp /bin/bash% kunahakikisha kwamba amri ya unshare yenyewe inakuwa PID 1 katika namespace mpya. /bin/bash na watoto wake wanajumuishwa salama ndani ya namespace hii mpya, kuzuia kuondoka mapema kwa PID 1 na kuruhusu kuteua PID kwa kawaida.
Kwa kuhakikisha kwamba unshare inakimbia na bendera ya -f, namespace mpya ya PID inatunzwa ipasavyo, ikiruhusu /bin/bash na mchakato wake wa chini kufanya kazi bila kukutana na hitilafu ya kugawa kumbukumbu.
sudofind/proc-maxdepth3-typel-nametime-execreadlink{} \; 2>/dev/null|sort-u# Find the processes with an specific namespacesudofind/proc-maxdepth3-typel-nametime-execls-l{} \; 2>/dev/null|grep<ns-number>