Chimwe chinhu nezve inode

Nguva nenguva, kuti ndiende kuCentral Distribution Center, ndinobvunzurudza kumakambani makuru akasiyana-siyana, kunyanya muSt. Petersburg neMoscow, nokuda kwechinzvimbo cheDevOps. Ndakaona kuti makambani mazhinji (makambani mazhinji akanaka, semuenzaniso Yandex) anobvunza mibvunzo miviri yakafanana:

  • chii inode;
  • nekuda kwezvikonzero zvipi zvaunogona kuwana dhisiki yekunyora kukanganisa (kana semuenzaniso: nei iwe unogona kupera dhisiki nzvimbo, essence yakafanana).

Sezvinowanzoitika, ndaiva nechokwadi chokuti ndaiziva nyaya iyi zvakanaka, asi pandakangotanga kutsanangura, mikaha yezivo yakava pachena. Kuti ndigadzirise ruzivo rwangu, zadza zvipingamupinyi uye ndisisazvinyadzise, ​​ndiri kunyora chinyorwa ichi, zvichida chichabatsira kune mumwe munhu.

Ndichatanga kubva pasi, i.e. kubva kune hard drive (ticharasa flash drives, SSD uye zvimwe zvinhu zvemazuva ano; semuenzaniso, ngatifungei chero makumi maviri kana makumi masere gig yekare drive, sezvo saizi yebhuroka paine 20 bytes).

Iyo hard drive haizive kugadzirisa nzvimbo yayo byte byte; yakakamurwa kuita mabhuraki. Nhamba dzeBlock dzinotangira pa0. (Iyi inonzi LBA, zvizere pano: ru.wikipedia.org/wiki/LBA)

Chimwe chinhu nezve inode

Sezvinoonekwa kubva pamufananidzo, ini ndakasarudza LBA zvidhinha seye HDD level. Nenzira, iwe unogona kuona kuti dhisiki yako ine saizi yei seizvi:

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

Chiyero chiri pamusoro apa chikamu, chimwe cheiyo dhisiki yese (zvakare kuti zvive nyore). Kazhinji, marudzi maviri ekuparadzanisa markup anoshandiswa: msdos uye gpt. Saizvozvo, msdos imhando yekare inotsigira madhisiki anosvika 2Tb, gpt imhando nyowani inokwanisa kugadzirisa kusvika ku1 zettabyte ye512 byte blocks. Muchiitiko chedu, tine chikamu chemhando ye msdos, sezvinogona kuonekwa kubva pamufananidzo, kupatsanurwa kunotanga ne block No. 1, nepo zero inoshandiswa kuMBR.

Muchikamu chekutanga ndakagadzira ext2 faira system, saizi yayo yekuvharisa ndeye 4096 bytes, iyo inoratidzwawo mumufananidzo. Iwe unogona kuona iyo faira system block saizi seizvi:

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

Iyo parameter yatinoda ndeye "Block size".

Zvino chikamu chinonakidza ndechekuti ungaverenga sei /home/serp/testfile faira? Iyo faira ine imwe kana anopfuura faira system inovharira iyo data rayo inochengetwa. Kuziva zita refaira, kuti ungariwana sei? Ndeapi mabhuroko andinofanira kuverenga?

Apa ndipo panouya inodes inobatsira. Iyo ext2fs faira system ine "tafura" ine ruzivo rweese inode. Nhamba yeinodes munyaya ye ext2fs inogadziriswa paunenge uchigadzira iyo faira system. Isu tinotarisa nhamba dzinodiwa mu "Inode count" parameter ye tune2fs yakabuda, i.e. tine 65536 zvidimbu. Iyo inode ine ruzivo rwatinoda: runyoro rwefaira system inovharira faira yatiri kutsvaga. Maitiro ekutsvaga iyo inode nhamba yefaira rakapihwa?

Zita rinoenderana uye nhamba yeinode iri mudhairekitori, uye dhairekitori mu ext2fs imhando yakakosha yefaira, i.e. inewo nhamba yayo inode. Kutyora denderedzwa iri rakashata, "yakagadziriswa" inode nhamba "2" yakagoverwa kumudzi wedhairekitori. Ngatitarisei zviri mukati inode nhamba 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

Sezvaunogona kuona, dhairekitori yatinoda iri mu block nhamba 579. Mariri tichawana nhamba ye node yeimba folda, uye zvichienda pasi pasi ketani kusvikira mu serp directory tinoona nhamba ye node yefaira yakakumbirwa. Kana kamwe kamwe munhu achida kutarisa kuti nhamba yacho yakarurama uye kana ruzivo rwakakosha rwuripo, hazvina kuoma. Tinoita:

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

Mukubuda iwe unogona kuverenga mazita emafaira mudhairekitori.

Saka ndinouya kumubvunzo mukuru: "nezvikonzero zvipi zvinogona kukanganisa kurekodha?"

Nomuzvarirwo, izvi zvichaitika kana pasina mabhururu emahara akasara mufaira system. Chii chingaitwa munyaya iyi? Kunze kwezviri pachena "bvisa chero chinhu chisingadikanwi", unofanirwa kuyeuka kuti mune ext2,3 uye 4 mafaira masisitimu pane chinhu chakadai se "Reserved block count". Kana iwe ukatarisa pane rondedzero iri pamusoro, isu tine "13094" mabhuroki akadaro. Aya mabhuroki anonyorwa chete nemudzi mushandisi. asi kana iwe uchida kukurumidza kugadzirisa nyaya, semhinduro yenguva pfupi unogona kuita kuti iwanikwe kune wese munhu, zvichikonzera imwe nzvimbo yemahara:

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

Avo. nekusarudzika, une 5% yedhisiki nzvimbo isingawanikwe yekunyora, uye yakapihwa vhoriyamu yemazuva ano disks, izvi zvinogona kuva mazana egigabytes.

Chii chimwe chingava? Zvinogoneka zvakare kuti kune mabhururu emahara, asi hapasisina node. Izvi zvinowanzoitika kana uine boka remafaira pane yako faira system idiki pane iyo faira system block saizi. Tichifunga kuti 1 inode inoshandiswa pa 1 faira kana dhairekitori, uye muhuwandu tine (kune yakapihwa faira system) 65536 - mamiriro acho anopfuura echokwadi. Izvi zvinogona kuoneka zvakajeka kubva mukubuda kweiyo 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

Sezvinoonekwa zvakajeka pa /var/www partition, nhamba yemahara blocks mufaira system uye nhamba yemahara node inosiyana zvakanyanya.

Kana ukapera mainode, ini handikuudze chero zviperengo, nekuti ... hapana (kana ndakanganisa, ndizivise). Saka kune zvikamu umo mafaira madiki anowedzera, iwe unofanirwa kusarudza iyo faira system nehungwaru. Semuenzaniso, btrfs inodes haigone kupera, nekuti Zvitsva zvinogadzirwa zvine simba kana zvichidikanwa.

Source: www.habr.com

Voeg