LVM рдФрд░ matryoshka рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЖрдо рд╣реИ?

рдЕрдЪреНрдЫрд╛ рджрд┐рдиред
рдореИрдВ md RAID + LVM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ KVM рдХреЗ рд▓рд┐рдП рд╕рдВрдЧреНрд░рд╣рдг рдкреНрд░рдгрд╛рд▓реА рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реЛрдЧрд╛:

  • NVMe SSD рд╕реЗ md RAID 1 рдмрдирд╛рдПрдБред
  • SATA SSD рдФрд░ рдирд┐рдпрдорд┐рдд рдбреНрд░рд╛рдЗрд╡ рд╕реЗ md RAID 6 рдмрдирд╛рдПрдБред
  • SSD RAID 1/6 рдкрд░ TRIM / DISCARD рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред
  • рдбрд┐рд╕реНрдХ рдХреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдкрд░ рдмреВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп md RAID 1/6 рд╕рд░рдгреАред
  • рдпрджрд┐ BIOS рдореЗрдВ рдХреЛрдИ NVMe рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, рддреЛ NVMe RAID 1 рдкрд░ рд╕рд┐рд╕реНрдЯрдо рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ред
  • LVM рдХреИрд╢ рдФрд░ LVM рдкрддрд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
  • BTRFS рд╕реНрдиреИрдкрд╢реЙрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рднреЗрдЬрдирд╛ / рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред
  • BTRFS рд╢реИрд▓реА рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП LVM рдкрддрд▓реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдФрд░ thin_delta рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рдЕрдЧрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред

рдмрдпрд╛рди


рд▓реЗрдЦрдХ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рд╕рд╛рдордЧреНрд░реА / рдЙрджрд╛рд╣рд░рдг / рдХреЛрдб / рдЯрд┐рдкреНрд╕ / рдбреЗрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рди рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкрдврд╝рдиреЗ рдпрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ, рдЖрдк рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рднреА рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд▓реЗрддреЗ рд╣реИрдВред рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:

  • рдХреНрд░рд┐рд╕реНрдкреА рдлреНрд░рд╛рдЗрдб NVMe SSDред
  • рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рдФрд░ рдПрд╕рдПрд╕рдбреА рдбреНрд░рд╛рдЗрд╡ рдХреА рд╡рд┐рдлрд▓рддрд╛ред
  • рдмреИрдХрдЕрдк рд╕рд╣рд┐рдд рд╕рднреА рдбреНрд░рд╛рдЗрд╡ рдкрд░ рд╕рднреА рдбреЗрдЯрд╛ рдХрд╛ рдкреВрд░реНрдг рдиреБрдХрд╕рд╛рдиред
  • рджреЛрд╖рдкреВрд░реНрдг рдХрдВрдкреНрдпреВрдЯрд░ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ред
  • рд╕рдордп, рдирд╕реЛрдВ рдФрд░ рдкреИрд╕реЗ рдЦрд░реНрдЪ рдХрд┐рдПред
  • рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░рднрд╛рд╡ рдКрдкрд░ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рд╣реИред

рд▓реЛрд╣рд╛


рд╕реНрдЯреЙрдХ рдореЗрдВ рдерд╛:


рдорджрд░рдмреЛрд░реНрдб Z87 рдЪрд┐рдкрд╕реЗрдЯ рдкрд░ рдЗрдВрдЯреЗрд▓ рдХреЛрд░ i7 / рд╣реИрд╕рд╡реЗрд▓ рдХреЗ рд╕рд╛рде 2013 рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИред

  • рд╕реАрдкреАрдпреВ 4 рдХреЛрд░, 8 рдзрд╛рдЧреЗ
  • DDR3 рд░реИрдо рдХреЗ 32 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ
  • 1 x 16 рдпрд╛ 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 рдЬреАрдмреАрдкреАрдПрд╕ рдПрд╕рдПрдЯреАрдП 3 рдХрдиреЗрдХреНрдЯрд░

SAS рдПрдбрд╛рдкреНрдЯрд░ LSI SAS9211-8I IT / HBA рдореЛрдб рдореЗрдВ рдЪрд▓рд╛ рдЧрдпрд╛ред RAID- рд╕рдХреНрд╖рдо рдлрд░реНрдорд╡реЗрдпрд░ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ HBA рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:

  1. рдХрд┐рд╕реА рднреА рд╕рдордп рдЗрд╕ рдПрдбреЙрдкреНрдЯрд░ рдХреЛ рдлреЗрдВрдХрдирд╛ рд╕рдВрднрд╡ рдерд╛ рдФрд░ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
  2. TRIM / рдбрд┐рд╕реНрдХрд░реНрдб рдиреЗ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬреИрд╕рд╛ рдХрд┐ RAID рдлрд░реНрдорд╡реЗрдпрд░ рдореЗрдВ, рдпреЗ рдХрдорд╛рдВрдб рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ HBA, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдмрд╕ рдореЗрдВ рдХреНрдпрд╛ рдХрдорд╛рдВрдб рднреЗрдЬрдиреА рд╣реИред

рд╣рд╛рд░реНрдб рдбреНрд░рд╛рдЗрд╡ - рд▓реИрдкрдЯреЙрдк рдХреЗ рд▓рд┐рдП рдлреЙрд░реНрдо рдлреИрдХреНрдЯрд░ 2.5 рдореЗрдВ 1 рдЯреАрдмреА рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд╕рд╛рде рдПрдЪрдЬреАрдПрд╕рдЯреА рдЯреНрд░реИрд╡рд▓рд╕реНрдЯрд╛рд░ 7 рдХреЗ 1000 рдХреЗ 8 рдЯреБрдХрдбрд╝реЗред рдпреЗ рдбреНрд░рд╛рдЗрд╡ рдкрд╣рд▓реЗ рдПрдХ RAID 6 рд╕рд░рдгреА рдореЗрдВ рдереЗред рдирдИ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ, рд╡реЗ рднреА рдЖрд╡реЗрджрди рдкрд╛рдПрдВрдЧреЗред рд╕реНрдерд╛рдиреАрдп рдмреИрдХрдЕрдк рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдпрд╣ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛:


SATA SSD рдореЙрдбрд▓ рд╕реИрдорд╕рдВрдЧ 660 QVO 2TB рдХреЗ 6 рдЯреБрдХрдбрд╝реЗред рдЗрди SSD рдХреЛ рдПрдХ рдмрдбрд╝реА рд░рд╛рд╢рд┐, рдПрдХ SLC рдХреИрд╢ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рд╡рд╛рдВрдЫрдиреАрдп рдФрд░ рдХрдо рдХреАрдордд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдирд┐рд╡рд╛рд░реНрдп рдХреЛ рддреНрдпрд╛рдЧ / рд╢реВрдиреНрдп рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдерд╛ рдЬрд┐рд╕реЗ dmesg рдореЗрдВ рдПрдХ рд▓рд╛рдЗрди рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдВрдЪрд╛ рдЧрдпрд╛ рд╣реИ:

kernel: ata1.00: Enabling discard_zeroes_data

NVMe SSD рдореЙрдбрд▓ рд╕реИрдорд╕рдВрдЧ SSD 970 EVO 500GB рдХреЗ 2 рдЯреБрдХрдбрд╝реЗред

рдЗрди SSDs рдХреЗ рд▓рд┐рдП, рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдврд╝рдиреЗ / рд▓рд┐рдЦрдиреЗ рдХреА рдЧрддрд┐ рдФрд░ рдЖрдкрдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд╕рд╛рдзрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рд░реЗрдбрд┐рдПрдЯрд░ред рдЕрдирд┐рд╡рд╛рд░реНрдпред рдмрд┐рд▓рдХреБрд▓ рдЬрд░реВрд░реАред рдЕрдиреНрдпрдерд╛, рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд░рд╡рд╛ рддреБрд▓реНрдпрдХрд╛рд▓рди рдХреЗ рджреМрд░рд╛рди рдХреБрд░рдХреБрд░рд╛ рд╣реЛрдиреЗ рддрдХ рднреВрдиреЗрдВред

PCIT 3.0 8x рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде 2 x NVMe SSDs рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рд░рдЯреЗрдХ PEX8M2E2 рдПрдбреЙрдкреНрдЯрд░ред рдпрд╣, рдлрд┐рд░ рд╕реЗ, рд╕рд┐рд░реНрдл рдПрдЪрдмреАрдП рд╣реИ, рд▓реЗрдХрд┐рди рдПрдирд╡реАрдПрдордИ рдХреЗ рд▓рд┐рдПред рдпрд╣ рдПрдХ рдПрдХреАрдХреГрдд PCIe рд╕реНрд╡рд┐рдЪ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рдорджрд░рдмреЛрд░реНрдб рд╕реЗ PCIe рджреНрд╡рд┐рднрд╛рдЬрди рд╕рдорд░реНрдерди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдЕрднрд╛рд╡ рдореЗрдВ рд╕рд╕реНрддреЗ рдПрдбреЗрдкреНрдЯрд░ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдпрд╣ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ PCIe рд╣реИ, рднрд▓реЗ рд╣реА рдпрд╣ X1 PCIe 1.0 рд╕реНрд▓реЙрдЯ рд╣реЛред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЙрдЪрд┐рдд рдЧрддрд┐ рдХреЗ рд╕рд╛рдеред рд╡рд╣рд╛рдБ рдХреЛрдИ RAID рд╣реИрдВред рдмреЛрд░реНрдб рдкрд░ рдХреЛрдИ рдПрдХреАрдХреГрдд BIOS рдирд╣реАрдВ рд╣реИред рддреЛ, рдЖрдкрдХрд╛ рд╕рд┐рд╕реНрдЯрдо NVMe рд╕реЗ рдмреВрдЯ рдХрд░рдирд╛ рдирд╣реАрдВ рд╕реАрдЦреЗрдЧрд╛, рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП NVMe RAID рдзрдиреНрдпрд╡рд╛рдж рдмрд╣реБрдд рдХрдо рд╣реИред

