ืžืฉื”ื• ืขืœ ืื™ื ื•ื“ื”

ืžืขืช ืœืขืช, ืขืœ ืžื ืช ืœืขื‘ื•ืจ ืœืžืจื›ื– ื”ื”ืคืฆื” ื”ืžืจื›ื–ื™, ืื ื™ ืžืชืจืื™ื™ืŸ ื‘ื—ื‘ืจื•ืช ื’ื“ื•ืœื•ืช ืฉื•ื ื•ืช, ื‘ืขื™ืงืจ ื‘ืกื ื˜ ืคื˜ืจืกื‘ื•ืจื’ ื•ืžื•ืกืงื‘ื”, ืœืชืคืงื™ื“ ืฉืœ DevOps. ืฉืžืชื™ ืœื‘ ืฉื—ื‘ืจื•ืช ืจื‘ื•ืช (ื”ืจื‘ื” ื—ื‘ืจื•ืช ื˜ื•ื‘ื•ืช, ืœืžืฉืœ Yandex) ืฉื•ืืœื•ืช ืฉืชื™ ืฉืืœื•ืช ื“ื•ืžื•ืช:

  • ืžื” ื–ื” ืื™ื ื•ื“ื”;
  • ืžืื™ืœื• ืกื™ื‘ื•ืช ืืชื” ื™ื›ื•ืœ ืœืงื‘ืœ ืฉื’ื™ืืช ื›ืชื™ื‘ื” ื‘ื“ื™ืกืง (ืื• ืœืžืฉืœ: ืžื“ื•ืข ืขืœื•ืœ ืœื”ื™ื’ืžืจ ืœืš ืฉื˜ื— ื”ื“ื™ืกืง, ื”ืžื”ื•ืช ื–ื”ื”).

ื›ืคื™ ืฉืงื•ืจื” ืœืขืชื™ื ืงืจื•ื‘ื•ืช, ื”ื™ื™ืชื™ ื‘ื˜ื•ื— ืฉืื ื™ ืžื›ื™ืจ ืืช ื”ื ื•ืฉื ื”ื–ื” ื”ื™ื˜ื‘, ืื‘ืœ ื‘ืจื’ืข ืฉื”ืชื—ืœืชื™ ืœื”ืกื‘ื™ืจ, ื”ืชื’ืœื• ืคืขืจื™ื ื‘ื™ื“ืข. ื›ื“ื™ ืœืกื“ืจ ืืช ื”ื™ื“ืข ืฉืœื™, ืœื”ืฉืœื™ื ืืช ื”ื—ืกืจ ื•ืœื ืœื”ื‘ื™ืš ืืช ืขืฆืžื™ ื™ื•ืชืจ, ืื ื™ ื›ื•ืชื‘ ืืช ื”ืžืืžืจ ื”ื–ื”, ืื•ืœื™ ื–ื” ื™ื•ืขื™ืœ ืœืžื™ืฉื”ื• ืื—ืจ.

ืื ื™ ืืชื—ื™ืœ ืžืœืžื˜ื”, ื›ืœื•ืžืจ. ืžื›ื•ื ืŸ ืงืฉื™ื— (ื ืฉืœื™ืš ื›ื•ื ื ื™ ื”ื‘ื–ืง, ื›ื•ื ื ื™ SSD ื•ื“ื‘ืจื™ื ืžื•ื“ืจื ื™ื™ื ืื—ืจื™ื; ืœื“ื•ื’ืžื”, ื”ื‘ื” ื ื™ืงื— ื‘ื—ืฉื‘ื•ืŸ ื›ืœ ื›ื•ื ืŸ ื™ืฉืŸ ืฉืœ 20 ืื• 80 ื’ื™ื’ื”, ืžื›ื™ื•ื•ืŸ ืฉื’ื•ื“ืœ ื”ื‘ืœื•ืง ืฉื ื”ื•ื 512 ื‘ืชื™ื).

