RAID 0 (ìíëìí, Striping)

íì ìììí (3ì ìì)

  1. ëì: RAID 0 (Zero)ì ìë êì ëëì ëìíë ëì, ëìíë íì íêì ëë(ìíëìí, Stripe) ëìë ìêì ê ëìíì ìììêìììë ëì êëíë ìíëìí (Striping) êì ìêë.
  2. êì: ëìíë ìê ì ë ëì ìë ëë ëìíê ëìì I/O(Input/Output)ë ìííëë(ëë ìë), ìëììë ëìí êì(N)ëíì ìíìì I/O ìë ìí(ëìí êëí) ìëë ìêì ìëì ëìíë.
  3. íê: íëí(Parity) ìììë ëëë(Mirroring) êì ëìí ëí ììê ë 1ëìíë ììíì ììëë, ìëìì ìí ë íëì ëìíë êì ëë ìì ëëì ëìíê 100% ìê ìì(Fault Tolerance 0) ëë 'êíì ìë ëí' ìêë.

. êì ë íìì (Context & Necessity)

  • êë: RAIDì ììê êëìì êì êêìì ííì ëë 0ì ìì "ìëì ìëì(Redundant)"ìëë RAID ëëì êëíìë ìëëë. ëì ëìí(Redundancy)ê "0"ìëë ìëìì RAID 0ìë ëëëìë. ìì ìë(Performance)ì ìë(Capacity)ì ìë íììëë í ìëë íë ëììë.

  • íìì: êíìë ëëì ëëë, 3D ëë ììê íìì ìíëë, ëêë êí ììì ìì ìì ìì ë ëìíì 'ìê ëì'ëëë ëì ëëí ëìí(Bandwidth)ì íí ìì ìê ëì ìëíëë ìëì ìëììë íìí íì íêì ììíë. êì ëì ëì êêì ëìíë ìììë I/O ìëê CPUì ìì ìëë ëìí ëëêì ëí ë, ììëìë ìëí ëìí 4êë ìì ìêì êìëë 4ììì ëìëëë êë(RAID 0)ì ëëê ëë.

  • ð ëì: RAID 0ì "1ìêìë êì ëìë"ì 1ëì íììê ìë 1ìêì êëìë, ëì íìì 5ë ëìë 12ë(ëìí êì N)ì íìììê ììì ëìì ìëê ììíë(ìíëìí), ìì ëìë 5ë ëì ììíëëë(ìë Në ìì) êêì íì ëììëë. íìë 12ë ì 1ëìëë íììì êì íìíì ì ìë(ëìí H/W ìë), ìì ëìê ìê ëì ìë ìë ìë ìëêê ëìëëë ëìí(ìëì ìë)ì ëêìëë.

  • RAID 0 (ìíëìí)ì ëìí ëì ëë ëí êì: ëë ëìì ëìíê ììììë ìë ìíë(ëìí)ì ìëê ìêìì ëëìëìë ASCII ëììêëìë ìêííë ëìê êë.

  
                   RAID 0 (Striping) ìëìì ëìí ëì ëí             
  
                                                                           
     ììììê ëëëë ëì êë êì ëë (ì: 1TB x 4ê = 4TB ëë)    
     [ ëë A | ëë B | ëë C | ëë D | ëë E | ëë F | G... ]        
                                                                           
                  (ëìí ìíëìí ìê ëëì íë ì)                 
                     ëìì ëë(Parallel)ë êë í!                    
                                                                           
                                   
      ëìí 1     ëìí 2     ëìí 3     ëìí 4   ëìí 2   
                                                  ð íê ì!      
      [ A ]       [ B ]       [ C ]       [ D ]                   
      [ E ]       [ F ]       [ G ]       [ H ]                   
      [ I ]       [ J ]       [ K ]       [ L ]     ìì ëì      
       ...         ...         ...         ...     100% ëê!      
                                   
                                                                           
     * ìí(Chunk Size/Stripe Size): A, B, C ë íëì ìê íê           
       (ìëììë 64KB, 128KB, 256KB ëìë ìíëëìì íë)            
  