рдпрд╣ рдШрдЯрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдореБрдлреНрдд 8x PCIe 3.0 рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рдерд╛, рдФрд░ 2 рдореБрдлреНрдд рд╕реНрд▓реЙрдЯ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЛ рд╕рд╕реНрддреЗ PEX4M2E1 рдпрд╛ рдПрдирд╛рд▓реЙрдЧреНрд╕ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕реЗ 600 рд░реВрдмрд▓ рдХреА рдХреАрдордд рдкрд░ рдХрд╣реАрдВ рднреА рдЦрд░реАрджрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдПрд╕рдПрд╕рдбреА / рдПрдЪрдбреАрдбреА рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде, рдкреВрд░реЗ рдбреЗрдЯрд╛ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмрджрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдпрд╛ рдПрдХреАрдХреГрдд RAID рдЪрд┐рдкрд╕реЗрдЯ / BIOS рдХреЗ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рдХреЛ рдЬрд╛рдирдмреВрдЭрдХрд░ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕рд╕реЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП / рдЕрд▓рдЧ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдореЗрдВ рдЬрд╛рдиреЗ рдкрд░ рднреА рд╕реНрдерд╛рдкрд┐рдд рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ SATA рдФрд░ PCIe рдкреЛрд░реНрдЯ рд╣реИрдВред рдпрд╣ рдПрдХ рд▓рд╛рдЗрд╡ рд╕реАрдбреА рдпрд╛ рдмреВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдХреА рддрд░рд╣ рд╣реИ, рдХреЗрд╡рд▓ рдмрд╣реБрдд рддреЗрдЬрд╝ рдФрд░ рдереЛрдбрд╝рд╛ рдУрд╡рд░рд╕рд╛рдЗрдЬрд╝реНрдб рд╣реИред

рд╣рд╛рд╕реНрдп
, , тАФ . . 5.25 .

рдареАрдХ рд╣реИ, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдПрд╕рдПрд╕рдбреА рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред
рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдЫрд╛рдкреЗ, рдпрд╣ рдЙрдмрд╛рдК рд╣реИред рдЪрд╛рд▓реВ рдХрд░реЛред рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ mdadm рдХреЗ рд╕рд╛рде рд╣рдореЗрд╢рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВред

рдореБрд▓рд╛рдпрдо


рдкрд╣рд▓реЗ, рдбреЗрдмрд┐рдпрди 8 рдЬреЗрд╕реА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдИрдУрдПрд▓ рдХреЗ рдХрд░реАрдм рд╣реИред рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд HDD рд╕реЗ RAID 6 рдХреЛ LVM рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ kvm / libvirt рдореЗрдВ рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди рдЪрд▓рд╛ рд░рд╣рд╛ рдерд╛ред

рдЪреВрдВрдХрд┐ рд▓реЗрдЦрдХ рдХреЛ рдкреЛрд░реНрдЯреЗрдмрд▓ рдмреВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп SATA / NVMe рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдмрдирд╛рдиреЗ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рдЕрдиреБрднрд╡ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕рд╛рдорд╛рдиреНрдп рдПрдк-рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдлрд╛рдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рдЙрдмрдВрдЯреВ 18.04 рдХреЛ рд▓рдХреНрд╖реНрдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рд╕реНрдерд┐рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрднреА рднреА рднрд╡рд┐рд╖реНрдп рдореЗрдВ 3 рд╕рд╛рд▓ рдХрд╛ рд╕рдорд░реНрдерди рд╣реИред

рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рд╕рднреА рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдбреНрд░рд╛рдЗрд╡рд░ рд╣реИрдВ рдЬрд┐рдирдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ред рд╣рдореЗрдВ рдХрд┐рд╕реА рднреА рддреГрддреАрдп-рдкрдХреНрд╖ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдФрд░ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рд╕реНрдерд╛рдкрдирд╛ рдХреА рддреИрдпрд╛рд░реА


рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрдмрдВрдЯреВ рдбреЗрд╕реНрдХрдЯреЙрдк рдЗрдореЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд░реНрд╡рд░ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЬреЛрд░рджрд╛рд░ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╣реИрдВ рдЬреЛ рдЕрддреНрдпрдзрд┐рдХ, рдЧреИрд░-рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрд╢рд╛ рдпреВрдИрдПрдлрдЖрдИ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рднрд╛рдЬрди рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рд╕реМрдВрджрд░реНрдп рдХреЛ рдЦрд░рд╛рдм рдХрд░ рд░рд╣реЗ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╣реЛрддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рдХреЗрд╡рд▓ рдпреВрдИрдПрдлрдЖрдИ рдореЛрдб рдореЗрдВ рд╕реНрдерд╛рдкрд┐рдд рд╣реИред рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рд╣рдореЗрдВ рд╢реЛрднрд╛ рдирд╣реАрдВ рджреЗрддрд╛ред

рдХреНрдпреЛрдВ?
, UEFI RAID, .. UEFI ESP . , ESP USB , , . mdadm RAID 1 0.9 UEFI BIOS , , BIOS - ESP .

, UEFI NVRAM, , .. .

, . , Legacy/BIOS boot, CSM UEFI- . , , .

рдЙрдмрдВрдЯреВ рдХреЗ рдбреЗрд╕реНрдХрдЯреЙрдк рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдпрд╣ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд▓рд┐рдЧреЗрд╕реА рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ, рдЬреИрд╕рд╛ рдХрд┐ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдФрд░ рдЗрд╕рд▓рд┐рдП, рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░реЗрдВ рдФрд░ рдмреВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдЙрдмрдВрдЯреВ рд▓рд╛рдЗрд╡ рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд▓реЛрдб рдХрд░реЗрдВред рд╣рдореЗрдВ рдкреИрдХреЗрдЬ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдиреЗрдЯрд╡рд░реНрдХ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛, рдЬрд┐рд╕рдиреЗ рдЖрдкрдХреЛ рдЕрд░реНрдЬрд┐рдд рдХрд┐рдпрд╛ред рдпрджрд┐ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЖрдк рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдкреИрдХреЗрдЬ рдХреЛ USB рдлреНрд▓реИрд╢ рдбреНрд░рд╛рдЗрд╡ рдкрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рдо рдбреЗрд╕реНрдХрдЯреЙрдк рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ, рдЯрд░реНрдорд┐рдирд▓ рдПрдореБрд▓реЗрдЯрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЪрд▓рддреЗ рд╣реИрдВ:

#sudo bash

рдХрд┐рд╕ рддрд░рд╣...?
sudo. . , . sudo , . :


#apt-get install mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc

ZFS рдХреНрдпреЛрдВ рдирд╣реАрдВ ...?
, тАФ , .
, тАФ , - .

ZFS тАФ , mdadm+lvm .

. . . . . . , .

рдлрд┐рд░ BTRFS рдХреНрдпреЛрдВ ...?
Legacy/BIOS GRUB , , , -. /boot . , / () , LVM .

, .
send/recieve.

, GPU PCI-USB Host- KVM IOMMU.

тАФ , .

ZFS, , , .

, / RAID ZFS, BRTFS LVM.

, BTRFS , / HDD.

рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдкреБрдирдГ рд╕реНрдХреИрди рдХрд░реЗрдВ: рдЖрдЗрдП рдЪрд╛рд░реЛрдВ рдУрд░ рджреЗрдЦреЗрдВ

#udevadm control --reload-rules && udevadm trigger

:

#lsscsi && nvme list
[0:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdb
[2:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdc
[3:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdd
[4:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sde
[5:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdf
[6:0:0:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdg
[6:0:1:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdh
[6:0:2:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdi
[6:0:3:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdj
[6:0:4:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdk
[6:0:5:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdl
[6:0:6:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdm
[6:0:7:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdn
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S466NXXXXXXX15L Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7
/dev/nvme1n1 S5H7NXXXXXXX48N Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7

рд╡рд┐рднрд╛рдЬрди "рдбреНрд░рд╛рдЗрд╡"


рдПрдирд╡реАрдПрдордИ рдПрд╕рдПрд╕рдбреА


рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдЪрд┐рдиреНрд╣рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рд╕рднреА рд╕рдорд╛рди, рд╣рдорд╛рд░реЗ BIOS рдЗрди рдбреНрд░рд╛рдЗрд╡ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рддреЛ, рд╡реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ RAID рдореЗрдВ рдЬрд╛рдПрдВрдЧреЗред рд╣рдо рд╡рд╣рд╛рдВ рд╡рд┐рднрд╛рдЬрди рднреА рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗред рдпрджрд┐ рдЖрдк "рдХреИрдирди" рдпрд╛ "рд╕рд┐рджреНрдзрд╛рдВрдд" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдПрдВ, рдЬреИрд╕реЗ рдХрд┐ рдПрдЪрдбреАрдбреАред

SATA HDD


рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЦрд╛рд╕ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗред рд╣рдо рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ BIOS рдЗрди рдбрд┐рд╕реНрдХ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЙрдирд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рднреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЗрди рдбрд┐рд╕реНрдХ рдкрд░ рдмрд╛рдж рдореЗрдВ GRUB рднреА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВрдЧреЗ рддрд╛рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдЕрдЪрд╛рдирдХ рд╕рдлрд▓ рд╣реЛ рдЬрд╛рдПред

#cat >hdd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sdg
unit: sectors

/dev/sdg1 : start= 2048, size= 1953523120, type=fd, bootable
EOF
#sfdisk /dev/sdg < hdd.part
#sfdisk /dev/sdh < hdd.part
#sfdisk /dev/sdi < hdd.part
#sfdisk /dev/sdj < hdd.part
#sfdisk /dev/sdk < hdd.part
#sfdisk /dev/sdl < hdd.part
#sfdisk /dev/sdm < hdd.part
#sfdisk /dev/sdn < hdd.part

SATA SSD


рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 2 рдЯреАрдмреА рдбреНрд░рд╛рдЗрд╡ рд╣реИрдВред рдпрд╣ рдПрдордмреАрдЖрд░ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдордд рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ GPT рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред GPT рдбрд┐рд╕реНрдХ рдореЗрдВ рдПрдХ рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдордмреАрдЖрд░-рд╕рдВрдЧрдд рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд╣рд▓реЗ 4 рд╡рд┐рднрд╛рдЬрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдпрджрд┐ рд╡реЗ рдкрд╣рд▓реЗ 2 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдХреЗ рднреАрддрд░ рд╕реНрдерд┐рдд рд╣реИрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрди рдбрд┐рд╕реНрдХ рдкрд░ рдмреВрдЯ рд╡рд┐рднрд╛рдЬрди рдФрд░ bios_grub рд╡рд┐рднрд╛рдЬрди рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЖрдкрдХреЛ GPT рд▓реАрдЧреЗрд╕реА / BIOS рдбреНрд░рд╛рдЗрд╡ рд╕реЗ рдмреВрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди, рдпрд╣ рд╣рдорд╛рд░рд╛ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдВ рд╣рдо рджреЛ рд╕реЗрдХреНрд╢рди рдмрдирд╛рдПрдВрдЧреЗред рдкрд╣рд▓рд╛ рдЖрдХрд╛рд░ 1 GB рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ RAID 1 / рдмреВрдЯ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ RAID 6 рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдирдЕрд▓реЛрдХреЗрдЯреЗрдб рдХреНрд╖реЗрддреНрд░ рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде рд╢реЗрд╖ рд╕рднреА рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд▓реЗ рд▓реЗрдВрдЧреЗред

рдЕрд╕рд┐рдВрдЪрд┐рдд рдХреНрд╖реЗрддреНрд░ рдХреНрдпрд╛ рд╣реИ?
SATA SSD SLC 6 78 . 6 ┬л┬╗ ┬л┬╗ ┬л┬╗ . 72 .

, SLC, 4 bit MLC. , 4 1 SLC .

72 4 288 . , SLC .

, 312 SLC . 2 RAID .

, . QLC , тАФ . , , , SSD TBW .

#cat >ssd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors

/dev/sda1 : start= 2048, size= 2097152, type=fd, bootable
/dev/sda2 : start= 2099200, size= 3300950016, type=fd
EOF
#sfdisk /dev/sda < ssd.part
#sfdisk /dev/sdb < ssd.part
#sfdisk /dev/sdc < ssd.part
#sfdisk /dev/sdd < ssd.part
#sfdisk /dev/sde < ssd.part
#sfdisk /dev/sdf < ssd.part

рдРрд░реЗ рдмрдирд╛рдирд╛


рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣реЛрд╕реНрдЯ рдирд╛рдо mdadm рдХреЗ рдЕрдВрджрд░ рдХрд╣реАрдВ рд╕рд░рдгреА рдирд╛рдо рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рдХрд╣реАрдВ рдкрд░ рдХреБрдЫ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдмрд╛рдж рдореЗрдВ рдирд╛рдо рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдпреЗ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВред

#mcedit /etc/hostname
#mcedit /etc/hosts
#hostname
vdesk0

рдПрдирд╡реАрдПрдордИ рдПрд╕рдПрд╕рдбреА


#mdadm --create --verbose --assume-clean /dev/md0 --level=1 --raid-devices=2 /dev/nvme[0-1]n1

рдХреНрдпреЛрдВ - рд╕рд╛рдл-рд╕реБрдерд░рд╛ ...?
. RAID 1 6 . , . , SSD тАФ TBW. TRIM/DISCARD SSD ┬л┬╗.

SSD RAID 1 DISCARD .

SSD RAID 6 DISCARD .

, SSD 4/5/6 discard_zeroes_data. , , , -, , . , , . DISCARD - RAID 6.

рдзреНрдпрд╛рди рджреЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрдорд╛рдВрдб NVMe рдбреНрд░рд╛рдЗрд╡ рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ "рд╢реВрдиреНрдп" рдХреЗ рд╕рд╛рде рд╕рд░рдгреА рдХреЛ "рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝" рдХрд░рдХреЗ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛ред

#blkdiscard /dev/md0

рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реБрдЖ рд╣реИ, рддреЛ рдПрдХ рдХрджрдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред

#blkdiscard --step 65536 /dev/md0

SATA SSD


#mdadm --create --verbose --assume-clean /dev/md1 --level=1 --raid-devices=6 /dev/sd[a-f]1
#blkdiscard /dev/md1
#mdadm --create --verbose --assume-clean /dev/md2 --chunk-size=512 --level=6 --raid-devices=6 /dev/sd[a-f]2

рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдХреНрдпреЛрдВ ...?
chunk-size chunk-size . , . , IOPS . 99% IO 512K.

RAID 6 IOPS IOPS . IOPS , .
RAID 6 by-design , RAID 6 .
RAID 6 NVMe thin-provisioning.

рд╣рдордиреЗ RAID 6 рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ DISCARD рдХреЛ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЕрднреА рдЗрд╕ рд╕рд░рдгреА рдХреЛ "рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝" рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдУрдПрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рдХрд░реЗрдВрдЧреЗред

SATA HDD


#mdadm --create --verbose --assume-clean /dev/md3 --chunk-size=512 --level=6 --raid-devices=8 /dev/sd[g-n]1

NVMe RAID рдкрд░ LVM


рдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рд╣рдо рдореВрд▓ FS рдХреЛ NVMe RAID 1 рдкрд░ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐ / dev / md0 рд╣реИред
рдлрд┐рд░ рднреА, рд╣рдореЗрдВ рдЕрдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддреЗрдЬрд╝ рд╕рд░рдгреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрд╡реИрдк, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ рдПрд▓рд╡реАрдПрдо-рдХреИрд╢ рдФрд░ рдПрд▓рд╡реАрдПрдо-рдкрддрд▓реА рдореЗрдЯрд╛рдбреЗрдЯрд╛, рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рд╕рд░рдгреА рдкрд░ рд╣рдо рдПрд▓рд╡реАрдПрдо рд╡реАрдЬреА рдмрдирд╛рдПрдВрдЧреЗред рд░реВрдЯ FS рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдПрдБред RAM рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдБред

#pvcreate /dev/md0
#vgcreate root /dev/md0




#lvcreate -L 128G --name root root



#lvcreate -L 32G --name swap root

рдУрдПрд╕ рд╕реНрдерд╛рдкрдирд╛


рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рд╣реИред

рдЙрдмрдВрдЯреВ рд▓рд╛рдЗрд╡ рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╡рд┐рдЬрд╝рд╛рд░реНрдб рд▓реЙрдиреНрдЪ рдХрд░реЗрдВред рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд╛рдкрдирд╛ред рдХреЗрд╡рд▓ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рдЪрд░рдг рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

  • / dev / md1, - рдЖрд░реЛрд╣ рдмрд┐рдВрджреБ / рдмреВрдЯ, FS - BTRFS
  • / рджреЗрд╡ / рдЬрдбрд╝ / рдЬрдбрд╝ (рдЙрд░реНрдл / рджреЗрд╡ / рдореИрдкрд░ / рд░реВрдЯ-рд░реВрдЯ), - рдЖрд░реЛрд╣ рдмрд┐рдВрджреБ / (рдЬрдбрд╝), рдПрдлрдПрд╕ - рдЖрд░рдЯреАрдЖрд░рдПрдлрдПрд╕
  • / рджреЗрд╡ / рдЬрдбрд╝ / рд╕реНрд╡реИрдк (рдЙрд░реНрдл / рджреЗрд╡ / рдореИрдкрд░ / рд░реВрдЯ-рд╕реНрд╡реИрдк), - рд╕реНрд╡реИрдк рд╡рд┐рднрд╛рдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
  • рдмреВрдЯрд▓реЛрдбрд░ / рджреЗрд╡ / рдПрд╕рдбреАрдП рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ

рдпрджрд┐ рдЖрдк BTRFS рдХреЛ рд░реВрдЯ FS рдХреЗ рд░реВрдк рдореЗрдВ рдЪреБрдирддреЗ рд╣реИрдВ, рддреЛ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ / (рдШрд░) рдХреЗ рд▓рд┐рдП "@" рдФрд░ "@home" рдирд╛рдо рдХреЗ рд╕рд╛рде рджреЛ BTRFS рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рдПрдЧрд╛ред

рд╣рдо рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ ...

рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдмреВрдЯ рд▓реЛрдбрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдПрд░рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реВрдЪрд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдореЛрдбрд▓ рдбрд╛рдпрд▓реЙрдЧ рдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрдЧрд╛ред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕ рд╕рдВрд╡рд╛рдж рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдФрд░ рд╕реНрдерд╛рдкрдирд╛ рдЬрд╛рд░реА рд░рдЦрдирд╛ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдмрд╛рд╣рд░ рд▓реЙрдЧ рдЗрди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рд╕реЗ рд╕рд╛рдл рдЙрдмрдВрдЯреВ рд▓рд╛рдЗрд╡ рдбреЗрд╕реНрдХрдЯреЙрдк рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рдЯрд░реНрдорд┐рдирд▓ рдЦреЛрд▓реЗрдВ, рдФрд░ рдлрд┐рд░ рд╕реЗ:

#sudo bash

рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрд░реЛрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдПрдВ : рдЪреЗрд░реЛрдЯ рдореЗрдВ рдиреЗрдЯрд╡рд░реНрдХ рдФрд░ рд╣реЛрд╕реНрдЯрдирд╛рдо рд╕реЗрдЯ рдХрд░реЗрдВ: рдЪреЗрд░реЛрдЯ рдкрд░реНрдпрд╛рд╡рд░рдг рдкрд░ рдЬрд╛рдПрдВ: рдкрд╣рд▓реЗ рд╣рдо рдкреИрдХреЗрдЬ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЕрдзреВрд░реЗ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рдХрд╛рд░рдг рдЯреЗрдврд╝реЗ-рдореЗрдврд╝реЗ рд╕рднреА рдкреИрдХреЗрдЬреЛрдВ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░реЗрдВ:

#mkdir /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@ /dev/mapper/root-root /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@home /dev/mapper/root-root /mnt/chroot/home
#mount -o defaults,space_cache,noatime,nodiratime,discard /dev/md1 /mnt/chroot/boot
#mount --bind /proc /mnt/chroot/proc
#mount --bind /sys /mnt/chroot/sys
#mount --bind /dev /mnt/chroot/dev



#cat /etc/hostname >/mnt/chroot/etc/hostname
#cat /etc/hosts >/mnt/chroot/etc/hosts
#cat /etc/resolv.conf >/mnt/chroot/etc/resolv.conf



#chroot /mnt/chroot



apt-get install --reinstall mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc debsums hdparm



#CORRUPTED_PACKAGES=$(debsums -s 2>&1 | awk '{print $6}' | uniq)
#apt-get install --reinstall $CORRUPTED_PACKAGES

рдпрджрд┐ рдХреБрдЫ рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдмрдврд╝рддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ /etc/apt/source.list

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЖрдЗрдП TRIM / DISCARD рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RAID 6 рдореЙрдбреНрдпреВрд▓ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓реЗрдВ: рдЖрдЗрдП рдЕрдкрдиреЗ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВ:

#cat >/etc/modprobe.d/raid456.conf << EOF
options raid456 devices_handle_discard_safely=1
EOF



#cat >/etc/udev/rules.d/60-md.rules << EOF
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="32768"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_min", ATTR{md/sync_speed_min}="48000"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_max", ATTR{md/sync_speed_max}="300000"
EOF
#cat >/etc/udev/rules.d/62-hdparm.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 254 /dev/%k"
EOF
#cat >/etc/udev/rules.d/63-blockdev.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/blockdev --setra 1024 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="0", RUN+="/sbin/blockdev --setra 0 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="nvme[0-9]n1", RUN+="/sbin/blockdev --setra 0 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="dm-*", ATTR{queue/rotational}=="0", RUN+="/sbin/blockdev --setra 0 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", RUN+="/sbin/blockdev --setra 0 /dev/%k"

EOF

рдпрд╣ рдХреНрдпрд╛ рдерд╛..?
udev :

  • 2020- RAID 6. -, , Linux, .
  • / IO. , .
  • / IO. , / SSD RAID- . NVMe. ( ? . )
  • APM (HDD) 7 . APM (-B 255). - . , , , -. . - . , , - ┬л┬╗, -, RAID- mini-MAID-.
  • readahead () 1 тАФ /chunk RAID 6
  • readahead SATA SSD
  • readahead NVMe SSD
  • readahead LVM SSD.
  • readahead RAID .


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ / etc / fstab:

#cat >/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# file-system mount-point type options dump pass
/dev/mapper/root-root / btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@ 0 1
UUID=$(blkid -o value -s UUID /dev/md1) /boot btrfs defaults,space_cache,noatime,nodiratime,discard 0 2
/dev/mapper/root-root /home btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@home 0 2
/dev/mapper/root-swap none swap sw 0 0
EOF

рдРрд╕рд╛ рдХреНрдпреЛрдВ рд╣реИ..?
/boot UUID .. .

LVM /dev/mapper/vg-lv, .. .

UUID LVM .. UUID LVM .
рджреЛ рдмрд╛рд░ рд╣рдо рдорд╛рдЙрдВрдЯ / рджреЗрд╡ / рдореИрдкрд░ / рд░реВрдЯ-рд░реВрдЯ ..?
. . BTRFS. subvol.

- LVM BTRFS . .

рд╣рдо mdadm рдХреЙрдиреНрдлрд┐рдЧрд░реЗрд╢рди рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ: LVM рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдареАрдХ рдХрд░реЗрдВ:

#/usr/share/mdadm/mkconf | sed 's/#DEVICE/DEVICE/g' >/etc/mdadm/mdadm.conf



#cat >>/etc/lvm/lvmlocal.conf << EOF

activation {
thin_pool_autoextend_threshold=90
thin_pool_autoextend_percent=5
}
allocation {
cache_pool_max_chunks=2097152
}
devices {
global_filter=["r|^/dev/.*_corig$|","r|^/dev/.*_cdata$|","r|^/dev/.*_cmeta$|","r|^/dev/.*gpv$|","r|^/dev/images/.*$|","r|^/dev/mapper/images.*$|","r|^/dev/backup/.*$|","r|^/dev/mapper/backup.*$|"]
issue_discards=1
}
EOF

рдпрд╣ рдХреНрдпрд╛ рдерд╛..?
LVM thin 90% 5% .

LVM cache.

LVM LVM (PV) :

  • LVM cache (cdata)
  • LVM cache (<lv_name>_corig). ( <lv_name>).
  • LVM cache (cmeta)
  • VG images. , , LVM .
  • VG backup. .
  • ┬лgpv┬╗ ( guest physical volume )

DISCARD LVM VG. . LV SSD . SSD RAID 6. , , thin provisioning, , .

Initramfs рдЫрд╡рд┐ рдЕрдкрдбреЗрдЯ

#update-initramfs -u -k all

рдХрд░реЗрдВ: рдЧреНрд░рдм рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ:

#apt-get install grub-pc
#apt-get purge os-prober
#dpkg-reconfigure grub-pc


рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдбреНрд░рд╛рдЗрд╡?
sd*. SATA SSD.

рдХреНрдпреЛрдВ рдУрд╕-prober ..?
.

RAID- . , .

, , , . .

рдЗрд╕рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдкреВрд░реА рдХреАред рдпрд╣ рдирдП рд╕реНрдерд╛рдкрд┐рдд рдУрдПрд╕ рдореЗрдВ рд░рд┐рдмреВрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдмреВрдЯ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд▓рд╛рдЗрд╡ рд╕реАрдбреА / рдпреВрдПрд╕рдмреА рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВред рдмреВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, SATA SSD рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

#exit
#reboot




LVM SATA SSD рдХреЛ


рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирдП рдУрдПрд╕ рдореЗрдВ рдмреВрдЯ рдХрд┐рдпрд╛ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рдЙрдкрдпреБрдХреНрдд, рдЯрд░реНрдорд┐рдирд▓ рдПрдореБрд▓реЗрдЯрд░ рдЦреЛрд▓рд╛ рд╣реИ, рдФрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛:

#sudo bash

рдЬрд╛рд░реА рд░рдЦреЗрдВред

SATA SSD рд╕реЗ рдПрдХ рд╕рд░рдгреА "рдЖрд░рдВрдн рдХрд░реЗрдВ":

#blkdiscard /dev/md2

рдпрджрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:

#blkdiscard --step 65536 /dev/md2
SBS SSD рдкрд░ LVM VG рдмрдирд╛рдПрдБ:

#pvcreate /dev/md2
#vgcreate data /dev/md2


рдХреНрдпреЛрдВ рдПрдХ рдФрд░ рд╡реАрдЬреА ..?
, VG root. VG?

VG PV, VG PV (online). LVM RAID, .

, ( ) RAID 6 .

, ┬л┬╗ VG.

-, RAID ┬л ┬╗. , VG.

LVM ┬л┬╗ RAID - . , тАФ bcache + LVM thin, bcache + BTRFS, LVM cache + LVM thin, ZFS , .

┬л┬╗ , - ┬л┬╗ LVM-, . , , .

, , - .

LVM SATA HDD рдХреЛ


#pvcreate /dev/md3
#vgcreate backup /dev/md3


рдлрд┐рд░ рд╕реЗ рдирдпрд╛ рд╡реАрдЬреА ..?
, , , , - . , - VG, тАФ VG.

LVM рдХреИрд╢ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рдПрдХ рдХреИрд╢рд┐рдВрдЧ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NVMe RAID 1 рдкрд░ LV рдмрдирд╛рдПрдВред

#lvcreate -L 70871154688B --name cache root

рдЗрддрдирд╛ рдХрдо рдХреНрдпреЛрдВ ...?
, NVMe SSD SLC . 4 ┬л┬╗ 18 3-bit MLC. - NVMe SSD SATA SSD . , LVM cache SLC NVMe . NVMe 32-64 .

64 , .

, LVM . , lvchange . , .

рдЪрд▓реЛ рдПрдХ рдХреИрд╢реНрдб рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП SATA RAID 6 рдкрд░ LV рдмрдирд╛рдПрдВред

#lvcreate -L 3298543271936B --name cache data

рдХреЗрд╡рд▓ рддреАрди рдЯреЗрд░рд╛рдмрд╛рдЗрдЯреНрд╕ рд╣реА рдХреНрдпреЛрдВ ..?
, , SATA SSD RAID 6 - . , , . , , LVM-cache , , bcache, , .

рдХреИрд╢рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рд╡реАрдЬреА рдмрдирд╛рдПрдВред рдХреИрд╢реНрдб рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ LV рдмрдирд╛рдПрдВред рдпрд╣рд╛рдВ рд╣рдордиреЗ рддреБрд░рдВрдд / dev / data / cache рдкрд░ рд╕рднреА рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд▓реЗ рд▓рд┐рдП рддрд╛рдХрд┐ рдЕрдиреНрдп рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рднрд╛рдЬрди рддреБрд░рдВрдд / dev / root / рдХреИрд╢ рдкрд░ рдмрдирд╛рдП рдЬрд╛ рд╕рдХреЗрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╣рд╛рдБ рдХреБрдЫ рдирд╣реАрдВ рдмрдирд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕реЗ pvmove рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХреИрд╢ рдмрдирд╛рдПрдВ рдФрд░ рд╕рдХреНрд╖рдо рдХрд░реЗрдВ:

#pvcreate /dev/root/cache
#pvcreate /dev/data/cache
#vgcreate cache /dev/root/cache /dev/data/cache




#lvcreate -L 3298539077632B --name cachedata cache /dev/data/cache





#lvcreate -y -L 64G -n cache cache /dev/root/cache
#lvcreate -y -L 1G -n cachemeta cache /dev/root/cache
#lvconvert -y --type cache-pool --cachemode writeback --chunksize 64k --poolmetadata cache/cachemeta cache/cache
#lvconvert -y --type cache --cachepool cache/cache cache/cachedata

рдХреНрдпреЛрдВ рдЗрддрдирд╛ рд╣рд┐рд╕реНрд╕рд╛ ..?
, LVM cache LVM thin. , , .

64 тАФ LVM thin.

рд╕рд╛рд╡рдзрд╛рдиреА рд▓рд┐рдЦрд╛рд╡рдЯ ..!
. . , , , . , , NVMe RAID 1 , .

, RAID 6 .

рдпрд╣ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░реЗрдВ рдХрд┐ рд╣рдо рд╕рдлрд▓ рд╣реБрдП: рдХреЗрд╡рд▓ [cachedata_corig] / dev / data / cache рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЕрдЧрд░ рдХреБрдЫ рдЧрд▓рдд рд╣реИ, рддреЛ pvmove рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдХреИрд╢ рдХреЛ рдПрдХ рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЕрдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╣ рдСрди-рд▓рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред LVM рдХреЗрд╡рд▓ рдХреИрд╢ рдХреЛ рдбрд┐рд╕реНрдХ рдореЗрдВ рд╕рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рд╣рдЯрд╛рддрд╛ рд╣реИ, рдФрд░ cachedata_corig рдХреЛ рд╡рд╛рдкрд╕ рдХреИрд╢реНрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

#lvs -a -o lv_name,lv_size,devices --units B cache
LV LSize Devices
[cache] 68719476736B cache_cdata(0)
[cache_cdata] 68719476736B /dev/root/cache(0)
[cache_cmeta] 1073741824B /dev/root/cache(16384)
cachedata 3298539077632B cachedata_corig(0)
[cachedata_corig] 3298539077632B /dev/data/cache(0)
[lvol0_pmspare] 1073741824B /dev/root/cache(16640)





#lvconvert -y --uncache cache/cachedata



LVM рдкрддрд▓реА рд╕реЗрдЯрдЕрдк


рд╣рдо рдореЛрдЯреЗ рддреМрд░ рдкрд░ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ LVM рдкрддрд▓реА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдиреА рдЬрдЧрд╣ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА: 4 рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рддрдХ рдЧреЛрд▓ рдХрд░реЗрдВ : 4294967296B рджреЛ рд╕реЗ рдЧреБрдгрд╛ рдХрд░реЗрдВ рдФрд░ LVM рдореЗрдЯрд╛рдбреЗрдЯрд╛ PV рдХреЗ рд▓рд┐рдП 4194304B рдЬреЛрдбрд╝реЗрдВ: 85M128896B LVM рдкрддрд▓реА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП NVMe RAID 1 рдкрд░ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рднрд╛рдЬрди рдмрдирд╛рдПрдБ рдФрд░ рдЗрд╕рдХрд╛ рдмреИрдХ рдЕрдк рд▓реЗрдВред

#thin_metadata_size --block-size=64k --pool-size=6terabytes --max-thins=100000 -u bytes
thin_metadata_size - 3385794560 bytes estimated metadata area size for "--block-size=64kibibytes --pool-size=6terabytes --max-thins=100000"







#lvcreate -L 8594128896B --name images root

рдХрд┐рд╕ рд▓рд┐рдП..?
, LVM thin , NVMe .

, . , , . - , , LVM thin , . .

- -, , , . , . .

, , , , , , LVM thin, .

рдПрдХ рдирдпрд╛ рд╡реАрдЬреА рдмрдирд╛рдПрдВ рдЬреЛ рдкрддрд▓реЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛: рдПрдХ рдкреВрд▓ рдмрдирд╛рдПрдВ:

#pvcreate /dev/root/images
#pvcreate /dev/cache/cachedata
#vgcreate images /dev/root/images /dev/cache/cachedata



#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
рдХреНрдпреЛрдВ -рдЬреЗрдб рд╡рд╛рдИ
, , тАФ , тАФ zeroing 64k. 64k 64K . .

рдЪрд▓реЛ LV рдХреЛ рд╕рдВрдмрдВрдзрд┐рдд PVs рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ: рдЬрд╛рдБрдЪ рдХрд░реЗрдВ: рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддрд▓реА рдорд╛рддреНрд░рд╛ рдмрдирд╛рдПрдБ: рдкрд░реАрдХреНрд╖рдгреЛрдВ рдФрд░ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреИрдХреЗрдЬ рд░рдЦреЗрдВ: рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд╣рдорд╛рд░реЗ рд╕рдВрдЧреНрд░рд╣рдг рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ: рдпрд╣ рд╣реИ рдХрд┐ рдЖрдк рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

#pvmove -n images/thin-pool_tdata /dev/root/images /dev/cache/cachedata
#pvmove -n images/lvol0_pmspare /dev/cache/cachedata /dev/root/images
#pvmove -n images/thin-pool_tmeta /dev/cache/cachedata /dev/root/images



#lvs -a -o lv_name,lv_size,devices --units B images
LV LSize Devices
[lvol0_pmspare] 4294967296B /dev/root/images(0)
thin-pool 274877906944B thin-pool_tdata(0)
[thin-pool_tdata] 274877906944B /dev/cache/cachedata(0)
[thin-pool_tmeta] 4294967296B /dev/root/images(1024)



#lvcreate -V 64G --thin-pool thin-pool --name test images



#apt-get install sysstat fio



#watch 'lvs --rows --reportformat basic --quiet -ocache_dirty_blocks,cache_settings cache/cachedata && (lvdisplay cache/cachedata | grep Cache) && (sar -p -d 2 1 | grep -E "sd|nvme|DEV|md1|md2|md3|md0" | grep -v Average | sort)'



#fio --loops=1 --size=64G --runtime=4 --filename=/dev/images/test --stonewall --ioengine=libaio --direct=1 \
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread \
--name=8kQD32read --bs=8k --iodepth=32 --rw=randread \
--name=16kQD32read --bs=16k --iodepth=32 --rw=randread \
--name=32KQD32read --bs=32k --iodepth=32 --rw=randread \
--name=64KQD32read --bs=64k --iodepth=32 --rw=randread \
--name=128KQD32read --bs=128k --iodepth=32 --rw=randread \
--name=256KQD32read --bs=256k --iodepth=32 --rw=randread \
--name=512KQD32read --bs=512k --iodepth=32 --rw=randread \
--name=4Kread --bs=4k --rw=read \
--name=8Kread --bs=8k --rw=read \
--name=16Kread --bs=16k --rw=read \
--name=32Kread --bs=32k --rw=read \
--name=64Kread --bs=64k --rw=read \
--name=128Kread --bs=128k --rw=read \
--name=256Kread --bs=256k --rw=read \
--name=512Kread --bs=512k --rw=read \
--name=Seqread --bs=1m --rw=read \
--name=Longread --bs=8m --rw=read \
--name=Longwrite --bs=8m --rw=write \
--name=Seqwrite --bs=1m --rw=write \
--name=512Kwrite --bs=512k --rw=write \
--name=256Kwrite --bs=256k --rw=write \
--name=128Kwrite --bs=128k --rw=write \
--name=64Kwrite --bs=64k --rw=write \
--name=32Kwrite --bs=32k --rw=write \
--name=16Kwrite --bs=16k --rw=write \
--name=8Kwrite --bs=8k --rw=write \
--name=4Kwrite --bs=4k --rw=write \
--name=512KQD32write --bs=512k --iodepth=32 --rw=randwrite \
--name=256KQD32write --bs=256k --iodepth=32 --rw=randwrite \
--name=128KQD32write --bs=128k --iodepth=32 --rw=randwrite \
--name=64KQD32write --bs=64k --iodepth=32 --rw=randwrite \
--name=32KQD32write --bs=32k --iodepth=32 --rw=randwrite \
--name=16KQD32write --bs=16k --iodepth=32 --rw=randwrite \
--name=8KQD32write --bs=8k --iodepth=32 --rw=randwrite \
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite \
| grep -E 'read|write|test' | grep -v ioengine

рд╕рд╛рд╡рдзрд╛рди! рд╕рдВрд╕рд╛рдзрди!
36 , 4 . . 4 NVMe . 3 . , 216 SSD.

рдкрдврд╝рдирд╛ рдФрд░ рд▓рд┐рдЦрдирд╛ рдлреЗрд░рдмрджрд▓?
. . , , , .

рдкрд░рд┐рдгрд╛рдо рдкрд╣рд▓реА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдФрд░ рдмрд╛рдж рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдХреИрд╢ рдФрд░ рдкрддрд▓реА рдорд╛рддреНрд░рд╛ рднрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рднреА, рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рд┐рд╕реНрдЯрдо рдЕрдВрддрд┐рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рднрд░реЗ рдЧрдП рдХреИрд╢ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рднрд░реЗ рдкрддрд▓реЗ рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдЧрддрд┐ рдХреЛ рдорд╛рдкрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рд╕реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдЕрднреА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдЦрдХ рдХреЗ рдкрд╛рд╕ рдпрд╣ рджреЗрдЦрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдерд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рдХреИрд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рддреЗрдЬреА рд╕реЗ рдмрдврд╝рддреА рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рдХреИрд╢ рдЕрднреА рддрдХ рднрд░рд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХреЗ рдХреЙрдкреА-рдСрди-рд░рд╛рдЗрдЯ рд╕реЗрдореЗрдВрдЯрд┐рдХреНрд╕, рдХреИрд╢ рдмреНрд▓реЙрдХ рдФрд░ рдкрддрд▓реЗ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рд╕рдВрд░реЗрдЦрдг рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдФрд░ рдпрд╣ рддрдереНрдп рдХрд┐ рд░реИрдВрдб 6 рдкрд░ рд░реИрдВрдбрдо рд░рд╛рдЗрдЯ рд░рд╛рдЙрдб 6 рд╕реЗ рд░реИрдВрдбрдо рд░реАрдб рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рдХреИрд╢реЗ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ, рд░реИрдВрдб 6 рд╕реЗ 6 рдЧреБрдирд╛ рддрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдкрдврд╝рд╛ (рд╕рд░рдгреА рдореЗрдВ SATA SSDs рдХреА рд╕рдВрдЦреНрдпрд╛) рд▓рд┐рдЦрдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬ рд╣реИред рдЪреВрдВрдХрд┐ рдЪреВрдВрдХрд┐ рд╕реАрдУрдбрдмреНрд▓реНрдпреВ рдмреНрд▓реЙрдХ рдХреЛ рдПрдХ рдкрддрд▓реА рдкреВрд▓ рд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЖрд╡рдВрдЯрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рд░рд┐рдХреЙрд░реНрдб рднреА рдПрдХ рдХреНрд░рдорд┐рдХ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред

рдЗрди рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХреИрд╢ "рд╕реБрд╕рдВрдЧрдд" рд╕реНрдиреИрдкрд╢реЙрдЯ


рдХреИрд╢ рдХреА рдХреНрд╖рддрд┐ / рд╣рд╛рдирд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╣рд╛рдирд┐ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдЦрдХ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЙрдирдХреА рдЕрдЦрдВрдбрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рд▓рд┐рдП рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреА рдкреНрд░рдерд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рдкрддрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдХ рдЕрдирдЫреБрдП рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВ, рдореЗрдЯрд╛рдбреЗрдЯрд╛ рд╕реБрд╕рдВрдЧрдд рд╣реЛрдЧрд╛ рдФрд░ рд╕рдВрднрд╡ рдиреБрдХрд╕рд╛рди рдбреЗрдЯрд╛ рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕реНрдиреИрдкрд╢реЙрдЯ рд░реЛрдЯреЗрд╢рди рдЪрдХреНрд░ рдХреИрд╢ рд╣рд╛рдирд┐ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рдЕрдВрджрд░ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ:

  1. рдирд╛рдо рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдкрддрд▓реА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП <name>, <name> .cached рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдмрдирд╛рдПрдВ
  2. рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╕реАрдорд╛ рдХреЛ рдЙрдЪрд┐рдд рдЙрдЪреНрдЪ рдорд╛рди рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВ: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. : #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' . , writethrough . , SATA NVMe SSD, , TBW, , . - 100% . NVMe SSD 100% 3-4 . SATA SSD - . , , , , тАФ .
  4. ( ) тАФ <>.cached <>.committed. <>.committed .
  5. , 100%, , . .
  6. migration threshold : #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata .
  7. , #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' .
  8. .

migration threshold...?
, ┬л┬╗ . - 4 , , - (+- 32K) .

migration threshold SATA SSD 64K . SATA SSD.

..?
, bash 100% ┬лgoogle┬╗-driven development, , , , .

, , , , systemd , .

рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рд╕рд░рд▓ рд░реЛрдЯреЗрд╢рди рдпреЛрдЬрдирд╛ рд╣рдореЗрдВ рди рдХреЗрд╡рд▓ рд▓рдЧрд╛рддрд╛рд░ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ SATA SSD рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧреА, рдмрд▓реНрдХрд┐ рдкрддрд▓реЗ_рдбреЗрд▓рдЯрд╛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдорджрдж рд╕реЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж рдХреМрди рд╕реЗ рдмреНрд▓реЙрдХ рдмрджрд▓реЗ рдЧрдП рдереЗ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдореБрдЦреНрдп рд╡реЙрд▓реНрдпреВрдо рдкрд░ рдиреБрдХрд╕рд╛рди рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЗрд╕реЗ рдмрд╣рд╛рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред ред

TRIM / DISCARD in libvirt / KVM


рдЪреВрдВрдХрд┐ рдЪреВрдБрдХрд┐ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡реАрдПрдо рдЪрд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ libvirt рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рд╡реАрдПрдо рдХреЛ рди рдХреЗрд╡рд▓ рдореБрдлреНрдд рд╕реНрдерд╛рди рд▓реЗрдирд╛ рд╕рд┐рдЦрд╛рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдпрд╣ рднреА рдореБрдлрд╝реНрдд рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдм рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдпрд╣ рд╡рд░реНрдЪреБрдЕрд▓ рдбрд┐рд╕реНрдХ рдкрд░ TRIM / DISCARD рд╕рдорд░реНрдерди рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдпрдВрддреНрд░рдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЧреБрдг-рд╕реНрдХреИрд╕реА рдореЗрдВ рдмрджрд▓реЗрдВ рдФрд░ xml рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВред рдЕрддрд┐рдерд┐ OS рд╕реЗ рдЗрд╕реА рддрд░рд╣ рдХреЗ DISCARDs рдХреЛ LVM рджреНрд╡рд╛рд░рд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмреНрд▓реЙрдХ рдХреИрд╢ рдФрд░ рдкрддрд▓реЗ рдкреВрд▓ рдореЗрдВ рджреЛрдиреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ, рдЬрдм рдЖрдк рдЕрдЧрд▓реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕реНрдердЧрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

#virsh edit vmname
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads' discard='unmap'/>
<source dev='/dev/images/vmname'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>



BTRFS рдмреИрдХрдЕрдк


рдЕрддреНрдпрдзрд┐рдХ рд╕рд╛рд╡рдзрд╛рдиреА рдФрд░ рдЬреЛрдЦрд┐рдо рдФрд░ рдЬреЛрдЦрд┐рдо рдХреЗ рд╕рд╛рде рддреИрдпрд╛рд░ рд▓рд┐рдкрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ ред рд▓реЗрдЦрдХ рдиреЗ рдпрд╣ рдХреЛрдб рд╕реНрд╡рдпрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдерд╛ред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдХрдИ рдЕрдиреБрднрд╡реА рд▓рд┐рдирдХреНрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдкрд╛рд╕ рдЕрдиреБрднрд╡ рдХреЗ рдРрд╕реЗ рдмреИрд╕рд╛рдЦреА рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

рдмреИрдХрдЕрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рд╡реЙрд▓реНрдпреВрдо рдмрдирд╛рдПрдБ:

#lvcreate -L 256G --name backup backup

рдЗрд╕реЗ BTRFS рдореЗрдВ рдлрд╝реЙрд░реНрдореЗрдЯ

#mkfs.btrfs /dev/backup/backup

рдХрд░реЗрдВ : рдорд╛рдЙрдВрдЯ рдкреЙрдЗрдВрдЯ рдмрдирд╛рдПрдБ рдФрд░ рд░реВрдЯ рд░реВрдЯ рдЙрдк FS рдХреА FS: рдмреИрдХрдЕрдк рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ : рдмреИрдХрдЕрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ :

#mkdir /backup
#mkdir /backup/btrfs
#mkdir /backup/btrfs/root
#mkdir /backup/btrfs/back
#ln -s /boot /backup/btrfs
# cat >>/etc/fstab << EOF

/dev/mapper/root-root /backup/btrfs/root btrfs defaults,space_cache,noatime,nodiratime 0 2
/dev/mapper/backup-backup /backup/btrfs/back btrfs defaults,space_cache,noatime,nodiratime 0 2
EOF
#mount -a
#update-initramfs -u
#update-grub



#mkdir /backup/btrfs/back/remote
#mkdir /backup/btrfs/back/remote/root
#mkdir /backup/btrfs/back/remote/boot



#mkdir /root/btrfs-backup



рдвреЗрд░ рд╕рд╛рд░рд╛ рдбрд░рд╛рд╡рдирд╛ рдХреЛрдбред рдЕрдкрдиреЗ рдЬреЛрдЦрд┐рдо рдкрд╛рд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реЗрдВред рд▓реЗрдЦрдХ рдирд╛рд░рд╛рдЬ рдкрддреНрд░ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ ...
#cat >/root/btrfs-backup/btrfs-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".@base"
PEND_SUFFIX=".@pend"
SNAP_SUFFIX=".@snap"
MOUNTS="/backup/btrfs/"
BACKUPS="/backup/btrfs/back/remote/"

function terminate ()
{
echo "$1" >&2
exit 1
}

function wait_lock()
{
flock 98
}

function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}

function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function backup()
{
SOURCE_PATH="$MOUNTS$1"
TARGET_PATH="$BACKUPS$1"
SOURCE_BASE_PATH="$MOUNTS$1$BASE_SUFFIX"
TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
TARGET_BASE_DIR="$(dirname $TARGET_BASE_PATH)"
SOURCE_PEND_PATH="$MOUNTS$1$PEND_SUFFIX"
TARGET_PEND_PATH="$BACKUPS$1$PEND_SUFFIX"
if [ -d "$SOURCE_BASE_PATH" ]
then
echo "$SOURCE_BASE_PATH found"
else
echo "$SOURCE_BASE_PATH File not found creating snapshot of $SOURCE_PATH to $SOURCE_BASE_PATH"
btrfs subvolume snapshot -r $SOURCE_PATH $SOURCE_BASE_PATH
sync
if [ -d "$TARGET_BASE_PATH" ]
then
echo "$TARGET_BASE_PATH found out of sync with source... removing..."
btrfs subvolume delete -c $TARGET_BASE_PATH
sync
fi
fi
if [ -d "$TARGET_BASE_PATH" ]
then
echo "$TARGET_BASE_PATH found"
else
echo "$TARGET_BASE_PATH not found. Synching to $TARGET_BASE_DIR"
btrfs send $SOURCE_BASE_PATH | btrfs receive $TARGET_BASE_DIR
sync
fi
if [ -d "$SOURCE_PEND_PATH" ]
then
echo "$SOURCE_PEND_PATH found removing..."
btrfs subvolume delete -c $SOURCE_PEND_PATH
sync
fi
btrfs subvolume snapshot -r $SOURCE_PATH $SOURCE_PEND_PATH
sync
if [ -d "$TARGET_PEND_PATH" ]
then
echo "$TARGET_PEND_PATH found removing..."
btrfs subvolume delete -c $TARGET_PEND_PATH
sync
fi
echo "Sending $SOURCE_PEND_PATH to $TARGET_PEND_PATH"
btrfs send -p $SOURCE_BASE_PATH $SOURCE_PEND_PATH | btrfs receive $TARGET_BASE_DIR
sync
TARGET_DATE_SUFFIX=$(suffix)
btrfs subvolume snapshot -r $TARGET_PEND_PATH "$TARGET_PATH$TARGET_DATE_SUFFIX"
sync
btrfs subvolume delete -c $SOURCE_BASE_PATH
sync
btrfs subvolume delete -c $TARGET_BASE_PATH
sync
mv $SOURCE_PEND_PATH $SOURCE_BASE_PATH
mv $TARGET_PEND_PATH $TARGET_BASE_PATH
sync
}

function list()
{
LIST_TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
LIST_TARGET_BASE_DIR="$(dirname $LIST_TARGET_BASE_PATH)"
LIST_TARGET_BASE_NAME="$(basename -s .$BASE_SUFFIX $LIST_TARGET_BASE_PATH)"
find "$LIST_TARGET_BASE_DIR" -maxdepth 1 -mindepth 1 -type d -printf "%f\n" | grep "${LIST_TARGET_BASE_NAME/$BASE_SUFFIX/$SNAP_SUFFIX}.$DATE_REGEX"
}

function remove()
{
REMOVE_TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
REMOVE_TARGET_BASE_DIR="$(dirname $REMOVE_TARGET_BASE_PATH)"
btrfs subvolume delete -c $REMOVE_TARGET_BASE_DIR/$2
sync
}

function removeall()
{
DATE_OFFSET="$2"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$1" "$SNAPSHOT"
done < <(list "$1" | grep "$FILTER")

}

(
COMMAND="$1"
shift

case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1"
;;
"list")
list "$1"
;;
"remove")
wait_lock_or_terminate
remove "$1" "$2"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE

EOF


рдпрд╣ рднреА рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ ..?
BTRFS BTRFS send/recieve.

рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд▓рдВрдмрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рднреА рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЖрдЧреЗ рдХреА рд╢реБрд░реВрдЖрдд рдмрд╣реБрдд рддреЗрдЬ рд╣реЛрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рдХреЗрд╡рд▓ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред

рдХреНрд░реЛрди рдореЗрдВ рд░рдЯрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

рдХреБрдЫ рдФрд░ рдмреИрд╢ рдХреЛрдб
#cat >/root/btrfs-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

BACKUP_SCRIPT="$SCRIPT_DIR/btrfs-backup.sh"
RETENTION="-60 day"
$BACKUP_SCRIPT backup root/@
$BACKUP_SCRIPT removeall root/@ "$RETENTION"
$BACKUP_SCRIPT backup root/@home
$BACKUP_SCRIPT removeall root/@home "$RETENTION"
$BACKUP_SCRIPT backup boot/
$BACKUP_SCRIPT removeall boot/ "$RETENTION"
EOF


рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИрдВ ..?
backup BTRFS-. 60 . /backup/btrfs/back/remote/ .

рдЖрдЗрдП рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рджреЗрдВ: рдореБрдХреБрдЯ рдореЗрдВ рдЪреЗрдХ рдФрд░ рд░рдЯрдирд╛:

#chmod +x /root/btrfs-backup/cron-daily.sh
#chmod +x /root/btrfs-backup/btrfs-backup.sh



#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
#cat /var/log/syslog | grep btrfs-backup
#crontab -e
0 2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup

LVM рдкрддрд▓реА рдмреИрдХрдЕрдк


рдмреИрдХрдЕрдк рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдПрдХ рдкрддрд▓реА рдкреВрд▓ рдмрдирд╛рдПрдБ:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T backup/thin-pool

ddrescue рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:

#apt-get install gddrescue

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдмрдирд╛рдПрдБ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА

#mkdir /root/lvm-thin-backup

рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБ:

рдЕрдВрджрд░ рдмрд╣реБрдд рд╕рд╛рд░реА рдорд╛рд░ ...
#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".base"
PEND_SUFFIX=".pend"
SNAP_SUFFIX=".snap"
BACKUPS="backup"
BACKUPS_POOL="thin-pool"

export LVM_SUPPRESS_FD_WARNINGS=1

function terminate ()
{
echo "$1" >&2
exit 1
}

function wait_lock()
{
flock 98
}

function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}

function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}

function read_thin_id {
lvs --rows --reportformat basic --quiet -othin_id "$1/$2" | awk '{print $2}'
}

function read_pool_lv {
lvs --rows --reportformat basic --quiet -opool_lv "$1/$2" | awk '{print $2}'
}

function read_lv_dm_path {
lvs --rows --reportformat basic --quiet -olv_dm_path "$1/$2" | awk '{print $2}'
}

function read_lv_active {
lvs --rows --reportformat basic --quiet -olv_active "$1/$2" | awk '{print $2}'
}

function read_lv_chunk_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -ochunk_size "$1/$2" | awk '{print $2}'
}

function read_lv_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -olv_size "$1/$2" | awk '{print $2}'
}

function activate_volume {
lvchange -ay -Ky "$1/$2"
}

function deactivate_volume {
lvchange -an "$1/$2"
}

function read_thin_metadata_snap {
dmsetup status "$1" | awk '{print $7}'
}

function thindiff()
{
DIFF_VG="$1"
DIFF_SOURCE="$2"
DIFF_TARGET="$3"
DIFF_SOURCE_POOL=$(read_pool_lv $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_POOL=$(read_pool_lv $DIFF_VG $DIFF_TARGET)

if [ "$DIFF_SOURCE_POOL" == "" ]
then
(>&2 echo "Source LV is not thin.")
exit 1
fi

if [ "$DIFF_TARGET_POOL" == "" ]
then
(>&2 echo "Target LV is not thin.")
exit 1
fi

if [ "$DIFF_SOURCE_POOL" != "$DIFF_TARGET_POOL" ]
then
(>&2 echo "Source and target LVs belong to different thin pools.")
exit 1
fi

DIFF_POOL_PATH=$(read_lv_dm_path $DIFF_VG $DIFF_SOURCE_POOL)
DIFF_SOURCE_ID=$(read_thin_id $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_ID=$(read_thin_id $DIFF_VG $DIFF_TARGET)
DIFF_POOL_PATH_TPOOL="$DIFF_POOL_PATH-tpool"
DIFF_POOL_PATH_TMETA="$DIFF_POOL_PATH"_tmeta
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)

if [ "$DIFF_POOL_METADATA_SNAP" != "-" ]
then
(>&2 echo "Thin pool metadata snapshot already exist. Assuming stale one. Will release metadata snapshot in 5 seconds.")
sleep 5
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
fi

dmsetup message $DIFF_POOL_PATH_TPOOL 0 reserve_metadata_snap
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)

if [ "$DIFF_POOL_METADATA_SNAP" == "-" ]
then
(>&2 echo "Failed to create thin pool metadata snapshot.")
exit 1
fi

#We keep output in variable because metadata snapshot need to be released early.
DIFF_DATA=$(thin_delta -m$DIFF_POOL_METADATA_SNAP --snap1 $DIFF_SOURCE_ID --snap2 $DIFF_TARGET_ID $DIFF_POOL_PATH_TMETA)

dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap

echo $"$DIFF_DATA" | grep -E 'different|left_only|right_only' | sed 's/</"/g' | sed 's/ /"/g' | awk -F'\"' '{print $6 "\t" $8 "\t" $11}' | sed 's/different/copy/g' | sed 's/left_only/copy/g' | sed 's/right_only/discard/g'

}

function thinsync()
{
SYNC_VG="$1"
SYNC_PEND="$2"
SYNC_BASE="$3"
SYNC_TARGET="$4"
SYNC_PEND_POOL=$(read_pool_lv $SYNC_VG $SYNC_PEND)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SYNC_VG $SYNC_PEND_POOL)
SYNC_PEND_PATH=$(read_lv_dm_path $SYNC_VG $SYNC_PEND)

activate_volume $SYNC_VG $SYNC_PEND

while read -r SYNC_ACTION SYNC_OFFSET SYNC_LENGTH ; do
SYNC_OFFSET_BYTES=$((SYNC_OFFSET * SYNC_BLOCK_SIZE))
SYNC_LENGTH_BYTES=$((SYNC_LENGTH * SYNC_BLOCK_SIZE))
if [ "$SYNC_ACTION" == "copy" ]
then
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SYNC_PEND_PATH" "$SYNC_TARGET"
fi

if [ "$SYNC_ACTION" == "discard" ]
then
blkdiscard -o $SYNC_OFFSET_BYTES -l $SYNC_LENGTH_BYTES "$SYNC_TARGET"
fi
done < <(thindiff "$SYNC_VG" "$SYNC_PEND" "$SYNC_BASE")
}

function discard_volume()
{
DISCARD_VG="$1"
DISCARD_LV="$2"
DISCARD_LV_PATH=$(read_lv_dm_path "$DISCARD_VG" "$DISCARD_LV")
if [ "$DISCARD_LV_PATH" != "" ]
then
echo "$DISCARD_LV_PATH found"
else
echo "$DISCARD_LV not found in $DISCARD_VG"
exit 1
fi
DISCARD_LV_POOL=$(read_pool_lv $DISCARD_VG $DISCARD_LV)
DISCARD_LV_SIZE=$(read_lv_size "$DISCARD_VG" "$DISCARD_LV")
lvremove -y --quiet "$DISCARD_LV_PATH" || exit 1
lvcreate --thin-pool "$DISCARD_LV_POOL" -V "$DISCARD_LV_SIZE"B --name "$DISCARD_LV" "$DISCARD_VG" || exit 1
}

function backup()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
SOURCE_PEND_LV="$SOURCE_LV$PEND_SUFFIX"
TARGET_PEND_LV="$TARGET_LV$PEND_SUFFIX"
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "Source base not found creating snapshot of $SOURCE_VG/$SOURCE_LV to $SOURCE_VG/$SOURCE_BASE_LV"
lvcreate --quiet --snapshot --name "$SOURCE_BASE_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo "Discarding $SOURCE_BASE_LV_PATH as we need to bootstrap."
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
sync
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found out of sync with source... removing..."
lvremove -y --quiet $TARGET_BASE_LV_PATH || exit 1
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
sync
fi
fi
SOURCE_BASE_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_VG/$TARGET_LV not found. Creating empty volume."
lvcreate --thin-pool "$BACKUPS_POOL" -V "$SOURCE_BASE_SIZE"B --name "$TARGET_BASE_LV" "$TARGET_VG" || exit 1
echo "Have to rebootstrap. Discarding source at $SOURCE_BASE_LV_PATH"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
TARGET_BASE_POOL=$(read_pool_lv $TARGET_VG $TARGET_BASE_LV)
TARGET_BASE_CHUNK_SIZE=$(read_lv_chunk_size $TARGET_VG $TARGET_BASE_POOL)
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
echo "Discarding target at $TARGET_BASE_LV_PATH"
discard_volume "$TARGET_VG" "$TARGET_BASE_LV"
sync
fi
if [ "$SOURCE_PEND_LV_PATH" != "" ]
then
echo "$SOURCE_PEND_LV_PATH found removing..."
lvremove -y --quiet "$SOURCE_PEND_LV_PATH" || exit 1
sync
fi
lvcreate --quiet --snapshot --name "$SOURCE_PEND_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
sync
if [ "$TARGET_PEND_LV_PATH" != "" ]
then
echo "$TARGET_PEND_LV_PATH found removing..."
lvremove -y --quiet $TARGET_PEND_LV_PATH
sync
fi
lvcreate --quiet --snapshot --name "$TARGET_PEND_LV" "$TARGET_VG/$TARGET_BASE_LV" || exit 1
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
SOURCE_PEND_LV_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_PEND_LV")
lvresize -L "$SOURCE_PEND_LV_SIZE"B "$TARGET_PEND_LV_PATH"
activate_volume "$TARGET_VG" "$TARGET_PEND_LV"
echo "Synching $SOURCE_PEND_LV_PATH to $TARGET_PEND_LV_PATH"
thinsync "$SOURCE_VG" "$SOURCE_PEND_LV" "$SOURCE_BASE_LV" "$TARGET_PEND_LV_PATH" || exit 1
sync

TARGET_DATE_SUFFIX=$(suffix)
lvcreate --quiet --snapshot --name "$TARGET_LV$TARGET_DATE_SUFFIX" "$TARGET_VG/$TARGET_PEND_LV" || exit 1
sync
lvremove --quiet -y "$SOURCE_BASE_LV_PATH" || exit 1
sync
lvremove --quiet -y "$TARGET_BASE_LV_PATH" || exit 1
sync
lvrename -y "$SOURCE_VG/$SOURCE_PEND_LV" "$SOURCE_BASE_LV" || exit 1
lvrename -y "$TARGET_VG/$TARGET_PEND_LV" "$TARGET_BASE_LV" || exit 1
sync
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function verify()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo Comparing "$SOURCE_BASE_LV_PATH" with "$TARGET_BASE_LV_PATH"
cmp "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function resync()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")

if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)

echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"

CMP_OFFSET=0
while [[ "$CMP_OFFSET" != "" ]] ; do
CMP_MISMATCH=$(cmp -i "$CMP_OFFSET" "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH" | grep differ | awk '{print $5}' | sed 's/,//g' )
if [[ "$CMP_MISMATCH" != "" ]] ; then
CMP_OFFSET=$(( CMP_MISMATCH + CMP_OFFSET ))
SYNC_OFFSET_BYTES=$(( ( CMP_OFFSET / SYNC_BLOCK_SIZE ) * SYNC_BLOCK_SIZE ))
SYNC_LENGTH_BYTES=$(( SYNC_BLOCK_SIZE ))
echo "Synching $SYNC_LENGTH_BYTES bytes at $SYNC_OFFSET_BYTES from $SOURCE_BASE_LV_PATH to $TARGET_BASE_LV_PATH"
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
else
CMP_OFFSET=""
fi
done
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}

function list()
{
LIST_SOURCE_VG="$1"
LIST_SOURCE_LV="$2"
LIST_TARGET_VG="$BACKUPS"
LIST_TARGET_LV="$LIST_SOURCE_VG-$LIST_SOURCE_LV"
LIST_TARGET_BASE_LV="$LIST_TARGET_LV$SNAP_SUFFIX"
lvs -olv_name | grep "$LIST_TARGET_BASE_LV.$DATE_REGEX"
}

function remove()
{
REMOVE_TARGET_VG="$BACKUPS"
REMOVE_TARGET_LV="$1"
lvremove -y "$REMOVE_TARGET_VG/$REMOVE_TARGET_LV"
sync
}

function removeall()
{
DATE_OFFSET="$3"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$SNAPSHOT"
done < <(list "$1" "$2" | grep "$FILTER")

}

(
COMMAND="$1"
shift

case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1" "$2"
;;
"list")
list "$1" "$2"
;;
"thindiff")
thindiff "$1" "$2" "$3"
;;
"thinsync")
thinsync "$1" "$2" "$3" "$4"
;;
"verify")
wait_lock_or_terminate
verify "$1" "$2"
;;
"resync")
wait_lock_or_terminate
resync "$1" "$2"
;;
"remove")
wait_lock_or_terminate
remove "$1"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2" "$3"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE

EOF


рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИрдВ ...?
, thin_delta, ddrescue blkdiscard.

рдПрдХ рдФрд░ рдкрдЯрдХрдерд╛ рдЬрд┐рд╕реЗ рд╣рдо рдореБрдХреБрдЯ рдореЗрдВ рдкрд┐рд░реЛрдПрдВрдЧреЗ:

рдХреБрдЫ рдФрд░ рдмреИрд╢
#cat >/root/lvm-thin-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"

BACKUP_SCRIPT="$SCRIPT_DIR/lvm-thin-backup.sh"
RETENTION="-60 days"

$BACKUP_SCRIPT backup images linux-dev
$BACKUP_SCRIPT backup images win8
$BACKUP_SCRIPT backup images win8-data
#etc

$BACKUP_SCRIPT removeall images linux-dev "$RETENTION"
$BACKUP_SCRIPT removeall images win8 "$RETENTION"
$BACKUP_SCRIPT removeall images win8-data "$RETENTION"
#etc

EOF


рдпрд╣ рдХреНрдпрд╛ рдХрд░ рд░рд╣рд╛ рд╣реИрдВ ...?
, . , .

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрддрд▓реА рд╡реЙрд▓реНрдпреВрдо рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдмреИрдХрдЕрдк рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рджрд┐рдП рдЧрдП рдирд╛рдо рдХреЗрд╡рд▓ рдЪрд┐рддреНрд░рдг рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░реЗрдЧрд╛ред

рдЖрдЗрдП рдЕрдзрд┐рдХрд╛рд░ рджреЗрдВ: рдореБрдХреБрдЯ рдореЗрдВ рдЪреЗрдХ рдФрд░ рд░рдЯрдирд╛: рдкрд╣рд▓рд╛ рд▓реЙрдиреНрдЪ рд▓рдВрдмрд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкрддрд▓реЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕реНрдерд╛рди рдХреА рдирдХрд▓ рдХрд░рдХреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред LVM рдкрддрд▓реА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рдмреНрд▓реЙрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрддрд▓реЗ рд╡реЙрд▓реНрдпреВрдо рдХреЗ рдХреЗрд╡рд▓ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдмреНрд▓реЙрдХ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдИ рдЬрд╛рдПрдЧреАред рдЗрд╕рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рдХреНрд╖реЗрдкрдг LVM рдкрддрд▓реА рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рдХреЙрдкреА рдХрд░реЗрдВрдЧреЗред

#chmod +x /root/lvm-thin-backup/cron-daily.sh
#chmod +x /root/lvm-thin-backup/lvm-thin-backup.sh




#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
#cat /var/log/syslog | grep lvm-thin-backup
#crontab -e
0 3 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup





рджреЗрдЦрддреЗ рд╣реИ рдХреНрдпрд╛ рд╣реБрдЖ:


