He mea e pili ana i ka inode

I kēlā me kēia manawa, i mea e neʻe ai i ka Central Distribution Center, nīnau au i nā hui nui like ʻole, ma St. Petersburg a me Moscow, no kahi kūlana DevOps. Ua ʻike au he nui nā hui (nui nā hui maikaʻi, e like me Yandex) e nīnau i ʻelua mau nīnau like:

  • he aha ka inode;
  • He aha nā kumu e hiki ai iā ʻoe ke loaʻa i kahi disk write error (a i ʻole no ka laʻana: no ke aha ʻoe e holo ai i waho o ka hakahaka disk, ua like ke ʻano).

E like me ka hana pinepine ʻana, maopopo iaʻu ua ʻike maikaʻi wau i kēia kumuhana, akā i koʻu hoʻomaka ʻana e wehewehe, ua ʻike ʻia nā hakahaka o ka ʻike. No ka hoʻonohonoho ʻana i koʻu ʻike, hoʻopiha i nā āpau a ʻaʻole hoʻohilahila hou iaʻu iho, ke kākau nei au i kēia ʻatikala, malia paha e pono ia i kekahi.

E hoʻomaka wau mai lalo, ʻo ia. mai kahi paʻa paʻa (e hoʻolei mākou i nā flash drive, SSDs a me nā mea hou aʻe; no ka laʻana, e noʻonoʻo mākou i kekahi 20 a i ʻole 80 gig drive kahiko, ʻoiai ka nui o ka poloka aia he 512 bytes).

ʻAʻole ʻike ka hard drive i ka hoʻoponopono ʻana i kona byte space byte; ua māhele ʻia i nā poloka. Hoʻomaka ka helu poloka mai ka 0. (Ua kapa ʻia kēia ʻo LBA, nā kikoʻī ma aneʻi: ru.wikipedia.org/wiki/LBA)

He mea e pili ana i ka inode

E like me ka ʻike ʻia mai ke kiʻi, ua koho wau i nā poloka LBA e like me ka pae HDD. Ma ke ala, hiki iā ʻoe ke ʻike i ka nui o ka poloka o kāu disk e like me kēia:

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

ʻO ka pae ma luna he ʻāpana, hoʻokahi no ka disk holoʻokoʻa (hou no ka maʻalahi). ʻO ka pinepine, ʻelua ʻano o ka markup partition i hoʻohana ʻia: msdos a me gpt. No laila, he ʻano kahiko ʻo msdos e kākoʻo ana i nā disks a hiki i 2Tb, he ʻano hou ka gpt hiki ke hoʻoponopono i ka 1 zettabyte o nā poloka 512 byte. I kā mākou hihia, loaʻa iā mākou kahi ʻāpana o ke ʻano msdos, e like me ka mea i ʻike ʻia mai ke kiʻi, hoʻomaka ka ʻāpana me ka poloka No.

Ma ka ʻāpana mua ua hana au i kahi ʻōnaehana file ext2, ʻo ka nui o ka poloka paʻamau ʻo 4096 bytes, ka mea i ʻike ʻia ma ke kiʻi. Hiki iā ʻoe ke nānā i ka nui o ka ʻōnaehana waihona e like me kēia:

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

ʻO ka ʻāpana a mākou e pono ai ʻo "Block size".

I kēia manawa ʻo ka mea hoihoi pehea e heluhelu ai i ka faila /home/serp/testfile? Aia kekahi waihona i hoʻokahi a ʻoi aku paha nā poloka ʻōnaehana waihona kahi i mālama ʻia ai kāna ʻikepili. Ke ʻike nei i ka inoa faila, pehea e ʻike ai? ʻO nā poloka hea kaʻu e heluhelu ai?

ʻO kēia kahi e hiki mai ai nā inodes. Loaʻa i ka ʻōnaehana faila ext2fs kahi "papa" i loaʻa ka ʻike no nā inodes āpau. Hoʻonohonoho ʻia ka helu o nā inodes i ka hihia o ext2fs i ka hana ʻana i ka ʻōnaehana faila. Nānā mākou i nā helu i makemake ʻia ma ka ʻāpana "Inode count" o ka puka puka tune2fs, ʻo ia hoʻi. loaʻa iā mākou 65536 ʻāpana. Aia ka inode i ka ʻike e pono ai mākou: he papa inoa o nā poloka ʻōnaehana faila no ka faila a mākou e ʻimi nei. Pehea e ʻike ai i ka helu inode no kahi faila i hāʻawi ʻia?

