Ho hong ka inode

Nako le nako, e le hore ke fallele Setsing sa Phano ea Bohareng, ke buisana le lik'hamphani tse fapa-fapaneng tse kholo, haholo-holo St. Petersburg le Moscow, bakeng sa boemo ba DevOps. Ke hlokometse hore lik'hamphani tse ngata (lik'hamphani tse ngata tse ntle, mohlala, Yandex) li botsa lipotso tse peli tse tšoanang:

  • inode ke eng;
  • ka mabaka afe u ka fumanang phoso ea ho ngola disk (kapa mohlala: ke hobane'ng ha u ka felloa ke sebaka sa disk, moelelo o tšoana).

Joalokaha ho etsahala hangata, ke ne ke kholisehile hore ke tseba taba ena hantle, empa hang ha ke qala ho hlalosa, likheo tsebong li ile tsa totobala. Ho hlophisa tsebo ea ka, ho tlatsa likheo 'me ke se ke ka hlola ke hlajoa ke lihlong, ke ngola sehlooho sena, mohlomong se tla ba molemo ho motho e mong.

Ke tla qala ho tloha tlase, i.e. ho tloha ho hard drive (re tla lahla li-flash drive, li-SSD le lintho tse ling tsa sejoale-joale; mohlala, a re ke re nahaneng ka koloi ea khale ea 20 kapa 80, kaha boholo ba li-block bo na le li-byte tse 512).

Hard drive ha e tsebe ho sebetsana le sebaka sa eona ka byte; e arotsoe ka maemo ka li-blocks. Linomoro tsa boloko li qala ho tloha ho 0. (Sena se bitsoa LBA, lintlha mona: ru.wikipedia.org/wiki/LBA)

Ho hong ka inode

Joalo ka ha ho bonoa setšoantšong, ke khethile li-block tsa LBA joalo ka boemo ba HDD. Ha u le tseleng, u ka bona hore na disk ea hau e na le boholo ba mofuta ofe:

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

Boemo bo ka holimo ke karohano, e le 'ngoe bakeng sa disk eohle (hape bakeng sa bonolo). Hangata, ho sebelisoa mefuta e 'meli ea likarolo tsa likarolo: msdos le gpt. Ka hona, msdos ke sebopeho sa khale se tšehetsang li-disk ho fihla ho 2Tb, gpt ke sebopeho se secha se khonang ho sebetsana le 1 zettabyte ea 512 byte blocks. Tabeng ea rona, re na le karohano ea mofuta oa msdos, joalokaha ho ka bonoa ho tloha setšoantšong, karohano e qala ka thibela No. 1, ha zero e sebelisoa bakeng sa MBR.

Karolong ea pele ke thehile sistimi ea faele ea ext2, boholo ba eona ba block block ke li-byte tse 4096, tse bonts'itsoeng hape setšoantšong. U ka sheba boholo ba block system ea faele joalo ka:

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

Parameter eo re e hlokang ke "Block size".

Joale karolo e khahlisang ke mokhoa oa ho bala faele ea /home/serp/testfile? Faele e na le li-block tsa sistimi e le 'ngoe kapa ho feta moo data ea eona e bolokiloeng teng. Ho tseba lebitso la faele, u ka le fumana joang? Ke lokela ho bala liboloko life?

Mona ke moo li-inodes li tlang teng. Sistimi ea faele ea ext2fs e na le "tafole" e nang le tlhaiso-leseling bakeng sa li-inode tsohle. Palo ea li-inode tabeng ea ext2fs e behiloe ha ho etsoa tsamaiso ea lifaele. Re sheba linomoro tse hlokahalang ho "Inode count" parameter ea tlhahiso ea tune2fs, ke hore. re na le likotoana tse 65536. Inode e na le tlhaiso-leseling eo re e hlokang: lethathamo la li-block tsa sistimi ea faele eo re e batlang. U ka fumana nomoro ea inode joang bakeng sa faele e fanoeng?

Lebitso le ts'oanang le nomoro ea inode li fumaneha bukeng, 'me directory ho ext2fs ke mofuta o khethehileng oa faele, ke hore. e boetse e na le nomoro ea eona ea inode. Ho senya selikalikoe sena se khopo, "nomoro e tsitsitseng" ea inode "2" e ile ea abeloa mohloli oa metso. Ha re shebeng litaba tsa inode nomoro ea 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

Joalokaha u ka bona, lenane leo re le hlokang le fumaneha ka nomoro ea block 579. Ho eona re tla fumana nomoro ea node bakeng sa fensetere ea lehae, joalo-joalo ho theosa le ketane ho fihlela bukeng ea serp re bona nomoro ea node bakeng sa faele e kōpiloeng. Haeba ka tšohanyetso motho a batla ho hlahloba hore na palo e nepahetse le hore na tlhahisoleseding e hlokahalang e teng, ha ho thata. Re etsa:

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

Ka sephetho u ka bala mabitso a lifaele bukeng.

Kahoo ke tla potsong ea sehlooho: "ka mabaka afe ho ka etsahala phoso ea ho rekota?"

Ka tlhaho, sena se tla etsahala haeba ho se na li-blocks tsa mahala tse setseng tsamaisong ea faele. Ho ka etsoa’ng tabeng ee? Ntle le "hlakola eng kapa eng e sa hlokahaleng", o lokela ho hopola hore lits'ebetsong tsa faele tsa ext2,3 le 4 ho na le ntho e kang "Palo e bolokiloeng ea li-block". Haeba u sheba lethathamo le ka holimo, re na le "13094" li-blocks tse joalo. Tsena ke li-blocks tse ngoloang feela ke mosebelisi oa motso. empa haeba o hloka ho rarolla bothata ka potlako, e le tharollo ea nakoana o ka etsa hore e fumanehe ho motho e mong le e mong, e leng se hlahisang sebaka sa mahala:

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

Tseo. ka ho feletseng, u na le 5% ea sebaka sa disk se sa fumaneheng bakeng sa ho ngola, 'me u fuoa boholo ba li-disk tsa morao-rao, sena se ka ba li-gigabytes tse makholo.

E ka ba eng hape? Hape hoa khoneha hore ho na le li-blocks tsa mahala, empa ha ho na li-node tse ling. Hangata sena se etsahala haeba u na le sehlopha sa lifaele tsamaisong ea hau ea faele tse nyane ho feta boholo ba block system ea faele. Ha ho nahanoa hore 1 inode e sebelisoa ho 1 faele kapa directory, 'me ka kakaretso re na le (bakeng sa tsamaiso ea faele e fanoeng) 65536 - boemo bo feta ba sebele. Sena se ka bonoa ka ho hlaka ho tsoa tlhahiso ea df command:

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

Joalokaha ho bonahala ka ho hlaka karolong ea / var / www, palo ea li-blocks tsa mahala tsamaisong ea lifaele le palo ea li-node tse sa lefelloeng li fapana haholo.

Haeba u felloa ke li-inode, nke ke ka u bolella mantsoe leha e le afe, hobane ... ha ho na (haeba ke fositse, ntsebise). Kahoo bakeng sa li-partitions tseo lifaele tse nyenyane li atisang ho tsona, u lokela ho khetha tsamaiso ea faele ka bohlale. Ka mohlala, li-inodes tsa btrfs li ke ke tsa fela, hobane Tse ncha li entsoe ka matla ha ho hlokahala.

Source: www.habr.com

Eketsa ka tlhaloso