Nkankan nipa inode

Lorekore, lati gbe lọ si Central Distribution Center, Mo ṣe ifọrọwanilẹnuwo ni ọpọlọpọ awọn ile-iṣẹ nla, ni pataki ni St. Petersburg ati Moscow, fun ipo DevOps kan. Mo ṣe akiyesi pe ọpọlọpọ awọn ile-iṣẹ (ọpọlọpọ awọn ile-iṣẹ ti o dara, fun apẹẹrẹ Yandex) beere awọn ibeere iru meji:

  • kini inode;
  • Fun awọn idi wo ni o le gba aṣiṣe kikọ disiki (tabi fun apẹẹrẹ: idi ti o le pari ni aaye disk, pataki jẹ kanna).

Gẹgẹ bi igbagbogbo, Mo ni idaniloju pe Mo mọ koko-ọrọ yii daradara, ṣugbọn ni kete ti Mo bẹrẹ si ṣalaye, awọn ela ninu imọ han gbangba. Lati ṣe eto imọ mi, fọwọsi awọn ela ati ki o ko dãmu ara mi mọ, Mo n kọ nkan yii, boya yoo wulo fun ẹlomiran.

Emi yoo bẹrẹ lati isalẹ, i.e. lati dirafu lile (a yoo sọ awọn awakọ filasi, SSDs ati awọn nkan ode oni miiran; fun apẹẹrẹ, jẹ ki a gbero eyikeyi 20 tabi 80 gig dirafu atijọ, nitori iwọn bulọki wa 512 awọn baiti).

Dirafu lile ko mọ bi o ṣe le koju baiti aaye rẹ nipasẹ baiti; o ti pin ni majemu si awọn bulọọki. Dina nọmba bẹrẹ lati 0. (Eyi ni a npe ni LBA, awọn alaye nibi: ru.wikipedia.org/wiki/LBA)

Nkankan nipa inode

Gẹgẹbi a ti le rii lati nọmba naa, Mo yan awọn bulọọki LBA bi ipele HDD. Nipa ọna, o le rii kini iwọn idina ti disk rẹ ni bii eyi:

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

Ipele ti o wa loke jẹ ipin kan, ọkan fun gbogbo disk (lẹẹkansi fun ayedero). Nigbagbogbo, awọn oriṣi meji ti isamisi ipin ni a lo: msdos ati gpt. Nitorinaa, msdos jẹ ọna kika atijọ ti o ṣe atilẹyin awọn disiki to 2Tb, gpt jẹ ọna kika tuntun ti o lagbara lati koju si 1 zettabyte ti awọn bulọọki baiti 512. Ninu ọran wa, a ni ipin ti iru msdos, bi a ti le rii lati nọmba naa, ipin naa bẹrẹ pẹlu Àkọsílẹ No.. 1, lakoko ti a lo odo fun MBR.

Ni ipin akọkọ Mo ṣẹda eto faili ext2, iwọn bulọọki aiyipada rẹ jẹ 4096 awọn baiti, eyiti o tun ṣe afihan ninu eeya naa. O le wo iwọn bulọki eto faili bii eyi:

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

Ilana ti a nilo ni "Iwọn Dina".

Bayi apakan ti o nifẹ si ni bii o ṣe le ka faili /home/serp/file testfile? Faili kan ni ọkan tabi diẹ ẹ sii awọn bulọọki eto faili ninu eyiti o ti fipamọ data rẹ. Mọ orukọ faili, bawo ni a ṣe le rii? Awọn bulọọki wo ni MO yẹ ka?

Eyi ni ibi ti inodes wa ni ọwọ. Eto faili ext2fs ni “tabili” ti o ni alaye ninu fun gbogbo awọn inodes. Nọmba awọn inodes ninu ọran ti ext2fs ti ṣeto nigbati o ṣẹda eto faili naa. A wo awọn nọmba ti a beere ni paramita "Inode count" ti tune2fs o wu, i.e. a ni 65536 ege. Inode ni alaye ti a nilo: atokọ ti awọn bulọọki eto faili fun faili ti a n wa. Bii o ṣe le wa nọmba inode fun faili ti a fun?