[ëììêë íì] RAID 0 ìíëëë íìíëëí ëììë ììë ìëì ëìíë ëë ììë ìí íê(ì: 64KB)ë êëìê(Strip)íë. êëê ì 64KB(A)ë ëìí 1ì, ëì 64KB(B)ë ëìí 2ì, êëì 64KB(C)ë ëìí 3ì, Dë ëìí 4ì ìë ììë ëìë ëë(Round-Robin) ëììë ëìì ëëëëë. 4êì ëëë íë(Head)ì ìë(Channel)ì ëìì êëì ìííëë ìëììë ìê ë ìê ìëëì ëì ëìí ëë ì 4ë íìíë (ëì ìëê 4êë ëì íëì íìíë ëë êê êë). ëì ëìíê 100êëë ëìíë ììììë 100ë(ìëíë ìì)ì ëëí ì ìë. ìì ìë íìì ëíëì ììí ëìí êìë.

  • ð ìì ìì ëì: ìì ëì ìë 10ìì êìëë(RAID 0)ë ëì ìëì ìì ëë ì ìê ëëììë, ìêì ëë êê ë 1ê (êë ëìí 1ê)ëë ëëìë ê ììëë ìëë êìëë ììê ìëì(ëìí ëê 0%)ëì íìëë êëìì ìêìëë.

. ìííì ë íì ìë (Deep Dive)

ëìí ëíê(Multiplier)ì êìì ìíëìí ììì (Stripe Size) íë

RAID 0ì ìë íëì íìì ìí íê(Chunk Size = Stripe Size) ì ììêì ëë êì ëë ìë. ìêì ìíëìììì I/O íì(ëë vs ìì, íìì íê)ê ìëíê ëìëììë ì ìëì ëííë.

ìíëë (Workload)ìì Stripe Sizeíë ìì ëìëììë ììëì
êë íì ìì(Sequential) I/Oëì í (256KB ~ 2MB)í íìì ëìì ëìíì í ëì êê ëììì, ëìí íëì ìë(Seek)ì ììííê ìíëë ìëí ìì êëí4K/8K ëìì íì ìë ìì ìê, êë ëì ìëì ììíì ëìì êê íìëíê ììì ìë ëì íìê
ìì íì ëìì(Random) I/Oëì ìì (4KB ~ 16KB)íì ìììê ììëë ìê ìëê ìë. ê ëìíê ìë ëë ìëì ìì íì ììì ëìëëì(ëë IOPS)ìë ìëíêë ìë (ëìíë 1íì ìì ìë)ìë ìì êì ëê êë Web/DB íí ìì ìì, ìììë ìíìêì êì ìíë í ëì ìëíì ìë ë ìêíê

ìì ìì: 'êì ëì ìíê ëìê ìë'ë íêì ìêí ëëì ìëíë. ëì 1MBìë êë ìíë ìííëê OSê 4KBìë ìë íì ìë êë ììíëë, ìíëìí êì(ëì)ê ììëêë ìë ì ëì ëìí 1êë êì ëìëì ìê ìêë ëëíì ëì ëìí ëë ìë ìëì ë 1%ë ìë ìíì ëìíë.


êí íìë (Fault Tolerance)ê ìíììë '0'ì ìì

RAID 0 ëììì ëìí ììê ëìëìë, ììí ììê ëìë êìì ìí íëì ëìì ìëë ìì ë ìíëë. (ìë ëë ìíë íë). ëìí 1êì ìì íë(Reliability)ì $R$ (ì: 95% = 0.95)ìë êìí ë, RAID 0 ìëì(Nê)ì ìì íëì $R^N$ ì ëë.

  
                   RAID 0 ëëì ìíë(ëìí íì ëêì íê) ìì êì      
  
                                                                                
    ìì ìê: ëìí 1ê ë, 5ë ë êì(Fail)ì ë íë 5% (R = 0.95)         
                                                                                
    [ ëì ëìí 1ë ]                                                         
       êë íë: 0.95 (95.0%)  êì ë íë 5.0%                             
                                                                                
    [ RAID 0 (2 ëìí) êì ì ] (ìë 2ë, ìë 2ë!)                         
       êë íë: 0.95  0.95 = 0.902 (90.2%)                                   
        ìì êì ë íë 9.8% (ìíë êì 2ë ìê)                         
                                                                                
    [ RAID 0 (4 ëìí) êì ì ] (ìë 4ë ìì!)                              
       êë íë: (0.95)^4 = 0.814 (81.4%)                                      
        ìì êì ë íë 18.6% (ìíë 3.7ë íë ìê)                      
                                                                                
    [ RAID 0 (10 ëìí) í íë êì ì ]                                      
       êë íë: (0.95)^10 = 0.598 (59.8%)                                     
        ìì ììí ëìì/ëìí ìëí íë ëë 40.2% ëí!!!              
                                                                                
     ìì êë: ìëë ìí Nììì ëëìë, êíìê ëì ëìíë êíêìì!
  

[ëììêë íì] RAID 0ì ìëì ìê íêë ìëì ìì ëìíë í ìë ìì ëíëë ìì ìë (êì íëí ìì). ë íëì 64KB ëë ëìë(C)ë ëê ìë ëìí 3ê êê êíìë ììëëë, ëì ëìí 1, 2, 4ì ìììë ìì êì íì íí ìê (A, B, D, E...) ìì 'ìêì ë(ëêì)'ì ììí ììíì íì ìê(Corrupted File)ì ëìëëë. ëìí íëì(Carving)ìëë ììì ëìì êì ëêëí ìììë íííë ì íêëë. ëìíì êì(N)ë ëë ìë Gbpsë ëìíìë, êì ëë ëìíê ëìí ìê íëì $1-(R)^N$ êëíë ëë íëììë ììíë. ëìê ëì ììíì êììì ììëë ìíííì ìê ìë/ìëìë ììíë êê êë.

  • ð ìì ìì ëì: ë(ëìí)ë ìë ì ëìì ë(I/O ìëí)ë ë êì ììë ìëí ìëì ìëë ìì(ìë ìí)í ì ììë, ëì ìë ëë ì ë íëëë ëì ëê êëììë(SPOF), ëìëë ëë ì(ìíëìí ë íí)ê ììëì ë ëëììë ìì ìë(100% ëìí íê)ëë ìêì ììì ìíê ëì ëì êìëë.

. ìí ëê ë ëêë ëì

ëë RAID ëëêì íëìëìí ìí ëê

RAID 0ì ëììíë ìëì ììì ëìë íêíë ëêë, 'êì êëí ìë(Usable Capacity)' íì 100%ì ìë íì 100% ëë íì ììì ëííë ìíë êëììë.

ëê íìRAID 0 (ìíëìí)RAID 1 (ëëë)RAID 5 (íëí)
ìì êë ìë íì100% (ìí: $N \times ìë$)50% ($1/2$ ìëë ìì êë)ì 66~90% ($(N-1) \times ìë$)
ìê ìë (Read)Në (ìêì êëí)Në (ìì ëì ëë ìê ì)N-1ë (ìëí ììí)
ìê ìë (Write)Në (ìëíë ìë ìê ìë)1ë ìì (ììì ëêì ììë ëë)ìê íëíëì(íëí XOR ìì ìëíëëë) ð
ìì ëì (Fault Tol.)0ê ëëìë íì (ìë ìê)ìì 1ê ëëìë (ìëì ëìë ìì)1ê ëëìë êì íì (ìì ëê)

Non-RAID ëë ìì (JBOD/Spanning) êììì íìí ìì