Aia ka inoa a me ka helu inode i loko o ka papa kuhikuhi, a ʻo kahi papa kuhikuhi ma ext2fs he ʻano faila kūikawā, ʻo ia. loaʻa iā ia kāna helu inode ponoʻī. No ka uhaki ʻana i kēia pōʻai ʻino, ua hāʻawi ʻia kahi helu inode "paʻa" "2" i ka papa kuhikuhi kumu. E nānā kākou i nā mea o ka inode helu 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

E like me kāu e ʻike ai, aia ka papa kuhikuhi e pono ai mākou ma ka helu poloka 579. Ma loko e ʻike mākou i ka helu node no ka waihona home, a pēlā aku ma lalo o ke kaulahao a hiki i ka papa kuhikuhi serp ʻike mākou i ka helu node no ka faila i noi ʻia. Inā makemake koke kekahi e nānā inā pololei ka helu a inā aia ka ʻike e pono ai, ʻaʻole paʻakikī. Hana mākou:

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

Ma ka hopena hiki iā ʻoe ke heluhelu i nā inoa o nā faila i ka papa kuhikuhi.

No laila ke hele nei au i ka nīnau nui: "no ke aha e hiki ai ke hoʻopaʻa hewa?"

Ma keʻano maʻamau, e hana ʻia kēia inā ʻaʻohe poloka manuahi i koe i ka ʻōnaehana faila. He aha ka mea hiki ke hana ma keia hihia? Ma waho aʻe o ka "hoʻopau i kekahi mea pono ʻole", pono ʻoe e hoʻomanaʻo i loko o nā ʻōnaehana faila ext2,3 a me 4 aia kahi mea e like me "Reserved block count". Inā ʻoe e nānā i ka papa inoa ma luna, loaʻa iā mākou "13094" ia mau poloka. ʻO kēia nā poloka hiki ke kākau wale ʻia e ka mea hoʻohana kumu. akā inā pono ʻoe e hoʻoponopono koke i ka pilikia, ma ke ʻano he hopena pōkole hiki iā ʻoe ke hoʻolako iā lākou i nā poʻe a pau, e loaʻa ai kekahi wahi kaʻawale:

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

ʻO kēlā mau mea. ma ka maʻamau, loaʻa iā ʻoe ka 5% o ka disk space ʻaʻole i loaʻa no ke kākau ʻana, a hāʻawi ʻia i ka nui o nā disks hou, hiki kēia i nā haneli gigabytes.

He aha hou paha ia? Hiki nō hoʻi ke loaʻa nā poloka manuahi, akā ʻaʻohe nodes hou. Hana ʻia kēia inā loaʻa iā ʻoe kahi pūʻulu faila ma kāu ʻōnaehana faila i ʻoi aku ka liʻiliʻi ma mua o ka nui o ka ʻōnaehana waihona. Ke noʻonoʻo nei ua hoʻohana ʻia ka inode 1 ma 1 faila a i ʻole papa kuhikuhi, a ma ka huina loaʻa iā mākou (no kahi ʻōnaehana faila i hāʻawi ʻia) 65536 - ʻoi aku ka ʻoi aku o ke kūlana. Hiki ke ʻike maopopo ʻia kēia mai ka hopena o ke kauoha 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

E like me ka ʻike maopopo ʻia ma ka ʻāpana / var/www, ʻokoʻa ka nui o nā poloka manuahi i ka ʻōnaehana faila a me ka helu o nā node manuahi.

Inā pau ʻoe i nā inodes, ʻaʻole wau e haʻi iā ʻoe i kekahi mau ʻano, no ka mea ... ʻaʻohe mea (inā hewa wau, e haʻi mai iaʻu). No laila no nā ʻāpana i hoʻonui ʻia nā faila liʻiliʻi, pono ʻoe e koho i ka ʻōnaehana faila me ke akamai. Eia kekahi laʻana, hikiʻole ke hoʻopau i nā inodes btrfs, no ka mea Hana ʻia nā mea hou inā pono.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka