μ¬μ
FSR(File Sync Replicator)μ μνν λμμ μν΄ μꡬλλ νλ«νΌ, νλμ¨μ΄ 리μμ€, κ·Έλ¦¬κ³ λ³΅μ μ§μ λ²μμ λν μμΈ μ¬μμ κΈ°μ ν©λλ€. μμ μ μΈ μλΉμ€ μ΄μμ μν΄ μλ κΆμ₯ μ¬μμ μ€μνμ¬ μμ€ν μ ꡬμ±νμμμ€.
νλ«νΌ λ° νμΌ μμ€ν
FSRμ μν°νλΌμ΄μ¦ νκ²½μ μ£Όμ μ΄μ체μ μ νμΌ μμ€ν μ μ§μν©λλ€.
Β
μ§μ μ΄μ체μ (OS)
Windows: Windows Server 2012 x64 μ΄μ
Linux:
CentOS 7.x μ΄μ
Ubuntu 18.04 LTS x64 μ΄μ
(κΈ°ν x86/x64 νΈν μ£Όμ 리λ μ€ λ°°ν¬ν)
Β
μ§μ νμΌ μμ€ν
Windows: NTFS, ReFS
Linux: ext κ³μ΄ (ext3, ext4), xfs
λ―Έμ§μ: FAT/FAT32 λ± κ΅¬ν νμΌ μμ€ν μ μ§μνμ§ μμ΅λλ€.
Β
νλμ¨μ΄ μꡬ μ¬ν
μμ€ν μμ μ±κ³Ό I/O μ²λ¦¬ μ±λ₯μ 보μ₯νκΈ° μν μ΅μ λ° κΆμ₯ νλμ¨μ΄ μ¬μμ λλ€.
Β
CPU
μν€ν μ²: x86/x64 νΈν νλ‘μΈμ
μ¬μ: μ΅μ 2GHz ν΄λ, 4 Core μ΄μ κΆμ₯
Β
λ©λͺ¨λ¦¬ (RAM)
λ©λͺ¨λ¦¬ ꡬμ±μ μμ€ν μ΄μ μμκ³Ό 볡μ λ²νΌ μμμΌλ‘ λλλ©°, κ° μ©λμ λ§λ μΆ©λΆν 리μμ€ νλ³΄κ° νμν©λλ€.
μμ€ν κΆμ₯ λ©λͺ¨λ¦¬
κΈ°λ³Έ μ©λ: μ΅μ 4GB μ΄μ
κ°μ© μ©λ: μ 체 물리 λ©λͺ¨λ¦¬μ 30% μ΄μ μ¬μ κ³΅κ° ν보 κΆμ₯
μ£Όμ: λ©λͺ¨λ¦¬ λΆμ‘±μ λ°λ₯Έ I/O μ±λ₯ μ ν μ΄μ체μ λ 물리 λ©λͺ¨λ¦¬ 곡κ°μ΄ λΆμ‘±ν΄μ§ κ²½μ°, κ°μ© λ©λͺ¨λ¦¬ ν보λ₯Ό μν΄ λμ€ν¬λ₯Ό νμ©νλ νμ΄μ§(Paging/Swapping) κΈ°λ²μ κ°λν©λλ€.
νμ΄μ§μ΄ λ°μνλ©΄ λμ€ν¬ μ½κΈ°/μ°κΈ° μμ μ΄ κΈμ¦νμ¬ I/O λ³λͺ© νμ(Disk Thrashing)μ΄ λ°μν©λλ€. μ΄λ λμ€ν¬ μμμ νμμ μΌλ‘ μ¬μ©νλ FSRμ 볡μ μ±λ₯μ μ¬κ°ν μ§μ°μ μ΄λν μ μμ΅λλ€. λ°λΌμ μμ€ν μμ μ±μ μν΄ νμ΄μ§μ΄ λ°μνμ§ μλλ‘ μΆ©λΆν 물리 λ©λͺ¨λ¦¬ μ¬μ 곡κ°μ μμ ν보ν΄μΌ ν©λλ€.
볡μ μ© λ©λͺ¨λ¦¬ λ²νΌ (Memory Buffer)
λ‘컬 I/O λΆνλ₯Ό μμΆ©νκ³ μ μ‘ ν¨μ¨μ λμ΄κΈ° μν λ²νΌ ν¬κΈ° μ°μ 곡μμ λ€μκ³Ό κ°μ΅λλ€.
Buffer Size = Max Bandwidth(/sec) * Timeout(sec)
μ°μ μμ (1Gbps λμν κΈ°μ€):
λμν: 100MB/s (μ½ 1Gbps)
νμμμ: 5s
κ³μ°: 100MB/s * 5s = 500MB
κΆμ₯ μ€μ : κ³μ°κ°μ μ¬μ λ₯Ό λμ΄ 500MB ~ 1GBλ‘ μ€μ
WAN κ΅¬κ° (DR) κ΅¬μ± μ κ³ λ €μ¬ν
DRX λ²νΌλ§: WAN ꡬκ°μ λ€νΈμν¬ λ³λμ±μ λμνκΈ° μν΄ DRX μ°λ κΈ°λ₯μ κΆμ₯ν©λλ€.
λ²νΌ νμ₯: DRX λ―Έμ¬μ© μ, μ μ°μ 곡μμ 2~3λ°°λ‘ λ²νΌλ₯Ό νμ₯νκ±°λ νμΌ λ²νΌ(File Buffer) μ¬μ©μ κ³ λ €ν΄μΌ ν©λλ€.
λ²νΌ λΈλ‘νΈ(Bufferbloat) μ£Όμ: WAN κ΅¬κ° λμν λλΉ λ²νΌ ν¬κΈ°λ₯Ό κ³Όλνκ² ν¬κ² μ€μ ν κ²½μ°, λ²νΌμ μμΈ λ°μ΄ν° μμ²΄κ° λ³λͺ©μ μ λ°νμ¬ μ§μ°(Latency)μ΄ μ¬νλ μ μμ΅λλ€. λ€νΈμν¬ νκ²½μ λ§μΆ° μ μ ν¬κΈ°λ‘ νλνλ κ³Όμ μ΄ νμν©λλ€.
Β
λμ€ν¬ λ° μ€ν 리μ§
μ€μΉ λ° μ΄μμ μν λμ€ν¬ κ³΅κ° μꡬμ¬νμ λλ€.
κ΅¬λΆ | νμ μ©λ / μ€λͺ |
κΈ°λ³Έ μ€μΉ | μ½ 2GB (μ€μΉ νμΌ, μμ§, μ±λ₯ λ‘κ·Έ λ±) |
λλ²κ·Έ λ‘κ·Έ | 리μμ€ λΉ μ½ 110MB μΆκ° νμ |
νμΌ λ²νΌ | λ©λͺ¨λ¦¬ λ²νΌ λΆμ‘± μ λμ€ν¬λ₯Ό λ²νΌλ‘ μ¬μ©. μ€μ ν ν¬κΈ°λ§νΌ λμ€ν¬ κ³΅κ° μ μ . |
μ€λ μ· (λ°±μ ) | μΈλΆ λμ€ν¬: λ°μ΄ν° λμ€ν¬ μ©λλ§νΌμ λ³λ λμ€ν¬ μ€λΉ νμ λ΄λΆ λμ€ν¬: λ°μ΄ν° λμ€ν¬ λ΄ μΆ©λΆν μ¬μ κ³΅κ° ν보 νμ |
νμΌ λ²νΌ (File Buffer) νΉμ±
μ©λ: λ©λͺ¨λ¦¬ 리μμ€κ° λΆμ‘±ν λ μΌλ° νμΌμ λ²νΌλ‘ νμ©νλ κΈ°λ₯μ λλ€.
μ±λ₯ μν₯: λ©λͺ¨λ¦¬ λλΉ I/O μλκ° λ리λ―λ‘ μ 체 μ±λ₯ μ νκ° λ°μν μ μμ΅λλ€. μ±λ₯ μ νλ₯Ό μ΅μννλ €λ©΄ νμΌ λ²νΌ μ μ© λμ€ν¬ λ³Όλ₯¨ ꡬμ±μ κΆμ₯ν©λλ€.
ν¬κΈ° μ€μ : ν΅μ λ©λͺ¨λ¦¬ λ²νΌ μ°μ ν¬κΈ°μ 5 ~ 10λ°° μμ€μΌλ‘ μ€μ ν©λλ€.
볡μ μ§μ λ²μ
FSRμ΄ μ§μνλ λ°μ΄ν° μ νκ³Ό μ μΈλλ νλͺ©μ λν μμΈ μ μμ λλ€.\
λμ€ν¬ κ²½λ‘
μ§μ: λ‘컬 λμ€ν¬(Local Disk) κ²½λ‘
λ―Έμ§μ: NAS(NFS, CIFS) λ±μ μ격 λ§μ΄νΈ κ²½λ‘
μ°Έκ³ : NAS κ²½λ‘λ μ€μκ° λ³΅μ κ° μλ 'μ£ΌκΈ°μ λκΈ°ν' λ°©μμ ν΅ν΄ λ°±μ ν΄μΌ ν©λλ€.
Β
νμΌ μ ν λ° μμ±
μ§μ νμΌ μ ν
μΌλ° νμΌ λ° λλ ν°λ¦¬
λ§ν¬ νμΌ (Soft Link, Junction, Reparse Point)
μ€νμ€ νμΌ (Sparse File), μμΆ/μνΈν νμΌ
νΉμ νμΌ: NTFS ADS(Alternate Data Stream), NTFS TxF(Transaction File)
볡μ μ μΈ λμ (μ£Όμ)
μμ€ν μμ μ±μ μν΄ OS ꡬλκ³Ό κ΄λ ¨λ νμΌμ 볡μ λμμμ μ μΈν΄μΌ ν©λλ€.
OS μμ€ν νμΌ, λλΌμ΄λ² νμΌ, μ€μ(Swap/Page) νμΌ
OS μ€μΉ κ²½λ‘ (μ:
C:\Windows,/boot,/procλ±)
κ²½κ³ : μμ€ν νμΌμ 볡μ λμμΌλ‘ μ§μ ν κ²½μ°, OSμ I/Oμ 볡μ νλ‘μΈμ€κ° κ²½ν©νμ¬ μ¬κ°ν μμ€ν μ€λ₯λ μ±λ₯ μ νλ₯Ό μ λ°ν μ μμ΅λλ€.
λ§ν¬(Link) νμΌ μ²λ¦¬ μ μ±
κΈ°λ³Έ λμ: FSRμ λ§ν¬ νμΌ μ체(Pointer)λ§ λ³΅μ νλ©°, λ§ν¬κ° κ°λ¦¬ν€λ μλ³Έ λμ(Target)μ 볡μ νμ§ μμ΅λλ€.
μΈλΆ λ§ν¬: λ§ν¬κ° 볡μ μ€μ κ²½λ‘ μΈλΆλ₯Ό κ°λ¦¬ν¬ κ²½μ°, ν΄λΉ μλ³Έ λ°μ΄ν°λ 볡μ λμ§ μμ΅λλ€. μλ³Έ λ°μ΄ν°κΉμ§ 볡μ λ₯Ό μνλ€λ©΄ ν΄λΉ κ²½λ‘λ₯Ό 볡μ λμμ ν¬ν¨ν΄μΌ ν©λλ€.
νλλ§ν¬(Hard Link) μ μ½: νλλ§ν¬κ° 볡μ κ²½λ‘ λ΄/μΈλΆμ κ±Έμ³ μ‘΄μ¬νλ κ²½μ°, μΈλΆ νλλ§ν¬λ₯Ό ν΅ν λ³κ²½ μ¬νμ FSRμ΄ μΆμ ν μ μμ΄ λ°μ΄ν° λΆμΌμΉκ° λ°μν μ μμ΅λλ€. κ΅¬μ± μ νλλ§ν¬ ꡬ쑰 νμ μ΄ νμν©λλ€.
Β
νμΌ μμ± λ° κΆν
μ§μ μμ±: μ½κΈ° μ μ©, μ¨κΉ, μμ€ν , μμΉ΄μ΄λΈ, μμΆ, μνΈν λ± νμ€ μμ±.
μκ° μμ±: **μμ μκ°(mtime)**λ§ λ³΅μ λ©λλ€. (μ κ·Ό μκ° λ±μ 볡μ μ μΈ)
보μ μμ± (ACL): μμ€ νμΌμ 보μ μλ³μ(SID, UID/GID)λ₯Ό 볡μ ν©λλ€.
μ°Έκ³ : μμ€μ νκΉ μλ²μ 보μ κ³μ 체κ³κ° λ€λ₯Ό κ²½μ°, 볡μ ν νκΉ μλ²μμ κΆν μ¬μ€μ (λ§€ν) μμ μ΄ νμν μ μμ΅λλ€.
Windows νΉμ μ μΈ μμ±:
μ₯μΉ/κ°μ νΉμ± (
FILE_ATTRIBUTE_DEVICE,VIRTUAL)OneDrive κ΄λ ¨ μμ± (
RECALL_ON_OPEN,PINNEDλ±)
I/O μ§μ λ° μ΄μ λ°©μ
I/O μ²λ¦¬ μ ν
Windows λ° Linuxμ νμ€/νΉμ I/Oλ₯Ό νλκ² μ§μν©λλ€.
μΌλ°: Buffered I/O, Direct I/O, Memory Mapped I/O
Linux νΉμ: AIO, Writev, Splice I/O, uring I/O
Splice I/O μ±λ₯ μ°Έκ³ : Linux Splice I/Oλ Zero-copy κΈ°λ°μ κ³ μ μ μ‘ κΈ°μ μ λλ€. FSRμ΄ μ΄λ₯Ό μΊ‘μ²νμ¬ λ³΅μ ν κ²½μ°, λ°μ΄ν° μ¬λ³Έ μμ± κ³Όμ μμ λΆκ°νΌνκ² μ€λ¦¬μ§λ Splice I/O λλΉ μ±λ₯ μ νκ° λ°μν μ μμ΅λλ€.
Β
μ΄μ λͺ¨λ
κ΅¬μ± λ°©μ: Active-Passive (λ¨λ°©ν₯ 볡μ )
볡μ λ°©μ: λΉλκΈ°(Asynchronous) λ°©μ μ§μ
λ―Έμ§μ: λκΈ°(Synchronous) λ°©μ, νν(Ring) λ―Έλ¬λ§, Active-Active(μ΄μ€ νλΌμ΄λ¨Έλ¦¬) λͺ¨λ