#time /root/btrfs-backup/cron-daily.sh
real 0m2,967s
user 0m0,225s
sys 0m0,353s

#time /root/lvm-thin-backup/cron-daily.sh
real 1m2,710s
user 0m12,721s
sys 0m6,671s

#ls -al /backup/btrfs/back/remote/*
/backup/btrfs/back/remote/boot:
total 0
drwxr-xr-x 1 root root 1260 26 09:11 .
drwxr-xr-x 1 root root 16 6 09:30 ..
drwxr-xr-x 1 root root 322 26 02:00 .@base
drwxr-xr-x 1 root root 516 6 09:39 .@snap.2020-03-06-09-39-37
drwxr-xr-x 1 root root 516 6 09:39 .@snap.2020-03-06-09-39-57
...
/backup/btrfs/back/remote/root:
total 0
drwxr-xr-x 1 root root 2820 26 09:11 .
drwxr-xr-x 1 root root 16 6 09:30 ..
drwxr-xr-x 1 root root 240 26 09:11 @.@base
drwxr-xr-x 1 root root 22 26 09:11 @home.@base
drwxr-xr-x 1 root root 22 6 09:39 @home.@snap.2020-03-06-09-39-35
drwxr-xr-x 1 root root 22 6 09:39 @home.@snap.2020-03-06-09-39-57
...
drwxr-xr-x 1 root root 240 6 09:39 @.@snap.2020-03-06-09-39-26
drwxr-xr-x 1 root root 240 6 09:39 @.@snap.2020-03-06-09-39-56
...

