Ihe gbasara inode

Oge ụfọdụ, iji kwaga Central Distribution Center, m na-agba ajụjụ ọnụ na nnukwu ụlọ ọrụ dị iche iche, karịsịa na St. Petersburg na Moscow, maka ọnọdụ DevOps. Achọpụtara m na ọtụtụ ụlọ ọrụ (ọtụtụ ezigbo ụlọ ọrụ, dịka ọmụmaatụ Yandex) na-ajụ ajụjụ abụọ yiri ya:

  • ihe bụ inode;
  • n'ihi gịnị kpatara ị ga-eji nweta njehie ide diski (ma ọ bụ ọmụmaatụ: ihe kpatara na ohere diski ga-agwụ, isi ihe bụ otu).

Dị ka ọ na-emekarị, ejiri m n'aka na m maara isiokwu a nke ọma, ma ozugbo m malitere ịkọwa, ọdịiche dị na ihe ọmụma pụtara ìhè. Iji hazie ihe ọmụma m n'usoro, jupụta oghere na agaghịkwa emenye onwe m ihere, m na-ede akụkọ a, ma eleghị anya ọ ga-abara onye ọzọ uru.

M ga-amalite site na ala, ya bụ. site na draịvụ ike (anyị ga-atụfu draịva flash, SSDs na ihe ọgbara ọhụrụ ndị ọzọ; dịka ọmụmaatụ, ka anyị tụlee draịva ochie 20 ma ọ bụ 80 gig ọ bụla, ebe ọ bụ na nha ngọngọ nwere 512 bytes).

Ike draịvụ ahụ amaghị ka e si edozi byte ohere ya site na byte; a na-ekewa ya n'ọnọdụ ọ bụla na ngọngọ. Nọmba ngọngọ na-amalite site na 0. (Nke a na-akpọ LBA, nkọwa ebe a: ru.wikipedia.org/wiki/LBA)

Ihe gbasara inode

Dịka enwere ike ịhụ site na ọnụ ọgụgụ a, ahọpụtara m ihe mgbochi LBA dị ka ọkwa HDD. Site n'ụzọ, ị nwere ike ịhụ ihe ngọngọ nha diski gị nwere dị ka nke a:

root@ubuntu:/home/serp# blockdev --getpbsz /dev/sdb
512

Ọkwa dị n'elu bụ nkebi, otu maka diski dum (ọzọ maka ịdị mfe). Ọtụtụ mgbe, a na-eji ụdị akara nkebi abụọ: msdos na gpt. N'ihi ya, msdos bụ usoro ochie nke na-akwado diski ruo 2Tb, gpt bụ usoro ọhụrụ nwere ike ịza ihe ruru 1 zettabyte nke 512 byte blocks. N'ọnọdụ anyị, anyị nwere akụkụ nke ụdị msdos, dị ka a pụrụ ịhụ site na ọnụ ọgụgụ ahụ, nkebi ahụ na-amalite na ngọngọ Nke 1, ebe efu na-eji MBR.

Na nkebi nke mbụ m mepụtara usoro faịlụ ext2, nkwụsị nke ndabara ya bụ 4096 bytes, nke na-egosipụtakwa na ọnụ ọgụgụ ahụ. Ị nwere ike ịlele nha ngọngọ sistemụ faịlụ dị ka nke a:

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

Oke ihe anyị chọrọ bụ "nha ngọngọ".

Ugbu a akụkụ na-adọrọ mmasị bụ ka esi agụ faịlụ /home/serp/testfile? Otu faịlụ nwere otu ngọngọ sistemụ faịlụ ma ọ bụ karịa ebe echekwara data ya. Ịmara aha faịlụ, otu esi achọta ya? Kedu ihe mgbochi m kwesịrị ịgụ?

Nke a bụ ebe inodes na-aba uru. Sistemụ faịlụ ext2fs nwere “tebụl” nke nwere ozi maka inodes niile. A na-edobe ọnụọgụ inodes n'ihe banyere ext2fs mgbe ị na-emepụta usoro faịlụ. Anyị na-ele nọmba achọrọ na paramita "Inode count" nke tune2fs mmepụta, i.e. anyị nwere 65536 iberibe. Inode nwere ozi anyị chọrọ: ndepụta nke ngọngọ sistemụ faịlụ maka faịlụ anyị na-achọ. Otu esi achọta nọmba inode maka faịlụ enyere?

