LVM เปเบฅเบฐ Matryoshka เบกเบตเบซเบเบฑเบ‡เบฎเปˆเบงเบกเบเบฑเบ™?

เป€เบงเบฅเบฒเบ—เบตเปˆเปƒเบŠเป‰เป€เบงเบฅเบฒเบ‚เบญเบ‡เบกเบทเป‰.
เบ‚เป‰เบญเบเบขเบฒเบเปเบšเปˆเบ‡เบ›เบฑเบ™เบเบฑเบšเบŠเบธเบกเบŠเบปเบ™เบ›เบฐเบชเบปเบšเบเบฒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เบ‚เป‰เบญเบเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบชเปเบฒเบฅเบฑเบš KVM เป‚เบ”เบเปƒเบŠเป‰ md RAID + LVM.

เป‚เบ„เบ‡โ€‹เบเบฒเบ™โ€‹เบˆเบฐโ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹เบกเบตโ€‹:

  • เบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡ md RAID 1 เบˆเบฒเบ NVMe SSD.
  • เบเบฒเบ™เบ›เบฐเบเบญเบš md RAID 6 เบˆเบฒเบ SATA SSD เปเบฅเบฐเป„เบ”เบ›เบปเบเบเบฐเบ•เบด.
  • เบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ TRIM/DISCARD เปƒเบ™ SSD RAID 1/6.
  • เบเบฒเบ™เบชเป‰เบฒเบ‡ md RAID 1/6 array เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป„เบ”เป‰เปƒเบ™เบŠเบธเบ”เบ‚เบญเบ‡เปเบœเปˆเบ™เบ—เบปเปˆเบงเป„เบ›.
  • เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบšเปƒเบ™ NVMe RAID 1 เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš NVMe เปƒเบ™ BIOS.
  • เปƒเบŠเป‰ LVM cache เปเบฅเบฐ LVM เบšเบฒเบ‡เป†.
  • เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰ BTRFS snapshots เปเบฅเบฐโ€‹เบชเบปเปˆเบ‡ / เบฎเบฑเบšโ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฎเบญเบ‡โ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹.
  • เปƒเบŠเป‰เบฎเบนเบšเบ–เปˆเบฒเบเบšเบฒเบ‡เป† LVM เปเบฅเบฐ thin_delta เบชเบณเบฅเบฑเบšเบเบฒเบ™เบชเบณเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปเบšเบš BTRFS.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ™เปƒเบˆ, เบเบฐเบฅเบธเบ™เบฒเป€เบšเบดเปˆเบ‡เปเบกเบง.

Statement

เบœเบนเป‰โ€‹เบ‚เบฝเบ™โ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบœเบดเบ”โ€‹เบŠเบญเบšโ€‹เปƒเบ”เป†โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบœเบปเบ™โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบ‚เบญเบ‡โ€‹เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบซเบผเบทโ€‹เบšเปเปˆโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™ / เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡ / เบฅเบฐโ€‹เบซเบฑเบ” / เบ„เปเบฒโ€‹เปเบ™เบฐโ€‹เบ™เปเบฒ / เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบˆเบฒเบโ€‹เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ™เบตเป‰โ€‹. เป‚เบ”เบเบเบฒเบ™เบญเปˆเบฒเบ™เบซเบผเบทเบ™เปเบฒเปƒเบŠเป‰เป€เบญเบเบฐเบชเบฒเบ™เบ™เบตเป‰เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ—เปˆเบฒเบ™เบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบ•เปเปˆเบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบเบฒเบ™เบเบฐเบ—เปเบฒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบฅเบงเบกเบกเบต:

  • เบ‚เบปเป‰เบง NVMe SSDs.
  • เปƒเบŠเป‰เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเปเบฅเบฐเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบ‚เบญเบ‡ SSD drives เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™.
  • เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™เป„เบ”เบฃเบŸเปŒเบ—เบฑเบ‡เปเบปเบ”, เบฅเบงเบกเบ—เบฑเบ‡เบชเบณเป€เบ™เบปเบฒเบชเบณเบฎเบญเบ‡.
  • เบฎเบฒเบ”เปเบงเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบกเบตเบšเบฑเบ™เบซเบฒ.
  • เป€เบชเบเป€เบงเบฅเบฒ, เป€เบชเบฑเป‰เบ™เบ›เบฐเบชเบฒเบ” เปเบฅเบฐเป€เบ‡เบดเบ™.
  • เบœเบปเบ™เบชเบฐเบ—เป‰เบญเบ™เบญเบทเปˆเบ™เป†เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบฅเบฐเบšเบธเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡.

เป€เบซเบฅเปเบ

เบกเบตเบขเบนเปˆเบ„เบท:

เป€เบกเบ™เบšเบญเบ”เบˆเบฒเบเบ›เบฐเบกเบฒเบ™ 2013 เบเบฑเบšเบŠเบดเบšเป€เบŠเบฑเบ” Z87, เบชเปเบฒเป€เบฅเบฑเบ”เบ”เป‰เบงเบ Intel Core i7 / Haswell.

  • เบซเบ™เปˆเบงเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™ 4 เปเบเบ™, 8 threads
  • RAM 32 GB DDR3
  • 1 x 16 เบซเบผเบท 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 GBps SATA 3 เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ

เบญเบฐเปเบ”เบฑเบšเป€เบ•เบต SAS LSI SAS9211-8I เบเบฐเบžเบดเบšเป€เบ›เบฑเบ™เป‚เปเบ” IT / HBA. เป€เบŸเบตเบกเปเบงเบ—เบตเปˆเป€เบ›เบตเบ”เปƒเบŠเป‰ RAID เป„เบ”เป‰เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบเป€เบŸเบตเบกเปเบง HBA เป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒเป€เบžเบทเปˆเบญ:

  1. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ–เบดเป‰เบกโ€‹เบญเบฐโ€‹เปเบ”เบšโ€‹เป€เบ•เบตโ€‹เบ™เบตเป‰โ€‹เบญเบญเบโ€‹เป„เบ”เป‰โ€‹เบ—เบธเบโ€‹เป€เบงโ€‹เบฅเบฒโ€‹เปเบฅเบฐโ€‹เบ—เบปเบ”โ€‹เปเบ—เบ™โ€‹เบกเบฑเบ™โ€‹เบเบฑเบšโ€‹เบญเบฑเบ™โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบ—เปˆเบฒเบ™โ€‹เบžเบปเบšโ€‹เป€เบซเบฑเบ™โ€‹.
  2. TRIM/Discard เป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบดเปƒเบ™เปเบœเปˆเบ™, เป€เบžเบฒเบฐเบงเปˆเบฒ... เปƒเบ™ RAID firmware เบ„เปเบฒเบชเบฑเปˆเบ‡เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบšเปเปˆเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เปเบฅเบฐ HBA, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบšเปเปˆเบชเบปเบ™เปƒเบˆเบงเปˆเบฒเบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เบ–เบทเบเบชเบปเปˆเบ‡เบœเปˆเบฒเบ™เบฅเบปเบ”เป€เบก.

เบฎเบฒเบ”เบ”เบดเบ” - 8 เบŠเบดเป‰เบ™เบ‚เบญเบ‡ HGST Travelstar 7K1000 เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบˆเบธ 1 TB เปƒเบ™เบฎเบนเบšเปเบšเบš 2.5, เบชเปเบฒเบฅเบฑเบšเปเบฅเบฑเบšเบ—เบฑเบญเบš. เป„เบ”เบฃเบŸเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เป€เบกเบทเปˆเบญเบเปˆเบญเบ™เบขเบนเปˆเปƒเบ™เบญเบฒเป€เบฃ RAID 6. เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเบฑเบ‡เบˆเบฐเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบšเบปเบšเปƒเบซเบกเปˆ. เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™.

เป€เบžเบตเปˆเบกเบ•เบทเปˆเบก:

6 เบŠเบดเป‰เบ™ SATA SSD เบฎเบธเปˆเบ™ Samsung 860 QVO 2TB. SSDs เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ, เบกเบต cache SLC, เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท, เปเบฅเบฐเบฅเบฒเบ„เบฒเบ•เปเปˆเบฒเปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เบ•เป‰เบญเบ‡เบฎเบญเบ‡เบฎเบฑเบšเบเบฒเบ™เบเบปเบเป€เบฅเบตเบ/เบชเบนเบ™, เป€เบŠเบดเปˆเบ‡เบ–เบทเบเบเบงเบ”เบชเบญเบšเป‚เบ”เบเปเบ–เบงเปƒเบ™ dmesg:

kernel: ata1.00: Enabling discard_zeroes_data

2 เบŠเบดเป‰เบ™เบ‚เบญเบ‡ NVMe SSD เบฎเบธเปˆเบ™ Samsung SSD 970 EVO 500GB.

เบชเปเบฒเบฅเบฑเบš SSDs เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰, เบ„เบงเบฒเบกเป„เบงเปƒเบ™เบเบฒเบ™เบญเปˆเบฒเบ™ / เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเปเบฅเบฐเบ„เบงเบฒเบกเบญเบฒเบ”เบชเบฒเบกเบฒเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™. Radiator เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒ. เบˆเปเบฒเป€เบ›เบฑเบ™. เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡. เบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบˆเบทเบ™เบžเบงเบเบกเบฑเบ™เบˆเบปเบ™เบเปˆเบงเบฒ crispy เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™ synchronization RAID เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”.

เบญเบฐเปเบ”เบฑเบšเป€เบ•เบต StarTech PEX8M2E2 เบชเปเบฒเบฅเบฑเบš 2 x NVMe SSD เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบŠเปˆเบญเบ‡ PCIe 3.0 8x. เบ™เบตเป‰, เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบกเปˆเบ™เบžเบฝเบ‡เปเบ•เปˆ HBA, เปเบ•เปˆเบชเปเบฒเบฅเบฑเบš NVMe. เบกเบฑเบ™เปเบ•เบเบ•เปˆเบฒเบ‡เบˆเบฒเบเบญเบฐเปเบ”เบšเป€เบ•เบตเบฅเบฒเบ„เบฒเบ–เบทเบเบ—เบตเปˆเบกเบฑเบ™เบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ PCIe bifurcation เบˆเบฒเบเป€เบกเบ™เบšเบญเบ”เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบตเบชเบฐเบงเบดเบ” PCIe เบ—เบตเปˆเบกเบตเปƒเบ™เบ•เบปเบง. เบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเปเบกเป‰เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบšเป€เบเบปเปˆเบฒเปเบเปˆเบ—เบตเปˆเบชเบธเบ”เบเบฑเบš PCIe, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบกเบฑเบ™เป€เบ›เบฑเบ™เบŠเปˆเบญเบ‡ x1 PCIe 1.0. เบ•เบฒเบกเบ—เปเบฒเบกเบฐเบŠเบฒเบ”, เปƒเบ™เบ„เบงเบฒเบกเป„เบงเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก. เบšเปเปˆเบกเบต RAIDs เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบšเปเปˆเบกเบต BIOS เบขเบนเปˆเปƒเบ™เป€เบ„เบทเปˆเบญเบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบฅเบฐเบšเบปเบšเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบฎเบฝเบ™เบฎเบนเป‰เบ—เบตเปˆเบˆเบฐเบšเบนเบ”เบเบฑเบš NVMe, เบซเบ™เป‰เบญเบเบฅเบปเบ‡ NVMe RAID เบ‚เบญเบšเปƒเบˆเบญเบธเบ›เบฐเบเบญเบ™เบ™เบตเป‰.

เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ™เบตเป‰เปเบกเปˆเบ™เบเป‰เบญเบ™เบกเบตเบžเบฝเบ‡ 8x PCIe 3.0 เบŸเบฃเบตเบ”เบฝเบงเปƒเบ™เบฅเบฐเบšเบปเบš, เปเบฅเบฐเบ–เป‰เบฒเบกเบต 2 เบชเบฐเบฅเบฑเบญเบ”เบŸเบฃเบต, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเบ”เป‰เบงเบเบชเบญเบ‡ penny PEX4M2E1 เบซเบผเบท analogues, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบŠเบทเป‰เป„เบ”เป‰เบ—เบธเบเบšเปˆเบญเบ™เปƒเบ™เบฅเบฒเบ„เบฒ 600. เบฎเบนเป€เบšเบตเบ™.

เบเบฒเบ™เบ›เบฐเบ•เบดเป€เบชเบ”เบ—เบธเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡เบฎเบฒเบ”เปเบงเบซเบผเบทเบŠเบดเบšเป€เบŠเบฑเบ” / BIOS RAIDs เบ—เบตเปˆเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒ, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบชเบฒเบกเบฒเบ”เบ—เบปเบ”เปเบ—เบ™เบฅเบฐเบšเบปเบšเบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ”เป‰เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™, เบเบปเบเป€เบงเบฑเป‰เบ™ SSD / HDD เบ•เบปเบงเป€เบญเบ‡, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”. เป‚เบ”เบเบซเบฅเบฑเบเบเบฒเบ™เปเบฅเป‰เบง, เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบฐเบซเบเบฑเบ”เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเป‰เบฒเบเป„เบ›เบซเบฒเบฎเบฒเบ”เปเบงเปƒเบซเบกเปˆ / เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒเบกเบตเบžเบญเบ” SATA เปเบฅเบฐ PCIe. เบกเบฑเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบšเปเบœเปˆเบ™เบŠเบตเบ”เบตเบ—เบตเปˆเบกเบตเบŠเบตเบงเบดเบ”เบŠเบตเบงเบฒเบซเบผเบท flash drive เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เป„เบ”เป‰, เบžเบฝเบ‡เปเบ•เปˆเป„เบงเบซเบผเบฒเบเปเบฅเบฐ bulky เป€เบฅเบฑเบเบ™เป‰เบญเบ.

Humorเบ–เป‰เบฒเบšเปเปˆเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบˆเบปเป‰เบฒเบฎเบนเป‰เบงเปˆเบฒเบˆเบฐเป€เบเบตเบ”เบซเบเบฑเบ‡เบ‚เบถเป‰เบ™ - เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฎเบตเบšเบ”เปˆเบงเบ™เป€เบญเบปเบฒเบญเบฒเป€เบฅเบ—เบฑเบ‡เบซเบกเบปเบ”เป„เบ›เบเบฑเบšเป€เบˆเบปเป‰เบฒเป€เบžเบทเปˆเบญเป€เบญเบปเบฒเป„เบ›. เปเบ•เปˆเบ‚เป‰เบญเบเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบชเบทเปˆเบกเบงเบ™เบŠเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเปเบกเปˆเบ™เบชเบฐเบ”เบงเบเปƒเบ™เบชเบฐเป„เบฅเป‰เปƒเบ™ 5.25 bays เบ‚เบญเบ‡เบเปเบฅเบฐเบ™เบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™.

เบ”เบต, เปเบฅเบฐ, เปเบ™เปˆเบ™เบญเบ™, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ—เบปเบ”เบฅเบญเบ‡เบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ SSD caching เปƒเบ™ Linux.

เบเบฒเบ™เป‚เบˆเบกเบ•เบตเบฎเบฒเบ”เปเบงเปเบกเปˆเบ™เบซเบ™เป‰เบฒเป€เบšเบทเปˆเบญ. เป€เบ›เบตเบ”เบกเบฑเบ™. เบกเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบซเบผเบทเบšเปเปˆเป„เบ”เป‰. เปเบฅเบฐเบเบฑเบš mdadm เบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบฐเป€เบซเบกเบต.