ëë ëìíë ììì ìëì íìëë ììì JBOD(Spanning ìí ëë)ì ìì íëëë ëìì êë 180ë ëëë. JBODë ëìí 1ì ë ì ëêì ìêìì ìëê, ë ìë ëìí 2ì ëì êêì ììììë ììì ìë "êë ìê(Append)" ëììë. I/O ìëë ëì ëìí 1ë ìëì ë ìë íìì 0ìë. ëì ìì ëìíê ëêìë ëì ëìíì ììí ìí íìì ì ìê ìëë ììê ìêë. RAID 0ì ììëí ëêì ëìê Nê ëìíì íìë ìë ëëêìë ëëëë ëìí ìêì ì ìê ììëì ìììì ìêëë.

  • ð ìì ìì ëì: JBODê í êë ìë êë ëë ë ëìì íë ë ì ëêì ììê ëì êë ìë ìììì ìììëë, RAID 0ë ëë êë ìíë ììëê ìììë ìì êì ì ìêëì ëìì ëê êì ëë ììëê ëë ìì ëì ëë íìëìëë.

. ìë ìì ë êììì íë

ìë ìëëì ìë ëë

  1. ìëëì HPC (High Peformance Computing) íêì ëì ëë ììì ìì ëìí (Scratch Space): ëëë(AI) ëëìì íëëìíê ëìíì ìíí(Epoch)ë ìêììë ëëí ë ëì ììíì NVMe 1ììë ëìí I/O ëëì ìì GPU ììê ëìíë êëëëë ëê ìë. ì ëìí ìì ìë ìëìí ìíëì(S3 ë ëìë ìììë)ì ììí ëêëì ììëë ìíí ëë ìììë êìë ëì íìë(Pull) ëìë. ëëì êì ì NVMe 4~8ìì RAID 0 (S/W mdadm) ìë ëê ëë ìíëìíìë ëìí 20GB/s êì êë ìì ìíëì(Scratch) ííìì ëììê ML ììëìì ìíí ëë ìêì ììí ìë ìííì êëì íììë.

  2. ìëëì ìëí ëê ìíëë ëí ììí (Kafka / ELK Stack): ììë ìì ëê ìë êêëìíì ëì ëê ìëíë ëìë. ëìì ììë ìë ëê íìì Kafkaë Logstashê ëì íìíëììë íêë ìì ëëìë ìì ëìíìë(íë ëì ë), ìêì ëë(Log drop)ì ìëìì ìëì(êìêì ë)ëë íëí ëëíë ëì ëì ìëì ììë ëëë. ìë ìíëìì RAID 5 êì ëëíì I/O ìëíëë ìí ëê Drop ëëì ëê ëëë, ëëëì RAID 0ìë ëì ìê ëë ììë ììëìë ìí íëë ëë êì êì ìíííì íëí ìíìë.

ì ëêì 0ì ìííí íê ìììë êì ëìíìë íë ìë ííí RAID 0 ìí ìëì íë íëë ëìê êë.

  
           RAID 0 ìí ìë íëì ìí ìííì ëìí íí íëì              
  
                                                                                 
     [ ëìí ììì (Durability) ë ëê íìëì íì ]                        
                                                                                
                                                                                
        ìíëì(ëë)ê ìê ëì íê(Crash)ëë ìêë ëìëì ìííë?     
             [ìëì: ìë íì, êê DB, ëê ëê ìê ëì ê]              
                 ð ìëë RAID 0 ëì êì! (ìì íê ììê ìì)         
                                                                                
             [êëëí: ëì/ìëì ëë ìì (ëì ìì ìì/ììì)]         
                                                                                
                                                                                
        íë ëëìì I/O ëìí(ìë/Performance) ëëì ëì ììê?           
             [ìëì: CPU ìì ìììë ëìí ëì/ìë ìëí]               
                 êì ìí ìê ê ìì ìì (ëì ìíëì ìì)            
                                                                                
             [ì: ëëë, ìì êì ìê íìë ììí ìëì ëëë!!]        
                                                                                
                                                                                
      ìêì ìíëì/ìì íë ëììë S/W RAID 0 êë ìë êì ìì!       
        ( ë, ëëì 'ì ëëìë ììí ìë ìì íëí êì' ìë ìì íë) 
  

[ëììêë íì] RAID 0ì ëì êìì ìì í ëììë ììëë. "ìê ìê ììëì ìë ëìí ìëêíì 1ì ëì ì ííëìë ìì ëììë ëì êìë ìêìë ìëìëìê?" ìë. êì ìëìì RAID 0 ëì êììë OSë DB ììì êëíë ëì ì(?)ì ìë ììë ì ììë, ìê ìì ìì, ìì ë ìì íëììë ìì íë ë, ëëìë ìí I/O ëë ëìì ëëìë êì íë êì ëìì ìëíë ìêìë ìëë êìê ìë ëë ìì 100% ìëì êìíë ìëí ìíìë ìë. ëêìì íêíë ìë íêë íêí 'ëìì ëë'ì íëìë.

ëì ìíëìí (ììì ìê ìë)

  • ììì: RAID 0 ëë ëì OS(ìììì)ì ëí ëëìë ììíì ììí Swap ííìì ëììììë íìëì ììëê?

  • ìë ë IO ëì: ëëìë ëì ì, ëëì êìíë Nêì ëìí ìëê ìí(RPM íì íëì íì)ì ëìí êììë ëììëê? (ìì êì ëì íí íìí ìíëìíê ìíëëë ëë ëì íì).

  • ð ìì ìì ëì: ì êëí ììì(RAID 0)ë ëì ìëìì êììì ììëí, ììë, ëí, ëì ìëìë ëìë ëìë ëê(ììë/ìëíë)ë 0ìë ëëê ìëìë êëììë ëëì ì êíì F1 ëì êì íë(ì ëëíëë ìì!)ê ëëëë ëêìëë.


. êëíê ë êë

ìë/ìì êëíê

êëëì ì (ëì ëìí íì ëë RAID ìì)RAID 0 ìíëìí ëë êí ìííì ìë ììììë íëì êì íê
ìë (I/Oë)1 Gbps SATA ìì ìë íê8Gps ìì (ëìí 8ê ìì ì ëëì ìì êì)ìíëì ëíëì ëì(Lane) íì íêêì ìí ëí(Linear Growth)
ìë (ìëì)RAID 1 ìí ëìë 50%ì ìì ëì/ëëìë íì(Usable Capacity) íí ìì 100% íëêë ìì TCO (êí ëì ìì ì) êì ììí ëì ìë
ìì (ìì)ìë ëë êê(ìì ììë, ëìë ìììë ëìëê) ìììê(Write) ìëíë 0% ëì ë ìêìì I/O ëí ëì ìëíëìì I/O ë ìí ìíëììì ìì ìì(Bottleneck) êì íí

ëë ìë

  • RAID 10 (1+0) ë ëìí êìì ìíí(Under-layer) ìì: ììí RAID 0 ëëì ê ìëìì ìíííì íê(FT=0) ëëì ìì ëììíë ëëììë ììëê íëë. íìë ìíëìíì ìëìì ìë ëëëíì ìë íêí ì ìê ëëì, ëëìë ìëê ììì(ëì ëì)ì êìë ëë ìììë êì ìëí íìëëë ìëì ìíì RAID 10 (Striping over Mirroring ìë ëë)ì 'íì ìë ëë' ëì ìì ìíì ìëì ëí êìë.
  • íëìë Ephemeral Storage (ìì íëì ëë): AWS ììíì ìíì, GCPì ëì NVMe ìíëì ë íëìë VDC íêìì 'ììí ììíì ëë ë ëìêë ìì êì ëë ììì'ì íëë ëì ë, S/W RAID 0ì ëìì êëì ììíì ìê ëìì I/Oë ëìëìë íìí ëììí êëì ììì íëìë íë ìíìë êì ììëê ìë.

