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:
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