ื”ื›ื•ื ืŸ ื”ืงืฉื™ื— ืื™ื ื• ื™ื•ื“ืข ื›ื™ืฆื“ ืœื˜ืคืœ ื‘ืฉื˜ื— ืฉืœื• ื‘ื™ื™ื˜ ืื—ืจ ื‘ื™ื™ื˜; ื”ื•ื ืžื—ื•ืœืง ืขืœ ืชื ืื™ ืœื‘ืœื•ืงื™ื. ืžืกืคื•ืจ ื‘ืœื•ืงื™ื ืžืชื—ื™ืœ ืž-0. (ื–ื” ื ืงืจื LBA, ืคืจื˜ื™ื ื›ืืŸ: ru.wikipedia.org/wiki/LBA)

ืžืฉื”ื• ืขืœ ืื™ื ื•ื“ื”

ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ืื™ื•ืจ, ืกื™ืžื ืชื™ ื‘ืœื•ืงื™ื ืฉืœ LBA ื›ืจืžืช HDD. ื“ืจืš ืื’ื‘, ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืื™ื–ื” ื’ื•ื“ืœ ื‘ืœื•ืง ื™ืฉ ืœื“ื™ืกืง ืฉืœืš ื›ืš:

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

ื”ืจืžื” ืฉืœืžืขืœื” ื”ื™ื ืžื—ื™ืฆื”, ืื—ืช ืขื‘ื•ืจ ื”ื“ื™ืกืง ื›ื•ืœื• (ืฉื•ื‘ ืœืฉื ื”ืคืฉื˜ื•ืช). ืœืจื•ื‘, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘ืฉื ื™ ืกื•ื’ื™ื ืฉืœ ืกื™ืžื•ืŸ ืžื—ื™ืฆื•ืช: msdos ื•-gpt. ื‘ื”ืชืื, msdos ื”ื•ื ืคื•ืจืžื˜ ื™ืฉืŸ ื”ืชื•ืžืš ื‘ื“ื™ืกืงื™ื ืฉืœ ืขื“ 2Tb, gpt ื”ื•ื ืคื•ืจืžื˜ ื—ื“ืฉ ื”ืžืกื•ื’ืœ ืœืชืช ืžืขื ื” ืœืขื“ 1 ื–ื˜ื”-ื‘ื™ื™ื˜ ืฉืœ ื‘ืœื•ืงื™ื ืฉืœ 512 ื‘ืชื™ื. ื‘ืžืงืจื” ืฉืœื ื• ื™ืฉ ืœื ื• ืžื—ื™ืฆื” ืžืกื•ื’ msdos, ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ืžื”ืื™ื•ืจ, ื”ืžื—ื™ืฆื” ืžืชื—ื™ืœื” ื‘ื‘ืœื•ืง ืžืก' 1, ื‘ืขื•ื“ ืฉืืคืก ืžืฉืžืฉ ืœ-MBR.

ื‘ืžื—ื™ืฆื” ื”ืจืืฉื•ื ื” ืฉื™ืฆืจืชื™ ืžืขืจื›ืช ืงื‘ืฆื™ื ext2, ื’ื•ื“ืœ ื”ื‘ืœื•ืง ื”ืžื•ื’ื“ืจ ื›ื‘ืจื™ืจืช ืžื—ื“ืœ ื”ื•ื 4096 ื‘ืชื™ื, ืžื” ืฉื‘ื ืœื™ื“ื™ ื‘ื™ื˜ื•ื™ ื’ื ื‘ืื™ื•ืจ. ืืชื” ื™ื›ื•ืœ ืœืจืื•ืช ืืช ื’ื•ื“ืœ ื”ื‘ืœื•ืง ืฉืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื›ืš:

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

ื”ืคืจืžื˜ืจ ืฉืื ื• ืฆืจื™ื›ื™ื ื”ื•ื "ื’ื•ื“ืœ ื‘ืœื•ืง".

