ಎಲ್ಲರಿಗೂ ನಮಸ್ಕಾರ, "Linux ನಲ್ಲಿ ವರ್ಚುವಲ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳು: ಅವು ಏಕೆ ಬೇಕು ಮತ್ತು ಅವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ?" ಎಂಬ ಪ್ರಕಟಣೆಯ ಎರಡನೇ ಭಾಗವನ್ನು ನಾವು ನಿಮ್ಮೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತಿದ್ದೇವೆ. ನೀವು ಮೊದಲ ಭಾಗವನ್ನು ಓದಬಹುದು
eBPF ಮತ್ತು bcc ಪರಿಕರಗಳನ್ನು ಬಳಸಿಕೊಂಡು VFS ಅನ್ನು ಹೇಗೆ ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡುವುದು
ಫೈಲ್ಗಳಲ್ಲಿ ಕರ್ನಲ್ ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಸುಲಭವಾದ ಮಾರ್ಗವಾಗಿದೆ sysfs
ಪ್ರಾಯೋಗಿಕವಾಗಿ ಅದನ್ನು ನೋಡುವುದು, ಮತ್ತು ARM64 ಅನ್ನು ವೀಕ್ಷಿಸಲು ಸುಲಭವಾದ ಮಾರ್ಗವೆಂದರೆ eBPF ಅನ್ನು ಬಳಸುವುದು. eBPF (ಬರ್ಕ್ಲಿ ಪ್ಯಾಕೆಟ್ ಫಿಲ್ಟರ್ಗೆ ಚಿಕ್ಕದಾಗಿದೆ) ವರ್ಚುವಲ್ ಯಂತ್ರವು ಚಾಲನೆಯಲ್ಲಿದೆ query
) ಆಜ್ಞಾ ಸಾಲಿನಿಂದ. ಕರ್ನಲ್ ಮೂಲಗಳು ಓದುಗರಿಗೆ ಕರ್ನಲ್ ಏನು ಮಾಡಬಹುದು ಎಂಬುದನ್ನು ತಿಳಿಸುತ್ತದೆ; ಲೋಡ್ ಮಾಡಲಾದ ವ್ಯವಸ್ಥೆಯಲ್ಲಿ eBPF ಪರಿಕರಗಳನ್ನು ಚಾಲನೆ ಮಾಡುವುದರಿಂದ ಕರ್ನಲ್ ನಿಜವಾಗಿ ಏನು ಮಾಡುತ್ತಿದೆ ಎಂಬುದನ್ನು ತೋರಿಸುತ್ತದೆ.
ಅದೃಷ್ಟವಶಾತ್, ಉಪಕರಣಗಳ ಸಹಾಯದಿಂದ eBPF ಅನ್ನು ಬಳಸಲು ಪ್ರಾರಂಭಿಸುವುದು ತುಂಬಾ ಸುಲಭ bcc
ಸಿ ಕೋಡ್ನ ಸಣ್ಣ ಅಳವಡಿಕೆಗಳೊಂದಿಗೆ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳು, ಅಂದರೆ ಎರಡೂ ಭಾಷೆಗಳನ್ನು ತಿಳಿದಿರುವ ಯಾರಾದರೂ ಅವುಗಳನ್ನು ಸುಲಭವಾಗಿ ಮಾರ್ಪಡಿಸಬಹುದು. IN bcc/tools
80 ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ಗಳಿವೆ, ಅಂದರೆ ಡೆವಲಪರ್ ಅಥವಾ ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರು ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸಲು ಸೂಕ್ತವಾದ ಯಾವುದನ್ನಾದರೂ ಆಯ್ಕೆ ಮಾಡಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ.
ಚಾಲನೆಯಲ್ಲಿರುವ ಸಿಸ್ಟಂನಲ್ಲಿ VFS ಗಳು ಏನು ಕೆಲಸ ಮಾಡುತ್ತವೆ ಎಂಬುದರ ಕನಿಷ್ಠ ಮೇಲ್ನೋಟದ ಕಲ್ಪನೆಯನ್ನು ಪಡೆಯಲು, ಪ್ರಯತ್ನಿಸಿ vfscount
ಅಥವಾ vfsstat
. ಇದು ಡಜನ್ಗಟ್ಟಲೆ ಕರೆಗಳನ್ನು ತೋರಿಸುತ್ತದೆ ಎಂದು ಹೇಳೋಣ vfs_open()
ಮತ್ತು "ಅವನ ಸ್ನೇಹಿತರು" ಅಕ್ಷರಶಃ ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಸಂಭವಿಸುತ್ತದೆ.
vfsstat.py
VFS ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ಸರಳವಾಗಿ ಎಣಿಸುವ C ಕೋಡ್ ಒಳಸೇರಿಸುವಿಕೆಯೊಂದಿಗೆ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ ಆಗಿದೆ.
ಹೆಚ್ಚು ಕ್ಷುಲ್ಲಕ ಉದಾಹರಣೆಯನ್ನು ನೀಡೋಣ ಮತ್ತು ನಾವು ಯುಎಸ್ಬಿ ಫ್ಲ್ಯಾಷ್ ಡ್ರೈವ್ ಅನ್ನು ಕಂಪ್ಯೂಟರ್ಗೆ ಸೇರಿಸಿದಾಗ ಮತ್ತು ಸಿಸ್ಟಮ್ ಅದನ್ನು ಪತ್ತೆ ಮಾಡಿದಾಗ ಏನಾಗುತ್ತದೆ ಎಂದು ನೋಡೋಣ.
eBPF ಅನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಏನಾಗುತ್ತಿದೆ ಎಂಬುದನ್ನು ನೋಡಬಹುದು
/sys
USB ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಸೇರಿಸಿದಾಗ. ಸರಳ ಮತ್ತು ಸಂಕೀರ್ಣ ಉದಾಹರಣೆಯನ್ನು ಇಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.
ಮೇಲೆ ತೋರಿಸಿರುವ ಉದಾಹರಣೆಯಲ್ಲಿ, bcc
ಸಾಧನ sysfs_create_files()
. ನಾವು ಅದನ್ನು ನೋಡುತ್ತೇವೆ sysfs_create_files()
ಬಳಸಿಕೊಂಡು ಪ್ರಾರಂಭಿಸಲಾಯಿತು kworker
ಫ್ಲಾಶ್ ಡ್ರೈವ್ ಅನ್ನು ಸೇರಿಸಲಾಗಿದೆ ಎಂಬ ಅಂಶಕ್ಕೆ ಪ್ರತಿಕ್ರಿಯೆಯಾಗಿ ಸ್ಟ್ರೀಮ್ ಮಾಡಿ, ಆದರೆ ಯಾವ ಫೈಲ್ ಅನ್ನು ರಚಿಸಲಾಗಿದೆ? ಎರಡನೆಯ ಉದಾಹರಣೆಯು eBPF ನ ಶಕ್ತಿಯನ್ನು ತೋರಿಸುತ್ತದೆ. ಇಲ್ಲಿ trace.py
ಕರ್ನಲ್ ಬ್ಯಾಕ್ಟ್ರೇಸ್ (-K ಆಯ್ಕೆ) ಮತ್ತು ರಚಿಸಲಾದ ಫೈಲ್ನ ಹೆಸರನ್ನು ಮುದ್ರಿಸುತ್ತದೆ sysfs_create_files()
. ಸಿಂಗಲ್ ಸ್ಟೇಟ್ಮೆಂಟ್ ಅಳವಡಿಕೆಯು ಸಿ ಕೋಡ್ ಆಗಿದ್ದು, ಎಲ್ಎಲ್ವಿಎಂ ಅನ್ನು ಚಾಲನೆ ಮಾಡುವ ಪೈಥಾನ್ ಸ್ಕ್ರಿಪ್ಟ್ ಒದಗಿಸಿದ ಸುಲಭವಾಗಿ ಗುರುತಿಸಬಹುದಾದ ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ ಜಸ್ಟ್-ಇನ್-ಟೈಮ್ ಕಂಪೈಲರ್. ಇದು ಈ ಸಾಲನ್ನು ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಕರ್ನಲ್ ಒಳಗೆ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಪೂರ್ಣ ಕಾರ್ಯ ಸಹಿ sysfs_create_files ()
ಎರಡನೆಯ ಆಜ್ಞೆಯಲ್ಲಿ ಪುನರುತ್ಪಾದಿಸಬೇಕು ಆದ್ದರಿಂದ ಫಾರ್ಮ್ಯಾಟ್ ಸ್ಟ್ರಿಂಗ್ ನಿಯತಾಂಕಗಳಲ್ಲಿ ಒಂದನ್ನು ಉಲ್ಲೇಖಿಸಬಹುದು. ಈ ಸಿ ಕೋಡ್ನಲ್ಲಿನ ದೋಷಗಳು ಸಿ ಕಂಪೈಲರ್ನಿಂದ ಗುರುತಿಸಬಹುದಾದ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, -l ನಿಯತಾಂಕವನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟರೆ, ನೀವು "BPF ಪಠ್ಯವನ್ನು ಕಂಪೈಲ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ" ಎಂದು ನೋಡುತ್ತೀರಿ. ಸಿ ಮತ್ತು ಪೈಥಾನ್ನೊಂದಿಗೆ ಪರಿಚಿತವಾಗಿರುವ ಡೆವಲಪರ್ಗಳು ಉಪಕರಣಗಳನ್ನು ಕಂಡುಕೊಳ್ಳುತ್ತಾರೆ bcc
ವಿಸ್ತರಿಸಲು ಮತ್ತು ಬದಲಾಯಿಸಲು ಸುಲಭ.
USB ಡ್ರೈವ್ ಅನ್ನು ಸೇರಿಸಿದಾಗ, ಕರ್ನಲ್ ಬ್ಯಾಕ್ಟ್ರೇಸ್ PID 7711 ಥ್ರೆಡ್ ಎಂದು ತೋರಿಸುತ್ತದೆ kworker
ಇದು ಫೈಲ್ ಅನ್ನು ರಚಿಸಿದೆ «events»
в sysfs
. ಅದರಂತೆ, ಕರೆ sysfs_remove_files()
ಡ್ರೈವ್ ಅನ್ನು ತೆಗೆದುಹಾಕುವುದರಿಂದ ಫೈಲ್ ಅನ್ನು ಅಳಿಸಲಾಗಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ events
, ಇದು ಉಲ್ಲೇಖ ಎಣಿಕೆಯ ಸಾಮಾನ್ಯ ಪರಿಕಲ್ಪನೆಗೆ ಅನುರೂಪವಾಗಿದೆ. ಅದೇ ಸಮಯದಲ್ಲಿ, ವೀಕ್ಷಣೆ sysfs_create_link ()
eBPF ನೊಂದಿಗೆ USB ಡ್ರೈವ್ ಅನ್ನು ಸೇರಿಸುವಾಗ ಕನಿಷ್ಠ 48 ಸಾಂಕೇತಿಕ ಲಿಂಕ್ಗಳನ್ನು ರಚಿಸಲಾಗಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ.
ಹಾಗಾದರೆ ಈವೆಂಟ್ಗಳ ಫೈಲ್ನ ಅರ್ಥವೇನು? ಬಳಕೆ disk_add_events ()
, ಮತ್ತು ಒಂದೋ "media_change"
, ಅಥವಾ "eject_request"
ಈವೆಂಟ್ ಫೈಲ್ನಲ್ಲಿ ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು. ಇಲ್ಲಿ ಕರ್ನಲ್ ಬ್ಲಾಕ್ ಲೇಯರ್ "ಡಿಸ್ಕ್" ಕಾಣಿಸಿಕೊಂಡಿದೆ ಮತ್ತು ಹೊರಹಾಕಲ್ಪಟ್ಟಿದೆ ಎಂದು ಬಳಕೆದಾರರಿಗೆ ತಿಳಿಸುತ್ತದೆ. ಮೂಲದಿಂದ ಸಂಪೂರ್ಣವಾಗಿ ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂಬುದನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಲು ಪ್ರಯತ್ನಿಸುವುದಕ್ಕೆ ಹೋಲಿಸಿದರೆ, USB ಡ್ರೈವ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ಈ ಸಂಶೋಧನಾ ವಿಧಾನವು ಎಷ್ಟು ತಿಳಿವಳಿಕೆಯಾಗಿದೆ ಎಂಬುದನ್ನು ಗಮನಿಸಿ.
ಓದಲು-ಮಾತ್ರ ರೂಟ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳು ಎಂಬೆಡೆಡ್ ಸಾಧನಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತವೆ
ಸಹಜವಾಗಿ, ಸಾಕೆಟ್ನಿಂದ ಪ್ಲಗ್ ಅನ್ನು ಎಳೆಯುವ ಮೂಲಕ ಯಾರೂ ಸರ್ವರ್ ಅಥವಾ ಅವರ ಕಂಪ್ಯೂಟರ್ ಅನ್ನು ಆಫ್ ಮಾಡುವುದಿಲ್ಲ. ಆದರೆ ಯಾಕೆ? ಏಕೆಂದರೆ ಭೌತಿಕ ಶೇಖರಣಾ ಸಾಧನಗಳಲ್ಲಿನ ಮೌಂಟೆಡ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳು ಮಂದಗತಿಯ ಬರಹಗಳನ್ನು ಹೊಂದಿರಬಹುದು ಮತ್ತು ಅವುಗಳ ಸ್ಥಿತಿಯನ್ನು ದಾಖಲಿಸುವ ಡೇಟಾ ರಚನೆಗಳು ಸಂಗ್ರಹಣೆಗೆ ಬರಹಗಳೊಂದಿಗೆ ಸಿಂಕ್ರೊನೈಸ್ ಆಗದೇ ಇರಬಹುದು. ಇದು ಸಂಭವಿಸಿದಾಗ, ಸಿಸ್ಟಮ್ ಮಾಲೀಕರು ಉಪಯುಕ್ತತೆಯನ್ನು ಪ್ರಾರಂಭಿಸಲು ಮುಂದಿನ ಬೂಟ್ ತನಕ ಕಾಯಬೇಕಾಗುತ್ತದೆ. fsck filesystem-recovery
ಮತ್ತು, ಕೆಟ್ಟ ಸಂದರ್ಭದಲ್ಲಿ, ಡೇಟಾವನ್ನು ಕಳೆದುಕೊಳ್ಳುವುದು.
ಆದಾಗ್ಯೂ, ಅನೇಕ IoT ಸಾಧನಗಳು, ಹಾಗೆಯೇ ರೂಟರ್ಗಳು, ಥರ್ಮೋಸ್ಟಾಟ್ಗಳು ಮತ್ತು ಕಾರುಗಳು ಈಗ Linux ಅನ್ನು ರನ್ ಮಾಡುತ್ತವೆ ಎಂದು ನಮಗೆಲ್ಲರಿಗೂ ತಿಳಿದಿದೆ. ಈ ಸಾಧನಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವು ಯಾವುದೇ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ ಮತ್ತು ಅವುಗಳನ್ನು "ಸ್ವಚ್ಛವಾಗಿ" ಆಫ್ ಮಾಡಲು ಯಾವುದೇ ಮಾರ್ಗವಿಲ್ಲ. ಕಂಟ್ರೋಲ್ ಯುನಿಟ್ಗೆ ವಿದ್ಯುತ್ ಇದ್ದಾಗ ಡೆಡ್ ಬ್ಯಾಟರಿಯೊಂದಿಗೆ ಕಾರನ್ನು ಪ್ರಾರಂಭಿಸುವುದನ್ನು ಕಲ್ಪಿಸಿಕೊಳ್ಳಿ fsck
ಅಂತಿಮವಾಗಿ ಎಂಜಿನ್ ಯಾವಾಗ ಚಾಲನೆಯನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ? ಮತ್ತು ಉತ್ತರ ಸರಳವಾಗಿದೆ. ಎಂಬೆಡೆಡ್ ಸಾಧನಗಳು ರೂಟ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಅವಲಂಬಿಸಿವೆ ro-rootfs
(ಓದಲು-ಮಾತ್ರ ರೂಟ್ ಫೈಲ್ಸಿಸ್ಟಮ್)).
ro-rootfs
ದೃಢೀಕರಣಕ್ಕಿಂತ ಕಡಿಮೆ ಸ್ಪಷ್ಟವಾದ ಅನೇಕ ಪ್ರಯೋಜನಗಳನ್ನು ನೀಡುತ್ತವೆ. ಮಾಲ್ವೇರ್ಗೆ ಬರೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದು ಒಂದು ಪ್ರಯೋಜನವಾಗಿದೆ /usr
ಅಥವಾ /lib
, ಯಾವುದೇ Linux ಪ್ರಕ್ರಿಯೆಯು ಅಲ್ಲಿ ಬರೆಯಲು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ. ಮತ್ತೊಂದು, ದೂರಸ್ಥ ಸಾಧನಗಳ ಕ್ಷೇತ್ರ ಬೆಂಬಲಕ್ಕಾಗಿ ಬಹುಮಟ್ಟಿಗೆ ಬದಲಾಗದ ಫೈಲ್ ಸಿಸ್ಟಮ್ ನಿರ್ಣಾಯಕವಾಗಿದೆ, ಏಕೆಂದರೆ ಬೆಂಬಲ ಸಿಬ್ಬಂದಿಗಳು ಕ್ಷೇತ್ರ ವ್ಯವಸ್ಥೆಗಳಿಗೆ ನಾಮಮಾತ್ರವಾಗಿ ಹೋಲುವ ಸ್ಥಳೀಯ ವ್ಯವಸ್ಥೆಗಳನ್ನು ಅವಲಂಬಿಸಿರುತ್ತಾರೆ. ಪ್ರಾಯಶಃ ಅತ್ಯಂತ ಮುಖ್ಯವಾದ (ಆದರೆ ಅತ್ಯಂತ ಕಪಟ) ಪ್ರಯೋಜನವೆಂದರೆ, ವ್ಯವಸ್ಥೆಯ ವಿನ್ಯಾಸ ಹಂತದಲ್ಲಿ ಯಾವ ಸಿಸ್ಟಮ್ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಬದಲಾಗುವುದಿಲ್ಲ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು ro-rootfs ಡೆವಲಪರ್ಗಳನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ. ರೋ-ರೂಟ್ಫ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವುದು ಅಸಹನೀಯ ಮತ್ತು ನೋವಿನಿಂದ ಕೂಡಿದೆ, ಏಕೆಂದರೆ ಕಾನ್ಸ್ಟ್ ವೇರಿಯಬಲ್ಗಳು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಲ್ಲಿರುತ್ತವೆ, ಆದರೆ ಅವುಗಳ ಪ್ರಯೋಜನಗಳು ಹೆಚ್ಚುವರಿ ಓವರ್ಹೆಡ್ ಅನ್ನು ಸುಲಭವಾಗಿ ಸಮರ್ಥಿಸುತ್ತವೆ.
ಸೃಷ್ಟಿ rootfs
ಎಂಬೆಡೆಡ್ ಡೆವಲಪರ್ಗಳಿಗೆ ಓದಲು-ಮಾತ್ರ ಕೆಲವು ಹೆಚ್ಚುವರಿ ಪ್ರಯತ್ನದ ಅಗತ್ಯವಿದೆ, ಮತ್ತು VFS ಚಿತ್ರದಲ್ಲಿ ಬರುತ್ತದೆ. Linux ಗೆ ಫೈಲ್ಗಳು ಇರಬೇಕು /var
ಬರೆಯಬಹುದಾದವು, ಮತ್ತು ಜೊತೆಗೆ, ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗಳನ್ನು ಚಲಾಯಿಸುವ ಅನೇಕ ಜನಪ್ರಿಯ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಸಂರಚನೆಯನ್ನು ರಚಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತವೆ dot-files
в $HOME
. ಹೋಮ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿನ ಕಾನ್ಫಿಗರೇಶನ್ ಫೈಲ್ಗಳಿಗೆ ಒಂದು ಪರಿಹಾರವೆಂದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಪೂರ್ವ-ರಚನೆ ಮತ್ತು ಅವುಗಳನ್ನು ನಿರ್ಮಿಸುವುದು rootfs
. ಫಾರ್ /var
ಒಂದು ಸಂಭವನೀಯ ವಿಧಾನವೆಂದರೆ ಅದನ್ನು ಪ್ರತ್ಯೇಕ ಬರೆಯಬಹುದಾದ ವಿಭಾಗದಲ್ಲಿ ಆರೋಹಿಸುವುದು /
ಓದಲು ಮಾತ್ರ ಅಳವಡಿಸಲಾಗಿದೆ. ಬೈಂಡ್ ಅಥವಾ ಓವರ್ಲೇ ಆರೋಹಣಗಳನ್ನು ಬಳಸುವುದು ಮತ್ತೊಂದು ಜನಪ್ರಿಯ ಪರ್ಯಾಯವಾಗಿದೆ.
ಲಿಂಕ್ ಮಾಡಬಹುದಾದ ಮತ್ತು ಜೋಡಿಸಬಹುದಾದ ಆರೋಹಣಗಳು, ಕಂಟೈನರ್ಗಳಿಂದ ಅವುಗಳ ಬಳಕೆ
ಕಮಾಂಡ್ ಎಕ್ಸಿಕ್ಯೂಶನ್ man mount
ಬೈಂಡಬಲ್ ಮತ್ತು ಓವರ್ಲೇಬಲ್ ಮೌಂಟ್ಗಳ ಬಗ್ಗೆ ತಿಳಿದುಕೊಳ್ಳಲು ಉತ್ತಮ ಮಾರ್ಗವಾಗಿದೆ, ಇದು ಡೆವಲಪರ್ಗಳು ಮತ್ತು ಸಿಸ್ಟಮ್ ನಿರ್ವಾಹಕರಿಗೆ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ಒಂದು ಮಾರ್ಗದಲ್ಲಿ ರಚಿಸುವ ಸಾಮರ್ಥ್ಯವನ್ನು ನೀಡುತ್ತದೆ ಮತ್ತು ನಂತರ ಅದನ್ನು ಇನ್ನೊಂದು ಮಾರ್ಗದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗೆ ಬಹಿರಂಗಪಡಿಸುತ್ತದೆ. ಎಂಬೆಡೆಡ್ ಸಿಸ್ಟಮ್ಗಳಿಗಾಗಿ, ಫೈಲ್ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವ ಸಾಮರ್ಥ್ಯ ಎಂದರ್ಥ /var
ಓದಲು-ಮಾತ್ರ ಫ್ಲ್ಯಾಷ್ ಡ್ರೈವ್ನಲ್ಲಿ, ಆದರೆ ಓವರ್ಲೇ ಅಥವಾ ಲಿಂಕ್ ಮಾಡಬಹುದಾದ ಆರೋಹಣ ಮಾರ್ಗ tmpfs
в /var
ಲೋಡ್ ಮಾಡುವಾಗ, ಇದು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಅಲ್ಲಿ ಟಿಪ್ಪಣಿಗಳನ್ನು ಬರೆಯಲು ಅನುಮತಿಸುತ್ತದೆ (ಸ್ಕ್ರಾಲ್). ಮುಂದಿನ ಬಾರಿ ನೀವು ಬದಲಾವಣೆಗಳನ್ನು ಆನ್ ಮಾಡಿದಾಗ /var
ನಷ್ಟವಾಗುತ್ತದೆ. ಒವರ್ಲೆ ಮೌಂಟ್ ನಡುವೆ ಒಕ್ಕೂಟವನ್ನು ರಚಿಸುತ್ತದೆ tmpfs
ಮತ್ತು ಆಧಾರವಾಗಿರುವ ಫೈಲ್ ಸಿಸ್ಟಮ್ ಮತ್ತು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಫೈಲ್ಗಳಿಗೆ ತೋರಿಕೆಯ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ನಿಮಗೆ ಅನುಮತಿಸುತ್ತದೆ ro-tootf
ಆದರೆ ಬೈಂಡಬಲ್ ಮೌಂಟ್ ಹೊಸದನ್ನು ಖಾಲಿ ಮಾಡಬಹುದು tmpfs
ಫೋಲ್ಡರ್ಗಳು ಬರೆಯಬಹುದಾದಂತೆ ಗೋಚರಿಸುತ್ತವೆ ro-rootfs
ಮಾರ್ಗಗಳು. ಹಾಗೆಯೇ overlayfs
ಇದು ಸರಿಯಾದದ್ದು (proper
) ಫೈಲ್ ಸಿಸ್ಟಮ್ ಪ್ರಕಾರ, ಬೈಂಡಬಲ್ ಮೌಂಟ್ ಅನ್ನು ಅಳವಡಿಸಲಾಗಿದೆ
ಓವರ್ಲೇ ಮತ್ತು ಲಿಂಕ್ ಮಾಡಬಹುದಾದ ಆರೋಹಣದ ವಿವರಣೆಯನ್ನು ಆಧರಿಸಿ, ಯಾರೂ ಆಶ್ಚರ್ಯಪಡುವುದಿಲ್ಲ mountsnoop
ರಿಂದ bcc
.
ಸವಾಲು system-nspawn
ಚಾಲನೆಯಲ್ಲಿರುವಾಗ ಕಂಟೇನರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ mountsnoop.py
.
ಏನಾಯಿತು ಎಂದು ನೋಡೋಣ:
ಚಾಲನೆಯಲ್ಲಿದೆ mountsnoop
ಧಾರಕವು "ಬೂಟ್ ಆಗುತ್ತಿರುವಾಗ" ಕಂಟೇನರ್ನ ರನ್ಟೈಮ್ ಲಿಂಕ್ ಮಾಡಲಾದ ಆರೋಹಣದ ಮೇಲೆ ಹೆಚ್ಚು ಅವಲಂಬಿತವಾಗಿದೆ ಎಂದು ತೋರಿಸುತ್ತದೆ (ದೀರ್ಘ ಔಟ್ಪುಟ್ನ ಪ್ರಾರಂಭವನ್ನು ಮಾತ್ರ ತೋರಿಸಲಾಗಿದೆ).
ಇದು systemd-nspawn
ನಲ್ಲಿ ಆಯ್ದ ಫೈಲ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ procfs
и sysfs
ಅದಕ್ಕೆ ಮಾರ್ಗವಾಗಿ ಕಂಟೇನರ್ಗೆ ಹೋಸ್ಟ್ ಮಾಡಿ rootfs
... ಇದಲ್ಲದೆ MS_BIND
ಬೈಂಡಿಂಗ್ ಮೌಂಟ್ ಅನ್ನು ಹೊಂದಿಸುವ ಫ್ಲ್ಯಾಗ್, ಮೌಂಟ್ನಲ್ಲಿರುವ ಕೆಲವು ಇತರ ಫ್ಲ್ಯಾಗ್ಗಳು ಹೋಸ್ಟ್ ಮತ್ತು ಕಂಟೈನರ್ ನೇಮ್ಸ್ಪೇಸ್ಗಳಿಗೆ ಬದಲಾವಣೆಗಳ ನಡುವಿನ ಸಂಬಂಧವನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಲಿಂಕ್ ಮಾಡಲಾದ ಆರೋಹಣವು ಬದಲಾವಣೆಗಳನ್ನು ಬಿಟ್ಟುಬಿಡಬಹುದು /proc
и /sys
ಧಾರಕದಲ್ಲಿ, ಅಥವಾ ಕರೆಗೆ ಅನುಗುಣವಾಗಿ ಅವುಗಳನ್ನು ಮರೆಮಾಡಿ.
ತೀರ್ಮಾನಕ್ಕೆ
ಲಿನಕ್ಸ್ನ ಒಳಗಿನ ಕಾರ್ಯವನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅಸಾಧ್ಯವಾದ ಕೆಲಸದಂತೆ ತೋರುತ್ತದೆ, ಏಕೆಂದರೆ ಕರ್ನಲ್ ಸ್ವತಃ ದೊಡ್ಡ ಪ್ರಮಾಣದ ಕೋಡ್ ಅನ್ನು ಹೊಂದಿದ್ದು, ಲಿನಕ್ಸ್ ಬಳಕೆದಾರ ಸ್ಪೇಸ್ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಸಿ ಲೈಬ್ರರಿಗಳಲ್ಲಿನ ಸಿಸ್ಟಮ್ ಕರೆ ಇಂಟರ್ಫೇಸ್ಗಳನ್ನು ಹೊರತುಪಡಿಸಿ glibc
. ಪ್ರಗತಿಯನ್ನು ಸಾಧಿಸಲು ಒಂದು ಮಾರ್ಗವೆಂದರೆ ಒಂದು ಕರ್ನಲ್ ಉಪವ್ಯವಸ್ಥೆಯ ಮೂಲ ಕೋಡ್ ಅನ್ನು ಓದುವುದು, ಸಿಸ್ಟಮ್ ಕರೆಗಳು ಮತ್ತು ಬಳಕೆದಾರ-ಸ್ಪೇಸ್ ಹೆಡರ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಒತ್ತು ನೀಡುವುದರ ಜೊತೆಗೆ ಟೇಬಲ್ನಂತಹ ಮುಖ್ಯ ಆಂತರಿಕ ಕರ್ನಲ್ ಇಂಟರ್ಫೇಸ್ಗಳು file_operations
. ಫೈಲ್ ಕಾರ್ಯಾಚರಣೆಗಳು "ಎಲ್ಲವೂ ಒಂದು ಫೈಲ್" ತತ್ವವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಅವುಗಳನ್ನು ನಿರ್ವಹಿಸಲು ವಿಶೇಷವಾಗಿ ಆನಂದದಾಯಕವಾಗಿದೆ. ಉನ್ನತ ಮಟ್ಟದ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ C ಕರ್ನಲ್ ಮೂಲ ಫೈಲ್ಗಳು fs/
ವರ್ಚುವಲ್ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳ ಅಳವಡಿಕೆಯನ್ನು ಪ್ರಸ್ತುತಪಡಿಸುತ್ತದೆ, ಇದು ಜನಪ್ರಿಯ ಫೈಲ್ ಸಿಸ್ಟಮ್ಗಳು ಮತ್ತು ಶೇಖರಣಾ ಸಾಧನಗಳ ನಡುವೆ ವಿಶಾಲವಾದ ಮತ್ತು ತುಲನಾತ್ಮಕವಾಗಿ ಸರಳವಾದ ಹೊಂದಾಣಿಕೆಯನ್ನು ಒದಗಿಸುವ ಹೊದಿಕೆ ಪದರವಾಗಿದೆ. Linux ನೇಮ್ಸ್ಪೇಸ್ಗಳ ಮೂಲಕ ಲಿಂಕ್ ಮಾಡುವುದು ಮತ್ತು ಓವರ್ಲೇ ಆರೋಹಿಸುವುದು VFS ನ ಮ್ಯಾಜಿಕ್ ಆಗಿದ್ದು ಅದು ಓದಲು-ಮಾತ್ರ ಕಂಟೈನರ್ಗಳು ಮತ್ತು ರೂಟ್ ಫೈಲ್ಸಿಸ್ಟಮ್ಗಳನ್ನು ರಚಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಮೂಲ ಕೋಡ್, eBPF ಕೋರ್ ಟೂಲ್ ಮತ್ತು ಅದರ ಇಂಟರ್ಫೇಸ್ ಪರೀಕ್ಷೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಲಾಗಿದೆ bcc
ಕೋರ್ ಅನ್ವೇಷಣೆಯನ್ನು ಎಂದಿಗಿಂತಲೂ ಸುಲಭಗೊಳಿಸುತ್ತದೆ.
ಸ್ನೇಹಿತರೇ, ಬರೆಯಿರಿ, ಈ ಲೇಖನವು ನಿಮಗೆ ಉಪಯುಕ್ತವಾಗಿದೆಯೇ? ಬಹುಶಃ ನೀವು ಯಾವುದೇ ಕಾಮೆಂಟ್ಗಳು ಅಥವಾ ಟೀಕೆಗಳನ್ನು ಹೊಂದಿದ್ದೀರಾ? ಮತ್ತು ಲಿನಕ್ಸ್ ಅಡ್ಮಿನಿಸ್ಟ್ರೇಟರ್ ಕೋರ್ಸ್ನಲ್ಲಿ ಆಸಕ್ತಿ ಹೊಂದಿರುವವರನ್ನು ಆಹ್ವಾನಿಸಲಾಗಿದೆ
ಮೂಲ: www.habr.com