Orukọ ti o baamu ati nọmba inode wa ninu itọsọna naa, ati itọsọna kan ni ext2fs jẹ iru faili pataki kan, i.e. tun ni nọmba inode tirẹ. Lati fọ iyika buburu yii, nọmba inode “ti o wa titi” kan “2” ni a yàn si itọsọna gbongbo. Jẹ ki a wo awọn akoonu ti inode nọmba 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

Bi o ti le ri, awọn liana ti a nilo ni o wa ninu awọn Àkọsílẹ nọmba 579. Ninu rẹ a yoo ri awọn node nọmba fun awọn ile folda, ati bẹ lori isalẹ awọn pq titi ni serp liana ti a ri awọn node nọmba fun awọn ti a beere faili. Ti o ba lojiji ẹnikan fẹ lati ṣayẹwo boya nọmba naa jẹ deede ati boya alaye pataki wa nibẹ, ko nira. A ṣe:

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

Ni awọn wu o le ka awọn orukọ ti awọn faili ninu awọn liana.

Nitorinaa Mo wa si ibeere akọkọ: “fun awọn idi wo ni aṣiṣe gbigbasilẹ le waye?”

Nipa ti, eyi yoo ṣẹlẹ ti ko ba si awọn bulọọki ọfẹ ti o ku ninu eto faili naa. Kini o le ṣee ṣe ninu ọran yii? Yato si “paarẹ ohunkohun ti ko wulo”, o yẹ ki o ranti pe ninu awọn ọna ṣiṣe faili ext2,3 ati 4 iru nkan kan wa bi “Iṣiro Àkọsílẹ kika”. Ti o ba wo atokọ ti o wa loke, a ni “13094” iru awọn bulọọki. Iwọnyi jẹ awọn bulọọki kikọ nikan nipasẹ olumulo gbongbo. ṣugbọn ti o ba nilo lati yanju ọran naa ni kiakia, bi ojutu igba diẹ o le jẹ ki wọn wa fun gbogbo eniyan, ti o yọrisi aaye ọfẹ diẹ:

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

Awon. nipa aiyipada, o ni 5% ti aaye disk ko wa fun kikọ, ati fun iwọn didun awọn disiki ode oni, eyi le jẹ awọn ọgọọgọrun gigabytes.

Kini ohun miiran le jẹ? O tun ṣee ṣe pe awọn bulọọki ọfẹ wa, ṣugbọn ko si awọn apa diẹ sii. Eyi maa n ṣẹlẹ ti o ba ni opo awọn faili lori eto faili rẹ ti o kere ju iwọn idina eto faili lọ. Ṣiyesi pe 1 inode ti lo lori faili 1 tabi itọsọna, ati lapapọ a ni (fun eto faili ti a fun) 65536 - ipo naa jẹ diẹ sii ju ojulowo lọ. Eyi ni a le rii ni kedere lati inu abajade ti pipaṣẹ 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

Bi o ṣe han gbangba lori ipin / var/www, nọmba awọn bulọọki ọfẹ ninu eto faili ati nọmba awọn apa ọfẹ yatọ pupọ.

Ni irú ti o ba pari ni inodes, Emi kii yoo sọ fun ọ eyikeyi awọn itọka, nitori… ko si ọkan (ti Mo ba jẹ aṣiṣe, jẹ ki mi mọ). Nitorinaa fun awọn ipin ninu eyiti awọn faili kekere n pọ si, o yẹ ki o yan eto faili ni ọgbọn. Fun apẹẹrẹ, btrfs inodes ko le pari, nitori Awọn tuntun ni a ṣẹda ni agbara ti o ba jẹ dandan.

orisun: www.habr.com

Fi ọrọìwòye kun