Ngamaxesha athile, ukuze ndifudukele kwiZiko loSasazo oluPhakathi, ndidliwano-ndlebe kwiinkampani ezinkulu ezahlukahlukeneyo, ikakhulu eSt. Petersburg naseMoscow, kwisikhundla seDevOps. Ndiqaphele ukuba iinkampani ezininzi (iinkampani ezininzi ezilungileyo, umzekelo iYandex) zibuza imibuzo emibini efanayo:
- yintoni inode;
- ngenxa yeziphi izizathu onokuthi ufumane impazamo yokubhala idisk (okanye umzekelo: kutheni unokuphelelwa yindawo yediski, undoqo uyafana).
Ngokufuthi ukwenzeka, ndandiqinisekile ukuba ndiwazi kakuhle lo mbandela, kodwa ndathi nje ndakuqalisa ukucacisa, kwabonakala izikhewu kulwazi. Ukucwangcisa ulwazi lwam, gcwalisa izikhewu kwaye ndingaphindi ndihlazeke, ndibhala eli nqaku, mhlawumbi liya kuba luncedo komnye umntu.
Ndiya kuqala ukusuka ezantsi, i.e. ukusuka kwi-hard drive (siya kulahla i-flash drives, ii-SSD kunye nezinye izinto zanamhlanje; umzekelo, makhe siqwalasele nayiphi na i-20 okanye i-80 gig drive endala, ekubeni ubungakanani bebhloko kukho i-512 bytes).
I-hard drive ayiyazi indlela yokujongana ne-byte yendawo nge-byte; yahlulahlulwe ngokwemeko ibe ziibhloko. Amanani ebloko aqala ku-0. (Oku kubizwa ngokuba yi-LBA, iinkcukacha apha:
Njengoko kunokubonwa kumzobo, ndikhethe iibhloko ze-LBA njengenqanaba le-HDD. Ngendlela, unokubona ukuba yeyiphi isayizi yebhloko yediski yakho efana nale:
root@ubuntu:/home/serp# blockdev --getpbsz /dev/sdb
512
Inqanaba elingasentla sisahlulelo, esinye sediski yonke (kwakhona ukwenza lula). Amaxesha amaninzi, zimbini iindidi zophawu lokwahlulahlula zisetyenziswa: msdos kunye negpt. Ngokufanelekileyo, i-msdos yifomati endala exhasa iidiski ukuya kuthi ga kwi-2Tb, i-gpt yifomati entsha ekwaziyo ukujongana nokuya kuthi ga kwi-1 zettabyte ye-512 byte blocks. Kwimeko yethu, sinesahlulo sohlobo lwe-msdos, njengoko kunokubonwa kumfanekiso, ulwahlulo luqala ngebhloko ye-1, ngelixa i-zero isetyenziselwa i-MBR.
Kwisahlulelo sokuqala ndidale inkqubo yefayile ye-ext2, ubungakanani bayo obungagqibekanga bebhloko yi-4096 bytes, ekwabonakaliswa kumzobo. Ungajonga ubungakanani bebhloko yesixokelelwano sefayile ngolu hlobo:
root@ubuntu:/home/serp# tune2fs -l /dev/sdb1
tune2fs 1.42.9 (4-Feb-2014)
Filesystem volume name: <none>
Last mounted on: <not available>
Filesystem UUID: a600bf40-f660-41f6-a3e6-96c303995479
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 65536
Block count: 261888
Reserved block count: 13094
Free blocks: 257445
Free inodes: 65525
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 63
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Filesystem created: Fri Aug 2 15:02:13 2019
Last mount time: n/a
Last write time: Fri Aug 2 15:02:14 2019
Mount count: 0
Maximum mount count: -1
Last checked: Fri Aug 2 15:02:13 2019
Check interval: 0 (<none>)
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Default directory hash: half_md4
Directory Hash Seed: c0155456-ad7d-421f-afd1-c898746ccd76
Ipharamitha esiyifunayo yi "Block size".
Ngoku inxalenye enomdla yindlela yokufunda ifayile ye/home/serp/testfile? Ifayile ineebhloko zenkqubo yefayile enye okanye ngaphezulu apho idatha yayo igcinwa khona. Ukwazi igama lefayile, ungayifumana njani? Zeziphi iibhloko ekufuneka ndizifunde?
Apha kulapho iinodes zisiza khona. Inkqubo yefayile ye-ext2fs ine "tafile" equlethe ulwazi lwazo zonke ii-inodes. Inani lee-inodes kwimeko ye-ext2fs imiselwe xa kusenziwa inkqubo yefayile. Sijonga amanani afunekayo "kwi-Inode count" ipharamitha yemveliso ye-tune2fs, okt. sinamaqhekeza angama-65536. I-inode iqulethe ulwazi esiludingayo: uluhlu lweebhloko zesixokelelwano sefayile yefayile esiyifunayo. Ungayifumana njani inombolo ye-inode yefayile enikiweyo?
Igama elihambelanayo kunye nenombolo ye-inode iqulethwe kuluhlu, kwaye i-directory kwi-ext2fs luhlobo olukhethekileyo lwefayile, okt. nayo inenombolo yayo ye-inode. Ukuqhawula esi sangqa esibi, inombolo ye-inode "elungisiweyo" "2" yabelwa kwi-root directory. Makhe sijonge imixholo ye-inode inombolo 2:
root@ubuntu:/# debugfs /dev/sdb1
debugfs 1.42.9 (4-Feb-2014)
debugfs: stat <2>
Inode: 2 Type: directory Mode: 0755 Flags: 0x0
Generation: 0 Version: 0x00000000:00000002
User: 0 Group: 0 Size: 4096
File ACL: 0 Directory ACL: 0
Links: 3 Blockcount: 8
Fragment: Address: 0 Number: 0 Size: 0
ctime: 0x5d43cb51:16b61bcc -- Fri Aug 2 16:34:09 2019
atime: 0x5d43c247:b704301c -- Fri Aug 2 15:55:35 2019
mtime: 0x5d43cb51:16b61bcc -- Fri Aug 2 16:34:09 2019
crtime: 0x5d43b5c6:00000000 -- Fri Aug 2 15:02:14 2019
Size of extra inode fields: 28
BLOCKS:
(0):579
TOTAL: 1
Njengoko ubona, i-directory esiyidingayo iqulethwe kwinombolo yebhloko 579. Kuyo siya kufumana inombolo ye-node yefolda yasekhaya, kwaye njalo phantsi kwekhonkco kude kube kuluhlu lwe-serp sibona inombolo ye-node yefayile eceliwe. Ukuba ngokukhawuleza umntu ufuna ukujonga ukuba inombolo ichanekile kwaye ingaba ulwazi oluyimfuneko lukhona, akunzima. Siya:
root@ubuntu:/# dd if=/dev/sdb1 of=/home/serp/dd_image bs=4096 count=1 skip=579
1+0 records in
1+0 records out
4096 bytes (4,1 kB) copied, 0,000184088 s, 22,3 MB/s
root@ubuntu:/# hexdump -c /home/serp/dd_image
Kwisiphumo unokufunda amagama eefayile kulawulo.
Ke ndiza kumbuzo ophambili: "zeziphi izizathu ezinokuthi zenzeke impazamo yokurekhoda?"
Ngokwendalo, oku kuya kwenzeka ukuba akukho zibhloko zasimahla ezishiyekileyo kwinkqubo yefayile. Yintoni enokwenziwa kule meko? Ngaphandle kwento ecacileyo "cima nantoni na engeyomfuneko", kufuneka ukhumbule ukuba kwiinkqubo zefayile ze-ext2,3 kunye ne-4 kukho into ethi "Ubalo lwebhloko egciniweyo". Ukuba ujonga kuluhlu olungentla, sine "13094" iibhloko ezinjalo. Ezi ziibhloko ezibhalwe kuphela ngumsebenzisi wengcambu. kodwa ukuba ufuna ukuwusombulula ngokukhawuleza umba, njengesisombululo sexeshana ungawenza afumaneke kuye wonke umntu, okukhokelela kwindawo yasimahla:
root@ubuntu:/mnt# tune2fs -m 0 /dev/sdb1
tune2fs 1.42.9 (4-Feb-2014)
Setting reserved blocks percentage to 0% (0 blocks)
Ezo. ngokungagqibekanga, une-5% yesithuba sedisk esingafumanekiyo ekubhaleni, kwaye unikwe umthamo weediski zangoku, oku kunokuba ngamakhulu egigabytes.
Inokuba yintoni enye? Kwakhona kunokwenzeka ukuba kukho iibhloko zamahhala, kodwa azikho ii-nodes. Oku kuqhele ukwenzeka ukuba uneqela leefayile kwindlela yakho yefayile ezincinci kunobungakanani bebhloko yenkqubo yefayile. Ukuqwalasela ukuba i-inode ye-1 ichithwa kwi-1 ifayile okanye i-directory, kwaye iyonke sinayo (kwinkqubo yefayile enikeziweyo) 65536 - imeko ingaphezulu kwenyani. Oku kunokubonwa ngokucacileyo kwimveliso yomyalelo we-df:
serp@ubuntu:~$ df -hi
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 493K 480 492K 1% /dev
tmpfs 493K 425 493K 1% /run
/dev/xvda1 512K 240K 273K 47% /
none 493K 2 493K 1% /sys/fs/cgroup
none 493K 2 493K 1% /run/lock
none 493K 1 493K 1% /run/shm
none 493K 2 493K 1% /run/user
/dev/xvdc1 320K 4,1K 316K 2% /var
/dev/xvdb1 64K 195 64K 1% /home
/dev/xvdh1 4,0M 3,1M 940K 78% /var/www
serp@ubuntu:~$ df -h
Filesystem Size Used Avail Use% Mounted on
udev 2,0G 4,0K 2,0G 1% /dev
tmpfs 395M 620K 394M 1% /run
/dev/xvda1 7,8G 2,9G 4,6G 39% /
none 4,0K 0 4,0K 0% /sys/fs/cgroup
none 5,0M 0 5,0M 0% /run/lock
none 2,0G 0 2,0G 0% /run/shm
none 100M 0 100M 0% /run/user
/dev/xvdc1 4,8G 2,6G 2,0G 57% /var
/dev/xvdb1 990M 4,0M 919M 1% /home
/dev/xvdh1 63G 35G 25G 59% /var/www
Njengoko kubonakala ngokucacileyo kwi- / var / www isahlulo, inani leebhloko zamahhala kwinkqubo yefayile kunye nenani lee-nodes zamahhala ziyahluka kakhulu.
Ukuba uphelelwe yi-inodes, andiyi kukuxelela nayiphi na i-spells, kuba ... akukho (ukuba andilunganga, undazise). Ke kwizahlulo apho iifayile ezincinci ziphindaphindeka, kufuneka ukhethe inkqubo yefayile ngobulumko. Ngokomzekelo, i-btrfs inodes ayinakuphela, kuba Ezintsha zenziwe ngokuguquguqukayo ukuba kuyimfuneko.
umthombo: www.habr.com