ืขื›ืฉื™ื• ื”ื—ืœืง ื”ืžืขื ื™ื™ืŸ ื”ื•ื ืื™ืš ืœืงืจื•ื ืืช ื”ืงื•ื‘ืฅ /home/serp/testfile? ืงื•ื‘ืฅ ืžื•ืจื›ื‘ ืžื‘ืœื•ืง ืžืขืจื›ืช ืงื‘ืฆื™ื ืื—ื“ ืื• ื™ื•ืชืจ ืฉื‘ื”ื ืžืื•ื—ืกื ื™ื ื”ื ืชื•ื ื™ื ืฉืœื•. ืœื“ืขืช ืืช ืฉื ื”ืงื•ื‘ืฅ, ืื™ืš ืœืžืฆื•ื ืื•ืชื•? ืื™ืœื• ื‘ืœื•ืงื™ื ืขืœื™ ืœืงืจื•ื?

ื–ื” ื”ืžืงื•ื ืฉื‘ื• ืื™ื ื•ื“ื™ื ืฉื™ืžื•ืฉื™ื™ื. ืœืžืขืจื›ืช ื”ืงื‘ืฆื™ื ext2fs ื™ืฉ "ื˜ื‘ืœื”" ื”ืžื›ื™ืœื” ืžื™ื“ืข ืขื‘ื•ืจ ื›ืœ ื”ืื™ื ื•ื“ื™ื. ืžืกืคืจ ื”ืื™ื ื•ื“ื™ื ื‘ืžืงืจื” ืฉืœ ext2fs ื ืงื‘ืข ื‘ืขืช ื™ืฆื™ืจืช ืžืขืจื›ืช ื”ืงื‘ืฆื™ื. ืื ื• ืžืกืชื›ืœื™ื ืขืœ ื”ืžืกืคืจื™ื ื”ื ื“ืจืฉื™ื ื‘ืคืจืžื˜ืจ "ืกืคื™ืจืช Inode" ืฉืœ ืคืœื˜ tune2fs, ื›ืœื•ืžืจ. ื™ืฉ ืœื ื• 65536 ื—ืชื™ื›ื•ืช. ื”ืื™ื ื•ื“ื” ืžื›ื™ืœื” ืืช ื”ืžื™ื“ืข ืฉืื ื• ืฆืจื™ื›ื™ื: ืจืฉื™ืžื” ืฉืœ ื‘ืœื•ืงื™ื ืฉืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืขื‘ื•ืจ ื”ืงื•ื‘ืฅ ืฉืื ื• ืžื—ืคืฉื™ื. ื›ื™ืฆื“ ืœืžืฆื•ื ืืช ืžืกืคืจ ื”ืื™ื ื•ื“ื” ืœืงื•ื‘ืฅ ื ืชื•ืŸ?