#lvs -olv_name,lv_size images && lvs -olv_name,lv_size backup
LV LSize
linux-dev 128,00g
linux-dev.base 128,00g
thin-pool 1,38t
win8 128,00g
win8-data 2,00t
win8-data.base 2,00t
win8.base 128,00g
LV LSize
backup 256,00g
images-linux-dev.base 128,00g
images-linux-dev.snap.2020-03-08-10-09-11 128,00g
images-linux-dev.snap.2020-03-08-10-09-25 128,00g
...
images-win8-data.base 2,00t
images-win8-data.snap.2020-03-16-14-11-55 2,00t
images-win8-data.snap.2020-03-16-14-19-50 2,00t
...
images-win8.base 128,00g
images-win8.snap.2020-03-17-04-51-46 128,00g
images-win8.snap.2020-03-18-03-02-49 128,00g
...
thin-pool <2,09t

рдФрд░ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЧреБрдбрд╝рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?


рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрд▓рд╡реАрдПрдо рдПрд▓рд╡реА рддрд╛рд░реНрдХрд┐рдХ рд╡реЙрд▓реНрдпреВрдо рдЕрдиреНрдп рд╡реАрдЬреА рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рдПрд▓рд╡реАрдПрдо рдкреАрд╡реА рд╡реЙрд▓реНрдпреВрдо рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред LVM рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдЧреБрдбрд╝рд┐рдпрд╛ рдХреА рддрд░рд╣ред рдЗрд╕рд╕реЗ LVM рдХреЛ рдЕрддреНрдпрдзрд┐рдХ рд▓рдЪреАрд▓рд╛рдкрди рдорд┐рд▓рддрд╛ рд╣реИред

рдкреБрдирд╢реНрдЪ


рдЕрдЧрд▓реЗ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╣реЛрдо рдбреЗрд╕реНрдХрдЯреЙрдк, рд╣реЛрдо рдЗрдВрдЯрд░рдиреЗрдЯ рдФрд░ рдкреА 2 рдкреА рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ рдорд╣рд╛рджреНрд╡реАрдкреЛрдВ рдкрд░ рдЕрддрд┐рд░реЗрдХ рдХреЗ рд╕рд╛рде рднреВ-рд╡рд┐рддрд░рд┐рдд рднрдВрдбрд╛рд░рдг / рд╡реАрдПрдо рдХреНрд▓рд╕реНрдЯрд░ рдмрдирд╛рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдИ рд╕рдорд╛рди рдореЛрдмрд╛рдЗрд▓ рд╕реНрдЯреЛрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо / рдХреЗрд╡реАрдПрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред

All Articles