เบŠเบญเบšเปเบง

เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, Debian 8 Jessie เป„เบ”เป‰เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เบฎเบฒเบ”เปเบง, เป€เบŠเบดเปˆเบ‡เบขเบนเปˆเปƒเบเป‰เบเบฑเบš EOL. RAID 6 เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบเบญเบšเบกเบฒเบˆเบฒเบ HDDs เบ—เบตเปˆเบเปˆเบฒเบงเบกเบฒเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ—เบตเปˆเบˆเบฑเบšเบ„เบนเปˆเบเบฑเบš LVM. เบกเบฑเบ™เปเบฅเปˆเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เปƒเบ™ kvm/libvirt.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบœเบนเป‰เบ‚เบฝเบ™เบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡ flash drives SATA / NVMe เบ—เบตเปˆเบชเบฒเบกเบฒเบ” bootable portable, เปเบฅเบฐเป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™, เป€เบžเบทเปˆเบญเบšเปเปˆเปƒเบซเป‰เบ—เปเบฒเบฅเบฒเบเปเบกเปˆเปเบšเบšเบ›เบปเบเบเบฐเบ•เบด, Ubuntu 18.04 เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เป€เบŠเบดเปˆเบ‡เบกเบตเบ„เบงเบฒเบกเบซเบกเบฑเป‰เบ™เบ„เบปเบ‡เบžเบฝเบ‡เบžเปเปเบฅเป‰เบง, เปเบ•เปˆเบเบฑเบ‡เบกเบตเป€เบงเบฅเบฒ 3 เบ›เบต. เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”.

เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป„เบ”เป‰เบเปˆเบฒเบงเบกเบฒเบ›เบฐเบเบญเบšเบกเบตเป„เบ”เป€เบงเบตเบฎเบฒเบ”เปเบงเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡. เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบŠเบญเบšเปเบงเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเบชเบฒเบกเบซเบผเบทเป„เบ”เป€เบงเบต.

เบเบฒเบ™เบเบฐเบเบฝเบกเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡

เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบšเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™ Ubuntu Desktop Image. เบฅเบฐเบšเบปเบšเป€เบŠเบตเบŸเป€เบงเบตเบกเบตเบ•เบปเบงเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ—เบตเปˆเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบšเบฒเบ‡เบŠเบฐเบ™เบดเบ”, เป€เบŠเบดเปˆเบ‡เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เป€เบ–เบดเบ‡เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เบ—เบตเปˆเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เป€เบฅเบทเปˆเบญเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบฅเบฐเบšเบปเบš UEFI เปƒเบชเปˆเปเบœเปˆเบ™เบซเบ™เบถเปˆเบ‡, เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบ‡เบฒเบกเบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบชเบเบซเบฒเบ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เบ–เบทเบเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” UEFI เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™. เบšเปเปˆเป„เบ”เป‰เบชเบฐเป€เปœเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ”เป†.

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบžเปเปƒเบˆเบเบฑเบšเป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡?เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, boot UEFI เปเบกเปˆเบ™เป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบšเปเปˆเบ”เบตเบเบฑเบšเบŠเบญเบšเปเบงเบšเบนเบ” RAID, เป€เบžเบฒเบฐเบงเปˆเบฒ เบšเปเปˆเบกเบตเปƒเบœเบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบญเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™ UEFI ESP. เบกเบตเบชเบนเบ”เปƒเบ™เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เบ—เบตเปˆเปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบงเบฒเบ‡ ESP partition เปƒเบชเปˆ flash drive เปƒเบ™เบžเบญเบ” USB, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบตเปˆเบฅเบปเป‰เบกเป€เบซเบฅเบง. เบกเบตเบชเบนเบ”เบ—เบตเปˆเปƒเบŠเป‰เบŠเบญเบšเปเบง mdadm RAID 1 เบ—เบตเปˆเบกเบต metadata เบฎเบธเปˆเบ™ 0.9 เบ—เบตเปˆเบšเปเปˆเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ UEFI BIOS เป€เบซเบฑเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™เบ™เบตเป‰, เปเบ•เปˆเบ™เบตเป‰เบกเบตเบŠเบตเบงเบดเบ”เบขเบนเปˆเบˆเบปเบ™เบเปˆเบงเบฒเป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบธเบเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ BIOS เบซเบผเบทเบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบญเบทเปˆเบ™เปƒเบ™เบฎเบฒเบ”เปเบงเบ‚เบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบชเปˆ ESP เปเบฅเบฐเบฅเบทเบก synchronize เบกเบฑเบ™. เบเบฑเบšเบเบฐเบˆเบปเบเบญเบทเปˆเบ™เป†.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, UEFI boot เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบš NVRAM, เป€เบŠเบดเปˆเบ‡เบˆเบฐเบšเปเปˆเบเป‰เบฒเบเป„เบ›เบžเป‰เบญเบกเบเบฑเบšเปเบœเปˆเบ™เบ”เบดเบ”เป„เบ›เบซเบฒเบฅเบฐเบšเบปเบšเปƒเบซเบกเปˆ, เป€เบžเบฒเบฐเบงเปˆเบฒ. เปเบกเปˆเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เป€เบกเบ™เบšเบญเบ”.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบ›เบฐเบ”เบดเบ”เบฅเปเป‰เปƒเปเปˆ. เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบกเบตโ€‹เบฅเบปเบ”โ€‹เบ–เบตเบšโ€‹เบ‚เบญเบ‡โ€‹เบžเปเปˆโ€‹เบ•เบนเป‰โ€‹เบ—เบตเปˆโ€‹เบกเบตโ€‹เบเบฒเบ™โ€‹เบ—เบปเบ”โ€‹เบชเบญเบšโ€‹เบ—เบตเปˆโ€‹เบเบฝเบกโ€‹เบžเป‰เบญเบกโ€‹เปเบฅเป‰เบง, เปƒเบ™โ€‹เบ›เบฑเบ”โ€‹เบˆเบธโ€‹เบšเบฑเบ™โ€‹เบกเบตโ€‹เบŠเบทเปˆโ€‹เบงเปˆเบฒ Legacy/BIOS boot, เบกเบตโ€‹เบŠเบทเปˆโ€‹เบ—เบตเปˆโ€‹เบžเบฒเบโ€‹เบžเบนเบกโ€‹เปƒเบˆโ€‹เบ‚เบญเบ‡ CSM เปƒเบ™โ€‹เบฅเบฐโ€‹เบšเบปเบšโ€‹เบ—เบตเปˆโ€‹เป€เบ‚เบปเป‰เบฒโ€‹เบเบฑเบ™โ€‹เป„เบ”เป‰ UEFI. เบžเบงเบเป€เบฎเบปเบฒเบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบเบˆเบฒเบเบŠเบฑเป‰เบ™เบงเบฒเบ‡, เบซเบฅเปเปˆเบฅเบทเปˆเบ™เบกเบฑเบ™, เบชเบนเบšเบขเบฒเบ‡เบฅเบปเบ”เปเบฅเบฐเป€เบŠเบฑเบ”เบกเบฑเบ™เบ”เป‰เบงเบเบœเป‰เบฒเบ›เบฝเบ.

เป€เบงเบตเบŠเบฑเบ™ desktop เบ‚เบญเบ‡ Ubuntu เบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบเบฑเบš Legacy bootloader, เปเบ•เปˆเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰, เบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเป€เบงเบปเป‰เบฒเบงเปˆเบฒ, เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบกเบตเบ—เบฒเบ‡เป€เบฅเบทเบญเบ.

เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒเบฎเบฒเบ”เปเบงเปเบฅเบฐเป‚เบซเบฅเบ”เบฅเบฐเบšเบปเบšเบˆเบฒเบ Ubuntu Live bootable flash drive. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบ”เบฒเบงเป‚เบซเบฅเบ”เปเบžเบฑเบเป€เบเบ”, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบเบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเปเบฒเบฅเบฑเบšเบ—เปˆเบฒเบ™. เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป‚เบซเบฅเบ”เปเบžเบฑเบเป€เบเบฑเบ”เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบชเปˆ flash drive เบฅเปˆเบงเบ‡เบซเบ™เป‰เบฒ.

เบžเบงเบเป€เบฎเบปเบฒเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก desktop, เป€เบ›เบตเบ”เบ•เบปเบง emulator terminal, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเป„เบ›:

#sudo bash

เปเบ™เบงเปƒเบ”โ€ฆ?เป€เบชเบฑเป‰เบ™เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ™เบตเป‰เปเบกเปˆเบ™เบ•เบปเบงเบเบฐเบ•เบธเป‰เบ™ canonical เบชเปเบฒเบฅเบฑเบš holiwars เบเปˆเบฝเบงเบเบฑเบš sudo. เบ„ เบ‚ะพเป‚เบญเบเบฒเบ”เบญเบฑเบ™เปƒเบซเบเปˆเบซเบผเบงเบ‡เบกเบฒเปเบฅเบฐะพเบ„เบงเบฒเบกเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. เบ„เปเบฒเบ–เบฒเบกเปเบกเปˆเบ™เบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบญเบปเบฒเบกเบฑเบ™เปƒเบชเปˆเบ•เบปเบงเบ—เปˆเบฒเบ™เป€เบญเบ‡เป„เบ”เป‰. เบซเบผเบฒเบเบ„เบปเบ™เบ„เบดเบ”เบงเปˆเบฒเบเบฒเบ™เปƒเบŠเป‰ sudo เปƒเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบšเปเปˆเบฅเบฐเบกเบฑเบ”เบฅเบฐเบงเบฑเบ‡. เปเบ™เบงเปƒเบ”เบเปเปˆเบ•เบฒเบก:

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบšเปเปˆ ZFS ...?เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบŠเบญเบšเปเบงเปƒเบ™เบ„เบญเบกเบžเบดเบงเป€เบ•เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เบเบนเป‰เบขเบทเบกเบฎเบฒเบ”เปเบงเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบŠเบญเบšเปเบงเบ™เบตเป‰เป€เบžเบทเปˆเบญเบ‚เบฑเบšเบฅเบปเบ”.
เป€เบกเบทเปˆเบญเบžเบงเบเป€เบฎเบปเบฒเป„เบงเป‰เบงเบฒเบ‡เปƒเบˆเบŠเบญเบšเปเบงเบ™เบตเป‰เบเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบฎเบปเบฒเป€เบญเบปเบฒเป€เบ‡เบดเบ™เบเบนเป‰เบขเบทเบกเป€เบ—เบปเปˆเบฒเบเบฑเบšเบ„เปˆเบฒเปƒเบŠเป‰เบˆเปˆเบฒเบเปƒเบ™เบเบฒเบ™เบŸเบทเป‰เบ™เบŸเบนเบ‚เปเป‰เบกเบนเบ™เบ™เบตเป‰, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ•เป‰เบญเบ‡เบˆเปˆเบฒเบเปƒเบ™เบกเบทเป‰เบซเบ™เบถเปˆเบ‡.

เบˆเบฒเบเบˆเบธเบ”เบ™เบตเป‰, ZFS เปเบกเปˆเบ™ Ferrari, เปเบฅเบฐ mdadm+lvm เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบฅเบปเบ”เบ–เบตเบšเบซเบผเบฒเบ.

เป‚เบ”เบเบžเบทเป‰เบ™เบ–เบฒเบ™เปเบฅเป‰เบง, เบœเบนเป‰เบ‚เบฝเบ™เบกเบฑเบเปƒเบซเป‰เบเบนเป‰เบขเบทเบกเบฅเบปเบ”เบ–เบตเบšเปƒเบซเป‰เบเบฑเบšเบšเบธเบเบ„เบปเบ™เบ—เบตเปˆเบšเปเปˆเบฎเบนเป‰เบˆเบฑเบเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ Ferrari. เบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™, เบฅเบฒเบ„เบฒเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเปเบกเปˆเบ™เบšเปเปˆเบชเบนเบ‡. เบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบชเบดเบ”เบ—เบด. เบ‡เปˆเบฒเบเบเบงเปˆเบฒเบเบปเบ”เบฅเบฐเบšเบฝเบšเบˆเบฐเบฅเบฒเบˆเบญเบ™. เบšเปˆเบญเบ™เบˆเบญเบ”เบฅเบปเบ”เปเบกเปˆเบ™เบšเปเปˆเป€เบชเบเบ„เปˆเบฒ. เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเบกเบ›เบฐเป€เบ—เบ”เบ”เบตเบเบงเปˆเบฒ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ‚เบฒเบเบฑเบšเบฅเบปเบ”เบ–เบตเบšเป„เบ”เป‰เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ, เปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบญเบกเปเบ›เบ‡เบฅเบปเบ”เบ–เบตเบšเบ”เป‰เบงเบเบกเบทเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ BTRFS...?เป€เบžเบทเปˆเบญเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ—เบตเปˆเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปƒเบ™ Legacy/BIOS GRUB เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบ–เปˆเบฒเบเบžเบฒเบšเบชเบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™เบชเปเบฒเบฅเบฑเบš /boot partition. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบœเบนเป‰เบ‚เบฝเบ™เบกเบฑเบเปƒเบŠเป‰ FS เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบš / (เบฎเบฒเบ), เบขเปˆเบฒเบฅเบทเบกเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบŠเบญเบšเปเบงเบญเบทเปˆเบ™เป†เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเปƒเบ™ LVM เปเบฅเบฐเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบžเบงเบเบกเบฑเบ™เบขเบนเปˆเปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ virtual เบซเบผเบทเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบ”เป†เบขเบนเปˆเปƒเบ™ FS เบ™เบตเป‰.
FS เบ™เบตเป‰เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ snapshots เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เบดเบ”เบกเบฑเบ™เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป‚เบญเบ™ snapshots เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเบฑเบšเปเบœเปˆเบ™เบชเปเบฒเบฎเบญเบ‡เป‚เบ”เบเปƒเบŠเป‰ send/recieve.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เบกเบฑเบเบฎเบฑเบเบชเบฒเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡เบŠเบญเบšเปเบงเป‚เบ”เบเบเบปเบ‡เปƒเบ™เบฎเบฒเบ”เปเบงเปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบŠเบญเบšเปเบงเบญเบทเปˆเบ™เป†เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เป‚เบ”เบเปƒเบŠเป‰เบชเบดเปˆเบ‡เบ•เปˆเบฒเบ‡เป†เป€เบŠเบฑเปˆเบ™เบเบฒเบ™เบชเบปเปˆเบ‡เบ•เปเปˆ GPUs เปเบฅเบฐ PCI-USB Host controllers เบเบฑเบš KVM เบœเปˆเบฒเบ™ IOMMU.

เบชเบดเปˆเบ‡เบ”เบฝเบงเบ—เบตเปˆเป€เบซเบฅเบทเบญเบขเบนเปˆเปƒเบ™เบฎเบฒเบ”เปเบงเปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™, virtualization เปเบฅเบฐเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบงเป‰เบงเบฒเบ‡เปƒเบˆ ZFS เบซเบผเบฒเบ, เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบชเปเบฒเบฅเบฑเบšเบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบตเปˆเบเปเบฒเบ™เบปเบ”, เบžเบงเบเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปเบฅเบเบ›เปˆเบฝเบ™เบเบฑเบ™เป„เบ”เป‰.

เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบœเบนเป‰เบ‚เบฝเบ™เป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒเบšเปเปˆเบชเบปเบ™เปƒเบˆเบเบฑเบšเบฅเบฑเบเบชเบฐเบ™เบฐ mirroring / RAID เบ—เบตเปˆเบกเบตเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เปเบฅเบฐเบŠเป‰เปเบฒเบŠเป‰เบญเบ™เบ—เบตเปˆ ZFS, BRTFS เปเบฅเบฐ LVM เบกเบต.

เปƒเบ™เบ–เบฒเบ™เบฐเป€เบ›เบฑเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เป€เบžเบตเปˆเบกเป€เบ•เบตเบก, BTRFS เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฅเปเบฒเบ”เบฑเบš, เป€เบŠเบดเปˆเบ‡เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบšเบงเบเบซเบผเบฒเบเบ•เปเปˆเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™ synchronizing snapshots / เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™ 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

เบเบฒเบ™เบˆเบฑเบ”เบงเบฒเบ‡เปเบœเปˆเบ™

NVMe SSD

เปเบ•เปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบซเบกเบฒเบเบžเบงเบเบกเบฑเบ™เปƒเบ™เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก. เบ—เบฑเบ‡เบซเบกเบปเบ”เบ”เบฝเบงเบเบฑเบ™, BIOS เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป€เบซเบฑเบ™เป„เบ”เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบ‚เบปเบฒเบˆเบฐเป„เบ›เบซเบฒเบŠเบญเบšเปเบง RAID เบ—เบฑเบ‡เบซเบกเบปเบ”. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเบชเป‰เบฒเบ‡เบžเบฒเบเบชเปˆเบงเบ™เบขเบนเปˆเบšเปˆเบญเบ™เบ™เบฑเป‰เบ™. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบฒเบก "canon" เบซเบผเบท "เบ•เบปเป‰เบ™เบ•เป", เบชเป‰เบฒเบ‡เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบ™เบถเปˆเบ‡เป€เบŠเบฑเปˆเบ™ HDD.

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 TB. เบ™เบตเป‰เปเบกเปˆเบ™เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเป„เบ”เป‰เบชเปเบฒเบฅเบฑเบš MBR, เป€เบŠเบดเปˆเบ‡เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰. เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบชเบฒเบกเบฒเบ”เบ–เบทเบเปเบ—เบ™เบ—เบตเปˆเบ”เป‰เบงเบ GPT. เปเบœเปˆเบ™ GPT เบกเบตเบŠเบฑเป‰เบ™เบ„เบงเบฒเบกเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบฅเบฐเบšเบปเบšเบ—เบตเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰เบเบฑเบš MBR เป€เบžเบทเปˆเบญเป€เบšเบดเปˆเบ‡ 4 เบžเบฒเบเบชเปˆเบงเบ™เบ—เปเบฒเบญเบดเบ”เบ–เป‰เบฒเบžเบงเบเบกเบฑเบ™เบ•เบฑเป‰เบ‡เบขเบนเปˆเบžเบฒเบเปƒเบ™ 2 เป€เบ—เบฃเบฒเป„เบšเบ—เปเบฒเบญเบดเบ”. เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เบงเปˆเบฒ boot partition เปเบฅเบฐ bios_grub partition เปƒเบ™เปเบœเปˆเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเบขเบนเปˆเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™. เบ™เบตเป‰เบเบฑเบ‡เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ” boot เบˆเบฒเบ GPT Legacy/BIOS drives.

เปเบ•เปˆเบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡เบชเบญเบ‡เบžเบฒเบ. เบญเบฑเบ™เบ—เปเบฒเบญเบดเบ”เบˆเบฐเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ” 1 GB เปเบฅเบฐเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš RAID 1 / boot.

เบญเบฑเบ™เบ—เบตเบชเบญเบ‡เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš RAID 6 เปเบฅเบฐเบˆเบฐเป€เบญเบปเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเบ—เบฑเบ‡เบซเบกเบปเบ”เบเบปเบเป€เบงเบฑเป‰เบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เป„เบ”.

เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเบกเบตเป€เบ„เบทเปˆเบญเบ‡เบซเบกเบฒเบเบ™เบตเป‰เปเบกเปˆเบ™เบซเบเบฑเบ‡?เบญเบตเบ‡เบ•เบฒเบกเปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบ™เป€เบ„เบทเบญเบ‚เปˆเบฒเบ, SATA SSDs เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบต cache SLC เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เบ•เบฑเป‰เบ‡เปเบ•เปˆ 6 เบซเบฒ 78 gigabyte. เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš 6 gigabytes "เบŸเบฃเบต" เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡ "gigabytes" เปเบฅเบฐ "gibibytes" เปƒเบ™เป€เบญเบเบฐเบชเบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เป„เบ”. เบชเปˆเบงเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญ 72 gigabytes เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰.

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบกเบฑเบ™เบ„เบงเบ™เบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบกเบตเปเบ„เบ” SLC, เปเบฅเบฐเบžเบทเป‰เบ™เบ—เบตเปˆเบ–เบทเบเบ„เบญเบšเบ„เบญเบ‡เบขเบนเปˆเปƒเบ™เป‚เบซเบกเบ” MLC 4 เบšเบดเบ”. เป€เบŠเบดเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบขเปˆเบฒเบ‡เบกเบตเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป† 4 gigabyte เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบžเบฝเบ‡เปเบ•เปˆ 1 gigabyte เบ‚เบญเบ‡ SLC cache.

เบ„เบนเบ™ 72 gigabytes เบ„เบนเบ™ 4 เปเบฅเบฐเป„เบ”เป‰เบฎเบฑเบš 288 gigabyte. เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เบŠเปˆเบญเบ‡โ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบˆเบฐโ€‹เบšเปเปˆโ€‹เป„เบ”เป‰โ€‹เบซเบกเบฒเบโ€‹เบญเบญเบโ€‹เปƒเบ™โ€‹เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบฒเบ™โ€‹เบ‚เบฑเบšโ€‹เป€เบžเบทเปˆเบญโ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบขเปˆเบฒเบ‡โ€‹เป€เบ•เบฑเบกโ€‹เบ—เบตเปˆโ€‹เบ‚เบญเบ‡โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒ SLCโ€‹.

เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเป€เบ–เบดเบ‡ 312 gigabyte เบ‚เบญเบ‡ SLC cache เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบˆเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบซเบปเบเป„เบ”. เบ‚เบญเบ‡เป„เบ”เบ—เบฑเบ‡เปเบปเบ”, 2 เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เปƒเบ™ RAID เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™.

เบˆเปเบฒเบ™เบงเบ™ cache เบ™เบตเป‰เบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบซเบฒเบเบฒเบเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบŠเบตเบงเบดเบ”เบˆเบดเบ‡เบžเบปเบšเบเบฑเบšเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เบ—เบตเปˆเบเบฒเบ™เบ‚เบฝเบ™เบšเปเปˆเป„เบ”เป‰เป„เบ›เบซเบฒ cache. เบ™เบตเป‰เป€เบ›เบฑเบ™เบเบฒเบ™เบŠเบปเบ”เป€เบŠเบตเบเบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบšเบปเบเบœเปˆเบญเบ‡เบ—เบตเปˆเป‚เบชเบเป€เบชเบปเป‰เบฒเบ—เบตเปˆเบชเบธเบ”เบ‚เบญเบ‡เบซเบ™เปˆเบงเบเบ„เบงเบฒเบกเบˆเปเบฒ 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

เบเบฒเบ™เบชเป‰เบฒเบ‡ Arrays

เบเปˆเบญเบ™เบญเบทเปˆเบ™ เปเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒ เบˆเบณ เป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบŠเบทเปˆเป€เบ„เบทเปˆเบญเบ‡. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบฒเบฐเบงเปˆเบฒเบŠเบทเปˆเป‚เบฎเบ”เป€เบ›เบฑเบ™เบชเปˆเบงเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบŠเบทเปˆ array เบขเบนเปˆเบšเปˆเบญเบ™เปƒเบ”เบšเปˆเบญเบ™เบซเบ™เบถเปˆเบ‡เบžเบฒเบเปƒเบ™ mdadm เปเบฅเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเบฒเบ‡เบšเปˆเบญเบ™. เปเบ™เปˆเบ™เบญเบ™, arrays เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เบŠเบทเปˆเบ•เปเปˆเบกเบฒ, เปเบ•เปˆเบ™เบตเป‰เปเบกเปˆเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™.

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

NVMe SSD

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ -เบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบชเบฐเบญเบฒเบ”...?เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ arrays. เบชเปเบฒเบฅเบฑเบšเบ—เบฑเบ‡เบชเบญเบ‡เบฅเบฐเบ”เบฑเบš RAID 1 เปเบฅเบฐ 6 เบ™เบตเป‰เปเบกเปˆเบ™เบ–เบทเบเบ•เป‰เบญเบ‡. เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ–เป‰เบฒเบกเบฑเบ™เป€เบ›เบฑเบ™ array เปƒเบซเบกเปˆ. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบเบฒเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™ SSD array เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เปเบกเปˆเบ™เป€เบชเบเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ TBW. เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰ TRIM/DISCARD เบšเปˆเบญเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เปƒเบ™ SSD arrays เบ—เบตเปˆเบ›เบฐเบเบญเบšเป€เบžเบทเปˆเบญ "เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" เบžเบงเบเบกเบฑเบ™.

เบชเปเบฒเบฅเบฑเบš SSD arrays, RAID 1 DISCARD เปเบกเปˆเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡.

เบชเปเบฒเบฅเบฑเบš SSD RAID 6 DISCARD arrays, เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เป€เบ›เบตเบ”เปƒเบŠเป‰เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ•เบปเบงเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบกเบ”เบนเบ™ kernel.

เบญเบฑเบ™เบ™เบตเป‰เบ„เบงเบ™เบˆเบฐเป€เบฎเบฑเบ”เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒ SSD เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบ”เบฑเบš 4/5/6 arrays เปƒเบ™เบฅเบฐเบšเบปเบšเบ™เบตเป‰เบกเบตเบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบ‚เบญเบ‡ discard_zeroes_data. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ—เปˆเบฒเบ™เบžเบปเบšเป„เบ”เบฃเบŸเปŒเปเบ›เบเป†เบ—เบตเปˆเบšเบญเบ kernel เบงเปˆเบฒเบŸเบฑเบ‡เบŠเบฑเบ™เบ™เบตเป‰เบ–เบทเบเบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™, เปเบ•เปˆเบ„เบงเบฒเบกเบˆเบดเบ‡เปเบฅเป‰เบงเบกเบฑเบ™เบšเปเปˆเปเบกเปˆเบ™เบขเบนเปˆ, เบซเบผเบทเบŸเบฑเบ‡เบŠเบฑเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบชเบฐเป€เบซเบกเบต. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบเบฒเบ™เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เปเบกเปˆเบ™เบกเบตเบขเบนเปˆเป€เบเบทเบญเบšเบ—เบธเบเบšเปˆเบญเบ™, เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบกเบตเป„เบ”เป€เบเบปเปˆเบฒเปเบฅเบฐเป€เบŸเบตเบกเปเบงเบ—เบตเปˆเบกเบตเบ‚เปเป‰เบœเบดเบ”เบžเบฒเบ”. เบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰, เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš DISCARD เบ–เบทเบเบ›เบดเบ”เปƒเบŠเป‰เบ‡เบฒเบ™เป‚เบ”เบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ‚เบญเบ‡ RAID 6.

เป€เบญเบปเบฒโ€‹เปƒเบˆโ€‹เปƒเบชเปˆ, เบ„เปเบฒโ€‹เบชเบฑเปˆเบ‡โ€‹เบ”เบฑเปˆเบ‡โ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹เบ™เบตเป‰โ€‹เบˆเบฐโ€‹เบ—เปเบฒโ€‹เบฅเบฒเบโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เปƒเบ™ NVMe drives เป‚เบ”เบ "เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹" array เบเบฑเบš "เบชเบนเบ™โ€‹"โ€‹.

#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 เบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ—เบฒเบ‡เบšเบงเบเบ•เปเปˆเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบญเปˆเบฒเบ™เปเบšเบšเบชเบธเปˆเบกเปƒเบ™เบšเบฅเบฑเบญเบเป€เบ–เบดเบ‡เบ‚เบฐเบซเบ™เบฒเบ” chunk เบฅเบงเบก. เบญเบฑเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเป‰เบญเบ™เบงเปˆเบฒเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบกเบซเบผเบทเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเบชเบฒเบกเบฒเบ”เบชเปเบฒเป€เบฅเบฑเบ”เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ”เบฝเบง. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, IOPS เบˆเบฒเบเบญเบธเบ›เบฐเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เบชเบฐเบซเบผเบธเบš. เบญเบตเบ‡เบ•เบฒเบกเบชเบฐเบ–เบดเบ•เบด, 99% เบ‚เบญเบ‡ IO เบšเปเปˆเป€เบเบตเบ™ 512K.

RAID เบกเบต 6 IOPS เบ•เปเปˆเบเบฒเบ™เบ‚เบฝเบ™ เบชเบฐเป€เบซเบกเบตเป„เบ› เปœเป‰เบญเบเบเบงเปˆเบฒ เบซเบผเบทเป€เบ—เบปเปˆเบฒเบเบฑเบš IOPS เบ‚เบญเบ‡เปœเบถเปˆเบ‡เป„เบ”. เป€เบกเบทเปˆเบญ, เป€เบ›เบฑเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เปเบšเบšเบชเบธเปˆเบก, IOPS เบชเบฒเบกเบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ‚เบญเบ‡เบซเบ™เบถเปˆเบ‡เป„เบ”, เปเบฅเบฐเปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡เบ•เบฑเบ™เปเบกเปˆเบ™เบกเบตเบ„เบงเบฒเบกเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™.
เบœเบนเป‰เบ‚เบฝเบ™เบšเปเปˆเป€เบซเบฑเบ™เบˆเบธเบ”เบ—เบตเปˆเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ—เบตเปˆเบšเปเปˆเบ”เบตเปƒเบ™ RAID 6 เป‚เบ”เบเบเบฒเบ™เบญเบญเบเปเบšเบšเปเบฅเบฐเปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบดเปˆเบ‡เบ—เบตเปˆ RAID 6 เบ”เบตเบขเบนเปˆ.
เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบŠเบปเบ”เป€เบŠเบตเบเบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเบ—เบตเปˆเบšเปเปˆเบ”เบตเบ‚เบญเบ‡ RAID 6 เบ”เป‰เบงเบ cache NVMe เปเบฅเบฐ tricks เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบšเบฒเบ‡เป†.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบšเปเปˆเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰ DISCARD เบชเปเบฒเบฅเบฑเบš RAID 6. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆ "เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" array เบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰เปƒเบ™เบžเบฒเบเบซเบผเบฑเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS.

SATA HDD

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

LVM เปƒเบ™ NVMe RAID

เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเป„เบง, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเบฒเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบฎเบฒเบเปƒเบชเปˆ NVMe RAID 1 เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™ /dev/md0.
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™ array เป„เบงเบ™เบตเป‰เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†, เป€เบŠเบฑเปˆเบ™: swap, metadata เปเบฅเบฐ LVM-cache เปเบฅเบฐ LVM-thin metadata, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเป‰เบฒเบ‡ LVM VG เปƒเบ™ array เบ™เบตเป‰.

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

เปƒเบซเป‰เบชเป‰เบฒเบ‡เบžเบฒเบ—เบดเบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบšเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบฎเบฒเบ.

#lvcreate -L 128G --name root root

เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบžเบฒเบ—เบดเบŠเบฑเบ™เบชเปเบฒเบฅเบฑเบš swapping เบ•เบฒเบกเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ RAM.

#lvcreate -L 32G --name swap root

เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡ OS

เปƒเบ™เบˆเปเบฒเบ™เบงเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เปƒเบ™เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบš.

เป€เบ›เบตเบ”เปƒเบŠเป‰เบ•เบปเบงเบŠเปˆเบงเบเบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบฅเบฐเบšเบปเบšเบˆเบฒเบเบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก Ubuntu Live. เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบ›เบปเบเบเบฐเบ•เบด. เบžเบฝเบ‡เปเบ•เปˆเบขเบนเปˆเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ‚เบญเบ‡เบเบฒเบ™เป€เบฅเบทเบญเบเปเบœเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบฅเบฐเบšเบธเบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • /dev/md1, - mount เบˆเบธเบ” /boot, FS - BTRFS
  • /dev/root/root (aka /dev/mapper/root-root), - เบˆเบธเบ”เป€เบŠเบทเปˆเบญเบกเบ•เปเปˆ / (เบฎเบฒเบ), FS - BTRFS
  • /dev/root/swap (aka /dev/mapper/root-swap), - เปƒเบŠเป‰เป€เบ›เบฑเบ™ swap partition
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ bootloader เปƒเบ™ /dev/sda

เป€เบกเบทเปˆเบญเบ—เปˆเบฒเบ™เป€เบฅเบทเบญเบ BTRFS เป€เบ›เบฑเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบฎเบฒเบ, เบ•เบปเบงเบ•เบดเบ”เบ•เบฑเป‰เบ‡เบˆเบฐเบชเป‰เบฒเบ‡เบชเบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™ BTRFS เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบงเปˆเบฒ "@" เบชเปเบฒเบฅเบฑเบš / (เบฎเบฒเบ), เปเบฅเบฐ "@home" เบชเปเบฒเบฅเบฑเบš /home.

เบกเบฒเป€เบฅเบตเปˆเบกเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบฑเบ™เป€เบฅเบตเบ...

เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡โ€‹เบˆเบฐโ€‹เบชเบดเป‰เบ™โ€‹เบชเบธเบ”โ€‹เบฅเบปเบ‡โ€‹เบ”เป‰เบงเบโ€‹เบ›เปˆเบญเบ‡ modal เบŠเบตเป‰โ€‹เบšเบญเบโ€‹เป€เบ–เบดเบ‡โ€‹เบ„เบงเบฒเบกโ€‹เบœเบดเบ”โ€‹เบžเบฒเบ”โ€‹เปƒเบ™โ€‹เบเบฒเบ™โ€‹เบ•เบดเบ”โ€‹เบ•เบฑเป‰เบ‡ bootloader เป„เบ”เป‰โ€‹. เบ‚เปเบญเบฐเป„เบž, เบ—เปˆเบฒเบ™เบˆเบฐเบšเปเปˆเบชเบฒเบกเบฒเบ”เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡เป‚เบ•เป‰เบ•เบญเบšเบ™เบตเป‰เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰เบงเบดเบ—เบตเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เปเบฅเบฐเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡. เบžเบงเบเป€เบฎเบปเบฒเบญเบญเบเบˆเบฒเบเบฅเบฐเบšเบปเบšเปเบฅเบฐเป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบชเบดเป‰เบ™เบชเบธเบ”เปƒเบ™ desktop Ubuntu Live เบ—เบตเปˆเบชเบฐเบญเบฒเบ”. เป€เบ›เบตเบ” terminal, เปเบฅเบฐเบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡:

#sudo bash

เบชเป‰เบฒเบ‡เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก chroot เป€เบžเบทเปˆเบญเบชเบทเบšเบ•เปเปˆเบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡:

#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

เบกเบฒเบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ เปเบฅเบฐเบŠเบทเปˆเป€เบˆเบปเป‰เบฒเบžเบฒเบšเปƒเบ™ chroot:

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

เปƒเบซเป‰เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบก chroot:

#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/sources.list เบเปˆเบญเบ™

เบกเบฒเบ›เบฑเบšเบ„เปˆเบฒเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบชเบณเบฅเบฑเบšเป‚เบกเบ”เบนเบ™ RAID 6 เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰ TRIM/DISCARD:

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

เปƒเบซเป‰เบ›เบฑเบš arrays เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบฑเบเบ™เป‰เบญเบ:

#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=="md*", RUN+="/sbin/blockdev --setra 0 /dev/%k"
EOF

เบกเบฑเบ™เปเบกเปˆเบ™เบซเบเบฑเบ‡..?เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเป‰เบฒเบ‡เบŠเบธเบ”เบ‚เบญเบ‡เบเบปเบ”เบฅเบฐเบšเบฝเบš udev เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

  • เบเปเบฒเบ™เบปเบ”เบ‚เบฐเบซเบ™เบฒเบ” block cache เบชเปเบฒเบฅเบฑเบš RAID 2020 เบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบš 6. เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบกเบฑเบ™เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ, เบšเปเปˆเป„เบ”เป‰เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบชเป‰เบฒเบ‡ Linux, เปเบฅเบฐเบšเปเปˆเบžเบฝเบ‡เบžเปเบชเปเบฒเบฅเบฑเบšเป€เบงเบฅเบฒเบ”เบปเบ™เบ™เบฒเบ™.
  • เบˆเบญเบ‡เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบ‚เบญเบ‡ IO เบชเปเบฒเบฅเบฑเบšเป„เบฅเบเบฐเป€เบงเบฅเบฒเบ‚เบญเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบš array / synchronizations. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ arrays เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบ•เบดเบ”เบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบ‚เบญเบ‡เบเบฒเบ™ synchronization เบ™เบดเบฅเบฑเบ™เบ”เบญเบ™เบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”.
  • เบˆเปเบฒโ€‹เบเบฑเบ” IO เบชเบนเบ‡โ€‹เบชเบธเบ”โ€‹เปƒเบ™โ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡โ€‹เบเบฒเบ™โ€‹เบเบงเบ”โ€‹เบชเบญเบš / synchronization เบ‚เบญเบ‡ arraysโ€‹. เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบงเปˆเบฒเบเบฒเบ™ synchronizing / เบเบฒเบ™เบเบงเบ”เบชเบญเบš SSD RAIDs เบšเปเปˆเป„เบ”เป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เป„เบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบกเบตเบ„เบงเบฒเบกเบ„เบปเบกเบŠเบฑเบ”. เบ™เบตเป‰เปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบš NVMe. (เบˆเบทเปˆเป„เบ”เป‰เบšเป? เบ‚เป‰เบญเบเบšเปเปˆเป„เบ”เป‰เป€เบงเบปเป‰เบฒเบ•เบฐเบซเบผเบปเบ.)
  • เบซเป‰เบฒเบกเบ”เบดเบชเบˆเบฒเบเบเบฒเบ™เบขเบธเบ”เบเบฒเบ™เบซเบกเบธเบ™ spindle (HDD) เบœเปˆเบฒเบ™ APM เปเบฅเบฐเบ•เบฑเป‰เบ‡เป€เบงเบฅเบฒเบ™เบญเบ™เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบ”เบดเบชเบเปŒเป€เบ›เบฑเบ™ 7 เบŠเบปเปˆเบงเป‚เบกเบ‡. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ APM เป„เบ”เป‰เบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™เบ–เป‰เบฒเป„เบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบกเบฑเบ™เป„เบ”เป‰ (-B 255). เบ”เป‰เบงเบเบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, drives เบˆเบฐเบขเบธเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบซเป‰เบฒเบงเบดเบ™เบฒเบ—เบต. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, OS เบ•เป‰เบญเบ‡เบเบฒเบ™เบฃเบตเป€เบŠเบฑเบ”เปเบ„เบ”เบ”เบดเบชเบเปŒ, เปเบœเปˆเบ™เบˆเบฐเปเบธเบ™เบ‚เบถเป‰เบ™เบญเบตเบเบ„เบฑเป‰เบ‡, เปเบฅเบฐเบ—เบธเบเบขเปˆเบฒเบ‡เบˆเบฐเป€เบฅเบตเปˆเบกเปƒเปเปˆเบญเบตเบเบ„เบฑเป‰เบ‡. เปเบœเปˆเบ™เบกเบตเบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบเบฑเบ”เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบเบฒเบ™เบซเบกเบธเบ™ spindle. เบงเบปเบ‡เบˆเบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบชเบฒเบกเบฒเบ”เบ‚เป‰เบฒเปเบœเปˆเบ™เบ”เบดเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ›เบต. เบšเปเปˆเปเบกเปˆเบ™เปเบœเปˆเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบปเบ™เบ—เบธเบเบˆเบฒเบเบชเบดเปˆเบ‡เบ™เบตเป‰, เปเบ•เปˆเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบกเปˆเบ™ "เบ„เบญเบกเบžเบดเบงเป€เบ•เบต" เบ—เบตเปˆเบกเบตเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบŠเบดเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰ RAID เป€เบšเบดเปˆเบ‡เบ„เบทเบงเปˆเบฒ mini-MAID.
  • เบ•เบดเบ”เบ•เบฑเป‰เบ‡ readahead เปƒเบ™เปเบœเปˆเบ™ (rotating) 1 megabyte - เบชเบญเบ‡ blocks เบ•เบดเบ”เบ•เปเปˆเบเบฑเบ™ / chunk RAID 6
  • เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ readahead เปƒเบ™ arrays เป€เบญเบ‡.

เบกเบฒเปเบเป‰เป„เบ‚ /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 partition เป‚เบ”เบ UUID. เบเบฒเบ™เบ•เบฑเป‰เบ‡เบŠเบทเปˆ Array เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ„เบปเป‰เบ™เบซเบฒเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบเบฑเบ‡เป€เบซเบผเบทเบญเป‚เบ”เบเบŠเบทเปˆ LVM เปƒเบ™เบชเบฑเบ™เบเบฒเบฅเบฑเบ /dev/mapper/vg-lv, เป€เบžเบฒเบฐเบงเปˆเบฒ เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เบ—เบตเปˆเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฑเบ.

เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰ UUID เบชเปเบฒเบฅเบฑเบš LVM เป€เบžเบฒเบฐเบงเปˆเบฒ UUID เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™ LVM เปเบฅเบฐเบžเบฒเบšเบ–เปˆเบฒเบเบ‚เบญเบ‡เบžเบงเบเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ„เบทเบเบฑเบ™.Mount /dev/mapper/root-root.. เบชเบญเบ‡เป€เบ—เบทเปˆเบญเบšเป?เปเบกเปˆเบ™เปเบฅเป‰เบง. เบขเปˆเบฒเบ‡โ€‹เปเบ™เปˆโ€‹เบ™เบญเบ™. เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เบ‚เบญเบ‡ BTRFS. เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป„เบ”เป‰เบซเบผเบฒเบเบ„เบฑเป‰เบ‡เบ”เป‰เบงเบ subvols เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เบ”เบฝเบงเบเบฑเบ™เบ™เบตเป‰, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบšเปเปˆเป€เบ„เบตเบเบชเป‰เบฒเบ‡เบžเบฒเบšเบ–เปˆเบฒเบ LVM เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™ BTRFS เบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เป„เบซเบง. เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบฒเบกเปเบ›เบเปƒเบˆเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ—เปˆเบฒเบ™ reboot.

เบกเบฒเบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ mdadm เบ„เบทเบ™เปƒเปเปˆ:

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

เบกเบฒเบ›เบฑเบšเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ LVM:

#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 เป€เบกเบทเปˆเบญโ€‹เป€เบ–เบดเบ‡ 90% เบ‚เบญเบ‡โ€‹เบžเบทเป‰เบ™โ€‹เบ—เบตเปˆโ€‹เบ„เบญเบšโ€‹เบ„เบญเบ‡โ€‹เป‚เบ”เบ 5% เบ‚เบญเบ‡โ€‹เบ›เบฐโ€‹เบฅเบดโ€‹เบกเบฒเบ™.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบžเบตเปˆเบกเบˆเปเบฒเบ™เบงเบ™เบชเบนเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบ•เบฑเบ™ cache เบชเปเบฒเบฅเบฑเบš LVM cache.

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ LVM เบŠเบญเบเบซเบฒเบ›เบฐเบฅเบดเบกเบฒเบ™ LVM (PV) เปƒเบ™:

  • เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบกเบตเปเบ„เบ” LVM (cdata)
  • เบญเบธเบ›เบฐเบเบญเบ™ cache เป‚เบ”เบเปƒเบŠเป‰ LVM cache, bypassing cache ( _corig). เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ™เบตเป‰โ€‹, เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒโ€‹เบ•เบปเบงโ€‹เบกเบฑเบ™โ€‹เป€เบญเบ‡โ€‹เบˆเบฐโ€‹เบเบฑเบ‡โ€‹เป„เบ”เป‰โ€‹เบฎเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบเบ™โ€‹เป‚เบ”เบโ€‹เบœเปˆเบฒเบ™โ€‹เบ–เบฒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เบˆเปเบฒ (เบžเบฝเบ‡โ€‹เปเบ•เปˆโ€‹ ).
  • เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเบกเบต LVM cache metadata (cmeta)
  • เบญเบธเบ›เบฐเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ VG เบ—เบตเปˆเบกเบตเบฎเบนเบšเบžเบฒเบšเบŠเบทเปˆ. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบฎเบนเบšเบžเบฒเบšเปเบœเปˆเบ™เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡ virtual, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ LVM เปƒเบ™เป‚เบฎเบ”เป€เบžเบทเปˆเบญเป€เบ›เบตเบ”เปƒเบŠเป‰เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™เบ‚เบญเบ‡ OS เปเบ‚เบ.
  • เบญเบธเบ›เบฐเบเบญเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ VG เบ”เป‰เบงเบเบเบฒเบ™เบชเบณเบฎเบญเบ‡เบŠเบทเปˆ. เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบชเปเบฒเป€เบ™เบปเบฒเบชเปเบฒเบฎเบญเบ‡เบ‚เบญเบ‡เบฎเบนเบšเบžเบฒเบšเป€เบ„เบทเปˆเบญเบ‡ virtual.
  • เบญเบธเบ›เบฐเบเบญเบ™เบ—เบฑเบ‡เปเบปเบ”เบ—เบตเปˆเบกเบตเบŠเบทเปˆเบฅเบปเบ‡เบ—เป‰เบฒเบเบ”เป‰เบงเบ โ€œgpvโ€ (เบ›เบฐเบฅเบดเบกเบฒเบ™เบ•เบปเบงเบˆเบดเบ‡เบ‚เบญเบ‡เปเบ‚เบ)

เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบ›เบตเบ”เปƒเบŠเป‰เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš DISCARD เป€เบกเบทเปˆเบญเบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบขเบนเปˆเปƒเบ™ LVM VG. เบฅเบฐโ€‹เบกเบฑเบ”โ€‹เบฅเบฐโ€‹เบงเบฑเบ‡. เบ™เบตเป‰เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เบฅเบถเบš LVs เปƒเบ™ SSD เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปƒเบŠเป‰เป€เบงเบฅเบฒเบซเบผเบฒเบ. เบ™เบตเป‰เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปเบกเปˆเบ™เปƒเบŠเป‰เบเบฑเบš SSD RAID 6. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบญเบตเบ‡เบ•เบฒเบกเปเบœเบ™เบเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบšเบฒเบ‡เป†, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เบˆเบฐเบšเปเปˆเบ‚เบฑเบ”เบ‚เบงเบฒเบ‡เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบตเบ.

เบกเบฒเบญเบฑเบšเป€เบ”เบ”เบฎเบนเบšเบžเบฒเบš initramfs:

#update-initramfs -u -k all

เบ•เบดเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ•เบฑเป‰เบ‡เบ„เปˆเบฒ grub:

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

เบˆเบฐเป€เบฅเบทเบญเบเปเบœเปˆเบ™เปƒเบ”?เบ—เบธเบเบ„เบปเบ™เบ—เบตเปˆเป€เบ›เบฑเบ™ sd*. เบฅเบฐเบšเบปเบšเบˆเบฐเบ•เป‰เบญเบ‡เบชเบฒเบกเบฒเบ”เบšเบนเบ”เบˆเบฒเบเป„เบ” SATA เบซเบผเบท SSD เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰.

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเบˆเบถเปˆเบ‡เป€เบžเบตเปˆเบก os-prober..?เบชเปเบฒเบฅเบฑเบšเป€เบญเบเบฐเบฅเบฒเบ”เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›เปเบฅเบฐเบกเบทเบซเบผเบดเป‰เบ™.

เบกเบฑเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบ–เป‰เบฒเบซเบ™เบถเปˆเบ‡เปƒเบ™ RAIDs เบขเบนเปˆเปƒเบ™เบชเบฐเบžเบฒเบšเบ—เบตเปˆเบŠเบธเบ”เป‚เบŠเบก. เบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเบ„เบปเป‰เบ™เบซเบฒ OS เปƒเบ™เบžเบฒเบ—เบดเบŠเบฑเบ™เบ—เบตเปˆเปƒเบŠเป‰เปƒเบ™เป€เบ„เบทเปˆเบญเบ‡ virtual เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบฎเบฒเบ”เปเบงเบ™เบตเป‰.

เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เปˆเบญเบเปƒเบซเป‰เบกเบฑเบ™, เปเบ•เปˆเบˆเบทเปˆเป„เบงเป‰เบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบŠเบญเบเบซเบฒเบชเบนเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบกเบท naughty เบญเบญเบ™เป„เบฅเบ™เปŒ.

เบ”เป‰เบงเบเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบชเปเบฒเป€เบฅเบฑเบ”เบเบฒเบ™เบ•เบดเบ”เบ•เบฑเป‰เบ‡เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™. เบกเบฑเบ™เป€เบ–เบดเบ‡เป€เบงเบฅเบฒเปเบฅเป‰เบงเบ—เบตเปˆเบˆเบฐเบ›เบดเบ”เป€เบ›เบตเบ” OS เบ—เบตเปˆเบ•เบดเบ”เบ•เบฑเป‰เบ‡เปƒเปเปˆ. เบขเปˆเบฒเบฅเบทเบกเป€เบญเบปเบฒ Live CD/USB เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบ›เบตเบ”เป„เบ”เป‰.

#exit
#reboot

เป€เบฅเบทเบญเบเปƒเบ”เป†เบ‚เบญเบ‡ SATA SSDs เป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบเบญเบ™ boot.

LVM เปƒเบ™ SATA SSD

เปƒเบ™เบˆเบธเบ”เบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰ booted เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ OS เปƒเบซเบกเปˆเปเบฅเป‰เบง, เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเป€เบ„เบทเบญเบ‚เปˆเบฒเบ, เป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบ›เบตเบ” terminal emulator, เปเบฅเบฐเป€เบ›เบตเบ”เบ•เบปเบง:

#sudo bash

เปƒเบซเป‰เบชเบทเบšเบ•เปเปˆ.

"เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™" array เบˆเบฒเบ SATA SSD:

#blkdiscard /dev/md2

เบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป€เบฎเบฑเบ”เบงเบฝเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบžเบฐเบเบฒเบเบฒเบก:

#blkdiscard --step 65536 /dev/md2
เบชเป‰เบฒเบ‡ LVM VG เปƒเบ™ SATA SSD:

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

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ VG เบญเบทเปˆเบ™..?เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบฎเบฒเบเบ—เบตเปˆเบกเบตเบŠเบทเปˆ VG เปเบฅเป‰เบง. เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบšเปเปˆเป€เบžเบตเปˆเบกเบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ VG เบ”เบฝเบง?

เบ–เป‰เบฒเบกเบตเบซเบผเบฒเบ PVs เปƒเบ™ VG, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบžเบทเปˆเบญเปƒเบซเป‰ VG เบ–เบทเบเป€เบ›เบตเบ”เปƒเบŠเป‰เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡, PV เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบกเบตเบขเบนเปˆ (เบญเบญเบ™เป„เบฅเบ™เปŒ). เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เปเบกเปˆเบ™ LVM RAID, เป€เบŠเบดเปˆเบ‡เบžเบงเบเป€เบฎเบปเบฒเป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒเบšเปเปˆเป„เบ”เป‰เปƒเบŠเป‰.

เบžเบงเบเป€เบฎเบปเบฒเบเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบงเปˆเบฒเบ–เป‰เบฒเบกเบตเบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบฅเบง (เบเบฒเบ™เบญเปˆเบฒเบ™เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™) เบขเบนเปˆเปƒเบ™เปƒเบ”เป†เบ‚เบญเบ‡ RAID 6 arrays, เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบˆเบฐ boot เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบดเปเบฅเบฐเปƒเบซเป‰เป‚เบญเบเบฒเบ”เบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒ.

เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบเบฒเบ™เบšเปเปˆเบกเบตเบ•เบปเบงเบ•เบปเบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปเบเบเบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ "เบชเบทเปˆ" เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ VG เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เป€เบงเบปเป‰เบฒเบ—เบฒเบ‡เบงเบดเบ—เบฐเบเบฒเบชเบฒเบ”, เบญเบฒเป€เบฃ RAID เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป€เบ›เบฑเบ™เบ‚เบญเบ‡ "เป‚เบ”เป€เบกเบ™เบ„เบงเบฒเบกเบซเบ™เป‰เบฒเป€เบŠเบทเปˆเบญเบ–เบท" เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™. เบ—เปˆเบฒเบ™เบšเปเปˆเบ„เบงเบ™เบชเป‰เบฒเบ‡เบˆเบธเบ”เบ—เบปเปˆเบงเป„เบ›เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบงเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเบเบฒเบ™เบšเบตเบšเบ„เบฑเป‰เบ™เป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™ VG เบ”เบฝเบง.

เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡ LVM เปƒเบ™เบฅเบฐเบ”เบฑเบš "เบฎเบฒเบ”เปเบง" เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบ•เบฑเบ”เบŠเบดเป‰เบ™เบชเปˆเบงเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡ RAID arrays เบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เป‚เบ”เบเบเบฒเบ™เบชเบปเบกเบ—เบปเบšเบžเบงเบเบกเบฑเบ™เบ”เป‰เบงเบเบงเบดเบ—เบตเบ•เปˆเบฒเบ‡เป†. เบ•เบปเบงเบขเปˆเบฒเบ‡ - เปเบฅเปˆเบ™ เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™ bcache + LVM เบšเบฒเบ‡เป†, bcache + BTRFS, LVM cache + LVM เบšเบฒเบ‡เป†, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ ZFS เบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™เบเบฑเบš cache, เบซเบผเบทเบ›เบฐเบชเบปเบก hellish เบญเบทเปˆเบ™เป†เป€เบžเบทเปˆเบญเบฅเบญเบ‡เบ›เบฝเบšเบ—เบฝเบšเบกเบฑเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เปƒเบ™เบฅเบฐเบ”เบฑเบš โ€œเบฎเบฒเบ”เปเบงโ€, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบšเปเปˆเปƒเบŠเป‰เบญเบฑเบ™เบญเบทเปˆเบ™เบ™เบญเบเบˆเบฒเบเบ›เบฐเบฅเบดเบกเบฒเบ™ LVM โ€œเปœเบฒโ€ เป€เบเบปเปˆเบฒเบ—เบตเปˆเบ”เบต. เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ•เปเปˆเบเบปเบ”เบฅเบฐเบšเบฝเบšเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเป€เบ›เบฑเบ™เบเบฒเบ™เปเบšเปˆเบ‡เบ›เบฑเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ™เบตเป‰, เบœเบนเป‰เบญเปˆเบฒเบ™เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบชเบปเบ‡เป„เบชเบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบเปˆเบฝเบงเบเบฑเบš doll เบฎเบฑเบ‡.

LVM เปƒเบ™ SATA HDD

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

VG เปƒเปเปˆเบญเบตเบเปเบฅเป‰เบง..?เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เปเบ—เป‰เป†เบงเปˆเบฒเบ–เป‰เบฒ disk array เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เปเป‰เบกเบนเบ™เบฅเบปเป‰เบกเป€เบซเบฅเบง, เบฅเบฐเบšเบปเบšเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบด, เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเบฎเบฑเบเบชเบฒเบเบฒเบ™เป€เบ‚เบปเป‰เบฒเป€เบ–เบดเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ•เบฒเบกเบ›เบปเบเบเบฐเบ•เบด. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เป€เบžเบทเปˆเบญเบซเบผเบตเบเป€เบงเบฑเป‰เบ™เบšเบฑเบ™เบซเบฒเบเบฒเบ™เป€เบ›เบตเบ”เปƒเบŠเป‰ VG, เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡ VG เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ.

เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ cache LVM

เบกเบฒเบชเป‰เบฒเบ‡ LV เปƒเบ™ NVMe RAID 1 เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบเบญเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™.

#lvcreate -L 70871154688B --name cache root

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบˆเบถเปˆเบ‡เบกเบตเปœเป‰เบญเบ...?เบ„เบงเบฒเบกเบˆเบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ NVMe SSDs เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบกเบต cache SLC. 4 gigabytes เบ‚เบญเบ‡ "เบŸเบฃเบต" เปเบฅเบฐ 18 gigabyte เบ‚เบญเบ‡เป„เบ”เบ™เบฒเบกเบดเบเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบ„เบญเบšเบ„เบญเบ‡เบขเบนเปˆเปƒเบ™ 3-bit MLC. เป€เบกเบทเปˆเบญ cache เบ™เบตเป‰เบซเบกเบปเบ”เปเบฅเป‰เบง, NVMe SSDs เบˆเบฐเบšเปเปˆเป„เบงเบเบงเปˆเบฒ SATA SSD เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบกเบต cache. เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง, เบชเปเบฒเบฅเบฑเบšเป€เบซเบ”เบœเบปเบ™เบ™เบตเป‰, เบกเบฑเบ™เบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบซเบกเบฒเบเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เปเบ„เบ” LVM เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบเบงเปˆเบฒเบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ” SLC cache เบ‚เบญเบ‡ NVMe drive. เบชเปเบฒเบฅเบฑเบšเป„เบ” NVMe เบ—เบตเปˆเปƒเบŠเป‰, เบœเบนเป‰เบ‚เบฝเบ™เบ–เบทเบงเปˆเบฒเบกเบฑเบ™เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™เบ—เบตเปˆเบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰ 32-64 gigabytes เบ‚เบญเบ‡ cache.

เบ‚เบฐเบซเบ™เบฒเบ”เบžเบฒเบ—เบดเบŠเบฑเบ™เบ—เบตเปˆเปƒเบซเป‰เบกเบฒเปเบกเปˆเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบฅเบฐเบšเบฝเบš cache, cache metadata, เปเบฅเบฐ metadata backup 64 gigabyte.

เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบดเบ”เบฅเบฐเบšเบปเบšเป€เบ›เบทเป‰เบญเบ™, LVM เบˆเบฐเบซเบกเบฒเบ cache เบ—เบฑเบ‡เบซเบกเบปเบ”เป€เบ›เบฑเบ™เป€เบ›เบทเป‰เบญเบ™เปเบฅเบฐเบˆเบฐ synchronize เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ™เบตเป‰เบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบ—เบธเบเบ„เบฑเป‰เบ‡เบ—เบตเปˆ lvchange เบ–เบทเบเปƒเบŠเป‰เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ™เบตเป‰เบˆเบปเบ™เบเปˆเบงเบฒเบฅเบฐเบšเบปเบšเบˆเบฐเบ›เบดเบ”เป€เบ›เบตเบ”เปƒเบซเบกเปˆเบญเบตเบเบ„เบฑเป‰เบ‡. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบชเป‰เบฒเบ‡ cache เบ—เบฑเบ™เบ—เบตเป‚เบ”เบเปƒเบŠเป‰ script เบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก.

เบกเบฒเบชเป‰เบฒเบ‡ LV เปƒเบ™ SATA RAID 6 เป€เบžเบทเปˆเบญเปƒเบŠเป‰เบกเบฑเบ™เป€เบ›เบฑเบ™เบญเบธเบ›เบฐเบเบญเบ™เบ—เบตเปˆเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ.

#lvcreate -L 3298543271936B --name cache data

เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบžเบฝเบ‡เปเบ•เปˆเบชเบฒเบก terabytes ..?เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰ SATA SSD RAID 6 เบชเปเบฒเบฅเบฑเบšเบ„เบงเบฒเบกเบ•เป‰เบญเบ‡เบเบฒเบ™เบญเบทเปˆเบ™เป†. เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เปเบšเบšเป€เบ„เบทเปˆเบญเบ™เป„เบซเบง, เปƒเบ™เป€เบงเบฅเบฒเบšเบดเบ™, เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบขเบธเบ”เบฅเบฐเบšเบปเบš. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบขเบธเบ”เบŠเบปเปˆเบงเบ„เบฒเบงเปเบฅเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰ cache เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เปเบ•เปˆเบ›เบฐเป‚เบซเบเบ”เบ—เบตเปˆเป‚เบ”เบ”เป€เบ”เบฑเปˆเบ™เบ‚เบญเบ‡ LVM-cache over, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, bcache เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เบ—เบฑเบ™เบ—เบต.

เบกเบฒเบชเป‰เบฒเบ‡ VG เปƒเปเปˆเบชเบณเบฅเบฑเบšเบเบฒเบ™เป€เบเบฑเบšเบ‚เปเป‰เบกเบนเบ™.

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

เบกเบฒเบชเป‰เบฒเบ‡ LV เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เปเบ„เบ”.

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

เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบ—เบฑเบ™เบ—เบตเป„เบ”เป‰เป€เบญเบปเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡เบ—เบฑเบ‡เบซเบกเบปเบ”เปƒเบ™ /dev/data/cache เป€เบžเบทเปˆเบญเปƒเบซเป‰เบ—เบธเบเบžเบฒเบเบชเปˆเบงเบ™เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบทเปˆเบ™เป†เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™เปƒเบ™ /dev/root/cache. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบœเบดเบ”เบžเบฒเบ”, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเป‰เบฒเบเบกเบฑเบ™เป„เบ”เป‰เป‚เบ”เบเปƒเบŠเป‰ pvmove.

เบกเบฒเบชเป‰เบฒเบ‡ เปเบฅเบฐเป€เบ›เบตเบ”เปƒเบŠเป‰ 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 block เบเบปเบ‡เบเบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ LVM เบšเบฒเบ‡เป†. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเปเบšเบšเบชเบธเปˆเบก.

64k เปเบกเปˆเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบšเบฅเบฑเบญเบเบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบชเปเบฒเบฅเบฑเบš LVM เบšเบฒเบ‡เป†.

เบฅเบฐเบงเบฑเบ‡เบ‚เบฝเบ™เบ„เบทเบ™..!เปเบกเปˆเบ™เปเบฅเป‰เบง. เบ›เบฐเป€เบžเบ”เบ‚เบญเบ‡ cache เบ™เบตเป‰ defers เบ‚เบฝเบ™ synchronization เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™ cache. เบ™เบตเป‰เบซเบกเบฒเบเบ„เบงเบฒเบกเบงเปˆเบฒเบ–เป‰เบฒ cache เบชเบนเบ™เป€เบชเบ, เบ—เปˆเบฒเบ™เบญเบฒเบ”เบˆเบฐเบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™ cache. เบ•เปเปˆเบกเบฒ, เบœเบนเป‰เบ‚เบฝเบ™เบˆเบฐเบšเบญเบเบ—เปˆเบฒเบ™เบงเปˆเบฒเบกเบฒเบ”เบ•เบฐเบเบฒเบ™เปƒเบ”, เบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบ NVMe RAID 1, เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบžเบทเปˆเบญเบŠเบปเบ”เป€เบŠเบตเบเบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ™เบตเป‰.

เบ›เบฐเป€เบžเบ” cache เบ™เบตเป‰เป„เบ”เป‰เบ–เบทเบเป€เบฅเบทเบญเบเป‚เบ”เบเป€เบˆเบ”เบ•เบฐเบ™เบฒเป€เบžเบทเปˆเบญเบŠเบปเบ”เป€เบŠเบตเบเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเบ—เบตเปˆเบšเปเปˆเบ”เบตเบ‚เบญเบ‡ RAID 6.

เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš:

#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)

เบžเบฝเบ‡เปเบ•เปˆ [cachedata_corig] เบ„เบงเบ™เบขเบนเปˆเปƒเบ™ /dev/data/cache. เบ–เป‰เบฒเบกเบตเบšเบฒเบ‡เบขเปˆเบฒเบ‡เบœเบดเบ”เบžเบฒเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เปƒเบŠเป‰ pvmove.

เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ›เบดเบ”เบเบฒเบ™เปƒเบŠเป‰เบ‡เบฒเบ™ cache เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ”เบฝเบง:

#lvconvert -y --uncache cache/cachedata

เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบญเบญเบ™เป„เบฅเบ™เปŒ. LVM เบžเบฝเบ‡เปเบ•เปˆเบˆเบฐ sync cache เบเบฑเบš disk, เป€เบญเบปเบฒเบกเบฑเบ™เบญเบญเบ, เปเบฅเบฐเบ›เปˆเบฝเบ™เบŠเบทเปˆ cachedata_corig เบเบฑเบšเบ„เบทเบ™เป„เบ›เบšเปˆเบญเบ™ cachedata.

เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ LVM เบšเบฒเบ‡

เบ‚เปเปƒเบซเป‰เบ„เบฒเบ”เบ„เบฐเป€เบ™เบ›เบฐเบกเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบชเปเบฒเบฅเบฑเบš LVM เบšเบฒเบ‡ metadata:

#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"

เบฎเบญเบšเป€เบ–เบดเบ‡ 4 เบเบดเบเบฒเป„เบš: 4294967296B

เบ„เบนเบ™เบ”เป‰เบงเบเบชเบญเบ‡ เปเบฅเบฐเป€เบžเบตเปˆเบก 4194304B เบชเปเบฒเบฅเบฑเบš LVM PV metadata: 8594128896B
เปƒเบซเป‰เบชเป‰เบฒเบ‡เบžเบฒเบ—เบดเบŠเบฑเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเปˆเบฝเบงเบเบฑเบš NVMe RAID 1 เป€เบžเบทเปˆเบญเบงเบฒเบ‡ LVM เบšเบฒเบ‡ metadata เปเบฅเบฐเบชเปเบฒเป€เบ™เบปเบฒเบชเปเบฒเบฎเบญเบ‡เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบชเปˆเบกเบฑเบ™:

#lvcreate -L 8594128896B --name images root

เป€เบžเบทเปˆเบญโ€‹เบซเบเบฑเบ‡..?เปƒเบ™เบ—เบตเปˆเบ™เบตเป‰เบ„เปเบฒเบ–เบฒเบกเบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™: เป€เบ›เบฑเบ™เบซเบเบฑเบ‡เบงเบฒเบ‡ LVM เบšเบฒเบ‡ metadata เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ–เป‰เบฒเบกเบฑเบ™เบเบฑเบ‡เบˆเบฐเบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™ NVMe เปเบฅเบฐเบˆเบฐเป€เบฎเบฑเบ”เบงเบฝเบเป„เบ”เป‰เป„เบง.

เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ„เบงเบฒเบกเป„เบงเปเบกเปˆเบ™เบชเปเบฒเบ„เบฑเบ™เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰, เบกเบฑเบ™เปเบกเปˆเบ™เบขเบนเปˆเป„เบเบˆเบฒเบเป€เบซเบ”เบœเบปเบ™เบ•เบปเป‰เบ™เบ•เป. เบชเบดเปˆเบ‡เบ—เบตเปˆเปเบกเปˆเบ™เบงเปˆเบฒ cache เปเบกเปˆเบ™เบˆเบธเบ”เบ‚เบญเบ‡เบ„เบงเบฒเบกเบฅเบปเป‰เบกเป€เบซเบผเบง. เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบญเบฒเบ”เบˆเบฐเป€เบเบตเบ”เบ‚เบทเป‰เบ™เบเบฑเบšเบกเบฑเบ™, เปเบฅเบฐเบ–เป‰เบฒ LVM เบšเบฒเบ‡ metadata เบ–เบทเบเป€เบเบฑเบšเป„เบงเป‰, เบกเบฑเบ™เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เบชเบนเบ™เป€เบชเบเป„เบ›เบซเบกเบปเบ”. เบ–เป‰เบฒเบšเปเปˆเบกเบต metadata เบ„เบปเบšเบ–เป‰เบงเบ™, เบกเบฑเบ™เบˆเบฐเป€เบเบทเบญเบšเป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเบฅเบงเบšเบฅเบงเบกเบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†.

เป‚เบ”เบเบเบฒเบ™เบเป‰เบฒเบเป€เบกเบ•เบฒเป€เบ”เบ•เบฒเป„เบ›เบซเบฒเบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™เบ—เบตเปˆเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ, เปเบ•เปˆเป„เบง, เบ›เบฐเบฅเบดเบกเบฒเบ™, เบžเบงเบเป€เบฎเบปเบฒเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ‚เบญเบ‡เป€เบกเบ•เบฒเป€เบ”เบ•เบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเปเบ„เบ” เบซเบผเบทเบเบฒเบ™เบชเปเป‰เบฅเบฒเบ”เบšเบฑเบ‡เบซเบผเบงเบ‡. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเป€เบเบตเบ”เบˆเบฒเบเบเบฒเบ™เบชเบนเบ™เป€เบชเบเปเบ„เบ”เบˆเบฐเบ–เบทเบเบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™เบžเบฒเบเปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†, เป€เบŠเบดเปˆเบ‡เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบเบฒเบ™เบŸเบทเป‰เบ™เบ•เบปเบงเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เป‚เบ”เบเบ„เปเบฒเบชเบฑเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเบซเบ™เบฒเบ”. เบ”เป‰เบงเบเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบนเบ‡, เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบ–เบทเบเบŸเบทเป‰เบ™เบŸเบนเป‚เบ”เบเปƒเบŠเป‰เบšเบฑเบ™เบ—เบถเบ FS.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบ–เป‰เบฒเบžเบฒเบšเบ–เปˆเบฒเบเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เป„เบ”เป‰เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰, เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ cache เป„เบ”เป‰เบ–เบทเบ synchronized เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบซเบ™เบถเปˆเบ‡เบ„เบฑเป‰เบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบญเบญเบเปเบšเบšเบžเบฒเบเปƒเบ™เบ‚เบญเบ‡ LVM เบšเบฒเบ‡, เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡ snapshot เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบ cache. .

เบ‚เปเปƒเบซเป‰เบชเป‰เบฒเบ‡ VG เปƒเบซเบกเปˆเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบฐเบซเบ™เบญเบ‡เบšเบฒเบ‡เป†:

#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
เป€เบ›เบฑเบ™เบซเบเบฑเบ‡ -Z yเบ™เบญเบเป€เบซเบ™เบทเบญเบˆเบฒเบเบชเบดเปˆเบ‡เบ—เบตเปˆเป‚เบซเบกเบ”เบ™เบตเป‰เบกเบตเบˆเบธเบ”เบ›เบฐเบชเบปเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡ - เป€เบžเบทเปˆเบญเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰เบ‚เปเป‰เบกเบนเบ™เบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡ virtual เบˆเบฒเบเบเบฒเบ™เบฎเบปเปˆเบงเป„เบซเบฅเป„เบ›เบซเบฒเป€เบ„เบทเปˆเบญเบ‡ virtual เบญเบทเปˆเบ™เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปเบˆเบเบขเบฒเบเบžเบทเป‰เบ™เบ—เบตเปˆ - zeroing เบเบฑเบ‡เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡เบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเปƒเบ™เบšเบฅเบฑเบญเบเบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒ 64k. เบเบฒเบ™เบ‚เบฝเบ™เปƒเบ”เป†เบ—เบตเปˆเบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 64k เป„เบ›เบซเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบˆเบฑเบ”เบชเบฑเบ™เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ 64K edge-aligned เปƒเบ™ cache. เบ™เบตเป‰เบˆเบฐเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เป‚เบ”เบเบœเปˆเบฒเบ™ cache, bypassing เบญเบธเบ›เบฐเบเบญเบ™ cache.

เปƒเบซเป‰เบเป‰เบฒเบ LVs เป„เบ›เบซเบฒ 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=256write --bs=256k --rw=write
--name=128write --bs=128k --rw=write
--name=64write --bs=64k --rw=write
--name=32write --bs=32k --rw=write
--name=16write --bs=16k --rw=write
--name=8write --bs=8k --rw=write
--name=4write --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 เบงเบดเบ™เบฒเบ—เบต. เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเปเบกเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบšเบฑเบ™เบ—เบถเบเบซเบผเบฒเบเปƒเบ™ NVMe เปƒเบ™ 4 เบงเบดเบ™เบฒเบ—เบต. เบชเบนเบ‡เบชเบธเบ” 3 เบเบดเบเบฐเป„เบšเบ•เปเปˆเบงเบดเบ™เบฒเบ—เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปเบ•เปˆเบฅเบฐเป„เบฅเบเบฐเบ‚เบญเบ‡เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบ‚เบฝเบ™เบชเบฒเบกเบฒเบ”เบเบดเบ™เป€เบ–เบดเบ‡ 216 gigabytes เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ SSD เบˆเบฒเบเบ—เปˆเบฒเบ™.

เบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบเบฒเบ™เบ‚เบฝเบ™เบ›เบฐเบชเบปเบก?เปเบกเปˆเบ™เปเบฅเป‰เบง. เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ—เบตเปˆเบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเบเบฒเบ™เบญเปˆเบฒเบ™เปเบฅเบฐเบ‚เบฝเบ™เปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเบฎเบนเป‰เบชเบถเบเบ—เบตเปˆเบˆเบฐเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒ cache เบ—เบฑเบ‡เบซเบกเบปเบ”เบ–เบทเบ synchronized เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบ‚เบฝเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เบเปˆเบญเบ™เบซเบ™เป‰เบฒเบ™เบตเป‰เบšเปเปˆเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เบญเปˆเบฒเบ™.

เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบˆเบฐเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปเบฅเบฐเบญเบฑเบ™เบ•เปเปˆเบกเบฒเบเป‰เบญเบ™เบงเปˆเบฒ cache เปเบฅเบฐเบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบ•เบทเปˆเบกเบ‚เปเป‰เบกเบนเบ™เปƒเบชเปˆ, เปเบฅเบฐเบเบฑเบ‡เบ‚เบถเป‰เบ™เบเบฑเบšเบงเปˆเบฒเบฅเบฐเบšเบปเบšเบ„เบธเป‰เบกเบ„เบญเบ‡เป€เบžเบทเปˆเบญ synchronize cache เบ—เบตเปˆเป€เบ•เบฑเบกเป„เบ›เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ.

เปƒเบ™เบšเบฑเบ™เบ”เบฒเบชเบดเปˆเบ‡เบญเบทเปˆเบ™เป†, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ‚เปเปเบ™เบฐเบ™เปเบฒเปƒเบซเป‰เบงเบฑเบ”เปเบ—เบเบ„เบงเบฒเบกเป„เบงเปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบตเปˆเบšเบฒเบ‡เป†เป€เบ•เบฑเบกเบ—เบตเปˆเปเบฅเป‰เบงเบˆเบฒเบเบเบฒเบ™เบ–เปˆเบฒเบเบฎเบนเบšเบ—เบตเปˆเบžเบฝเบ‡เปเบ•เปˆเบ–เบทเบเบ–เปˆเบฒเบ. เบœเบนเป‰เบ‚เบฝเบ™เป„เบ”เป‰เบกเบตเป‚เบญเบเบฒเบ”เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเป€เบฅเบฑเปˆเบ‡เบขเปˆเบฒเบ‡เป„เบงเบงเบฒเบซเบผเบฑเบ‡เบˆเบฒเบเบชเป‰เบฒเบ‡เบžเบฒเบšเบ–เปˆเบฒเบเบ—เปเบฒเบญเบดเบ”, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ cache เบเบฑเบ‡เบšเปเปˆเบ—เบฑเบ™เป€เบ•เบฑเบก. เบญเบฑเบ™เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบถเป‰เบ™เบเป‰เบญเบ™เบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบ-on-write write semantics, เบเบฒเบ™เบˆเบฑเบ”เบฅเบฝเบ‡เบ‚เบญเบ‡ cache เปเบฅเบฐ block volume เบšเบฒเบ‡เป†, เปเบฅเบฐเบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบเบฒเบ™เบ‚เบฝเบ™เปเบšเบšเบชเบธเปˆเบกเปƒเบชเปˆ RAID 6 เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เบญเปˆเบฒเบ™เปเบšเบšเบชเบธเปˆเบกเบˆเบฒเบ RAID 6 เบ•เบดเบ”เบ•เบฒเบกเบ”เป‰เบงเบเบเบฒเบ™เบ‚เบฝเบ™เปƒเบชเปˆ cache. เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบญเปˆเบฒเบ™เปเบšเบšเบชเบธเปˆเบกเบˆเบฒเบ RAID 6 เปเบกเปˆเบ™เบชเบนเบ‡เป€เบ–เบดเบ‡ 6 เป€เบ—เบทเปˆเบญ (เบˆเปเบฒเบ™เบงเบ™ SATA SSDs เปƒเบ™เบญเบฒเป€เบฅ) เป„เบงเบเบงเปˆเบฒเบเบฒเบ™เบ‚เบฝเบ™. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบ•เบฑเบ™เบชเปเบฒเบฅเบฑเบš CoW เบ–เบทเบเบˆเบฑเบ”เบชเบฑเบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบˆเบฒเบเบชเบฐเบ™เบธเบเป€เบเบตเบšเบฒเบ‡เป†, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ, เบชเปเบฒเบฅเบฑเบšเบชเปˆเบงเบ™เปƒเบซเบเปˆ, เบเบฑเบ‡เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบฅเปเบฒเบ”เบฑเบš.