ื”ืฉื ื•ืžืกืคืจ ื”ืื™ื ื•ื“ื” ื”ืชื•ืืžื™ื ื›ืœื•ืœื™ื ื‘ืกืคืจื™ื™ื”, ื•ืกืคืจื™ื™ื” ื‘-ext2fs ื”ื™ื ืกื•ื’ ืžื™ื•ื—ื“ ืฉืœ ืงื•ื‘ืฅ, ื›ืœื•ืžืจ. ื™ืฉ ื’ื ืžืกืคืจ ืื™ื ื•ื“ ืžืฉืœื•. ื›ื“ื™ ืœืฉื‘ื•ืจ ืืช ืžืขื’ืœ ื”ืงืกืžื™ื ื”ื–ื”, ื”ื•ืงืฆื” ืžืกืคืจ ื”ืื™ื ื•ื“ "2" ืœืกืคืจื™ื™ืช ื”ืฉื•ืจืฉ. ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ื”ืชื•ื›ืŸ ืฉืœ ื”ืื™ื ื•ื“ื” ืžืกืคืจ 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

ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช, ื”ืกืคืจื™ื™ื” ืฉืื ื• ืฆืจื™ื›ื™ื ื ืžืฆืืช ื‘ื‘ืœื•ืง ืžืกืคืจ 579. ื‘ื” ื ืžืฆื ืืช ืžืกืคืจ ื”ืฆื•ืžืช ืฉืœ ืชื™ืงื™ื™ืช ื”ื‘ื™ืช, ื•ื›ืš ื”ืœืื” ื‘ืฉืจืฉืจืช ืขื“ ืฉื‘ืชื™ืงื™ื™ืช serp ื ืจืื” ืืช ืžืกืคืจ ื”ืฆื•ืžืช ืฉืœ ื”ืงื•ื‘ืฅ ื”ืžื‘ื•ืงืฉ. ืื ืคืชืื•ื ืžื™ืฉื”ื• ืจื•ืฆื” ืœื‘ื“ื•ืง ื”ืื ื”ืžืกืคืจ ื ื›ื•ืŸ ื•ื”ืื ื™ืฉ ืืช ื”ืžื™ื“ืข ื”ื“ืจื•ืฉ, ื–ื” ืœื ืงืฉื”. ืื ื—ื ื• ืขื•ืฉื™ื:

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

ื‘ืคืœื˜ ื ื™ืชืŸ ืœืงืจื•ื ืืช ืฉืžื•ืช ื”ืงื‘ืฆื™ื ื‘ืกืคืจื™ื™ื”.

ืื– ืื ื™ ืžื’ื™ืข ืœืฉืืœื” ื”ืขื™ืงืจื™ืช: "ืžืื™ื–ื” ืกื™ื‘ื•ืช ื™ื›ื•ืœื” ืœื”ืชืจื—ืฉ ืฉื’ื™ืืช ื”ืงืœื˜ื”?"

ื‘ืื•ืคืŸ ื˜ื‘ืขื™, ื–ื” ื™ืงืจื” ืื ืœื ื ื•ืชืจื• ื‘ืœื•ืงื™ื ืคื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื. ืžื” ื ื™ืชืŸ ืœืขืฉื•ืช ื‘ืžืงืจื” ื–ื”? ืžืœื‘ื“ ื”"ืžื—ืง ื›ืœ ื“ื‘ืจ ืžื™ื•ืชืจ" ื”ื‘ืจื•ืจ, ืขืœื™ืš ืœื–ื›ื•ืจ ืฉื‘ืžืขืจื›ื•ืช ืงื‘ืฆื™ื ext2,3 ื•-4 ื™ืฉ ื“ื‘ืจ ื›ื–ื” "ืกืคื™ืจืช ื—ืกื™ืžื•ืช ืฉืžื•ืจื•ืช". ืื ืืชื” ืžืกืชื›ืœ ืขืœ ื”ืจื™ืฉื•ื ืœืžืขืœื”, ื™ืฉ ืœื ื• "13094" ื‘ืœื•ืงื™ื ื›ืืœื”. ืืœื• ื‘ืœื•ืงื™ื ื”ื ื™ืชื ื™ื ืœื›ืชื™ื‘ื” ืจืง ืขืœ ื™ื“ื™ ืžืฉืชืžืฉ ื”ืฉื•ืจืฉ. ืื‘ืœ ืื ืืชื” ืฆืจื™ืš ืœืคืชื•ืจ ืืช ื”ื‘ืขื™ื” ื‘ืžื”ื™ืจื•ืช, ื›ืคืชืจื•ืŸ ื–ืžื ื™ ืืชื” ื™ื›ื•ืœ ืœื”ืคื•ืš ืื•ืชื ืœื–ืžื™ื ื™ื ืœื›ื•ืœื, ื•ื›ืชื•ืฆืื” ืžื›ืš ืžืงื•ื ืคื ื•ื™:

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

