በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ሰላም ሁላችሁም! ለወደዳችኋቸው ኮርሶች አዳዲስ ዥረቶችን መክፈታችንን እንቀጥላለን እና አሁን አዲስ የኮርሶች ስብስብ እንደጀመርን ለማሳወቅ እንቸኩላለን። "ሊኑክስ አስተዳዳሪ"በኤፕሪል መጨረሻ የሚጀመረው. ለዚህ ክስተት አዲስ ህትመቶች ቀን ይሆናል። ከመጀመሪያው ቁሳቁስ ጋር, ይችላሉ እዚህ ያንብቡ.

ምናባዊ የፋይል ስርዓቶች የሊኑክስ ፍልስፍና "ሁሉም ነገር ፋይል ነው" እንዲል የሚያስችለው እንደ ምትሃታዊ ማጠቃለያ አይነት ሆኖ ያገለግላል።

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

የፋይል ስርዓት ምንድን ነው? ከመጀመሪያዎቹ የሊኑክስ አበርካቾች እና ደራሲዎች በአንዱ ቃል ላይ በመመስረት ሮቤታ ላቫ, "የፋይል ስርዓት በአንድ የተወሰነ መዋቅር መሰረት የተገጣጠሙ የውሂብ ተዋረዳዊ ማከማቻ ነው." ምንም ይሁን ምን ይህ ፍቺ ለVFAT (ምናባዊ ፋይል ድልድል ሠንጠረዥ)፣ Git እና ካሳንድራ (NoSQL የውሂብ ጎታ). ታዲያ እንዲህ ዓይነቱን ነገር እንደ “ፋይል ስርዓት” በትክክል የሚገልጸው ምንድን ነው?

የፋይል ስርዓት መሰረታዊ ነገሮች

የሊኑክስ ከርነል እንደ የፋይል ስርዓት ሊቆጠር ለሚችል አካል የተወሰኑ መስፈርቶች አሉት። ዘዴዎችን ተግባራዊ ማድረግ አለበት open(), read() и write() ስሞች ላሏቸው ቋሚ እቃዎች. ከዕቃ-ተኮር እይታ ፕሮግራሚንግ, ከርነል አጠቃላይ የፋይል ስርዓትን እንደ አብስትራክት በይነገጽ ይገልፃል, እና እነዚህ ሶስት ትላልቅ ተግባራት እንደ "ምናባዊ" ተደርገው ይወሰዳሉ እና ምንም ተጨባጭ ፍቺ የላቸውም. በዚህ መሠረት ነባሪው የፋይል ስርዓት ትግበራ ምናባዊ የፋይል ስርዓት (VFS) ይባላል.

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ለአንድ አካል መክፈት፣ ማንበብ እና መጻፍ ከቻልን ከላይ ባለው ኮንሶል ላይ ካለው ምሳሌ እንደምንረዳው ያ አካል እንደ ፋይል ይቆጠራል።
የቪኤፍኤስ ክስተት "ሁሉም ነገር ፋይል ነው" የሚለውን የዩኒክስ አይነት ምልከታ ብቻ አጽንዖት ይሰጣል። ከላይ ያቺ ትንሽ /dev/ኮንሶል ምሳሌ ኮንሶሉ እንዴት እንደሚሰራ የሚያሳይ ምን ያህል እንግዳ እንደሆነ አስብ። ምስሉ በይነተገናኝ የ Bash ክፍለ ጊዜ ያሳያል። አንድ ሕብረቁምፊ ወደ ኮንሶል (ምናባዊ ኮንሶል መሣሪያ) መላክ በምናባዊ ስክሪን ላይ ያሳያል። ቪኤፍኤስ ሌላ፣ ሌላው ቀርቶ እንግዳ የሆኑ ንብረቶች አሉት። ለምሳሌ, በ ለመፈለግ ይፈቅድልዎታል እሱን።.

