μμ
μ΄μ
ꡬμ±νμΌμ΄ μ€λΉλλ©΄ 볡μ λ₯Ό μ΄μνλ λ¨κ³λ‘ μ΄νν©λλ€. 리μμ€ κΈ°λ, μ€μ§, λκΈ°ν/볡μ , μ 체 λ±μ μ΄μ μ¬λ‘λ₯Ό μ°¨λ‘λ‘ μ€λͺ ν©λλ€.
볡μ μ΄μμ 리μμ€ λ¨μλ‘ μνν©λλ€.
리μμ€ μμ
μ΅μ΄ 리μμ€λ₯Ό μμνκΈ° μ μ λ©ν λ°μ΄ν°λ₯Ό μμ±νλ μ΄κΈ°ν κ³Όμ μ μνν΄μΌ ν©λλ€. λ©ν λ°μ΄ν° μ΄κΈ°νλ 리μμ€ μ΅μ΄ μμ μ νλ² λ§ μν ν©λλ€.
fsradm meta
create
[리μμ€λͺ ] {–force | -f}
리μμ€λ₯Ό μΆκ° ν©λλ€.
fsradm add
[리μμ€λͺ ]
λ©ν λ°μ΄ν°κ° μμ±λ 리μμ€λ₯Ό 볡μ λμμΌλ‘ μ μ¬ν©λλ€.
fsradm attach [리μμ€λͺ ]
μ μ¬ λ 리μμ€λ μμ§ μλ λ Έλμ μ°κ²°μ μλνμ§ μλ μ€λ¦½ μνμ λλ€. μ°κ²° λͺ λ Ήμ ν΅ν΄ 볡μ μ°κ²°μ μλν©λλ€.
fsradm connect [리μμ€λͺ ] [μλλ Έλλͺ ]
up λͺ λ Ήμ ν΅ν΄ add, attach, connect λ₯Ό μμ°¨μ μΌλ‘ μνν μ μμ΅λλ€. λ³΄ν΅ λ¦¬μμ€λ₯Ό κΈ°λν λ up λͺ λ Ήμ μ¬μ©ν©λλ€.
fsradm up [리μμ€λͺ ]
리μμ€ μ€μ§
리μμ€μ μ°κ²°μ disconnect
λͺ
λ ΉμΌλ‘ ν΄μ ν μ μμ΅λλ€.
fsradm disconnect [리μμ€λͺ ] [μλλ Έλλͺ ]
μ°κ²°μ΄ ν΄μ λ 리μμ€λ₯Ό λΆλ¦¬ν©λλ€.
fsradm detach [리μμ€λͺ ]
λΆλ¦¬ν 리μμ€λ₯Ό μμ ν©λλ€.
fsradm del [리μμ€λͺ ]
down λͺ λ ΉμΌλ‘ disconnect, detach, del μ μμ°¨μ μΌλ‘ μνν μ μμ΅λλ€. λ³΄ν΅ λ¦¬μμ€ μ€μ§λ down λͺ λ Ήμ μ¬μ©ν©λλ€.
fsradm down [리μμ€λͺ ]
λκΈ°ν
μ΄κΈ° λκΈ°ν
μμ€μ νκΉ μλ Έλμ 리μμ€λ₯Ό μμνμ¬ λ³΅μ μ°κ²°μ μ±λ¦½νλ©΄ λκΈ°νλ₯Ό μμνκΈ° μ μνλ‘ λκΈ° ν©λλ€. μ΄κΈ° λκΈ°νμ λ°©ν₯μ΄ κ²°μ λμ§ μμ ννμν μ λλ€. μ΄ μνμμ μμ€κ° λ λ Έλμ 리μμ€ μν μ Primaryλ‘ μΉκ²©νμ¬ μ΄κΈ° λκΈ°νλ₯Ό μμν©λλ€. λκΈ°νκ° μμλ¨κ³Ό λμμ μμ€ μΈ‘ λ°μ΄ν°μ λ³κ²½λΆμ΄ λ°μνλ©΄ ν΄λΉ λ³κ²½λΆμ λν΄μλ μ€μκ° λ³΅μ ν©λλ€. FSRμ κΈ°λ³Έμ μΌλ‘ λκΈ°νμ 볡μ λ₯Ό λμμ μνν©λλ€.
리μμ€λ₯Ό μΉκ²©νκΈ° μν λͺ λ Ήμ λ€μκ³Ό κ°μ΅λλ€.
fsradm primary [리μμ€λͺ ]
리μμ€μ μν μ primary λ‘ μ ννλ κ²μ μΉκ²©, μν μ secondary λ‘ μ ννλ κ²μ κ°λ±μ΄λΌκ³ ν©λλ€.
μ΄κΈ° λκΈ°ν μμ μ λ‘컬 νμΌμ μλ Έλ μ ν©μ±μ΄ λ§μ§ μμ Inconsistent μνλ₯Ό μ΄κΈ°κ°μΌλ‘ νκΈ° λλ¬Έμ κΈ°λ³Έμ μΌλ‘ μΉκ²©μ΄ κ±°λΆλ©λλ€. μ΄κΈ° μΉκ²© μμλ κ°μ (-f μ΅μ ) μΉκ²©μ ν΅ν΄ μ¬μ©μκ° ν΄λΉ 리μμ€λ₯Ό μμ€λ‘ νκ² λ€κ³ λͺ μμ μΌλ‘ μλ €μΌ ν©λλ€.
c:\>fsradm primary r0 declined r0: not up to date c:\>fsradm primary r0 -f done
κ°μ μΉκ²©μ΄ μ±κ³΅νλ©΄, μμ€ λ Έλλ μμ μ νμΌ μνλ₯Ό UpToDateλ‘ λ³κ²½νκ³ μμ κ³Ό μ°κ²°λ νκΉ λ Έλλ€μ λμμΌλ‘ μ΄κΈ°λκΈ°νλ₯Ό μμν©λλ€.
μ΄κΈ° λκΈ°νλ μ 체 νμΌμ μ λμμΌλ‘ μ§ννμ§λ§ νλ² λκΈ°νκ° μλ£λ ν λ€μ λκΈ°νλ₯Ό ν κ²½μ°μλ μμ€ μΈ‘μ λ³κ²½λΆμ λν΄μλ§ λΆλΆ λκΈ°ν ν©λλ€. μλ₯Ό λ€μ΄ μ΄κΈ° λκΈ°ν ν 볡μ μ°κ²°μ΄ λ¨μ λμλ€κ° μ¬μ°κ²°λ κ²½μ° λΆλΆ λκΈ°νλ‘ μ§νλ©λλ€.
λκΈ°νκ° μ§νλλ λμ€μ νκΉμ νμΌμνλ Inconsistentμ΄λ©° λκΈ°νκ° μλ£λλ©΄ μμ€μ νκΉμ μ ν©μ±μ΄ μΌμΉνλ UptoDate μνκ° λ©λλ€. Inconsistent μνλ μ΅μ μ λ°μ΄ν°κ° μλλ―λ‘ λ³΅μ μ΄μ μΈ‘λ©΄μμ κ°λ₯ν Inconsistent μνλ₯Ό μ§§κ² μ μ§νλκ² λ°λμ§ν©λλ€.
μλ λκΈ°ν
μ΄μ λμ€ λκΈ°νλ₯Ό μλμΌλ‘ ν΄μΌν κ²½μ°μ invalidate-remote λͺ λ Ήμ ν΅ν΄ μνν©λλ€. λ‘컬μ μμ€λ‘ νμ¬ νΌμ΄λ Έλλ₯Ό λκΈ°ν νλ λͺ λ Ήμ λλ€.
c:\>fsradm invalidate-remote r0
invalidate λͺ λ Ήμ νΌμ΄λ Έλλ₯Ό μμ€λ‘ νμ¬ λκΈ°ννλ λͺ λ Ήμ λλ€.
c:\>fsradm invalidate r0
μλ λκΈ°ν
μλμΌλ‘ μ‘°μνλ κ²μ μ μΈνλ©΄ λκΈ°νλ κΈ°λ³Έμ μΌλ‘ λ―Έλ¬λ§ μ°κ²°μ΄ μ립λλ©΄ λͺ¨λ μλμ μΌλ‘ μνλ©λλ€. FSRμ νμΌ λκΈ°νλ₯Ό μν΄ λκΈ°νλ₯Ό μννλ μμ μ νμΌ κ°μ μ°¨μ΄λ₯Ό μ€μκ° νμ νκ³ λκΈ°ν ν©λλ€.
νμΌ λΉκ΅ λ°©μ
λκΈ°νλ μ μΈ‘ νμΌμ μ°¨μ΄μ μ μΈμνλ μ λμ λ°λΌ λͺ κ°μ§ λμ λ°©μμ μ¬μ©μκ° μ§μ ν μ μμ΅λλ€. λμ λ°©μμ λ°λΌ λκΈ°νλ₯Ό μννλ μλμ μ°¨μ΄κ° μμΌλ―λ‘ μ λΉν μμ€μ κ°μΌλ‘ ꡬμ±ν΄μΌ ν©λλ€.
{ ... "options": { "sync": { "comparison_level": 2 "hash_type": "crc32" } } }
comparison_level μ μ§μ ν κ°μ μλ―Έλ λ€μκ³Ό κ°μ΅λλ€.
- 0: full-sync(μ 체 λκΈ°ν), λΉκ΅ μμ΄ μ 체 λκΈ°νλ₯Ό ν©λλ€. 무쑰건μ μΌλ‘ νμΌ μ 체λ₯Ό λκΈ°ν νλ―λ‘ μκ°μ΄ μ€λ 걸리μ§λ§ κ°μ₯ νμ€νκ² λκΈ°ν νλ λ°©μμ λλ€.
- 1: sync-by-hash-comp(μμ±, ν΄μ¬ λΉκ΅ λκΈ°ν), νμΌμ μμ±μ λΉκ΅νκ³ μ°¨μ΄μ μ ν΄μ¬ λΉκ΅νμ¬ λκΈ°ν ν©λλ€. FSR 1.2 λ²μ μ κΈ°λ³Έ λμλͺ¨λ μ λλ€.
- 2: sync-by-prop-comp(μμ± λΉκ΅ λκΈ°ν), νμΌ μμ±μ μ°μ λΉκ΅νκ³ κ°μΌλ©΄ ν΄μ¬ λΉκ΅λ₯Ό 건λλλλ€. μμ±μ΄ λ€λ₯΄λ©΄ ν΄μ¬ λΉκ΅λ₯Ό μνν©λλ€.
- 3: partial-sync(λ³κ²½μ λκΈ°ν), νμΌμ λ³κ²½μ μ μΆμ νκ³ λ³κ²½λ νμΌμ λν΄μ λ§ λκΈ°ν ν©λλ€. FSR 1.3 μ κΈ°λ³Έ λμ λͺ¨λ μ λλ€.
κ·Έλ¬λ λ€μκ³Ό κ°μ μν©μμ μμ± λΉκ΅ λκΈ°ν(2)λ‘ μ€μ λμλ€ νλλΌλ ν΄μ¬λΉκ΅ λκΈ°ν(1)κ° μ°μ μ λμ΄ λμν μ μμ΅λλ€.
- νκΉμ νμΌ μ κΈμ΄ ν΄μ λ κ²½μ°
- μμ€ μΈ‘μ΄ μ΄μ μ€ μ₯μ λ‘ μΈν΄ fail λκ±°λ κ°μ 리λΆν (crashed primary) λ κ²½μ°
λ± μλμΉ μμ μ΄μ λ° μ₯μ μ μ€νλ μν©μμ νμΌμ μμ±κ°μ ν΅ν λΉκ΅κ° νμ μΌκ΄λμ§ μμ μ μκΈ° λλ¬Έμ ν΄μ¬λΉκ΅ λκΈ°νλ‘ μ²λ¦¬νμ¬ νμΌ κ°μ μ ν©μ±μ μ μ§ ν©λλ€.
ν΄μ¬ λΉκ΅ λκΈ°νλ νμΌμ μΌμ λΈλμΌλ‘ λΆν νμ¬ λΉκ΅νκ³ μ°¨μ΄κ° μλ λΆλΆλ§ λκΈ°ννμ¬ ν¨μ¨μ μΌλ‘ λμν©λλ€. ν΄μ¬ μκ³ λ¦¬μ¦μ hash_type κ°μΌλ‘ crc32, md5, sha1, sha256, sha512 μ€ μ ννμ¬ μ§μ ν μ μμ΅λλ€. DB νμΌμ 볡μ ν κ²½μ° ν΄μ¬λΉκ΅ λκΈ°νλ₯Ό κΈ°λ³Έκ°μΌλ‘ μ§μ ν΄μΌ ν©λλ€.
Invalidate λͺ λ Ήμ comparison_level 1(sync-by-hash-comp(μμ±, ν΄μ¬ λΉκ΅ λκΈ°ν))μ κΈ°λ³Έ λμλͺ¨λλ‘ ν©λλ€. λμ λͺ¨λλ Invalidate λͺ λ Ήμ μ΅μ μΌλ‘ μ‘°μ ν μ μμ΅λλ€.
λμ μ€μ
볡μ λ€νΈμν¬μ 볡μ , λκΈ°ν λμνμ μ¬μ μ μ‘°μ¨νκ³ μ μ ν μμΉ λλ λΉμ¨λ‘ ꡬμ±ν΄μΌ ν©λλ€. 볡μ μ λκΈ°νμ λΉμ¨μ λ³΄ν΅ 7:3(볡μ 7, λκΈ°ν 3)μ λΉμ¨μ κΈ°λ³ΈμΌλ‘ νμ¬ λ€νΈμν¬ μν©μ λ§κ² μ‘°μ νλ©΄ λ©λλ€. λλλ‘ λ³΅μ μ λ§μ λΉμ€μ λλ κ² λ‘컬 I/O μ±λ₯μ μ’μ΅λλ€.
sync_min κ³Ό sync_max μ¬μ΄μμ λκΈ°ν λμμ μ€μ ν μ μμΌλ©° sync_min μ μ΅μν λμ 보μ₯ λκΈ°ν λμμΌλ‘ μ§μ λ©λλ€. λ¨μλ byte/s μ λλ€.
{ ... "network": { "sync_ratio" : "7:3", "sync_min" : 100M, "sync_max" : 1G } }
볡μ μμ
Secondary λ Έλκ° μΉκ²©λμ΄ λκΈ°νκ° μμλ¨κ³Ό ν¨κ» μμ€λ Έλμ λ°μ΄ν°μ μ€μκ° λ³κ²½λΆμ΄ λ°μν κ²½μ° λ³κ²½λΆμ λν λ°μμ μλμΌλ‘ λ³νν©λλ€. 볡μ λ λ‘컬 λ°μ΄ν°μ μ€μκ° λ³κ²½ λΆμ νκΉμΌλ‘ μ€μκ° λ°μνλ λμμΌλ‘ μ μ λλ©° Primary λ Έλμμ Secondary λ Έλμ λ°©ν₯μΌλ‘ μ§νλ©λλ€.
λκΈ°νμ 볡μ κ° μ§νλλ λμ€μλ κ° λ Έλμ Role μ μ¬μ©μ λͺ λ Ήμ μν΄ μλμΌλ‘ λ³κ²½λ μ μμΌλ©°, Primary λ Έλκ° κ°λ±λλ©΄ 볡μ λ μ€λ¨λ©λλ€.
μΉκ²©λ 리μμ€λ₯Ό κ°λ± μν€κΈ° μν λͺ λ Ήμ λ€μκ³Ό κ°μ΅λλ€.
fsradm secondary [리μμ€λͺ ]
볡μ λ Primary μν λ‘ μΉκ²©λ λ Έλλ₯Ό μμ€λ‘ νμ§λ§ λκΈ°νλ μν μ κ΄κ³μμ΄ λκΈ°νκ° νμν κ²½μ° μνλ©λλ€. 볡μ ν λ³κ²½λΆμ΄ μκ±°λ κ°λ±μ μν΄ λ³΅μ κ° μ€λ¨λλλΌλ λκΈ°νκ° μ§νμ€μ΄μλ€λ©΄ μλ£λ λ κΉμ§ λκΈ°νλ μ§μλ©λλ€.
λλ½νμΌ
λκΈ°νλ₯Ό λλ΄κ³ 볡μ λ₯Ό μννλ λμ€μ 볡μ λμμ μμλ νμΌμ΄ κ°μκΈ° 볡μ λμ κ²½λ‘μ ν¬ν¨λ μ μμ΅λλ€. μ΄λ¬ν νμΌμ λλ½νμΌμ΄λΌκ³ νλ©° λ€μκ³Ό κ°μ μ΄μμν©μμ λ°μν μ μμ΅λλ€.
- 볡μ λμμ ν¬ν¨λμ§ μμλ λμΌ λ³Όλ₯¨ μ₯μΉ κ²½λ‘μ μμλ νμΌμ΄ νμΌ μ΄λ(move) μ°μ°μ ν΅ν΄ 볡μ λμ κ²½λ‘λ‘ μ μ λλ κ²½μ°
- μ μΈν¨ν΄μΌλ‘ μ μΈλμλ νμΌμ΄ μ μΈν¨ν΄ μ μ± λ³κ²½μΌλ‘ μΈν΄ 볡μ λμμ λ€μ ν¬ν¨λλ κ²½μ°
첫 λ²μ§Έμ κ²½μ° FSRμ ν΄λΉ νμΌμ λν Filesystem I/Oλ₯Ό μΊ‘μ²ν μ μμΌλ©° λ¨μ§ νμΌκ²½λ‘μ λν μ΄λ¦ λ³κ²½(rename)λ§ μμ νκ² λμ΄ λ³΅μ λ‘ μ²λ¦¬ν μ μμ΅λλ€. μ΄λ° κ²½μ° FSR μ μΌλ¨ 볡μ μνλ₯Ό μ μ§νκ³ μ΄μ λμμ ν΄λΉ λλ½νμΌμ λν΄μ κ°λ³μ μΌλ‘ λκΈ°νλ₯Ό μννμ¬ μ²λ¦¬ν©λλ€. λ λ²μ§Έ μ μΈν¨ν΄ λ³κ²½μ λ°λ₯Έ λλ½μ κ²½μ°λ νμΌμμ€ν I/O μ°μ°μ΄ μλ μνμμ 볡μ λμλ§ λ³κ²½λ κ²½μ°μ΄κΈ° λλ¬Έμ κΈ°λ³Έμ μΌλ‘ μ¬λκΈ°νλ‘ μ²λ¦¬ν©λλ€.
κ³ μνμΌ
κ³ μνμΌμ λλ½νμΌκ³Ό λ¬λ¦¬ νκΉμ 볡μ κ²½λ‘μ μ°κ³ μμ΄ λ¨κ²¨μ§ νμΌλ‘ μ μν©λλ€. μ΄κ²μ μΌλ°μ μΈ λ³΅μ μν©μμ λ°μνμ§ μμ§λ§ νκΉμ νμΌμ΄ 보νΈλμ§ μλ μν©μμ μλμΉ μμ νμΌ μ‘°μμ΄ μμ κ²½μ°μ λ°μν©λλ€.
κ³ μνμΌμ΄ λ°μνλ©΄ FSR μ κ³ μνμΌ λμ μ μ± μ λ°λΌ μ²λ¦¬κ° λκ³ κΈ°λ³Έμ μΌλ‘ νκΉμ νΉμ κ²½λ‘μ λ°±μ νλ κ²μΌλ‘ μ²λ¦¬λ©λλ€. λ°±μ νμμμ΄ λ°λ‘ μμ μ²λ¦¬νλλ‘ μ΅μ μ μ§μ ν μλ μμ΅λλ€.
νμΌμ κΈ
νκΉμ 볡μ λ νμΌλ€μ μμ€λ‘λΆν° μμ νλ λ―Έλ¬λ§ λ°μ΄ν° μ΄μΈμ λ€λ₯Έ μ°κΈ° I/O λ‘ λΆν° 보νΈλμ΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ 볡μ μ¬λ³Έμ μ μ§νκΈ° μν λ°μ΄ν° μΌκ΄μ±μ 보μ₯ν μ μμ΅λλ€. νΉν HAλ₯Ό μ΄μνλ κ²½μ° μ 체μ κ³Όμ μ€ λκΈ°λ Έλμ λ°μ΄ν° μΌκ΄μ± 보μ₯μ μν΄ νμΌ μ κΈ κΈ°λ₯μ λ°λμ νμ±ν μμΌμ μ΄μν΄μΌ ν©λλ€.
νμΌμ κΈμ 리μμ€μ nodes μΉμ λ΄μ auto_file_lock μ΅μ μ ν΅ν΄ 리μμ€μ μν μ λ°λΌ μλμΌλ‘ μ€μ λκ² νκ±°λ fsradm lock λλ unlock λͺ λ Ήμ ν΅ν΄ μλμΌλ‘ νμ±ν,λΉνμ±ν ν μ μμ΅λλ€.
μλ μ κΈ
auto_file_lock μ΅μ μ κΈ°λ³Έ νμ±νλμ΄ μμ΅λλ€. 리μμ€μ μν μ΄ κ°λ±λλ€λ©΄ νμΌλ€μ κΈ°λ³Έμ μΌλ‘ μ κ²¨μ§ μνκ° λ©λλ€. μ κ²¨μ§ νμΌλ€μ ν΄μ νλ €λ©΄ 리μμ€μ μν μ μΉκ²©νκ±°λ unlock λͺ λ Ήμ ν΅ν΄ μ κΈμ ν΄μ ν΄μΌ ν©λλ€.
κ°λ± μ μ κΈμ μλμ΄μ§λ§ ν΄μ λ μλμ΄ μλλλ€.
μλ μ κΈ
auto_file_lock μ΅μ μ λΉνμ±ν νκ³ νμΌμ κΈμ μλμΌλ‘ μ΄μν μλ μμ΅λλ€. νμΌμ κΈμ μλμΌλ‘ μ΄μνλ €λ©΄ λ€μκ³Ό κ°μ΄ μ κΈλͺ λ Ήκ³Ό κ°λ±λͺ λ Ήμ κ°λ³μ μΌλ‘ μννκ³ λͺ λ Ή μμλ₯Ό μ§μΌμΌ ν©λλ€.
c:\>fsradm lock r0 done c:\>fsradm secondary r0 done
-l μ΅μ μ λͺ μν κ²½μ° μμ λ λͺ λ Ήμ νλμ κ°λ±λͺ λ ΉμΌλ‘ μ²λ¦¬ν μλ μμ΅λλ€. λͺ λ Ήμ μμλ μμ λμΌνκ² λ½μ λ¨Όμ κ±Έκ³ κ°λ±ν©λλ€.
c:\>fsradm secondary -l r0 done
μ΄μ λ°λλ‘ μΉκ²© κ³Όμ μμ primary λͺ λ Ή μ΄ν μ κΈμ ν΄μ ν©λλ€.
c:\>fsradm primary r0 done c:\>fsradm unlock r0 done
-u μ΅μ μ μ¬μ©νλ©΄ νλμ μΉκ²©λͺ λ Ήμμ μ²λ¦¬ν μ μμ΅λλ€.
c:\>fsradm primary -u r0 done
- νμΌ μ κΈμ΄ νμ±ν λλ©΄ ν΄λΉ 볡μ νμΌ μ μ λν μ°κΈ° I/Oκ° μ°¨λ¨ λλ―λ‘ κ΄λ ¨λ μ ν리μΌμ΄μ λ° μλΉμ€λ€μ λͺ¨λ μ’ λ£νμ¬ ν΄λΉ νμΌλ‘ I/O κ° λμ΄μ λ°μνμ§ μκ² ν ν μ κΈμ΄ μνλλλ‘ ν΄μΌ ν©λλ€. μ΄λ κ² νμ§ μμΌλ©΄ I/O κ° λ°μνλ λμ€ μ°κΈ°κ° μ°¨λ¨λμ΄ I/O μλ¬κ° μ λ°λκ±°λ μ ν리μΌμ΄μ μ΄ κ°μ§κ³ μλ μΊμ¬ μμμ λν Flushλ₯Ό ν μ μλ κΈ°νλ₯Ό λμ³μ μ€μν λ°μ΄ν°μ κΈ°λ‘μ΄ λλ½λ μ μμ΅λλ€. μ 체 μμλ λ°λμ μ ν리μΌμ΄μ μ΄ μμ ν μ’ λ£ μμ μ μνν ν νμΌμ κΈμ΄ μνλλλ‘ λ³΄μ₯ν΄μΌ ν©λλ€.
- λ§μ½ μ ν리μΌμ΄μ μ μ’ λ£νμ§ λͺ»νκ±°λ 볡μ λμ νμΌμ νΈλ€μ΄ μ΄λ¦° μνλ‘ κ°λ± λμλ€λ©΄ κ°λ±μ΄ μ±κ³΅νλ€κ³ νλλΌλ μ΄μ²λΌ μ 리 μλ νμΌλ€μ λμμΌλ‘ ν νκΉμ μ°κΈ°κ° μ€ν¨ λ μ μμ΅λλ€. νκΉμ νμΌμ΄ μ΄λ―Έ μ½κΈ° λͺ¨λλ‘ μ΄λ €μ Έ μλ€λ©΄ FSR μμ§μ΄ μ°κΈ° κΆνμ΄ μμΌλ―λ‘ μ μ΄ν μ μκΈ° λλ¬Έμ λλ€. FSR 1.2 μμλ μ΄λ¬ν λ¬Έμ λ₯Ό μλ°©νκΈ° μν΄ νμΌ μ κΈ μ μ΄λ―Έ μ΄λ €μ Έ μλ νμΌ νΈλ€μ λͺ¨λ κ°μ λ‘ λ«λλ‘ ν©λλ€.
- κΈ°μ‘΄μ FSRμμ μ 곡νλ μ½κΈ°μ μ© μ κΈ κΈ°λ₯λ λ μ΄μ μ 곡νμ§ μκΈ°λ‘ νμ΅λλ€. μ½κΈ° μ μ© μ κΈμ΄ μ½κΈ°λ₯Ό νμ©ν¨μΌλ‘ μΈν΄ νκΉμ μμ§ μ°κΈ° μ€ν¨κ° μΌκΈ°λλ μ μ¬μ λ¬Έμ λ₯Ό μ°¨λ¨νκΈ° μν¨μ λλ€. μ΄μ νμΌμ κΈμ μ 체 μ κΈ(μ΄κΈ°,μ½κΈ°,μ°κΈ° λͺ¨λ μ κΈ)λ§ μ 곡ν©λλ€.
μ ν
μ ν(switchover)μ 볡μ ν΄λ¬μ€ν° λ΄μ νλμ μμ€ν μμ λ€λ₯Έ μμ€ν μΌλ‘ μμμ λν μ‘μΈμ€λ₯Ό μλ κ΅ννλ λμμ λλ€. μμ€ λ Έλλ₯Ό κ°λ±μν¨ ν νκΉλ Έλλ₯Ό μμ€λ Έλ μν λ‘ μΉκ²©νμ¬ μλΉμ€λ₯Ό μν λ°μ΄ν°λ₯Ό νμ±ννλ κ³Όμ μ λλ€. μλμ 체 λΌκ³ λ νλ©° μ΄μ λ°λλ‘ μ₯μ μ μλ λμνλ κ°λ μΌλ‘ μ₯μ μ‘°μΉ(failover)κ° μμ΅λλ€.
μμ€λ Έλμ 리μμ€λ₯Ό κ°λ±ν©λλ€.
c:\>fsradm secondary r0 done
νκΉλ Έλμ 리μμ€λ₯Ό μΉκ²©ν©λλ€.
c:\>fsradm primary r0 done
- μ ν(switchover)μ κ΄λ¦¬μκ° μλνκ±°λ κ³νν μλμ λμμ΄μ§λ§, μ 체(failover)λ μκΈ°μΉ μμ μ₯μ μ λμνκΈ° μν λμμΌλ‘ μλ μνμ μ μ ν©λλ€.
- μ ν/μ 체 μ νκΉλ Έλμ 리μμ€ νμΌμνλ UpToDate μ΅μ μνμΌ λ 볡μ μ ν©μ±μ 보μ₯ν©λλ€. λ§μ½ 볡μ μ°κ²°μ΄ λ¨μ λμ΄ νκΉμ΄ μ΅μ λ°μ΄ν°λ₯Ό κ°μ§μ§ λͺ»ν κ²½μ° μ΄κ±°λ νκΉλ Έλμ 리μμ€κ° λκΈ°ν μ€μΈ Inconsistent μνμΌ κ²½μ°μλ μμ€μ μ ν©νμ§ μμ μνμ΄λ―λ‘ μ ν/μ 체λ₯Ό μ νν΄μΌ ν©λλ€.
μν μ μ§
리μμ€ μν μ μ΄μ μν©μ λ°λΌ λ³κ²½λ μ μμ§λ§, λλ‘λ μν μ μ§μν΄μ μ΄μνλ λ°©μμ΄ νμν μ μμ΅λλ€. (FSR 1.2.4 μ΄μ)
persist_role μ΄ μ€μ λ 리μμ€λ μ¬ μμ λλ μμ μ λͺ μμ μΌλ‘(fsradm λͺ λ ΉμΌλ‘) μ§μ λ 리μμ€ μν μ κ³μ μ μ§ν©λλ€. 볡μ μλΉμ€ λλ μμ€ν μ΄ λ¦¬λΆν λμ΄ λ¦¬μμ€κ° μ¬ μμλλ λͺ¨λ μν©μμ λμν©λλ€.
{ ... "options": { "persist_role": true, ... } }
λ¨λ°©ν₯ 볡μ
μ νκ³Ό μ 체μμ΄ νμ μ£Ό λ Έλμμ λκΈ°λ Έλλ‘μ λ¨λ°©ν₯ 볡μ /λ°±μ λ§ νκ³ μΆλ€λ©΄ λκΈ° λ Έλ μΈ‘μ νκΉ μ μ©(target_only) μμ±μ κ³ λ €νμμμ€. (FSR 1.2.4 μ΄μ)
- μμμ μ€λͺ ν persist_role μμ±μ 리μμ€ options μΉμ μ μ€μ νμ¬ μ£Ό λ Έλμ λκΈ°λ Έλμ μν (role)μ κ³ μ ν©λλ€.
- target_only μμ±μ λκΈ° λ Έλ μΈ‘μ μ€μ νμ¬ λ³΅μ /λκΈ°ν λ°©ν₯μ μ£Ό λ Έλμμ λκΈ°λ Έλ ν μͺ½ λ°©ν₯μΌλ‘λ§ κ°μ ν©λλ€. target_only κ° μ μ©λ λ Έλλ₯Ό νκΉ μ μ© λ ΈλλΌκ³ ν©λλ€.
νκΉ μ μ© λ Έλλ λͺ μμ μΈ λͺ λ Ήμ ν¬ν¨ν λͺ¨λ 볡μ /λκΈ°ν λμμμμ μμ€ μν μ΄ κΈμ§λκ³ νκΉ μν λ§ κ°μ§ μ μμ΅λλ€. κ·Έλ¦¬κ³ μμ€ μν λ‘ λμνλ μλ λκΈ°νλ μΉκ²© λͺ λ Ή λ±μ λͺ¨λ μ°¨λ¨λ©λλ€(λ¨, 볡μ μ°κ²° ν΄μ μ μΉκ²© νμ©λ¨).
{ ... "options": { "persist_role": true, ... } "nodes": [ { "name": "active", ... }, { "name": "standby", "target_only": true ... } }
νκΉ μ μ© λ Έλμ λ°μ΄ν° νμΈ
볡μ μ°κ²°μ ν΄μ ν ν
- νμΌμ κΈ ν΄μ λ₯Ό ν΅ν΄ λ°μ΄ν°λ₯Ό νμΈν μ μμ΅λλ€.
- μΉκ²©μ ν΅ν΄ λ°μ΄ν°λ₯Ό νμΈν μλ μμ΅λλ€.
- λ°μ΄ν° νμΈμ μν΄ μΉκ²©μ ν μμ μλ SBκ° λ°μν μνμ΄λ―λ‘ λ³΅μ λ₯Ό λ€μ μ μννλ €λ©΄ λ€μ κ°λ± ν SB ν΄κ²°λ‘ μ²λ¦¬ν©λλ€.
μ‘°ν
μν μ‘°ν
FSRμ μνλ₯Ό fsradm status λͺ λ Ήμ ν΅ν΄ μ‘°νν μ μμ΅λλ€.
λ fsradm status all r0 role:primary file:up_to_date pending:0 locked:false node2 state:repl_source peer-state:repl_target role:secondary file:up_to_date last-synced:2019-10-24T15:30:12+09:00 node3 state:connecting peer-state:unknown role:secondary file:unknown last-synced:none r1 role:secondary file:inconsistent pending:0 locked:false node2 state:connecting peer-state:unknown role:secondary file:unknown last-synced:none
μμΈ μΆλ ₯ μ΅μ μ μ¬μ©νλ©΄ λ λ§μ μν μ 보λ₯Ό μ‘°νν μ μμ΅λλ€.
λ fsradm status -v r0:node1 role:primary file:up_to_date pending:0 locked:false last-promoted:2020-06-10T09:40:32+09:00 node2 state:repl_source peer-state:repl_target role:secondary file:up_to_date repl-started:2020-06-10T09:40:32+09:00 last-synced:2020-06-10T09:40:33+09:00 node3 state:connecting peer-state:unknown role:secondary file:unknown repl-started:2020-04-09T09:50:38+09:00 last-synced:2020-04-09T09:50:53+09:00
μν μ‘°νλ₯Ό μ§μνκ³ μΆλ€λ©΄ --watch(-w) μ --interval(-i) μ΅μ μ μ¬μ©νμ¬ μνλ₯Ό λͺ¨λν°λ§ν μ μμ΅λλ€.
λ fsradm status all -w -i 1 r0 role:secondary file:inconsistent locked:false node2 state:established peer-state:established role:secondary file:inconsistent last-synced:none node3 state:connecting peer-state:unknown role:secondary file:unknown last-synced:none r1 role:secondary file:inconsistent locked:false node2 state:connecting peer-state:unknown role:secondary file:unknown last-synced:none update every 1.0s. current executions: 84 press 'q' or 'ctrl+c' to quit...
νμΌ μν
볡μ λμ νμΌμ 볡μ μνλ₯Ό λνλ λλ€.
unknown μ μ μλ μν. μ°κ²°λμ§ μμ μλ λ Έλμ μ μ μλ νμΌ μνλ₯Ό ννν©λλ€.
fileless 볡μ λμ λ―Έ μ μ¬ μν. attach λͺ λ Ήμ μν΄ attaching μνλ‘ μ νν©λλ€.
attaching 볡μ λμ μ μ¬ μ€ μν. μ μ¬ μ€ μ€ν¨νλ©΄ failed, μ μ¬ μλ£νλ©΄ consistent λλ inconsistent μνκ° λ©λλ€.
detaching 볡μ λμ λΆλ¦¬ μ€. λΆλ¦¬ μλ£νλ©΄ fileless μνκ° λ©λλ€.
failed 볡μ ꡬμ±(μ μ¬) μ€ν¨ μν
inconsistent λ°μ΄ν° μμ°¨μ± λ³΄μ₯ λΆκ°ν μν λλ λκΈ°ν νκ²μ νμΌ μν. κΈ°λ³Έμ μΌλ‘ μΉκ²©μ΄ λΆκ°ν©λλ€.(κ°μ μΉκ²© κ°λ₯)
consistent λ°μ΄ν° μμ°¨μ± λ³΄μ₯νλ μν. μ€κ° μνμ΄λ©° outdated λλ up_to_dateλ‘ μ΅μ’ μ νλ©λλ€.
outdated κ³Όκ±° λ°μ΄ν° μν. 볡μ νκ² μν©μμ μ°κ²° λ¨μ μ΄λ μΌμ μ€μ§ λ±μ μν΄ μ΅μ λ°μ΄ν°λ₯Ό λ°μ§ λͺ»νκ² λ κ²½μ°μ μν. κΈ°λ³Έμ μΌλ‘ μΉκ²©μ΄ λΆκ°ν©λλ€. (κ°μ μΉκ²© κ°λ₯)
up_to_date μ΅μ λ°μ΄ν° μν. Primaryμ΄κ±°λ 볡μ νκ²μΌ κ²½μ°μ μνμ λλ€.
μ°κ²°/볡μ μν
μ λ Έλκ° μ°κ²° λκΈ° κΉμ§μ μνλ μ°κ²° μν, μ°κ²° μ립 μ΄νμ μνλ 볡μ μνλ‘ μ μλ©λλ€. λ€μμ μνλ€μ΄ μ μλμ΄ μμ΅λλ€.
standalone μ€λ¦½ μν. μ°κ²°μ μλνμ§ μλ μνλ‘ λ¦¬μμ€μ μ΄κΈ° μ°κ²° μνμ ν΄λΉν©λλ€. connect λͺ λ Ήμ μν΄ connecting μνλ‘ μ νλ©λλ€.
disconnecting μ°κ²°μ΄ λ¨μ λκ³ μ 리 μ€μΈ μν. standalone λλ connecting μνλ‘ μ νλ©λλ€.
connecting μ°κ²° μλ μ€ μν. μ°κ²° μλ μ€ μ€λ₯κ° λ°μνλ©΄ standalone, μ°κ²°μ΄ μ±κ³΅νλ©΄ connected μνκ° λ©λλ€. μ€μ λ‘λ μμΌ κ³μΈ΅μμ acceptμ connect κ° λμμ μλλλ μνμ λλ€.
connected μ°κ²° μ±κ³΅νκ³ λ³΅μ λ€νΈμν¬μ λν΄ μΈμ¦ μ€μΈ μνμ λλ€. μΈμ¦μ΄ μ±κ³΅νλ©΄ established, μΈμ¦μ΄ μ€ν¨νλ©΄ standalone μνκ° λ©λλ€.
established 볡μ μΈμ¦ μλ£ μν. μ°κ²° μ§νμ μνμ΄λ©° Secondary κ° μ°κ²°μ΄ μλ£λμμ λμ κΈ°λ³Έ μνμ λλ€. λκΈ°ν, 볡μ λ‘ λ°λ‘ μ΄ννμ§λ μμ΅λλ€. μ΄ μνμμ μΉκ²©ν κ²½μ° sync_source λλ repl_sourceκ° λκ³ μλκ° μΉκ²©νλ©΄ sync_target λλ repl_taret μ΄ λ©λλ€.
sync_source λκΈ°ν μμ€ μν. λκΈ°ν μΌμ μ€μ§ν κ²½μ° sync_source_paused μν, λκΈ°ν μλ£μ repl_source μνκ° λ©λλ€. μΈμ»¨λ리κ°μ λκΈ°νκ° μλ£λ κ²½μ°μ established μνκ° λ©λλ€.
sync_source_paused λκΈ°ν μμ€ μΌμ μ€μ§ μν. λκΈ°ν μ¬κ°ν κ²½μ° sync_source μνκ° λ©λλ€.
sync_target λκΈ°ν νκ² μν. λκΈ°ν μΌμ μ€μ§ν κ²½μ° sync_target_paused, λκΈ°ν μλ£ μ repl_targetμ΄ λ©λλ€. secondary κ° λκΈ°ν μλ£λ established μνκ° λ©λλ€.
sync_target_paused λκΈ°ν νκ² μΌμ μ€μ§ μν. λκΈ°ν μ¬κ°ν κ²½μ° sync_target μνκ° λ©λλ€.
repl_source 볡μ μμ€ μν. μ΄ μνμμ κ°λ±ν κ²½μ° established μν, μΌμ μ€μ§ν κ²½μ° repl_source_paused, λκΈ°ν μμ μ sync_source μνλ‘ μ νν©λλ€.
repl_source_paused 볡μ μμ€ μΌμ μ€μ§ μν. 볡μ μ¬κ° μ repl_source μνκ° λ©λλ€.
repl_target 볡μ νκ² μν. μ΄ μνμμ μλκ° κ°λ±νλ©΄ established, μΌμ μ€μ§ν κ²½μ° repl_target_paused, λκΈ°νκ° μμλλ©΄ sync_target μνκ° λ©λλ€.
repl_target_paused 볡μ νκ² μΌμ μ€μ§ μν. 볡μ κ° μ¬κ°λλ©΄ repl_target μνκ° λ©λλ€.
μ±λ₯ μ‘°ν
μ±λ₯ μ‘°ν λͺ λ Ήμ ν΅ν΄ 볡μ μ²λ¦¬λκ³Ό μμ§ λ΄λΆμ μ§μ°μκ°μ μ‘°νν μ μμ΅λλ€.
λ fsradm perf r0
λ fsradm latency r0
μ±λ₯ λͺ¨λν°
fsradm perfmon λͺ λ Ήμ ν΅ν΄ μ±λ₯μ μ€μκ° λͺ¨λν°λ§ν μ μμ΅λλ€.
c:\>fsradm perfmon r0
μ±λ₯ λͺ¨λν°λ§μ μ½μνλ©΄μ κ²°κ³Όλ₯Ό μΆλ ₯νμ¬ μ§μ νμΈνκ±°λ λͺ¨λν°λ§ κ²°κ³Όλ₯Ό νμΌλ‘ μ μ₯νλ λ± λ€μκ³Ό κ°μ΄ λͺ κ°μ§ μ΅μ μ μ¬μ©ν μ μμ΅λλ€.
- --json <filename> JSON νμΌ κ²½λ‘ μ§μ
- --csv <filename> CSV νμΌ κ²½λ‘ μ§μ
- --display μ½μ νλ©΄μ μΆλ ₯
- --watch λͺ¨λν°λ§ λͺ¨λ
- --interval μ‘°ν μ£ΌκΈ°
λμ€ν¬ λͺ¨λν°
FSR(v1.2)μ λμ€ν¬μ μνλ₯Ό κ°μνμ¬ λμ€ν¬ μμ€μ μ₯μ κ° λ°μνλμ§ μ¬λΆλ₯Ό μ§μ νμΈν©λλ€. λμ€ν¬ μ₯μ κ° νμΈλλ©΄ μνλ₯Ό filelessλ‘ λ³κ²½νκ³ λ³΅μ μνμ λ¬Έμ κ° μκ²Όμμ μ립λλ€.
λ€μμ λμ€ν¬ μν λͺ¨λν°λ§μ μ£ΌκΈ°λ₯Ό μ§μ νλ μ€μ μ λλ€.
{ ... "disk": { "health": { "period": 5 } } }
FSR(v1.3) μμ λμ€ν¬ μνλ₯Ό λͺ¨λν°λ§νλ λ°©λ²μ΄ λ κ°νλμμ΅λλ€. κ°μνλ₯Ό κΈ°λ°μΌλ‘ ν κ°μ λμ€ν¬(non pnp μ₯μΉ)μ κ²½μ°μ λ€μμ λ°©λ²μΌλ‘ λμ€ν¬ μνλ₯Ό κ°μν μ μλ λ°©λ²μ μΆκ°λ‘ μ 곡ν©λλ€.
io_test μΉμ μ νμ±ν μ¬λΆμ μ£ΌκΈ°λ₯Ό μ§μ νλ©΄ λ©λλ€.
{ "nodes": [ { "name": "node1-hostname", "url": "192.168.159.140:9830", "files": [ { "path": "C:/fsr/repl" } ], "io_test": { "enable": true, "period": "10s" }, }, { "name": "node2-hostname", "url": "192.168.159.141:9830", "files": [ { "path": "C:/fsr/repl" } ], "io_test": { "enable": false, "period": "5s" }, } ], }
νμ΄νΌλ°μ΄μ μμ κ°μ λμ€ν¬ λ€μ΄ μ’ μ’ νμ€ PNP λ₯Ό μ§μνμ§ μλ κ°μλμ€ν¬λ‘ μ 곡λλ κ²½μ°κ° μμ΅λλ€. μ΄λ° λμ€ν¬λ κ²μ€νΈ OS μ μ₯μμ λμ€ν¬ μ₯μΉμ μ κ±° λ± μ₯μ μν©μ μΈμ§ν μ μλ λ°©λ²μ΄ μμ΅λλ€. μ£ΌκΈ°μ μΈ λμ€ν¬ I/O λ₯Ό ν΅ν΄ λμ€ν¬ μνλ₯Ό κ°μν μ λ°μ μμ΅λλ€.
μ΄λ²€νΈ
FSR μ μ΄λ²€νΈ ꡬλ λͺ λ Ήμ ν΅ν΄ FSR λ‘ λΆν° μ μλ μ΄λ²€νΈλ₯Ό ν΅μ§ λ°μ μ μμ΅λλ€. μ΄λ²€νΈ ꡬλ μ ν΅ν΄ νμΌμ΄λ μ°κ²° λ±μ μνκ° λ³κ²½λλ κ³Όμ μ μ€μκ° μΆμ ν μ μμ΅λλ€.
λ fsradm events r0 2020-06-12T12:42:39.295379 type=rpc state=connected 2020-06-12T12:42:41.685784 type=state node=node2 peer=node1 resource=r0 value=standalone 2020-06-12T12:42:41.685784 type=added node=node2 resource=r0 2020-06-12T12:42:41.685784 type=role node=node2 resource=r0 role=secondary 2020-06-12T12:42:41.685784 type=file_state node=node2 resource=r0 value=fileless 2020-06-12T12:42:41.728821 type=file_state node=node2 resource=r0 value=attaching 2020-06-12T12:42:41.744835 type=file_state node=node2 resource=r0 value=outdated 2020-06-12T12:42:41.774378 type=state node=node2 peer=node1 resource=r0 value=connecting
μ΄λ²€νΈ ν΄μμ μ©μ΄μ±μ μν΄ json νμμ μΆλ ₯μ μ§μνλ©° λκΈ°ν μν(--sync), μ±λ₯ ν΅κ³μ λν λͺ¨λν°λ§(–perf)μ λν μ΅μ μ λΆκ°μ μΌλ‘ μ§μν©λλ€.
λ fsradm events --json r0 {"type":"rpc","timestamp":"2020-06-12T03:43:56.152358300Z","datas":{"state":"connected"}} {"type":"state","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","peer":"node1","resource":"r0","value":"standalone"}} {"type":"added","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0"}} {"type":"role","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0","role":"secondary"}} {"type":"file_state","timestamp":"2020-06-12T03:43:58.396422300Z","datas":{"node":"node2","resource":"r0","value":"fileless"}} {"type":"file_state","timestamp":"2020-06-12T03:43:58.437426600Z","datas":{"node":"node2","resource":"r0","value":"attaching"}} {"type":"file_state","timestamp":"2020-06-12T03:43:58.452638800Z","datas":{"node":"node2","resource":"r0","value":"outdated"}} {"type":"state","timestamp":"2020-06-12T03:43:58.479433800Z","datas":{"node":"node2","peer":"node1","resource":"r0","value":"connecting"}}
μ΄λ²€νΈμ μ νμ κ΄ν μμΈν λ΄μ©μ λΆλ‘μ λͺ λ Ήμ΄ 1.2.x λΆλΆμ μ°Έκ³ νμΈμ.
μ ν©μ± κ²μ¬
λ€μμ λͺ λ Ήμ ν΅ν΄ μμ€μ νκΉκ°μ λ°μ΄ν° μ ν©μ± κ²μ¬λ₯Ό μνν μ μμ΅λλ€.
λ fsradm verify <resource|all> <peer-node|all>
μ ν©μ± κ²μ¬ μν μ€ μ€λ¨μ νλ €λ©΄ verify-stop μ μ¬μ©ν©λλ€.
λ fsradm verify-stop <resource|all> <peer-node|all>
μ ν©μ± κ²μ¬λ μμ€ λλ νκΉμμ verify κ²μ¬λ₯Ό μμ²νμ¬ μνν©λλ€. νκΉμμ μ ν©μ± κ²μ¬λ₯Ό μμ²νκ±°λ μ€λ¨ν κ²½μ°μλ νκΉ μμ λ§ μ§μ νλ©΄ λμ§λ§ μμ€μμ μννλ €λ©΄ n node μ λν΄ κ²μ¬λ₯Ό μννκ³ μλ€λ©΄ μ€λ¨ν νκΉμ μ§μ ν΄μΌ ν©λλ€. κ·Έλ μ§ μμΌλ©΄ n node μ ν©μ± κ²μ¬μ λν΄ λͺ¨λ μ€λ¨ν©λλ€.
μ ν©μ± κ²μ¬λ 볡μ μν μ¬λΆμ λ°λΌ λμ λͺ¨λμ μ°¨μ΄κ° μμ΅λλ€. μμ€μ νκΉ μμΈ‘μ΄ Secondary μΌ κ²½μ°λΌλ©΄ μΌλ° verify κ²μ¬λͺ¨λλ‘ λμν©λλ€. κ·Έλ¬λ ν μͺ½μ΄ Primary μΈ λ³΅μ κ° μλ μνμΌ κ²½μ°μλ μμ€μ νκΉ κ°μ μ€μκ° λ°μ΄ν° λ³κ²½λΆμ λμνκΈ° μν advanced-verify λͺ¨λλ‘ λμν©λλ€. μ΄ λͺ¨λμμ 볡μ λ³κ²½ λΆμ λν λ°μ΄ν° μνμ€λ₯Ό λκΈ°νμ¬ μ²λ¦¬νλ λ°©μμ λλ€. μΌλ° verify λͺ¨λμ advanced-verify λͺ¨λλ μμ§μμ μλμΌλ‘ κ²°μ νλ―λ‘ μ¬μ©μλ μ κ²½μ°μ§ μμλ λμ§λ§ λ λ°©μμ μ°¨μ΄κ° μλ€λ κ²μ μμλμ΄μΌ ν©λλ€.
κΈ°λ³Έμ μΌλ‘ μ ν©μ± κ²μ¬λ UpToDate μΈ λ°μ΄ν°κ°μ κ²μ¬λ₯Ό μ μ λ‘ νκΈ° λλ¬Έμ μμΈ‘μ΄ μ΅μ μ λ°μ΄ν°κ° μλ κ²½μ° λλ μ ν©μ± κ²μ¬ λμ€ λκΈ°νκ° μ§νλκ±°λ 볡μ μνκ° λ³κ²½λλ λ±μ μν λ³νκ° μκ² λλ©΄ μ ν©μ± κ²μ¬λ μ·¨μλ©λλ€.
κ²μ¬λ₯Ό νλ λμμ ν΄μ¬ λΉκ΅λ₯Ό ν΅ν΄ μ°¨μ΄μ μ΄ μλ νμΌμ λμμΌλ‘ νκ³ μ ν©μ± κ²μ¬κ° λλ ν κ²μ¬μ λν κ²°κ³Όλ result λͺ λ Ήμ ν΅ν΄ νμΈν μ μμ΅λλ€.
λ fsradm result r0 { "id": "r0", "result": { "summary": { "start_time": "2019-09-09T06:22:26.6958913Z", "end_time": "2019-09-09T06:22:27.4653424Z", "peer_node": "node2" }, "totals": { "diff_dir": "3", "diff_file": "1", "diff_bytes": "14", "orphaned_dir": "0", "orphaned_file": "0", "orphaned_bytes": "0", "missing_dir": "0", "missing_file": "0", "missing_bytes": "0", "synced_bytes": "0" }, "files": [ { "type": "different", "name": "G:\\Temp\\test1\\conf\\drbd.d", "is_dir": true, "out_of_sync": "0", "synced": "0", "flags": 4, "properties": { "mod_time": { "local": "2019-09-06T13:26:59.1427926+09:00", "remote": "2019-09-02T07:24:39.161996Z" } } }, { "type": "different", "name": "G:\\Temp\\test1\\conf\\drbd.d\\1", "is_dir": true, "out_of_sync": "0", "synced": "0", "flags": 4, "properties": { "mod_time": { "local": "2019-09-06T13:26:54.0042751+09:00", "remote": "2019-09-02T07:24:39.3341577Z" } } }, { "type": "different", "name": "G:\\Temp\\test1\\conf", "is_dir": true, "out_of_sync": "0", "synced": "0", "flags": 4, "properties": { "mod_time": { "local": "2019-09-06T13:26:59.0677748+09:00", "remote": "2019-08-07T02:15:58.4057437Z" } } }, { "type": "different", "name": "G:\\Temp\\test1\\contributors.txt", "out_of_sync": "14", "synced": "0", "flags": 5, "properties": { "mod_time": { "local": "2019-09-09T14:00:05.6379239+09:00", "remote": "2018-12-12T04:42:50.6605579Z" }, "size": { "local": 9, "remote": 15 } } } ], "file_count": 4 } }
μ¬κ΅¬μ±
μ΄μ μ€ μ€μ μ λ³κ²½νλ μ μ°¨μ μκΈ°μΉ μμ μ₯μ κ° λ°μν ν μ΄λ₯Ό 볡ꡬνκΈ° μν μ μ°¨μ λν΄ μ€λͺ ν©λλ€.
μ€μ λ³κ²½
FSR μ λ Έλ κ° κ΅¬μ± μ€μ μ ꡬμ±νμΌ μμ€μμ λͺ¨λ λμΌν΄μΌ ν©λλ€. λ§μ½ μ€μ μμ μ°¨μ΄κ° μλ€λ©΄ λμ λ°©μμ΄ λͺ¨νΈν΄ μ§ μ μκΈ° λλ¬Έμ μ΄λ¬ν ꡬμ±μ μ°¨μ΄λ₯Ό λλ κ²μ μ ννκ³ μμ΅λλ€. κ·Έλμ FSR μ μ€μ μ λ³κ²½ νλ €λ©΄ λ¨Όμ μμ€μ νκΉ λ Έλ κ°μ μ°κ²°μ ν΄μ νκ³ κ°κ°μ λ Έλμ μ€μ μ λμΌνκ² λ³κ²½νμ¬ μ μ©(adjust)ν ν μ°κ²°μ μ¬ μ±λ¦½νλ©΄ λ©λλ€.
λ§μ½ μ°κ²° μμ μ μ λ Έλμ μ€μ μ μ°¨μ΄κ° λ°κ²¬λλ©΄ μ€λ₯μ ν¨κ» μ°κ²°μ λκ³ StandAlone μνκ° λ©λλ€. λν μ°κ²°μ΄ μ΄λ―Έ μ±λ¦½λμ΄ μλ μνμμ μμΈ‘μ μ€μ μ΄ μ°¨μ΄κ° μκ² μ‘°μ (adjust)νλ €κ³ νλ©΄ μ€λ₯κ° λ°νλ©λλ€.
μ€μ μ μ‘°μ (adjust)νλ κ³Όμ μ FSRμμ λ΄λΆμ μΌλ‘ ꡬνν νλ‘ν μ½μ ν΅ν΄ λ Έλ κ° μν λ³νλ₯Ό μλ°ν©λλ€.
adjust λ₯Ό μνν λ Έλλ adjusting μνκ° λλ©° μ΄ μμ μ μλνΈ λ Έλλ need_to_adjust μνκ° λμ΄ adjust κ° μνλλλ‘ μ λν©λλ€.
μ₯μ ν μ‘°μΉ
볡μ μ΄μ μ€ λμ€ν¬μ 물리μ μμμ΄ λ°μνλ λ± μκΈ°μΉ μμ λ¬Έμ κ° λ°μν κ²½μ° μ΄μ λμνκ³ λ³΅μ λ₯Ό μ μν νκΈ° μν μ μ°¨λ₯Ό νμλ‘ ν©λλ€. κΈ°λ³Έμ μΌλ‘λ μ΄λ¬ν λ¬Έμ κ° λ°μνκ² λλ©΄ λμ€ν¬λ₯Ό κ΅μ²΄νκ³ λ³΅μ ꡬμ±μ λ€μ ν΄μΌ ν©λλ€.
λ€μμ κ³Όμ μ λ°λΌ 볡μ λ₯Ό μ¬κ΅¬μ±νκ³ μ¬ λκΈ°ν νλ μ μ°¨λ₯Ό μνν΄μΌ ν©λλ€.
- μ΄μμ€μΈ 리μμ€λ₯Ό μ€μ§ ν©λλ€.
c:\>fsradm down r0 done
- λμ€ν¬ κ΅μ²΄ λ± λ³΅κ΅¬μμ μ μνν©λλ€.
- λ©νλ₯Ό μ¬ μμ±ν©λλ€. λ§μ½ ꡬμ±μ λ³κ²½μ΄ μμ κ²½μ° κ΅¬μ±νμΌμ μλ‘κ² μμ±νκ³ λ©νλ₯Ό μ¬ μμ±ν΄μΌ ν©λλ€.
c:\>fsradm meta create r0 done
- 리μμ€λ₯Ό κΈ°λν©λλ€.
c:\>fsradm up r0 done
- μμ€ λ Έλμ μ°κ²°μ΄ μ립λλ©΄ λκΈ°νλ₯Ό μμν©λλ€.
λ°±μ
νμΌ μμ λ°±μ
FSRμ νμΌμμ μ λν λ°±μ μ μ 곡ν©λλ€. νμΌμμ μ λν λ°±μ μ μλμΉ μκ² μμ λλ νμΌλ€μ νκΉμ νΉμ κ²½λ‘μ μμλ‘ μ μ₯ν΄ λλ κΈ°λ₯μΌλ‘ archive μμ±μ μν΄ μ§μ λ μ μμ΅λλ€. archive μμ±μ κΈ°λ³Έ λΉνμ±ν λμ΄ μμΌλ©° λ°±μ λ κ²½λ‘μ 보κ΄λ κΈ°κ°μ μ§μ ν μ μμ΅λλ€.
μ€λ μ·
μ€λ μ·μ νΉμ μμ μ μ€ν 리μ§μ νμΌ μμ€ν μ μ¬μ§ μ°λ―μ΄ μΊ‘μ²ν΄μ λ°μ΄ν°λ₯Ό λ°±μ νλ κΈ°μ μ λλ€. 볡μ μ΄μ μ€ μ¬κ³ λ‘ μ΅μ λ°μ΄ν°κ° νΌμλκ±°λ λ§μ¨μ΄ κ°μΌκ³Ό κ°μ 보μμ΄μμ λ ΈμΆλμ΄ λ°μ΄ν° 무결μ±μ΄ νΌμλλ©΄ 볡μ μ κΈ°λ₯λ§μΌλ‘λ λμν μ μμ΅λλ€.
μ΄λ° κ²½μ°λ₯Ό λλΉν΄ 볡μ μλ λ³κ°λ‘ λ°±μ μ 미리 ν΄ λλκ² μΌλ°μ μ΄λ©°, λ°±μ μ νμ λ°λΌ μ 체 λ°±μ λλ μ 체 μ€λ μ·, μ¦λΆ μ€λ μ·μ ν΅ν΄ μ¬μ©μμ λ°μ΄ν°λ₯Ό 보νΈν μ μμ΅λλ€.
FSRμ μ€λ μ· κΈ°λ₯μ 볡μ 리μμ€λ₯Ό κΈ°μ€μΌλ‘ ꡬννκ³ μμΌλ©° λ°λΌμ μ€λ μ· μ μ΄λ 리μμ€λ₯Ό κΈ°μ€μΌλ‘ ν©λλ€. λν μ€λ μ·μ κ° λ Έλμ λμ€ν¬ λ³Όλ₯¨μ μ΄λ―Έμ§λ‘ μ μ₯ λκ³ λ Έλ λ΄μμ μ μ΄νκ³ μ²λ¦¬λ©λλ€. μ΄κ²μ ν΄λ¬μ€ν° λ Έλ λ€ κ°μ μ€λ μ·λ€μ λν μνΈ μ°λμ μλ€λ λ» μ λλ€. λ Έλ λ³λ‘ μ€λ μ·μ μ΄μνλ€κ° λ³΅κ΅¬κ° νμνλ©΄ λ Έλμ μ μ₯λ μ΄λ―Έμ§λ‘ κ°λ³ 볡ꡬνλ©΄ λ©λλ€.
μ€λ μ·μ μμ±νκ³ μ μ΄νλ λͺ λ Ήκ³Ό κ΄λ ¨ν μμΈν μ¬νμ μ€λ μ· - FSR 1.2 λλ μ€λ μ· - FSR 1.3 μ λ΄μ©μ μ°Έκ³ νμΈμ.
μ€λ μ· λ³Όλ₯¨
μ€λ μ·μ μ΄μνκΈ°μ μμ κ°μ₯ λ¨Όμ κ³ λ €ν΄μΌ ν κ²μ μ€λ μ·μ μ μ₯ν΄ λ λ³Όλ₯¨μ μ§μ νλ κ² μ λλ€. 볡μ λ³Όλ₯¨ λ΄μ μ€λ μ·μ 보κ΄ν΄ λ μ λ μκ³ μΈλΆμ λ€λ₯Έ λμ€ν¬ λ³Όλ₯¨μ μ μ₯ν μλ μμ΅λλ€. μ΄κ²μ λ³Όλ₯¨μμ μ΄λ―Έ μ¬μ©λ 곡κ°κ³Ό λ¨μ μ¬μ 곡κ°μ λ³΄κ³ μ ν΄μΌ νλλ°, μ¬μ 곡κ°μ΄ λ§μ§ μλ€λ©΄ μΈλΆμ λ³Όλ₯¨μ μ§μ νμ¬ μ€λ μ·μ μ μ₯νλ κ²μ΄ μ’μ΅λλ€.
μ€λ μ·μ μν λ³Όλ₯¨ 곡κ°μ νμ¬ μ¬μ©λ λ°μ΄ν°μ ν¬κΈ° λ§νΌμ μ©λμ νμλ‘ ν©λλ€.
μλ₯Ό λ€μ΄ 1TB λ³Όλ₯¨μ 100GB λ₯Ό μ¬μ©νκ³ μλ€λ©΄ μ¬κΈ°μ νμν μ€λ μ· μ©λμ 100GB μ λλ€. λ§μ½ μ¬μ© μ©λμ΄ 100GB λ₯Ό λμ΄μ 150GB κ° λλ€λ©΄ μλ‘μ΄ μ€λ μ·μ κΈ°λ‘νλλ° μ΅λ 150GB μ©λμ΄ μꡬλ κ² μ λλ€.
λ€μμ μ€λ μ·μ μ΄μνκΈ° μν ꡬ체μ μΈ κ΅¬μ± μ¬λ‘μ λλ€.
- 볡μ λ³Όλ₯¨ 1TB, μ¬μ©κ³΅κ° 300GB
- 1μΌ 1ν μ€λ μ· κΈ°λ‘, 1μ£Ό(7μΌ)μ μ€λ μ· μ€μΌμ€ μ μ§
μ μμ κ²½μ° 1μ£Ό λμ 7κ° μ€λ μ· μ΄λ―Έμ§ 곡κ°μ΄ μꡬ λλ―λ‘ μ€λ μ· μ μ₯μ μν λ³Όλ₯¨μ 곡κ°μ μ΅μ 300GB * 7 = 2.1TB μ΄λ©° μ΅λ 1TB * 7 = 7TB κ° λ©λλ€.
μ€λ μ·μ Copy On Write(COW) κΈ°μ μ κΈ°λ°μΌλ‘ ν©λλ€. λ°μ΄ν°μ λ³κ²½μ΄ λ°μν λ μλ³Έμ μ μ₯ν΄ λλ κ² μ λλ€. λ°λΌμ μ€λ μ·μ μμ±ν μ§ μΌλ§ μ§λμ§ μμ μ΄κΈ°μλ λ³κ²½μ μ΄ λ§μ§ μμΌλ―λ‘ μ€λ μ·μ΄ μ°¨μ§νλ μ©λμ΄ μμ΅λλ€. κ·Έλ μ§λ§ μκ°μ΄ μ§λ μλ‘ λ°μ΄ν° λ³κ²½ λΆμ μ μ°¨ λμ΄λκ³ κ²°κ΅ λ°μ΄ν°μ λͺ¨λ μμμ΄ λ³κ²½ λ¬λ€κ³ κ°μ νλ©΄ μ 체 μλ³Έ λ°μ΄ν°λ₯Ό μ μ₯ν΄ λ μ€λ μ· κ³΅κ°μ΄ νμνκ² λ©λλ€. κ²°λ‘ μ μΌλ‘ μ€λ μ·μ νμν μ΅λ μ©λμ λ°μ΄ν° μ 체 ν¬κΈ°μ λ°±μ λΆμ ν΄λΉνλ μ©λκ³Ό κ°λ€κ³ ν μ μμ΅λλ€.
λΉμ₯ μ€λ μ·μ νμν 곡κ°μ νμ¬ μ¬μ©λλ κ³΅κ° λ§νΌμ μ©λμ μꡬνκ² μ§λ§ λ³Όλ₯¨μ μ¬μ©λμ μκ°μ΄ κ°μλ‘ μ¦κ°ν μ μμΌλ―λ‘ μ΄λ₯Ό μΌλμ λμ΄μ μ΅λ μ©λμΌλ‘ κ³ λ €ν΄μΌ νλ€λ κ² μ λλ€.
μ΅λ μ¬μ
FSR μ€λ μ·μ Windows μμ Volume Shadow Copy Service μ λͺ μΈλ₯Ό λ°λ¦ λλ€.
- Windows μ VSS μ΅λ λ³Όλ₯¨ μ§μ ν¬κΈ°λ 64TB μ λλ€. 64TB μ΄μμ λ³Όλ₯¨μ μ€λ μ·μ μ§μνμ§ μμ΅λλ€.
- νλμ λ³Όλ₯¨μ μ΅λ 512κ°μ μ€λ μ· μ΄λ―Έμ§λ₯Ό κΈ°λ‘ν μ μμ΅λλ€(곡μ ν΄λμ κ²½μ° κΈ°λ³Έ 64κ°). κ·Έ μ΄μμ μ€λ μ·μ κΈ°λ‘ν κ²½μ° κ°μ₯ μ€λλ μ€λ μ·μ΄ μμ λ©λλ€.
리λ μ€ LVM μ νΉλ³ν μ€λ μ· μ©λμ λν΄ μ ννμ§ μμ΅λλ€. λ¨μ§ μ€ν λ¦¬μ§ μ©λμ νμ μ μ λλ€.
μ /ν μ²λ¦¬
FSR μ€λ μ·μ μμ© μΌκ΄μ±(Application Consistency)μ 보μ₯νλ μ€λ μ·μ μ§ν₯ν©λλ€. μμ© νλ‘κ·Έλ¨ μΌκ΄μ±μ κ°μ§ μ€λ μ·μ νλνκΈ° μν΄μ λ€μκ³Ό κ°μ μμκ° μ§μΌμ ΈμΌ ν©λλ€.
- μ€λ
μ·μ κΈ°λ‘νκΈ° μ
- μμ© I/O μμ μ μΌμ μ€λ¨νκ³ μμ©μ λ©λͺ¨λ¦¬ λ²νΌλ₯Ό Flush νμ¬ λμ€ν¬λ₯Ό μ΅μ λ°μ΄ν°λ‘ κ°±μ ν©λλ€.
- ν΄λΉ λ³Όλ₯¨μ λν νμΌμμ€ν μΊμ¬λ₯Ό Flush ν©λλ€.
- μ€λ μ·μ κΈ°λ‘ν©λλ€.
- μμ© I/O μμ μ μ¬κ°ν©λλ€.
μ¬κΈ°μ λ³Ό μ μλ―μ΄ μ€λ μ·μ κΈ°λ‘νκΈ° μ μ μ΅μ λ°μ΄ν°λ₯Ό λ³Όλ₯¨μ λ°μνλ κ³Όμ μ μ ννκ³ μ€λ μ· κΈ°λ‘ ν μμ© I/O λ₯Ό μ¬κ°ν μ μμ΄μΌ ν©λλ€. μ΄κ²μ FSR μ μ€λ μ· μ¬μ /μ¬ν νΈλ€λ¬λ₯Ό ν΅ν΄ μμ©μ μ μ΄νλλ‘ κΈ°νκ° λΆμ¬λλ©° μ΄ μ μ°¨λ€μ΄ μ λλ‘ μν λμμ λ μμ© μΌκ΄μ±μ 보μ₯ν μ€λ μ·μ μ·¨ν μ μμ΅λλ€.
λ§μ½ μ μ μ°¨λλ‘ μμ©μ μ μ΄ν μ μλ€λ©΄ μ΅μν νμΌμμ€ν μΊμ¬λ₯Ό Flush ν΄μ νμΌμμ€ν μΌκ΄μ±(Filesystem Consistency)μ κ°μ§ μ€λ μ·μΌλ‘ κΈ°λ‘ν΄μΌ νλ©° μ΄λ§μ λ μννμ§ μλλ€λ©΄ μΆ©λ μΌκ΄μ±(Crash Consistency) μμ€μ μ€λ μ·λ§μ ν보νκ² λ κ² μ λλ€.
Windows μ VSS μλΉμ€λ μ΄λ¬ν μμ© μΌκ΄μ± μ€λ μ·μ 보μ₯νκΈ° μνμ¬ VSS Writer λ₯Ό μμ© νλ‘κ·Έλ¨μμ ꡬννλλ‘ μ μνκ³ μμ΅λλ€. VSSλ μμ©μ VSS Writer μ μνΈ μ°λνμ¬ μ€λ μ· μμ²μ΄ μμ κ²½μ° μ μ μ°¨λ₯Ό μ°¨λ‘λ‘ μννμ¬ μμ© μΌκ΄μ± μ€λ μ·μ ꡬνν©λλ€. λ°λΌμ VSS Writer λ₯Ό ꡬνν μμ© νλ‘κ·Έλ¨μ λμμΌλ‘ νλ€λ©΄ μ¬μ /μ¬ν νΈλ€λ¬λ₯Ό μμ±ν νμκ° μμ΅λλ€. λ€μμ VSS Writer λ₯Ό μ§μνλ λνμ μΈ νλ‘κ·Έλ¨λ€ μ λλ€.
νμ€μ μΌλ‘λ μ νλ‘κ·Έλ¨λ€μ μ μΈνλ©΄ λλΆλΆμ μμ© νλ‘κ·Έλ¨λ€μμ VSS Writer λ₯Ό ꡬννκ³ μμ§ μμ΅λλ€.