Se mea e uiga i inode

Mai lea taimi i lea taimi, ina ia mafai ona siitia atu i le Central Distribution Center, ou te faatalanoaina i kamupani tetele eseese, aemaise lava i St. Petersburg ma Moscow, mo se tulaga DevOps. Na ou matauina o le tele o kamupani (tele kamupani lelei, mo se faʻataʻitaʻiga Yandex) fai ni fesili tutusa se lua:

  • o le a le inode;
  • O a mafua'aga e mafai ai ona e maua se mea sese tusitusi tisiki (po'o se fa'ata'ita'iga: aisea e te le maua ai le avanoa o le tisiki, o le aano e tutusa).

E pei ona masani ona tupu, sa ou mautinoa sa ou iloa lelei lenei autu, ae o le taimi lava na amata ai ona ou faamatala atu, na aliali mai ni avanoa i le malamalama. Ina ia faʻatulagaina loʻu malamalama, faʻatumu avanoa ma aua le toe faʻasiasia aʻu, o loʻo ou tusia lenei tusiga, atonu o le a aoga i se isi tagata.

O le a ou amata mai le pito i lalo, i.e. mai se ta'avale malo (tatou te lafoaia ta'avale flash, SSDs ma isi mea fa'aonaponei; mo se fa'ata'ita'iga, se'i o tatou mafaufau i so'o se 20 po'o 80 gig ta'avale tuai, talu ai o le poloka poloka e 512 bytes).

E le iloa e le ta'avale malo pe fa'afefea ona fa'afeiloa'i lona avanoa byte i le byte; Fa'anumera poloka e amata mai le 0. (E ta'ua lea o le LBA, fa'amatalaga iinei: ru.wikipedia.org/wiki/LBA)

Se mea e uiga i inode

E pei ona mafai ona vaʻaia mai le ata, na ou filifilia poloka LBA e avea ma tulaga HDD. I le auala, e mafai ona e vaʻai pe o le a le tele o poloka o lau disk e pei o lenei:

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

O le maualuga o loʻo i luga o se vaeluaga, tasi mo le tisiki atoa (toe faʻafaigofie). O le tele o taimi, e lua ituaiga o vaeluaga e faʻaaogaina: msdos ma gpt. O le mea lea, msdos o se faatulagaga tuai e lagolagoina tisiki e oo atu i le 2Tb, gpt o se faatulagaga fou e mafai ona tautala i luga o le 1 zettabyte o 512 byte poloka. I la matou tulaga, o loʻo i ai se vaeluaga o le ituaiga msdos, e pei ona mafai ona vaʻaia mai le ata, o le vaeluaga e amata i le poloka Numera 1, aʻo le zero e faʻaaogaina mo le MBR.

I le vaeluaga muamua na ou fatuina ai se faila faila ext2, o lona poloka poloka poloka o le 4096 bytes, lea e atagia mai foi i le ata. E mafai ona e vaʻai i le tele o poloka poloka faila e pei o lenei:

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 le parakalafa matou te manaʻomia o le "Block size".

Le taimi nei o le vaega manaia o le auala e faitau ai le /home/serp/testfile file? O se faila e aofia ai se tasi pe sili atu poloka faila faila lea e teu ai ana faʻamatalaga. Iloa le igoa faila, fa'afefea ona maua? O fea poloka e tatau ona ou faitauina?

O le mea lea e aoga ai inodes. O le faila faila ext2fs o loʻo i ai se " laulau" o loʻo i ai faʻamatalaga mo inodes uma. Ole numera o inodes ile tulaga ole ext2fs ua seti pe a fatuina le faila faila. Matou te vaʻavaʻai i numera manaʻomia i le "Inode count" parakalafa o le tune2fs output, i.e. e 65536 matou vaega. O le inode o loʻo i ai faʻamatalaga matou te manaʻomia: o se lisi o poloka faila mo le faila o loʻo matou sailia. E faʻafefea ona maua le numera inode mo se faila tuʻuina atu?

O le igoa tutusa ma le numera inode o loʻo i totonu o le faʻatonuga, ma o se faʻamaumauga i ext2fs o se ituaiga faʻapitoa o faila, i.e. e iai fo'i lana lava numera inode. Ina ia talepeina lenei li'o leaga, o le "fa'amau" numera inode "2" na tu'uina atu i le a'a. Sei o tatou tilotilo i mea o loʻo i totonu o le inode numera 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 pei ona mafai ona e vaʻaia, o le lisi matou te manaʻomia o loʻo i totonu o le poloka numera 579. I totonu o le a matou maua ai le numera o le node mo le faila o le fale, ma faʻasolo atu i lalo le filifili seia oʻo i le serp directory matou te vaʻaia le numera node mo le faila talosaga. Afai faʻafuaseʻi ona manaʻo se tasi e siaki pe saʻo le numera ma pe o iai faʻamatalaga talafeagai, e le faigata. Matou te faia:

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

I le gaioiga e mafai ona e faitau i igoa o faila i totonu o le lisi.

O lea ua ou oo mai ai i le fesili autu: "o a mafuaaga e mafai ai ona tupu se mea sese?"

E masani lava, o le a tupu lenei mea pe a leai ni poloka saoloto e totoe i le faila faila. O le a se mea e mafai ona fai i lenei tulaga? E ese mai i le manino "aveese soʻo se mea e le manaʻomia", e tatau ona e manatua o le ext2,3 ma le 4 faila faila o loʻo i ai se mea e pei o le "Faʻamaumauga poloka poloka". Afai e te tilotilo i le lisi o loʻo i luga, o loʻo i ai a matou "13094" ia poloka. O poloka ia e na'o le tagata fa'aoga a'a e mafai ona tusia. ae afai e te manaʻomia le vave foia o le mataupu, o se fofo le tumau e mafai ona e faʻaavanoaina mo tagata uma, e maua ai se avanoa avanoa:

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

O na. ona o le faaletonu, e te maua le 5% o le avanoa tisiki e le o avanoa mo le tusitusi, ma tuʻuina atu le tele o tisiketi faʻaonaponei, e mafai ona faitau selau gigabytes.

O le a se isi mea e ono iai? E mafai foʻi ona iai poloka e leai se totogi, ae leai ni nodes. E masani ona tupu lenei mea pe afai e iai sau faila faila i luga o lau faila faila e laʻititi nai lo le tele o poloka poloka faila. Mafaufau o le 1 inode e faʻaalu i le 1 faila poʻo le lisi, ma i le aofaʻi o loʻo i ai (mo se faila faila) 65536 - o le tulaga e sili atu nai lo le moni. E mafai ona iloa manino lenei mea mai le gaioiga o le df poloaiga:

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 pei ona vaaia manino i luga o le / var / www partition, o le numera o poloka saoloto i le faila faila ma le numera o nodes saoloto e matua ese lava.

I le tulaga e te le maua ai ni inodes, ou te le taʻuina atu ia te oe ni sipela, aua ... e leai se mea (pe a ou sese, taʻu mai ia te aʻu). O lea la mo vaeluaga e faʻateleina faila laiti, e tatau ona e filifilia ma le poto le faila faila. Mo se faʻataʻitaʻiga, btrfs inodes e le mafai ona muta, aua O mea fou e fa'atupu fa'amalosi pe a mana'omia.

puna: www.habr.com

Faaopoopo i ai se faamatalaga