เบ—เบฑเบ‡เบชเบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบ›เบฐเป‚เบซเบเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™.

Cache เบžเบฒเบšเบ–เปˆเบฒเบ โ€œเบชเบญเบ”เบ„เปˆเบญเบ‡โ€

เป€เบžเบทเปˆเบญเบซเบผเบธเบ”เบœเปˆเบญเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบ / เบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ‚เบญเบ‡เบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒ, เบœเบนเป‰เบ‚เบฝเบ™เบชเบฐเป€เบซเบ™เบตเปƒเบซเป‰เปเบ™เบฐเบ™เปเบฒเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบซเบกเบธเบ™เบ‚เบญเบ‡ snapshots เป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰.

เบ—เปเบฒเบญเบดเบ”, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ metadata เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เบขเบนเปˆเปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™ uncached, metadata เบˆเบฐเบชเบญเบ”เบ„เปˆเบญเบ‡เปเบฅเบฐเบเบฒเบ™เบชเบนเบ™เป€เบชเบเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบˆเบฐเบ–เบทเบเปเบเบเบญเบญเบเบžเบฒเบเปƒเบ™เบ•เบฑเบ™เบ‚เปเป‰เบกเบนเบ™.

เบงเบปเบ‡เบˆเบญเบ™เบเบฒเบ™เบซเบกเบธเบ™เบ‚เบญเบ‡ snapshot เบ•เปเปˆเป„เบ›เบ™เบตเป‰เบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบ„เบงเบฒเบกเบชเบปเบกเบšเบนเบ™เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบžเบฒเบเปƒเบ™ snapshots เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบเบฒเบ™เบชเบนเบ™เป€เบชเบ cache:

  1. เบชเปเบฒเบฅเบฑเบšเปเบ•เปˆเบฅเบฐเบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบ—เบตเปˆเบกเบตเบŠเบทเปˆ <name>, เบชเป‰เบฒเบ‡ snapshot เบ—เบตเปˆเบกเบตเบŠเบทเปˆ <name>.cached
  2. เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบ›เบฑเบ™เบกเบนเบ™เบ„เปˆเบฒเบชเบนเบ‡เบ—เบตเปˆเบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. เปƒเบ™ loop เบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เป€เบšเบดเปˆเบ‡เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบ•เบฑเบ™เป€เบ›เบทเป‰เบญเบ™เปƒเบ™ cache: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' เบˆเบปเบ™เบเปˆเบงเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบšเบชเบนเบ™. เบ–เป‰เบฒเบชเบนเบ™เบซเบฒเบเป„เบ›เบ”เบปเบ™เป€เบเบตเบ™เป„เบ›, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™ cache เบŠเบปเปˆเบงเบ„เบฒเบงเป€เบ›เบฑเบ™เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบ‚เบฝเบ™เบœเปˆเบฒเบ™. เบขเปˆเบฒเบ‡เปƒเบ”เบเปเบ•เบฒเบก, เบเบฒเบ™เบ„เปเบฒเบ™เบถเบ‡เป€เบ–เบดเบ‡เบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบ„เบงเบฒเบกเป„เบงเบ‚เบญเบ‡ SATA เปเบฅเบฐ NVMe SSD arrays เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ TBW เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ, เบ—เปˆเบฒเบ™เบˆเบฐเบชเบฒเบกเบฒเบ”เบˆเบฑเบšเป€เบงเบฅเบฒเบขเปˆเบฒเบ‡เป„เบงเบงเบฒเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™ cache mode, เบซเบผเบทเบฎเบฒเบ”เปเบงเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบˆเบฐเบเบดเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™. เบชเบญเบ‡โ€‹เบชเบฒเบกโ€‹เบกเบทเป‰. เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เปƒเบ™เบซเบผเบฑเบเบเบฒเบ™, เบฅเบฐเบšเบปเบšเปเบกเปˆเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เบขเบนเปˆเบžเบฒเบเปƒเบ•เป‰ 100% เบ‚เบญเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เป„เบ”เป‰เบ•เบฐเบซเบผเบญเบ”เป€เบงเบฅเบฒ. NVMe SSDs เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเบฒเบเปƒเบ•เป‰เบเบฒเบ™เป‚เบซเบผเบ”เบเบฒเบ™เบ‚เบฝเบ™ 100% เบˆเบฐเบซเบกเบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปƒเบ™ 3-4 เบกเบทเป‰. SATA SSDs เบˆเบฐเบกเบตเบญเบฒเบเบธเบžเบฝเบ‡เปเบ•เปˆเบชเบญเบ‡เป€เบ—เบปเปˆเบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบกเบกเบธเบ”เบงเปˆเบฒเบเบฒเบ™เป‚เบซเบผเบ”เบชเปˆเบงเบ™เปƒเบซเบเปˆเป„เบ›เบซเบฒเบเบฒเบ™เบญเปˆเบฒเบ™, เปเบฅเบฐเบžเบงเบเป€เบฎเบปเบฒเบกเบตเบเบฒเบ™เบฅเบฐเป€เบšเบตเบ”เปƒเบ™เป„เบฅเบเบฐเบชเบฑเป‰เบ™เบ‚เบญเบ‡เบเบดเบ”เบˆเบฐเบเปเบฒเบ—เบตเปˆเบชเบนเบ‡เบ—เบตเปˆเบชเบธเบ”เบฅเบงเบกเบเบฑเบšเบเบฒเบ™เป‚เบซเบผเบ”เบ•เปˆเปเบฒเป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฝเบ™.
  4. เบ—เบฑเบ™เบ—เบตเบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฑเบšเป„เบ”เป‰ (เบซเบผเบทเป€เบฎเบฑเบ”เปƒเบซเป‰) เป€เบ›เบฑเบ™เบชเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ›เปˆเบฝเบ™เบŠเบทเปˆ <name>.cached เป€เบ›เบฑเบ™ <name>.committed. <name>.committed เป€เบเบปเปˆเบฒเบ–เบทเบเบฅเบถเบš.
  5. เบ—เบฒเบ‡เป€เบฅเบทเบญเบ, เบ–เป‰เบฒเปเบ„เบ”เป€เบ•เบฑเบก 100%, เบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ–เบทเบเบชเป‰เบฒเบ‡เปƒเบซเบกเปˆเป‚เบ”เบเบชเบฐเบ„เบดเบš, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เบฅเป‰เบฒเบ‡เบกเบฑเบ™. เบ”เป‰เบงเบ cache เป€เบ„เบดเปˆเบ‡เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ, เบฅเบฐเบšเบปเบšเป€เบฎเบฑเบ”เบงเบฝเบเป„เบงเบ‚เบถเป‰เบ™เบซเบผเบฒเบเป€เบกเบทเปˆเบญเบ‚เบฝเบ™.
  6. เบ•เบฑเป‰เบ‡เป€เบเบ™เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบ›เบฑเบ™เบชเบนเบ™: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata เบ™เบตเป‰เบˆเบฐเบ›เป‰เบญเบ‡เบเบฑเบ™เบšเปเปˆเปƒเบซเป‰ cache เบˆเบฒเบเบเบฒเบ™ synchronizing เบเบฑเบšเบชเบทเปˆเบ•เบปเป‰เบ™เบ•เปเบŠเบปเปˆเบงเบ„เบฒเบง.
  7. เบžเบงเบเป€เบฎเบปเบฒเบฅเปเบ–เป‰เบฒเบˆเบปเบ™เบเปˆเบงเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบซเบผเบฒเบเบ‚เบญเบ‡เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบชเบปเบกเบขเบนเปˆเปƒเบ™ cache #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' เบซเบผเบทเป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบšเป€เบงเบฅเบฒเบˆเบฐเบ›เบดเบ”.
  8. เบžเบงเบเป€เบฎเบปเบฒเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเบญเบตเบเบ„เบฑเป‰เบ‡.

เป€เบ›เบฑเบ™โ€‹เบซเบเบฑเบ‡โ€‹เบˆเบถเปˆเบ‡โ€‹เบกเบตโ€‹เบ„เบงเบฒเบกโ€‹เบซเบเบธเป‰เบ‡โ€‹เบเบฒเบโ€‹เบเบฑเบšโ€‹เบฅเบฐโ€‹เบ”เบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบ„เบทเปˆเบญเบ™โ€‹เบเป‰เบฒเบ ...?เบชเบดเปˆเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ•เบปเบงเบˆเบดเบ‡, เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ "เปเบšเบšเบชเบธเปˆเบก" เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบงเบšเปเปˆเปเบกเปˆเบ™เปเบšเบšเบชเบธเปˆเบกเบขเปˆเบฒเบ‡เบชเบปเบกเบšเบนเบ™. เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เปƒเบซเป‰เบเบฑเบšเบ‚เบฐเปเบซเบ™เบ‡เบเบฒเบ™เบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ” 4 เบเบดเป‚เบฅเป„เบš, เบกเบตเบ„เบงเบฒเบกเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰เบชเบนเบ‡เบ—เบตเปˆเปƒเบ™เบชเบญเบ‡เบชเบฒเบกเบ™เบฒเบ—เบตเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ, เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบˆเบฐเบ–เบทเบเป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™เบ‚เบฐเปเบซเบ™เบ‡เบ”เบฝเบงเบเบฑเบ™เบซเบผเบทเบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ‚เบฐเปเบซเบ™เบ‡เปƒเบเป‰เบ„เบฝเบ‡ (+- 32K).

เป‚เบ”เบเบเปเบฒเบ™เบปเบ”เบ‚เบญเบšเป€เบ‚เบ”เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ™เบเป‰เบฒเบเป€เบ›เบฑเบ™เบชเบนเบ™, เบžเบงเบเป€เบฎเบปเบฒเป€เบฅเบทเปˆเบญเบ™เบเบฒเบ™เบ‚เบฝเบ™ synchronization เบขเบนเปˆเปƒเบ™ SATA SSD เปเบฅเบฐเบฅเบงเบšเบฅเบงเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เป„เบ›เบซเบฒเบซเบ™เบถเปˆเบ‡ 64K block เปƒเบ™ cache. เบ™เบตเป‰เบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ‚เบญเบ‡ SATA SSD เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบ.

เบฅเบฐเบซเบฑเบ”เบขเบนเปˆเปƒเบช..?เปเบ•เปˆเบซเบ™เป‰เบฒเป€เบชเบเบ”เบฒเบ, เบœเบนเป‰เบ‚เบฝเบ™เบ–เบทเบงเปˆเบฒเบ•เบปเบ™เป€เบญเบ‡เบกเบตเบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เบšเปเปˆเบžเบฝเบ‡เบžเปเปƒเบ™เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ bash scripts เป€เบžเบฒเบฐเบงเปˆเบฒเบฅเบฒเบงเบชเบญเบ™เบ•เบปเบ™เป€เบญเบ‡ 100% เปเบฅเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ "google" เบ—เบตเปˆเบ‚เบฑเบšเป€เบ„เบทเปˆเบญเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบฅเบฒเบงเป€เบŠเบทเปˆเบญเบงเปˆเบฒเบฅเบฐเบซเบฑเบ”เบ‚เบตเป‰เบฎเป‰เบฒเบเบ—เบตเปˆเบญเบญเบเบกเบฒเบˆเบฒเบเบกเบทเบ‚เบญเบ‡เบฅเบฒเบงเบšเปเปˆเบ„เบงเบ™เบ–เบทเบเปƒเบŠเป‰เป‚เบ”เบเปƒเบœ. เบญเบทเปˆเบ™.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบ„เบดเบ”เบงเปˆเบฒเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เปƒเบ™เบ”เป‰เบฒเบ™เบ™เบตเป‰เบˆเบฐเบชเบฒเบกเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเบขเปˆเบฒเบ‡เป€เบ›เบฑเบ™เป€เบญเบเบฐเบฅเบฒเบ”เบ•เบฒเบกเป€เบซเบ”เบœเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เบ–เป‰เบฒเบˆเปเบฒเป€เบ›เบฑเบ™, เปเบฅเบฐ, เบšเบฒเบ‡เบ—เบต, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เบญเบญเบเปเบšเบšเบ—เบตเปˆเบชเบงเบเบ‡เบฒเบกเป€เบ›เบฑเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™เบ—เบตเปˆเบกเบตเบฅเบฐเบšเบปเบš, เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบœเบนเป‰เบ‚เบฝเบ™เบžเบฐเบเบฒเบเบฒเบกเป€เบฎเบฑเบ”.

เบฎเบนเบšเปเบšเบšเบเบฒเบ™เบซเบกเบนเบ™เบงเบฝเบ™ snapshot เบ‡เปˆเบฒเบเป†เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบกเบต snapshot เบชเบฐเป€เบซเบกเบต synchronized เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เปƒเบ™ SATA SSD, เปเบ•เปˆเบเบฑเบ‡เบˆเบฐเบŠเปˆเบงเบเปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒ, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ utility thin_delta, เป€เบžเบทเปˆเบญเบŠเบญเบเบซเบฒเบงเปˆเบฒ block เปƒเบ”เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบกเบฑเบ™, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบ„เบงเบฒเบกเป€เบชเบเบซเบฒเบเบขเบนเปˆเปƒเบ™เบ—เป‰เบญเบ‡เบ–เบดเปˆเบ™. เบ›เบฐโ€‹เบฅเบดโ€‹เบกเบฒเบ™โ€‹เบ•เบปเป‰เบ™โ€‹เบ•เปโ€‹, เบเบฒเบ™โ€‹เบŸเบทเป‰เบ™โ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบโ€‹เบซเบผเบฒเบโ€‹.

TRIM/DISCARD เปƒเบ™ libvirt/KVM

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบˆเบฐเบ–เบทเบเปƒเบŠเป‰เบชเปเบฒเบฅเบฑเบš KVM เปเบฅเปˆเบ™ libvirt, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบ„เบงเบฒเบกเบ„เบดเบ”เบ—เบตเปˆเบ”เบตเบ—เบตเปˆเบˆเบฐเบชเบญเบ™ VMs เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเป€เบญเบปเบฒเบžเบทเป‰เบ™เบ—เบตเปˆเบซเบงเปˆเบฒเบ‡, เปเบ•เปˆเบเบฑเบ‡เป€เบฎเบฑเบ”เปƒเบซเป‰เบชเบดเปˆเบ‡เบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบญเบตเบเบ•เปเปˆเป„เบ›.

