He mea mo te inode

I ia wa, ki te neke ki te Central Distribution Center, ka uiui ahau ki etahi kamupene nui, te nuinga i St. Petersburg me Moscow, mo tetahi tuunga DevOps. I kite ahau he maha nga kamupene (he maha nga kamupene pai, hei tauira Yandex) e rua nga patai penei:

  • he aha te inode;
  • he aha nga take ka taea e koe te hapa tuhi kōpae (hei tauira ranei: he aha te take ka ngaro koe i te mokowā kōpae, he rite tonu te ngako).

I te nuinga o nga wa, i tino mohio ahau he tino mohio ahau ki tenei kaupapa, engari i taku tiimata ki te whakamarama, ka kitea nga waahi o te matauranga. Hei whakarite i aku mohiotanga, whakakiia nga waahi kia kaua e whakama i a au ano, kei te tuhi ahau i tenei tuhinga, tera pea ka whai hua mo tetahi atu.

Ka timata ahau i raro, i.e. mai i te puku pakeke (ka whakakorehia e matou nga puku kohiko, nga SSD me etahi atu mea hou; hei tauira, me whakaaro ki tetahi puku tawhito 20, 80 ranei, i te mea ko te rahi o te poraka he 512 paita).

Karekau te puku pakeke e mohio me pehea te whakatika i tana paita mokowhiti ma te paita; kua wehewehea ki nga poraka. Ka timata te nama poraka mai i te 0. (Ka kiia tenei ko LBA, nga korero kei konei: ru.wikipedia.org/wiki/LBA)

He mea mo te inode

Ka kitea mai i te ahua, i tohua e ahau nga poraka LBA hei taumata HDD. Ae ra, ka kite koe he aha te rahi o te paraka o to kōpae penei:

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

Ko te taumata i runga ake he wehewehenga, kotahi mo te kōpae katoa (mo te ngawari). I te nuinga o te waa, e rua nga momo tohu wehewehenga ka whakamahia: msdos me te gpt. Na reira, he whakatakotoranga tawhito a msdos e tautoko ana i nga kōpae tae atu ki te 2Tb, he whakatakotoranga hou te gpt ka taea te whakatika ki te 1 zettabyte o nga poraka 512 paita. I roto i to maatau, he waahanga o te momo msdos, ka kitea mai i te ahua, ka timata te wehenga ki te poraka Nama 1, ka whakamahia te kore mo te MBR.

I te wahanga tuatahi i hanga e ahau he punaha konae ext2, ko te rahi o te poraka taunoa ko te 4096 paita, ka kitea ano i te ahua. Ka taea e koe te tiro i te rahinga paraka punaha konae penei:

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

Ko te tawhā e hiahiatia ana ko te "Rahi Poraka".

Inaianei ko te waahanga whakamere me pehea te panui i te konae /home/serp/testfile? Ko te konae he kotahi, neke atu ranei nga poraka punaha konae e penapena ai ana raraunga. Ma te mohio ki te ingoa konae, me pehea e kitea ai? Ko ēhea poraka me pānui au?

Koinei te waahi ka uru mai nga inodes. Ko te punaha kōnae ext2fs he "tepu" kei roto nga korero mo nga inodes katoa. Ko te maha o nga inodes i roto i te keehi o ext2fs kua whakaritea i te wa e hanga ana i te punaha konae. Ka tirohia nga tau e hiahiatia ana i roto i te tawhā "Inode count" o te putanga tune2fs, i.e. kei a matou 65536 nga waahanga. Kei roto i te inode nga korero e hiahiatia ana e matou: he rarangi o nga poraka punaha konae mo te konae e rapu ana matou. Me pehea te kimi i te tau inode mo tetahi konae kua tohua?

Ko te ingoa e rite ana me te tau inode kei roto i te whaiaronga, a, ko te whaiaronga kei roto ext2fs he momo konae motuhake, ara. kei a ia ano tana ake nama inode. Hei wawahi i tenei porowhita nanakia, he nama inode "whakatika" "2" i tohua ki te raarangi pakiaka. Kia titiro tatou ki nga korero o te inode nama 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

Ka taea e koe te kite, ko te raarangi e hiahiatia ana kei roto i te nama poraka 579. I roto ka kitea e matou te nama node mo te kōpaki kaainga, me te heke iho o te mekameka tae noa ki te raarangi serp ka kite matou i te nama node mo te konae kua tonohia. Ki te ohorere ka hiahia tetahi ki te tirotiro mena kei te tika te nama me te mea kei kona nga korero e tika ana, ehara i te mea uaua. Ka mahia e matou:

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 roto i te putanga ka taea e koe te panui i nga ingoa o nga konae kei roto i te raarangi.

Na ka tae mai ahau ki te patai matua: "he aha nga take ka puta he hapa rekoata?"

Ko te tikanga, ka puta tenei ki te kore he poraka kore utu e toe ana ki te punaha konae. He aha te mahi i tenei keehi? I tua atu i te "muku i tetahi mea kaore e tika", me mahara koe kei roto i nga punaha konae ext2,3 me 4 he mea penei "Tau poraka kua rahuitia". Mena ka titiro koe ki te rarangi i runga ake nei, kei a matou "13094" aua poraka. He poraka enei ka tuhia e te kaiwhakamahi pakiaka anake. engari ki te hiahia koe ki te whakatau tere i te take, hei otinga rangitahi ka taea e koe te waatea ki te katoa, ka puta he waahi kore utu:

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

Ko era. ma te taunoa, kei a koe te 5% o te mokowā kōpae kaore i te waatea mo te tuhi, me te nui o nga kōpae hou, ka taea te rau gigabytes.

He aha atu pea? Ka taea hoki he poraka kore utu, engari karekau he pona. I te nuinga o te wa ka puta tenei mena he paihere o nga konae kei runga i to punaha konae he iti ake i te rahi o te paraka punaha konae. Ki te whakaaro ko te 1 inode kua pau i runga i te 1 konae, i te raarangi ranei, me te katoa kei a maatau (mo tetahi punaha konae) 65536 - he nui ake te ahuatanga. Ka tino kitea tenei mai i te putanga o te whakahau 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

Ka kitea i runga i te wehewehenga /var/www, he rereke te maha o nga poraka kore utu i roto i te punaha konae me te maha o nga pona kore utu.

Mena ka pau koe i nga inodes, e kore ahau e korero ki a koe i nga karakia, na te mea ... karekau (mehemea kei te he ahau, me mohio mai). Na mo nga wehewehenga ka maha nga konae iti, me whiriwhiri koe i te punaha konae. Hei tauira, btrfs inodes e kore e taea te mutu, no te mea Ko nga mea hou ka hanga hihiri mena e tika ana.

Source: will.com

Tāpiri i te kōrero