ìê íì

  • SNIA (Storage Networking Industry Association): RAID ëë ëë 0(Data Striping WITHOUT Parity) ìì ìë êì ìì.
  • Linux ìë mdadm ëëì: S/W êì ìíëìí ìëì(ëë 0) ëë ììì ìí ìëì ììí(Tuning) êìì. ( mdadm --create --level=0 )

êëììë RAID 0ì RAIDì ìì ëìì "ëìí ëìë (Redundancy)" ìëë ììí êëì ìëíê ëìí ììí ìëìì ììììë, ììììë ê ëëì "ìëì ìë" ìëë í ìêì ìê() ììì ìí íììì ëëíë ììì ììëìì êììë. íê(SPOF)ì ëë ëììë ëëë êë(RAID 1+0 ë)ì ìê ìì ìëí êëí ì ìêì ìë ëíì ììí ììì ëë.

  • ð ìì ìì ëì: ì êì(RAID 0)ì ìëë ëê ìí ëì ëìë ëìììì ìêì ìì ëìëìê 8ëë ëëì ìëêì ë íì êì êëê ëì ìëë ëëê ëììíë, êì ëìíê íìë ê ìë ìì ìíë ììíëëë êìì(Berserker) ëê ììê êìëë.

ð êë êë ë (Knowledge Graph)

êë ëìêê ë ìëì ìë
ìíëìí ììì (Stripe Size) ììíëìíë êêë ììëë ëëì êí íê. ìíëìììì Random/Sequential IO ìêì ëë ìê(16k) íì ëìëìíê êê(2m) ìì 0 ëëì ìí(ìë)ì ìëíë íì ìì.
SPOF (ëì ìì ìì, Single Point Of Failure)RAID 0ì ëëìíì íë ììëìí êë. ëìíê 100êê 1000êê êì ë 1ê êêì ëìë ëìë, ëëìì 100%ê ììì êë ëììë ëìí ìì ìí ìíëìê.
JBOD (Just a Bunch Of Disks)ëìë 0ì ëëêìë ìëë ëìíë ëí ëëêëë, ììëì ëìí íëê ë ëêì ë ì ëêì ëíë ëêëê ëì ëí(Span)ìë ëìë ì êë ìëì íìëìë ëìí ììì ìë.
RAID 10 (1+0 ìíëìí ëë êí)ì êìì ìëëíê ìì ìëëì êìíê ìí, RAID 1(êì ëìì)ì ííí ëìë êëëëë ëì RAID 0(ìêì ìíëìí ëì) ëìë ìì ììí ìííëìì ëìíëìì ëíì ìí ëê.
ëìëí I/O (MDADM ìëíë ëì)ìííìì ëëë íìí ëìí ììì 0ìë ëíí ë ìì ìììë ëìì ìêêê ìì CPU ììì íëíë êì ìì ìë.

ð ìëìë ìí 3ì ëì ìë

  1. 100ìê íìì ìëë ìê ë íìì ë ëìë 1ìêì êë êëìì? ëë ìëíì ìì ìë ìêë 3ëì ë ëëì êê 25ìêì ëëì í ëì í ëëëì ëìëëì!
  2. ìì, êëëë 15ë ëì ëêìë ììë ìë(RAID 0 ìíëìí)ë êë ìììëë ììë íì íììì ìêì. ìëì ëëìì.
  3. êëë ìëì! ìê ì í ëì êìê ëê ìíì 25ìêì ëê ìì ëëêëëë? êìë êë ìëì íìë ëìëëì ìì ììê ëêìê 100% ëì(ìëì ìë, ëì ìì) ìëê ëë ììí ëë ííëìì.