Aliquid de inode

Periodice, ut ad Centrum Distributionem Mediam moveat, convenio ad varias magnas turmas, maxime Petropoli et Moscuae, ob locum DevOps. Animadverti multas societates (multas societates bonas, exempli gratia Yandex) duas similes quaestiones interrogare;

  • quid inode;
  • propter quam causam disci potest scribere errorem (vel exempli gratia: cur ex spatio orbis curras, eadem est essentia).

Ut saepe fit, certo scio me hoc loco bene nosse, sed ubi primum exponere coepi, apparuit hiatus cognitionis. Ut scientiam meam systematizem, hiatus imple et me ipsum non pudet amplius, hunc articulum scribo, fortasse alicui usui erit.

Incipiam ab imo, i.e. a ferrea coegi (pulsuras, SSDs et alia moderna repellemus; exempli gratia, consideremus quemlibet 20 vel 80 cisium antiquum pellere, cum magnitudo obstructionum 512 bytes est).

Coegi ferrea nescit spatium suum per byte compellare, sub condicione in caudices divisum est. Clausus numerus incipit ab 0. ru.wikipedia.org/wiki/LBA)

Aliquid de inode

Ut ex figura videri potest, signavi LBA cuneos ut planum HDD. Obiter videre potes quantam magnitudinem orbis tuus hic habeat:

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

Planum superius est partitio, unum pro toto orbe (iterum pro simplici). Saepissime duo genera partitionis notae adhibentur: msdos et auimos. Itaque, msdos forma vetus est quae orbes usque ad 2Tb sustinet, auimus est nova forma appellandi capax ad 1 zettabyte de 512 byte cuneos. In nostro casu habemus partitionem generis msdos, ut ex figura videri potest, partitio cum clausula N. 1, incipit, dum nulla ponitur pro MBR.

In prima partitione systema fasciculi ext2 creavi, cuius defectus moles 4096 bytes est, quae etiam in figura resultat. Tabellam ratio magnitudinis inspicere potes sic:

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

Parametro nobis opus est "Block mole".

Nunc pars iucunda est quomodo file tabellam /home/serp/testabilem legere? Scapus constat ex uno vel pluribus stipitibus fasciculi in quibus eius notitia reponitur. Sciens tabella nominis, quomodo inveniat? Quod caudices debeo legere?

Haec ubi inodes veniunt in manus. Ratio fasciculi ext2fs "mensam" habet quae informationes omnium inodis continet. Numerus inodorum in casu ext2fs positus est cum ratio lima creandi. Numeros debitos in "Inode comite" parametri tune2fs output spectamus, i.e. 65536 frusta diximus. Inodo informationes quae nobis necessariae sunt continet: indicem systematis fasciculi caudices pro tabella quaerimus. Quomodo invenire numerum inode pro lima data?

Nomen correspondentium et numerus inode continentur in indicem, et directorium in ext2fs est speciale genus documenti, i.e. etiam suum inode numerum habet. Ad hunc circulum vitiosum frangendum, numerus inode numerus "2" certus "2" directorio radicis assignatus est. Intueamur contenta inode numero II:

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

Ut videre potes, directorium quo indigemus numero clausus 579. In eo inveniemus numerum nodi pro folder home, et sic in catena usque dum in serp presul videmus numerum nodi pro tabella petita. Si subito quis inspiciat utrum numerus recte sit et an res necessariae notitiae sint, non difficile est. Facimus:

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

In output nomina tabulariorum in indicem legere potes.

Venio ergo ad principalem quaestionem: "quas ob causas potest memoria memoriae accidere?"

Naturaliter hoc fiet si nullae sunt impedimenta liberae in tabella systematis relictae. Quid in hoc casu fieri potest? Praeter manifestam "quidquid superfluum delere", memineris debes in ext2,3 et 4 fasciculi systematibus talem rem esse ac "comitem scandalum reservatum". Si recensitum supra spectes, tales cuneos habemus 13094. Hae caudices writable tantum a radice usoris sunt. sed si opus est ut cito rem solvas, solutionem temporalem omnibus facere potes, per aliquod spatium vacuum;

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

Illae. per defaltam, habes spatium 5% orbis ad scribendum non available, et dato volumine orbis hodierni, hoc centum gigabytarum esse possunt.

Quid aliud fieri potest? Poterit etiam esse cuneos liberos, sed non plures nodes. Hoc plerumque evenit si fasciculum fasciculi in systematis tui fasciculi habeas qui minora sunt quam ratio limae scandali magnitudine. Cum 1 inode impenditur in 1 fasciculi seu directorii, et in summa habemus (pro data systemate fasciculi) 65536 - condicio plus quam realistica. Id clare perspici potest e praecepto e output;

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

Sicut clare apparet in partitione /var/www, numerus clausorum liberorum in systematis tabellae et numerus nodis liberarum multum variant.

Si ex inodis curris, carmina tibi non dicam, quia... nullae sunt (si fallo, sciam). Itaque partitiones in quibus parvae tabulae multiplicantur, ratio tabellae sapienter eligere debes. Exempli gratia: btrfs inodes finire non possunt, quia Novae dynamice creatae sunt si necesse est.

Source: www.habr.com