เบญเบฑเบ™เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เป‚เบ”เบเบเบฒเบ™เบˆเบณเบฅเบญเบ‡เบเบฒเบ™เบฎเบญเบ‡เบฎเบฑเบš TRIM/DISCARD เปƒเบ™เปเบœเปˆเบ™เบชเบฐเป€เปเบทเบญเบ™. เป€เบžเบทเปˆเบญเป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบตเป‰, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เปˆเบฝเบ™เบ›เบฐเป€เบžเบ”เบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเป€เบ›เบฑเบ™ virtio-scsi เปเบฅเบฐเปเบเป‰เป„เบ‚ xml.

#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>

เบเบฒเบ™เบเบปเบเป€เบฅเบตเบเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบˆเบฒเบ OSes เปเบ‚เบเบ–เบทเบเบ›เบฐเบกเบงเบ™เบœเบปเบ™เบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เป‚เบ”เบ LVM, เปเบฅเบฐเบ•เบฑเบ™เป„เบ”เป‰เบ–เบทเบเบ›เบปเบ”เบ›เปˆเบญเบเบขเปˆเบฒเบ‡เบ–เบทเบเบ•เป‰เบญเบ‡เบ—เบฑเบ‡เปƒเบ™ cache เปเบฅเบฐเปƒเบ™เบชเบฐเบ™เบธเบเป€เบเบตเบšเบฒเบ‡เป†. เปƒเบ™โ€‹เบเปโ€‹เบฅเบฐโ€‹เบ™เบตโ€‹เบ‚เบญเบ‡โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹, เบ™เบตเป‰โ€‹เปเบกเปˆเบ™โ€‹เป€เบเบตเบ”โ€‹เบ‚เบถเป‰เบ™โ€‹เบชเปˆเบงเบ™โ€‹เปƒเบซเบเปˆโ€‹เปเบกเปˆเบ™โ€‹เปƒเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐโ€‹เบŠเบฑเบโ€‹เบŠเป‰เบฒโ€‹, เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ—เบตเปˆโ€‹เบฅเบถเบšโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ•เปเปˆโ€‹เป„เบ›โ€‹.

BTRFS Backup

เปƒเบŠเป‰เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบžเป‰เบญเบกเปเบฅเป‰เบงเบเบฑเบš เบ—เบตเปˆโ€‹เบชเบธเบ” เบฅเบฐโ€‹เบกเบฑเบ”โ€‹เบฅเบฐโ€‹เบงเบฑเบ‡โ€‹เปเบฅเบฐโ€‹ เบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบœเบนเป‰เบ‚เบฝเบ™เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เบ™เบตเป‰เบ”เป‰เบงเบเบ•เบปเบ™เป€เบญเบ‡เปเบฅเบฐเบชเบฐเป€เบžเบฒเบฐเบชเปเบฒเบฅเบฑเบšเบ•เบปเบ™เป€เบญเบ‡. เบ‚เป‰เบญเบเปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบœเบนเป‰เปƒเบŠเป‰ Linux เบ—เบตเปˆเบกเบตเบ›เบฐเบชเบปเบšเบเบฒเบ™เบซเบผเบฒเบเบ„เบปเบ™เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™, เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ„เบฑเบ”เบฅเบญเบเบ‚เบญเบ‡เบ„เบปเบ™เบญเบทเปˆเบ™.

เบกเบฒเบชเป‰เบฒเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เปƒเบ™เบญเบธเบ›เบฐเบเบญเบ™เบชเบณเบฎเบญเบ‡:

#lvcreate -L 256G --name backup backup

เปƒเบซเป‰เบˆเบฑเบ”เบฎเบนเบšเปเบšเบšเปƒเบ™ BTRFS:

#mkfs.btrfs /dev/backup/backup

เบกเบฒเบชเป‰เบฒเบ‡เบˆเบธเบ” mount เปเบฅเบฐ mount เบชเปˆเบงเบ™เบเปˆเบญเบเบฎเบฒเบเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒ:

#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

เบ‚เปเปƒเบซเป‰เบชเบณเป€เบ™เบปเบฒเบชเบฐเบ„เบฃเบดเบš:

เบฅเบฐเบซเบฑเบ” bash เบ—เบตเปˆเบซเบ™เป‰เบฒเบขเป‰เบฒเบ™เบซเบผเบฒเบ. เปƒเบŠเป‰เบขเบนเปˆเปƒเบ™เบ„เบงเบฒเบกเบชเปˆเบฝเบ‡เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡. เบซเป‰เบฒเบกโ€‹เบ‚เบฝเบ™โ€‹เบˆเบปเบ”เปเบฒเบโ€‹เปƒเบˆโ€‹เบฎเป‰เบฒเบโ€‹เปƒเบซเป‰โ€‹เบœเบนเป‰โ€‹เบ‚เบฝเบ™...#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 "%fn" | 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 เปเบฅเบฐเบ„เบฑเบ”เบฅเบญเบเบžเบงเบเบกเบฑเบ™เป„เบ›เบซเบฒ FS เบญเบทเปˆเบ™เป‚เบ”เบเปƒเบŠเป‰ BTRFS เบชเบปเปˆเบ‡ / เบฎเบฑเบš.

เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบชเบฒเบกเบฒเบ”เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เบเบฒเบง, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เปƒเบ™เบ•เบญเบ™เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™, เบ‚เปเป‰เบกเบนเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบˆเบฐเบ–เบทเบเบ„เบฑเบ”เบฅเบญเบ. เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ•เปเปˆเป„เบ›เบˆเบฐเป„เบงเบซเบผเบฒเบ, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบˆเบฐเบ–เบทเบเบ„เบฑเบ”เบฅเบญเบ.

script เบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบชเปˆเป€เบ‚เบปเป‰เบฒเปƒเบ™ cron:

เบšเบฒเบ‡เบฅเบฐเบซเบฑเบ” bash เป€เบžเบตเปˆเบกเป€เบ•เบตเบก#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

เบกเบฑเบ™เป€เบฎเบฑเบ”เบซเบเบฑเบ‡..?เบชเป‰เบฒเบ‡ เปเบฅเบฐ synchronizes snapshots เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™ BTRFS เบ—เบตเปˆเบกเบตเบฅเบฒเบเบŠเบทเปˆเบขเบนเปˆเปƒเบ™ FS เบชเปเบฒเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบ™เบตเป‰โ€‹, เบกเบฑเบ™โ€‹เบฅเบถเบšโ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ—เบฑเบ‡โ€‹เบซเบกเบปเบ”โ€‹เบ—เบตเปˆโ€‹เบชเป‰เบฒเบ‡โ€‹เบ•เบฑเป‰เบ‡โ€‹เบ‚เบถเป‰เบ™ 60 เบกเบทเป‰โ€‹เบเปˆเบญเบ™โ€‹เบซเบ™เป‰เบฒโ€‹เบ™เบตเป‰โ€‹. เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เป€เบ›เบตเบ”โ€‹เบ•เบปเบงโ€‹, เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ›เบฐโ€‹เบˆเปเบฒโ€‹เบงเบฑเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ›เบฐโ€‹เบฅเบดโ€‹เบกเบฒเบ™โ€‹เบ—เบตเปˆโ€‹เบฅเบฐโ€‹เบšเบธโ€‹เป„เบงเป‰โ€‹เบˆเบฐโ€‹เบ›เบฒโ€‹เบเบปเบ”โ€‹เบขเบนเปˆโ€‹เปƒเบ™ /backup/btrfs/back/remote/ subdirectories.

เปƒเบซเป‰เบชเบดเบ”เบ›เบฐเบ•เบดเบšเบฑเบ”เบฅเบฐเบซเบฑเบ”:

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

เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เปเบฅเบฐเปƒเบชเปˆเปƒเบ™ cron:

#/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

เบกเบฒเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบชเปเบฒเบฅเบฑเบš scripts:

#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

เบกเบฑเบ™เป€เบฎเบฑเบ”เบซเบเบฑเบ‡...?เบ›เบฐเบเบญเบšเบ”เป‰เบงเบเบŠเบธเบ”เบ‚เบญเบ‡เบ„เปเบฒเบชเบฑเปˆเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ snapshots เบšเบฒเบ‡เป†เปเบฅเบฐ synchronizing เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบชเบญเบ‡ snapshots เบšเบฒเบ‡เบ—เบตเปˆเป„เบ”เป‰เบฎเบฑเบšเป‚เบ”เบเบœเปˆเบฒเบ™ thin_delta เบเบฑเบšเบญเบธเบ›เบฐเบเบญเบ™ block เบญเบทเปˆเบ™เป‚เบ”เบเปƒเบŠเป‰ ddrescue เปเบฅเบฐ blkdiscard.

script เบญเบทเปˆเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบชเปˆเปƒเบ™ cron:

bash เบซเบผเบฒเบเป€เบฅเบฑเบเบ™เป‰เบญเบ#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

เบกเบฑเบ™เป€เบฎเบฑเบ”เบซเบเบฑเบ‡...?เปƒเบŠเป‰เบชเบฐเบ„เบฃเบดเบšเบเปˆเบญเบ™เปœเป‰เบฒเป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡ เปเบฅเบฐเบŠเบดเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เบเบฒเบ™เบชเบณเบฎเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰. เบชเบฐเบ„เบฃเบดเบšเบˆเบฐเบ›เปˆเบญเบเปƒเบซเป‰เบžเบฒเบšเบ–เปˆเบฒเบเบ—เบตเปˆเบšเปเปˆเป€เบ„เบทเปˆเบญเบ™เป„เบซเบงเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบตเปˆเบฅเบฐเบšเบธเป„เบงเป‰, เป€เบŠเบดเปˆเบ‡เบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ•เบดเบ”เบ•เบฒเบกเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เบŠเบดเป‰เบ‡เบ‚เปเป‰เบกเบนเบ™เบ„เบฑเป‰เบ‡เบชเบธเบ”เบ—เป‰เบฒเบ.

script เบ™เบตเป‰เบ•เป‰เบญเบ‡เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚, เบฅเบฐเบšเบธเบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ‚เบญเบ‡เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบ—เบตเปˆเบ„เบงเบ™เป€เบฎเบฑเบ”เบชเปเบฒเป€เบ™เบปเบฒเบชเปเบฒเบฎเบญเบ‡. เบŠเบทเปˆโ€‹เบ—เบตเปˆโ€‹เปƒเบซเป‰โ€‹เบกเบฒโ€‹เปเบกเปˆเบ™โ€‹เป€เบžเบทเปˆเบญโ€‹เบˆเบธเบ”โ€‹เบ›เบฐโ€‹เบชเบปเบ‡โ€‹เบเบฒเบ™โ€‹เบชเบฐโ€‹เปเบ”เบ‡โ€‹เปƒเบซเป‰โ€‹เป€เบซเบฑเบ™โ€‹เป€เบ—เบปเปˆเบฒโ€‹เบ™เบฑเป‰เบ™โ€‹. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™ script เบ—เบตเปˆเบˆเบฐ synchronize เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”.

เปƒเบซเป‰เบชเบดเบ”เบ—เบด:

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

เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เปเบฅเบฐเปƒเบชเปˆเปƒเบ™ cron:

#/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

เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เบˆเบฐเบเบฒเบง, เป€เบžเบฒเบฐเบงเปˆเบฒ ... เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เป†เบˆเบฐเบ–เบทเบ synchronized เบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบชเปˆเบงเบ™เป‚เบ”เบเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเปƒเบŠเป‰เบ—เบฑเบ‡เบซเบกเบปเบ”. เบ‚เปเบ‚เบญเบšเปƒเบˆเบเบฑเบš LVM เบšเบฒเบ‡ metadata, เบžเบงเบเป€เบฎเบปเบฒเบฎเบนเป‰เบงเปˆเบฒเบ•เบฑเบ™เปƒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง, เบชเบฐเบ™เบฑเป‰เบ™เบžเบฝเบ‡เปเบ•เปˆเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบˆเบดเบ‡เปเบฅเป‰เบง blocks เบ›เบฐเบฅเบดเบกเบฒเบ™เบšเบฒเบ‡เบˆเบฐเป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบ„เบฑเบ”เบฅเบญเบ.

เบเบฒเบ™เปเบฅเปˆเบ™เบ•เปเปˆเป„เบ›เบˆเบฐเบ„เบฑเบ”เบฅเบญเบเบ‚เปเป‰เบกเบนเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบเป‰เบญเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเบœเปˆเบฒเบ™ LVM เบšเบฒเบ‡ metadata.

เบกเบฒเป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเป€เบเบตเบ”เบ‚เบถเป‰เบ™:

#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 [email protected]
drwxr-xr-x 1 root root 516 ะผะฐั€ 6 09:39 [email protected]
...
/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 @[email protected]
drwxr-xr-x 1 root root 22 ะผะฐั€ 6 09:39 @[email protected]
...
drwxr-xr-x 1 root root 240 ะผะฐั€ 6 09:39 @[email protected]
drwxr-xr-x 1 root root 240 ะผะฐั€ 6 09:39 @[email protected]
...

#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

เบญเบฑเบ™เบ™เบตเป‰เป€เบฎเบฑเบ”เบซเบเบฑเบ‡เปเบ”เปˆเบเบฑเบš dolls เบฎเบฑเบ‡?

เบชเปˆเบงเบ™เบซเบผเบฒเบเบญเบฒเบ”เบˆเบฐ, เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบ›เบฐเบฅเบดเบกเบฒเบ™เป‚เบฅเป‚เบเป‰ LVM LV เบชเบฒเบกเบฒเบ”เป€เบ›เบฑเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเบ‚เบญเบ‡ LVM PV เบชเปเบฒเบฅเบฑเบš VGs เบญเบทเปˆเบ™เป†. LVM เบชเบฒเบกเบฒเบ” recursive, เป€เบŠเบฑเปˆเบ™ dolls เบฎเบฑเบ‡. เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰ LVM เบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบ—เบตเปˆเบชเบธเบ”.

PS

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ•เปเปˆเป„เบ›, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบžเบฐเบเบฒเบเบฒเบกเปƒเบŠเป‰เบฅเบฐเบšเบปเบšเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบทเบ–เบทเบ—เบตเปˆเบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบซเบผเบฒเบเบญเบฑเบ™ / KVM เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ–เบฒเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเป‰เบฒเบ‡เบเบธเปˆเบกเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ / vm เบ—เบตเปˆเบกเบตเบเบฒเบ™เปเบˆเบเบขเบฒเบเบ—เบฒเบ‡เบžเบนเบกเบชเบฒเบ”เบ—เบตเปˆเบกเบตเบเบฒเบ™เบŠเปเป‰เบฒเบŠเป‰เบญเบ™เบขเบนเปˆเปƒเบ™เบซเบผเบฒเบเบ—เบฐเบงเบตเบšเป‚เบ”เบเปƒเบŠเป‰ desktops เปƒเบ™เป€เบฎเบทเบญเบ™, เบญเบดเบ™เป€เบ•เบตเป€เบ™เบฑเบ”เปƒเบ™เป€เบฎเบทเบญเบ™เปเบฅเบฐเป€เบ„เบทเบญเบ‚เปˆเบฒเบ P2P.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™