Aha kwekọrọ na nọmba inode dị n'ime ndekọ aha, na ndekọ na ext2fs bụ ụdị faịlụ pụrụ iche, ya bụ. nwekwara nọmba inode nke ya. Iji mebie okirikiri ọjọọ a, ekenye nọmba inode “2” edobere na ndekọ ndekọ mgbọrọgwụ. Ka anyị lelee ọdịnaya nke nọmba inode 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

Dị ka ị pụrụ ịhụ, akwụkwọ ndekọ aha anyị chọrọ dị na ngọngọ nọmba 579. N'ime ya, anyị ga-ahụ ọnụ ọgụgụ ọnụ maka ebe nchekwa nchekwa, na otú na ala yinye ruo mgbe serp ndekọ anyị na-ahụ ọnụ ọnụ ọgụgụ maka arịrịọ faịlụ. Ọ bụrụ na mmadụ na mberede chọrọ ịlele ma ọnụọgụgụ ahụ ọ bụ eziokwu yana ma ozi dị mkpa ọ dị, ọ naghị esiri ike. Anyị na-eme:

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

Na mmepụta ị nwere ike ịgụ aha faịlụ na ndekọ.

Ya mere, abịara m na ajụjụ bụ isi: "n'ihi gịnị kpatara njehie ndekọ nwere ike ime?"

Dị ka o kwesịrị ịdị, nke a ga-eme ma ọ bụrụ na enweghị ihe mgbochi efu fọdụrụ na sistemụ faịlụ. Kedu ihe a ga-eme na nke a? E wezụga ihe doro anya "ihichapụ ihe ọ bụla na-adịghị mkpa", ị kwesịrị icheta na na ext2,3 na 4 faịlụ usoro e nwere ihe dị ka "Reserved block count". Ọ bụrụ na ị na-ele na ndepụta n'elu, anyị nwere "13094" dị otú ahụ ngọngọ. Ndị a bụ ngọngọ nke onye ọrụ mgbọrọgwụ nwere ike dee. ma ọ bụrụ na ịchọrọ idozi esemokwu ahụ ngwa ngwa, dịka ngwọta nwa oge ị nwere ike ime ka ha dịrị onye ọ bụla, na-ebute ohere ụfọdụ n'efu:

root@ubuntu:/mnt# tune2fs -m 0 /dev/sdb1
tune2fs 1.42.9 (4-Feb-2014)
Setting reserved blocks percentage to 0% (0 blocks)

Ndị ahụ. site na ndabara, ị nwere 5% nke ohere diski adịghị maka ide, ma nye ụda diski ọgbara ọhụrụ, nke a nwere ike ịbụ narị gigabytes.

Kedu ihe ọzọ ọ nwere ike ịbụ? O nwekwara ike ịbụ na e nwere ihe mgbochi n'efu, ma ọ dịghịzi ọnụ. Nke a na-emekarị ma ọ bụrụ na ị nwere ụyọkọ faịlụ na sistemụ faịlụ gị nke pere mpe karịa nha ngọngọ sistemụ faịlụ. N'iburu n'uche na a na-eji 1 inode na faịlụ 1 ma ọ bụ ndekọ aha, na mkpokọta anyị nwere (maka usoro faịlụ nyere) 65536 - ọnọdụ ahụ karịrị ihe ezi uche dị na ya. Enwere ike ịhụ nke a nke ọma site na mmepụta nke iwu 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

Dị ka a na-ahụ nke ọma na / var/www partition, ọnụ ọgụgụ nke free blocks na faịlụ faịlụ na ọnụ ọgụgụ nke free ọnụ dịgasị iche iche nke ukwuu.

Ọ bụrụ na ị kwụsịrị inodes, agaghị m agwa gị ọgwụ ọ bụla, n'ihi na ... ọ dịghị (ọ bụrụ na m na-ezighị ezi, mee ka m mara). Ya mere, maka akụkụ nke obere faịlụ na-amụba, ị kwesịrị ịhọrọ usoro faịlụ nke ọma. Dịka ọmụmaatụ, btrfs inodes enweghị ike ịkwụsị, n'ihi na A na-emepụta ndị ọhụrụ ma ọ bụrụ na ọ dị mkpa.

isi: www.habr.com

Tinye a comment