እንደ ext4፣ NFS እና/proc ያሉ የሚታወቁ ስርዓቶች በሚባለው የC ውሂብ መዋቅር ውስጥ ሶስት ጠቃሚ ተግባራት አሏቸው ፋይል_ክዋኔዎች. በተጨማሪም ፣ አንዳንድ የፋይል ስርዓቶች የVFS ተግባርን በሚታወቅ ነገር-ተኮር መንገድ ያራዝማሉ እና እንደገና ይገልፃሉ። ሮበርት ሎቭ እንዳመለከተው፣ የVFS abstraction የሊኑክስ ተጠቃሚዎች ስለውስጣዊ የውሂብ ቅርጸታቸው ሳይጨነቁ ፋይሎችን ወደ ሶስተኛ ወገን ኦፕሬቲንግ ሲስተሞች ወይም እንደ ቧንቧዎች ያሉ ረቂቅ አካላትን ያለፍላጎት እንዲገለብጡ ያስችላቸዋል። በተጠቃሚው በኩል (የተጠቃሚ ቦታ) ፣ የስርዓት ጥሪን በመጠቀም ፣ አንድ ሂደት ዘዴውን በመጠቀም ከፋይል ወደ የከርነል መረጃ መዋቅር መገልበጥ ይችላል። read() አንድ የፋይል ስርዓት እና ከዚያ ዘዴውን ይጠቀሙ write () ለውሂብ ውፅዓት ሌላ የፋይል ስርዓት።