ื”ึธื”ึตืŸ. ื›ื‘ืจื™ืจืช ืžื—ื“ืœ, ื™ืฉ ืœืš 5% ืžืฉื˜ื— ื”ื“ื™ืกืง ืฉืื™ื ื• ื–ืžื™ืŸ ืœื›ืชื™ื‘ื”, ื•ื‘ื”ืชื—ืฉื‘ ื‘ื ืคื— ื”ื“ื™ืกืงื™ื ื”ืžื•ื“ืจื ื™ื™ื, ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืžืื•ืช ื’ื™ื’ื”-ื‘ื™ื™ื˜.

ืžื” ืขื•ื“ ื™ื›ื•ืœ ืœื”ื™ื•ืช? ื™ื™ืชื›ืŸ ื’ื ืฉื™ืฉ ื‘ืœื•ืงื™ื ืคื ื•ื™ื™ื, ืื‘ืœ ืื™ืŸ ื™ื•ืชืจ ืฆืžืชื™ื. ื–ื” ืงื•ืจื” ื‘ื“ืจืš ื›ืœืœ ืื ื™ืฉ ืœืš ื—ื‘ื•ืจื” ืฉืœ ืงื‘ืฆื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืฉืœืš ืฉื”ื ืงื˜ื ื™ื ื™ื•ืชืจ ืžื’ื•ื“ืœ ื”ื‘ืœื•ืง ืฉืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื. ื‘ื”ืชื—ืฉื‘ ื‘ื›ืš ืฉ-1 inode ืžื•ืฉืงืข ืขืœ ืงื•ื‘ืฅ ืื—ื“ ืื• ืกืคืจื™ื™ื”, ื•ื‘ืกืš ื”ื›ืœ ื™ืฉ ืœื ื• (ืขื‘ื•ืจ ืžืขืจื›ืช ืงื‘ืฆื™ื ื ืชื•ื ื”) 1 - ื”ืžืฆื‘ ื™ื•ืชืจ ืžืžืฆื™ืื•ืชื™. ื ื™ืชืŸ ืœืจืื•ืช ื–ืืช ื‘ื‘ื™ืจื•ืจ ืžื”ืคืœื˜ ืฉืœ ื”ืคืงื•ื“ื” 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

ื›ืคื™ ืฉื ื™ืชืŸ ืœืจืื•ืช ื‘ื‘ื™ืจื•ืจ ื‘ืžื—ื™ืฆืช /var/www, ืžืกืคืจ ื”ื‘ืœื•ืงื™ื ื”ืคื ื•ื™ื™ื ื‘ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื•ืžืกืคืจ ื”ืฆืžืชื™ื ื”ืคื ื•ื™ื™ื ืžืฉืชื ื™ื ืžืื•ื“.

ืœืžืงืจื” ืฉื™ื’ืžืจื• ืœืš ื”ืื™ื•ื“ื•ืช, ืื ื™ ืœื ืื’ื™ื“ ืœืš ื›ื™ืฉื•ืคื™ื, ื›ื™... ืื™ืŸ ื›ืืœื” (ืื ืื ื™ ื˜ื•ืขื”, ื”ื•ื“ืข ืœื™). ืื– ืขื‘ื•ืจ ืžื—ื™ืฆื•ืช ืฉื‘ื”ืŸ ืงื‘ืฆื™ื ืงื˜ื ื™ื ืžืชืจื‘ื™ื, ื›ื“ืื™ ืœื‘ื—ื•ืจ ืืช ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื‘ื—ื•ื›ืžื”. ืœื“ื•ื’ืžื”, btrfs inodes ืœื ื™ื›ื•ืœ ืœื”ืกืชื™ื™ื, ื›ื™ ื—ื“ืฉื™ื ื ื•ืฆืจื™ื ื‘ืื•ืคืŸ ื“ื™ื ืžื™ ื‘ืžื™ื“ืช ื”ืฆื•ืจืš.

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”