Nthawi ndi nthawi, kuti ndisamukire ku Central Distribution Center, ndimayankhulana ndi makampani akuluakulu osiyanasiyana, makamaka ku St. Petersburg ndi Moscow, chifukwa cha udindo wa DevOps. Ndinawona kuti makampani ambiri (makampani ambiri abwino, mwachitsanzo Yandex) amafunsa mafunso awiri ofanana:
- inode ndi chiyani;
- pazifukwa ziti zomwe mungapeze cholakwika cholemba disk (kapena mwachitsanzo: chifukwa chake mutha kutha danga la disk, tanthauzo lake ndilofanana).
Monga momwe zimakhalira nthawi zambiri, ndinali wotsimikiza kuti ndikuidziwa bwino nkhaniyi, koma nditangoyamba kufotokoza, kusiyana kwa chidziwitso kunaonekera. Kuti ndikonzekere chidziwitso changa, lembani mipata ndikusiya kudzichititsa manyazi, ndikulemba nkhaniyi, mwinamwake idzakhala yothandiza kwa wina.
Ndiyambira pansi, i.e. kuchokera pa hard drive (tidzataya zoyendetsa, ma SSD ndi zinthu zina zamakono; mwachitsanzo, tiyeni tiganizire za 20 kapena 80 gig old drive, popeza kukula kwake kuli 512 byte).
Ma hard drive sadziwa momwe angayankhire danga lake byte; imagawidwa m'ma block. Kuwerengera kwa block kumayambira pa 0. (Izi zimatchedwa LBA, zambiri apa:
Monga tikuwonera pachithunzichi, ndidasankha midadada ya LBA ngati mulingo wa HDD. Mwa njira, mutha kuwona kukula kwa block disk yanu ili motere:
root@ubuntu:/home/serp# blockdev --getpbsz /dev/sdb
512
Mulingo womwe uli pamwambapa ndi gawo, limodzi la disk yonse (kachiwirinso kuphweka). Nthawi zambiri, mitundu iwiri ya magawo ogawa imagwiritsidwa ntchito: msdos ndi gpt. Chifukwa chake, msdos ndi mtundu wakale womwe umathandizira ma disks mpaka 2Tb, gpt ndi mtundu watsopano womwe ungathe kuwongolera mpaka 1 zettabyte ya 512 byte blocks. Kwa ife, tili ndi gawo la mtundu wa msdos, monga momwe tingawonere kuchokera pachithunzichi, kugawa kumayamba ndi chipika No. 1, pamene zero imagwiritsidwa ntchito kwa MBR.
Mugawo loyamba ndidapanga fayilo ya ext2, kukula kwake kwa block ndi 4096 byte, komwe kumawonekeranso pachithunzichi. Mutha kuwona kukula kwa block system yamafayilo motere:
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
Parameter yomwe tikufuna ndi "Block size".
Tsopano gawo losangalatsa ndi momwe mungawerenge /home/serp/testfile file? Fayilo imakhala ndi midadada imodzi kapena zingapo zamafayilo momwe deta yake imasungidwa. Kudziwa dzina lafayilo, mungalipeze bwanji? Ndizilemba ziti?
Apa ndipamene ma inode amafika pothandiza. Dongosolo la fayilo la ext2fs lili ndi "tebulo" lomwe lili ndi chidziwitso cha ma innode onse. Chiwerengero cha ma inode pa nkhani ya ext2fs imayikidwa popanga fayilo. Timayang'ana manambala ofunikira mu "Inode count" parameter ya tune2fs output, i.e. tili ndi zidutswa za 65536. Inode ili ndi zambiri zomwe tikufuna: mndandanda wamafayilo amafayilo omwe tikufuna. Kodi mungapeze bwanji nambala ya inode ya fayilo yomwe mwapatsidwa?
Dzina lofananira ndi nambala ya inode zili mu bukhuli, ndipo chikwatu mu ext2fs ndi mtundu wapadera wa fayilo, i.e. ilinso ndi nambala yake ya inode. Kuti aphwanye bwalo loyipali, nambala ya inode "yokhazikika" "2" idaperekedwa ku bukhu la mizu. Tiyeni tiwone zomwe zili mu inode nambala 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
Monga mukuonera, bukhu lomwe tikufunikira liri mu chipika nambala 579. Mmenemo tidzapeza nambala ya node ya foda yakunyumba, ndi zina zotero pansi pa unyolo mpaka mu serp directory tikuwona nambala ya node ya fayilo yofunsidwa. Ngati mwadzidzidzi wina akufuna kufufuza ngati chiwerengerocho chiri cholondola komanso ngati chidziwitso chofunikira chilipo, sizovuta. Timachita:
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
Mu linanena bungwe mukhoza kuwerenga mayina a owona mu ndandanda.
Chifukwa chake ndimabwera ku funso lalikulu: "chifukwa chiyani cholakwika chojambulira chingachitike?"
Mwachilengedwe, izi zidzachitika ngati palibe midadada yaulere yotsalira mu fayilo yamafayilo. Nanga tingatani pamenepa? Kupatula zodziwikiratu "chotsani chilichonse chosafunikira", muyenera kukumbukira kuti mu fayilo ya ext2,3 ndi 4 pali zinthu monga "Kuwerengera kwa block". Mukayang'ana zomwe zili pamwambapa, tili ndi "13094" midadada yotere. Izi ndi midadada yolembedwa ndi wogwiritsa ntchito mizu. koma ngati mukufuna kuthetsa vutoli mwachangu, ngati yankho kwakanthawi mutha kuzipangitsa kuti zipezeke kwa aliyense, zomwe zimapangitsa kuti pakhale malo aulere:
root@ubuntu:/mnt# tune2fs -m 0 /dev/sdb1
tune2fs 1.42.9 (4-Feb-2014)
Setting reserved blocks percentage to 0% (0 blocks)
Iwo. mwachisawawa, muli ndi 5% ya malo a disk omwe sapezeka kuti alembedwe, ndipo mutapatsidwa kuchuluka kwa ma disks amakono, izi zikhoza kukhala mazana a gigabytes.
Chinanso chingakhale chiyani? Ndizothekanso kuti pali midadada yaulere, koma palibenso ma node. Izi zimachitika kawirikawiri ngati muli ndi gulu la mafayilo pa fayilo yanu yomwe ndi yaying'ono kuposa kukula kwa chipika cha fayilo. Poganizira kuti 1 inode imagwiritsidwa ntchito pa fayilo ya 1 kapena chikwatu, ndipo palimodzi tili ndi (pa fayilo yopatsidwa) 65536 - mkhalidwewo ndi wochuluka kuposa zenizeni. Izi zitha kuwoneka momveka bwino kuchokera pazotsatira za lamulo la 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
Monga zikuwonekera bwino pa / var/www kugawa, kuchuluka kwa midadada yaulere mu fayilo yamafayilo ndi kuchuluka kwa node zaulere zimasiyana kwambiri.
Ngati mutatha ma innode, sindikuwuzani zamatsenga, chifukwa ... palibe (ngati ndikulakwitsa, ndidziwitse). Chifukwa chake pamagawo omwe mafayilo ang'onoang'ono amachulukira, muyenera kusankha fayilo mwanzeru. Mwachitsanzo, btrfs inodes sangathe kutha, chifukwa Zatsopano zimapangidwa mwamphamvu ngati pakufunika.
Source: www.habr.com