የመሠረታዊ የቪኤፍኤስ ዓይነቶች የሆኑት የተግባር መግለጫዎች በፋይሎች ውስጥ ናቸው። fs/*.ሲ የከርነል ምንጭ ኮድ፣ ንዑስ ማውጫዎች እያለ fs/ የተወሰኑ የፋይል ስርዓቶችን ይይዛል. አንኳር ደግሞ እንደ ያሉ አካላት ይዟል cgroups, /dev и tmpfs, በሚነሳበት ጊዜ የሚፈለጉት እና ስለዚህ በከርነል ንዑስ ማውጫ ውስጥ ተገልጸዋል init/. መሆኑን አስተውል cgroups, /dev и tmpfs "ትልቅ ሶስት" ተግባራትን አትጥራ file_operations, ግን በቀጥታ አንብብ እና ወደ ማህደረ ትውስታ ጻፍ.
ከታች ያለው ሥዕላዊ መግለጫ የተጠቃሚ ቦታ በሊኑክስ ሲስተሞች ላይ በተለምዶ የሚጫኑትን የተለያዩ የፋይል ሲስተሞች እንዴት እንደሚደርስ ያሳያል። አወቃቀሮች አይታዩም። pipes, dmesg и POSIX clocks, እሱም አወቃቀሩን ተግባራዊ ያደርጋል file_operations, በ VFS ንብርብር በኩል ይደርሳል.

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ቪኤፍኤስ በስርዓት ጥሪዎች እና በተወሰኑ ትግበራዎች መካከል "የጥቅል ንብርብር" ነው። file_operations, እንደ ext4 и procfs. ተግባራት file_operations ከመሳሪያ ነጂዎች ወይም የማስታወሻ መጠቀሚያ መሳሪያዎች ጋር መስተጋብር መፍጠር ይችላል። tmpfs, devtmpfs и cgroups አትጠቀም file_operations፣ ግን በቀጥታ ማህደረ ትውስታውን ይድረሱ።
ከፋይል ስርዓቶች ጋር የተያያዙት መሰረታዊ ዘዴዎች በእያንዳንዱ የፋይል ስርዓት አይነት እንደገና መተግበር ስለሌለ የቪኤፍኤስ መኖር ኮድን እንደገና ለመጠቀም እድል ይሰጣል. ኮድን እንደገና መጠቀም በሶፍትዌር መሐንዲሶች ዘንድ የተለመደ ተግባር ነው! ነገር ግን፣ እንደገና ጥቅም ላይ ሊውል የሚችል ኮድ ከያዘ ከባድ ስህተቶች, የተለመዱ ዘዴዎችን የሚወርሱ ሁሉም አተገባበር ከነሱ ይሰቃያሉ.

/tmp: ቀላል ፍንጭ

VFS በሲስተም ላይ መኖሩን ለማወቅ ቀላሉ መንገድ መተየብ ነው። mount | grep -v sd | grep -v :/ሁሉንም የተጫኑትን ያሳያል (mounted) ዲስክ-ነዋሪ ያልሆኑ እና ኤንኤፍኤስ ያልሆኑ የፋይል ስርዓቶች፣ ይህም በአብዛኛዎቹ ኮምፒውተሮች ላይ እውነት ነው። ከተዘረዘሩት ጋራዎች አንዱ (mounts) ቪኤፍኤስ ምንም ጥርጥር የለውም /tmp, ቀኝ?

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ያንን ማከማቻ ሁሉም ሰው ያውቃል / tmp በአካላዊ መካከለኛ - እብደት! ምንጭ.

ለምን ማከማቸት የማይፈለግ ነው /tmp በአካላዊ ሚዲያ ላይ? ምክንያቱም ፋይሎቹ በ /tmp ጊዜያዊ ናቸው እና የማጠራቀሚያ መሳሪያዎች tmpfs ከተፈጠሩበት ማህደረ ትውስታ ቀርፋፋ ናቸው። ከዚህም በላይ አካላዊ ሚዲያ ከማስታወስ ይልቅ በሚጻፍበት ጊዜ ለመልበስ በጣም የተጋለጠ ነው። በመጨረሻም፣ በ/tmp ውስጥ ያሉ ፋይሎች ስሱ መረጃዎችን ሊይዙ ይችላሉ፣ ስለዚህ በእያንዳንዱ ዳግም ማስነሳት ላይ እንዲጠፉ ማድረግ አስፈላጊ ባህሪ ነው።

እንደ አለመታደል ሆኖ አንዳንድ የሊኑክስ ማከፋፈያ መጫኛ ስክሪፕቶች በማከማቻ መሳሪያው ላይ በነባሪነት/tmp ይፈጥራሉ። ይህ በእርስዎ ስርዓት ላይም ከተከሰተ ተስፋ አይቁረጡ። ጥቂት ቀላል መመሪያዎችን ይከተሉ አርኪ Wikiይህንን ለማስተካከል, እና ማህደረ ትውስታው የተመደበለት መሆኑን ይወቁ tmpfs ለሌሎች ዓላማዎች የማይገኝ ይሆናል። በሌላ አነጋገር ግዙፍ tmpfs እና በላዩ ላይ ትላልቅ ፋይሎች ያሉት ስርዓት ማህደረ ትውስታ ሊያልቅ እና ሊበላሽ ይችላል. ሌላ ፍንጭ፡ ፋይልን በሚያርትዑበት ጊዜ /etc/fstab, ያስታውሱ በአዲሱ መስመር ማለቅ አለበት, አለበለዚያ የእርስዎ ስርዓት አይነሳም.

/proc እና /sys

ሌላ /tmp, VFS (ምናባዊ የፋይል ስርዓቶች) ለሊኑክስ ተጠቃሚዎች በጣም የተለመዱ ናቸው /proc и /sys. (/dev በጋራ ማህደረ ትውስታ ውስጥ ይኖራል እና የለውም file_operations). ለምን እነዚህ ሁለት አካላት? ይህንን ጉዳይ እንመልከተው።

procfs የከርነል እና የሚከታተልባቸውን ሂደቶች ቅጽበታዊ እይታ ይፈጥራል userspace. በ /proc ከርነል ስላለው እንደ መቆራረጥ፣ ምናባዊ ማህደረ ትውስታ እና መርሐግብር አውጪ ያሉ መረጃዎችን ያትማል። ከዚህም በተጨማሪ እ.ኤ.አ. /proc/sys መለኪያዎች ከትእዛዙ ጋር የተዋቀሩበት ቦታ ነው sysctl, ይገኛል ለ userspace. የግለሰብ ሂደቶች ሁኔታ እና ስታቲስቲክስ በማውጫዎች ውስጥ ይታያሉ /proc/.

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ይህ ነው /proc/meminfo ጠቃሚ መረጃ የያዘ ባዶ ፋይል ነው።

ባህሪ /proc ፋይሎች የቪኤፍኤስ ዲስክ ፋይል ስርዓቶች ምን ያህል የተለያዩ ሊሆኑ እንደሚችሉ ያሳያሉ። በአንድ በኩል፣ /proc/meminfo በትእዛዙ ሊታይ የሚችል መረጃ ይዟል free. በሌላ በኩል ባዶ ነው! እንዴት ነው የሚሰራው? ሁኔታው በሚል ርዕስ ታዋቂውን መጣጥፍ ያስታውሳል ማንም ሳያያት ጨረቃ ይኖራል? እውነታ እና የኳንተም ቲዎሪ"በ 1985 በኮርኔል ዩኒቨርሲቲ የፊዚክስ ፕሮፌሰር ዴቪድ ሜርሚን ተፃፈ። እውነታው ግን ከርነል ጥያቄ ሲቀርብ የማህደረ ትውስታ ስታቲስቲክስን ይሰበስባል /procእና በእውነቱ በፋይሎች ውስጥ /proc ማንም በማይመለከትበት ጊዜ ምንም ነገር የለም. እንደተናገረው ሜርሚን, "መሰረታዊ የኳንተም አስተምህሮ እንደሚለው መለካት በአጠቃላይ የሚለካውን ንብረት ቀድሞ የነበረውን ዋጋ አያሳይም።" (እና ስለ ጨረቃ ያለውን ጥያቄ እንደ የቤት ስራ ይቁጠሩት!)
ባዶነት ይመስላል procfs እዚያ ያለው መረጃ ተለዋዋጭ ስለሆነ ትርጉም ይሰጣል. ጋር ትንሽ የተለየ ሁኔታ sysfs. ቢያንስ አንድ ባይት መጠን ያላቸው ስንት ፋይሎች እንዳሉ እናወዳድር /proc እና ውስጥ /sys.

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

Procfs አንድ ፋይል አለው፣ ማለትም ወደ ውጭ የተላከው የከርነል ውቅረት፣ ይህም ለየት ያለ ነው ምክንያቱም በአንድ ቡት አንድ ጊዜ ብቻ መፈጠር አለበት። በሌላ በኩል በ /sys ብዙ ትላልቅ ፋይሎች አሉ ፣ ብዙዎቹም ሙሉውን የማህደረ ትውስታ ገጽ ይይዛሉ። አብዛኛውን ጊዜ ፋይሎች sysfs እንደ ፋይሎችን በማንበብ ከተገኙት የመረጃ ሰንጠረዦች በተለየ በትክክል አንድ ቁጥር ወይም መስመር ይይዛል /proc/meminfo.

ግብ sysfs - ከርነል የሚጠራውን የማንበብ/የመፃፍ ባህሪያትን ያቅርቡ «kobjects» በተጠቃሚ ቦታ. ብቸኛው ግብ kobjects አገናኝ ቆጠራ ነው፡ ወደ ኮብጀክት የመጨረሻው አገናኝ ሲወገድ ስርዓቱ ከእሱ ጋር የተያያዙትን ሀብቶች ወደነበረበት ይመልሳል። ቢሆንም፣ /sys አብዛኞቹን ታዋቂዎችን ይይዛል "የተረጋጋ ABI ለተጠቃሚ ቦታ" አንኳር፣ ማንም ሰው ፈጽሞ የማይችለው፣ በማንኛውም ሁኔታ "እረፍት". ይህ ማለት በ sysfs ውስጥ ያሉ ፋይሎች የማይረጋጉ ናቸው ማለት አይደለም፣ ይህም ያልተረጋጉ ነገሮችን ከማጣቀሻ ቆጠራ ጋር የማይጣጣም ነው።
የከርነሉ የተረጋጋ ABI ምን ሊታዩ እንደሚችሉ ይገድባል /sysበእውነቱ በዚያ ቅጽበት ያለው ሳይሆን። በ sysfs ውስጥ የፋይል ፈቃዶችን መዘርዘር እንዴት ለመሣሪያዎች ፣ ሞጁሎች ፣ የፋይል ስርዓቶች ፣ ወዘተ ሊዋቀሩ እንደሚችሉ ማስተዋልን ይሰጣል። ሊዋቀር ወይም ሊነበብ ይችላል. አመክንዮአዊ መደምደሚያው ፕሮcfs የከርነል የተረጋጋ ABI አካል ነው፣ ምንም እንኳን ይህ በግልፅ ባይገለጽም ሰነድ.

በሊኑክስ ውስጥ ምናባዊ የፋይል ስርዓቶች-ለምን ያስፈልጋሉ እና እንዴት ይሰራሉ? ክፍል 1

ውስጥ ፋይሎች sysfs ለእያንዳንዱ አካል አንድ የተወሰነ ንብረት ይግለጹ እና ሊነበብ የሚችል፣ ሊጻፍ የሚችል ወይም ሁለቱንም ሊሆን ይችላል። በፋይሉ ውስጥ "0" ማለት SSD ሊወገድ አይችልም ማለት ነው.

የኢቢፒኤፍ እና የቢሲሲ መሳሪያዎችን በመጠቀም ቪኤፍኤስን እንዴት መከታተል እንዳለብን የትርጉም ሁለተኛውን ክፍል እንጀምር እና አሁን አስተያየቶችዎን እየጠበቅን ነው እና በተለምዶ እንዲያደርጉት እንጋብዝዎታለን። ዌቢናርን ይክፈቱበኤፕሪል 9 በመምህራችን የሚካሄደው - ቭላድሚር Drozdetsky.

ምንጭ: hab.com

አስተያየት ያክሉ