μ£ΌκΈ°μ μΌλ‘ μ€μμ ν΅μΌν°λ‘ μ΄λνκΈ° μν΄ μνΈνν λ₯΄λΆλ₯΄ν¬μ λͺ¨μ€ν¬λ°λ₯Ό μ€μ¬μΌλ‘ μ¬λ¬ λκΈ°μ μμ DevOps ν¬μ§μ μΌλ‘ λ©΄μ μ λ΄ λλ€. λλ λ§μ νμ¬(Yandexμ κ°μ λ§μ μ’μ νμ¬)κ° λ κ°μ§ μ μ¬ν μ§λ¬Έμ νλ κ²μ λ°κ²¬νμ΅λλ€.
- μμ΄λ Έλκ° λ¬΄μμΈκ°μ?
- μ΄λ€ μ΄μ λ‘ λμ€ν¬ μ°κΈ° μ€λ₯κ° λ°μν μ μμ΅λκΉ(μ: λμ€ν¬ 곡κ°μ΄ λΆμ‘±ν μ΄μ λ λ³Έμ§μ λμΌν©λλ€).
νν κ·Έλ λ―μ΄ λλ μ΄ μ£Όμ λ₯Ό μ μκ³ μλ€κ³ νμ νμ§λ§, μ€λͺ μ μμνμλ§μ μ§μμ κ²©μ°¨κ° λλ¬λ¬μ΅λλ€. λ΄ μ§μμ 체κ³ννκ³ , λΆμ‘±ν λΆλΆμ λ©μ°κ³ , λ μ΄μ λΉν©νμ§ μκΈ° μν΄ μ΄ κΈμ μ°κ³ μμ΅λλ€. μλ§λ λ€λ₯Έ μ¬λμκ²λ λμμ΄ λ κ²μ λλ€.
맨 μλλΆν° μμνκ² μ΅λλ€. νλ λλΌμ΄λΈμμ(νλμ λλΌμ΄λΈ, SSD λ° κΈ°ν μ΅μ μ₯μΉλ νκΈ°ν©λλ€. μλ₯Ό λ€μ΄ λΈλ‘ ν¬κΈ°κ° 20λ°μ΄νΈμ΄λ―λ‘ 80GB λλ 512GBμ μ€λλ λλΌμ΄λΈλ₯Ό κ³ λ €ν΄ λ³΄κ² μ΅λλ€.)
νλ λλΌμ΄λΈλ ν΄λΉ 곡κ°μ λ°μ΄νΈ λ¨μλ‘ μ£Όμ μ§μ νλ λ°©λ²μ λͺ¨λ₯΄λ©° 쑰건μ λ°λΌ λΈλ‘μΌλ‘ λλ©λλ€. λΈλ‘ λ²νΈ μ§μ μ 0λΆν° μμν©λλ€. (μ΄λ₯Ό LBAλΌκ³ ν©λλ€. μμΈν λ΄μ©μ λ€μμ μ°Έμ‘°νμΈμ. )

κ·Έλ¦Όμμ λ³Ό μ μλ―μ΄ LBA λΈλ‘μ HDD λ λ²¨λ‘ μ§μ νμ΅λλ€. κ·Έλ°λ° λ€μκ³Ό κ°μ΄ λμ€ν¬μ λΈλ‘ ν¬κΈ°λ₯Ό νμΈν μ μμ΅λλ€.
root@ubuntu:/home/serp# blockdev --getpbsz /dev/sdb
512μ μμ€μ μ 체 λμ€ν¬μ λν νν°μ μ λλ€(κ°λ¨ν¨μ μν΄ λ€μ ν λ² μΈκΈν¨). λλΆλΆμ κ²½μ° msdosμ gptλΌλ λ κ°μ§ μ νμ νν°μ λ§ν¬μ μ΄ μ¬μ©λ©λλ€. λ°λΌμ msdosλ μ΅λ 2Tbμ λμ€ν¬λ₯Ό μ§μνλ κΈ°μ‘΄ νμμ΄κ³ , gptλ 1λ°μ΄νΈ λΈλ‘ μ€ μ΅λ 512μ νλ°μ΄νΈκΉμ§ μ£Όμλ₯Ό μ§μ ν μ μλ μλ‘μ΄ νμμ λλ€. μ°λ¦¬μ κ²½μ° κ·Έλ¦Όμμ λ³Ό μ μλ―μ΄ msdos μ νμ νν°μ μ΄ μμ΅λλ€. νν°μ μ λΈλ‘ λ²νΈ 1λ‘ μμνκ³ MBRμλ XNUMXμ΄ μ¬μ©λ©λλ€.
첫 λ²μ§Έ νν°μ μμ 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 νμΌμ μ½λ λ°©λ²μ λλ€. νμΌμ λ°μ΄ν°κ° μ μ₯λλ νλ μ΄μμ νμΌ μμ€ν λΈλ‘μΌλ‘ ꡬμ±λ©λλ€. νμΌ μ΄λ¦μ μλ©΄ μ΄λ»κ² μ°Ύμ μ μλμ? μ΄λ€ λΈλ‘μ μ½μ΄μΌ νλμ?
μ΄κ²μ inodeκ° μ μ©ν κ³³μ λλ€. ext2fs νμΌ μμ€ν μλ λͺ¨λ inodeμ λν μ λ³΄κ° ν¬ν¨λ "ν μ΄λΈ"μ΄ μμ΅λλ€. ext2fsμ κ²½μ° inode μλ νμΌ μμ€ν μμ± μ μ€μ λ©λλ€. tune2fs μΆλ ₯μ "Inode count" λ§€κ°λ³μμμ νμν μ«μλ₯Ό μ΄ν΄λ΄ λλ€. μ¦, 65536κ°μ μ‘°κ°μ΄ μμ΅λλ€. inodeμλ μ°λ¦¬κ° μ°Ύκ³ μλ νμΌμ λν νμΌ μμ€ν λΈλ‘ λͺ©λ‘κ³Ό κ°μ νμν μ λ³΄κ° ν¬ν¨λμ΄ μμ΅λλ€. νΉμ νμΌμ inode λ²νΈλ₯Ό μ°Ύλ λ°©λ²μ 무μμ λκΉ?
ν΄λΉ μ΄λ¦κ³Ό inode λ²νΈλ λλ ν 리μ ν¬ν¨λμ΄ μμΌλ©° ext2fsμ λλ ν 리λ νΉλ³ν μ νμ νμΌμ λλ€. λν μ체 inode λ²νΈλ μμ΅λλ€. μ΄ μ μνμ κΉ¨κΈ° μν΄ "κ³ μ λ" inode λ²νΈ "2"κ° λ£¨νΈ λλ ν°λ¦¬μ ν λΉλμμ΅λλ€. inode λ²νΈ 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κ°μ νμΌ λλ λλ ν 리μ μλΉλκ³ μ΄κ³(μ£Όμ΄μ§ νμΌ μμ€ν μ λν΄) 65536μ΄ μλ€λ μ μ κ³ λ €νλ©΄ μν©μ νμ€μ μ΄μμ λλ€. μ΄λ 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 inodeλ μ’
λ£λ μ μμ΅λλ€. νμν κ²½μ° μ νλͺ©μ΄ λμ μΌλ‘ μμ±λ©λλ€.
μΆμ² : habr.com
