LVM เช…เชจเซ‡ Matryoshka เชฎเชพเช‚ เชถเซเช‚ เชธเชพเชฎเซเชฏ เช›เซ‡?

เชฆเชฟเชตเชธเชจเซ‹ เชธเชฎเชฏ
เชนเซเช‚ md RAID + LVM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ KVM เชฎเชพเชŸเซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชฎเชพเชฐเซ‹ เชตเซเชฏเชตเชนเชพเชฐเซ เช…เชจเซเชญเชต เชธเชฎเซเชฆเชพเชฏ เชธเชพเชฅเซ‡ เชถเซ‡เชฐ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ เช›เซเช‚.

เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เชนเชถเซ‡:

  • NVMe SSD เชฎเชพเช‚เชฅเซ€ md RAID 1 เชจเซเช‚ เชจเชฟเชฐเซเชฎเชพเชฃ.
  • SATA SSD เช…เชจเซ‡ เชจเชฟเชฏเชฎเชฟเชค เชกเซเชฐเชพเชˆเชตเซ‹เชฎเชพเช‚เชฅเซ€ md RAID 6 เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเซเช‚.
  • SSD RAID 1/6 เชชเชฐ TRIM/DSCARD เช“เชชเชฐเซ‡เชถเชจเชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพเช“.
  • เชกเชฟเชธเซเช•เชจเชพ เชธเชพเชฎเชพเชจเซเชฏ เชธเชฎเซ‚เชน เชชเชฐ เชฌเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ md RAID 1/6 เชเชฐเซ‡ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡.
  • เชœเซเชฏเชพเชฐเซ‡ BIOS เชฎเชพเช‚ NVMe เชธเชชเซ‹เชฐเซเชŸ เชจ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ NVMe RAID 1 เชชเชฐ เชธเชฟเชธเซเชŸเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡.
  • LVM เช•เซ‡เชถ เช…เชจเซ‡ LVM เชชเชพเชคเชณเซเช‚ เชตเชพเชชเชฐเซ€เชจเซ‡.
  • BTRFS เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เชฌเซ‡เช•เช…เชช เชฎเชพเชŸเซ‡ เชฎเซ‹เช•เชฒเซ‹/เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ‹.
  • BTRFS เชถเซˆเชฒเซ€ เชฌเซ‡เช•เช…เชช เชฎเชพเชŸเซ‡ LVM เชชเชพเชคเชณเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เช…เชจเซ‡ thin_delta เชจเซ‹ เช‰เชชเชฏเซ‹เช—.

เชœเซ‹ เชคเชฎเชจเซ‡ เชฐเชธ เชนเซ‹เชฏ, เชคเซ‹ เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฌเชฟเชฒเชพเชกเซ€ เชœเซเช“.

เช…เชฐเชœเซ€ เชซเซ‹เชฐเซเชฎ

เช† เชฒเซ‡เช–เชฎเชพเช‚เชฅเซ€ เชธเชพเชฎเช—เซเชฐเซ€/เช‰เชฆเชพเชนเชฐเชฃเซ‹/เช•เซ‹เชก/เชŸเซ€เชชเซเชธ/เชกเซ‡เชŸเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เช…เชฅเชตเชพ เชจ เช•เชฐเชตเชพเชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเชพเชŸเซ‡ เชฒเซ‡เช–เช• เช•เซ‹เชˆ เชœเชตเชพเชฌเชฆเชพเชฐเซ€ เชธเชนเชจ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช† เชธเชพเชฎเช—เซเชฐเซ€เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡ เชตเชพเช‚เชšเซ€เชจเซ‡ เช…เชฅเชตเชพ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡, เชคเชฎเซ‡ เช† เช•เซเชฐเชฟเชฏเชพเช“เชจเชพ เชคเชฎเชพเชฎ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐเซ€ เชธเซเชตเซ€เช•เชพเชฐเซ‹ เช›เซ‹. เชธเช‚เชญเชตเชฟเชค เชชเชฐเชฟเชฃเชพเชฎเซ‹เชฎเชพเช‚ เชถเชพเชฎเซ‡เชฒ เช›เซ‡:

  • เชšเชชเชณ-เชคเชณเซ‡เชฒเซ€ NVMe SSDs.
  • เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชธเช‚เชธเชพเชงเชจเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช‰เชชเชฏเซ‹เช— เช…เชจเซ‡ SSD เชกเซเชฐเชพเช‡เชตเชจเซ€ เชจเชฟเชทเซเชซเชณเชคเชพ.
  • เชฌเซ‡เช•เช…เชช เชจเช•เชฒเซ‹ เชธเชนเชฟเชค เชคเชฎเชพเชฎ เชกเซเชฐเชพเช‡เชตเซเชธ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เช–เซ‹เชŸ.
  • เช–เชพเชฎเซ€เชฏเซเช•เซเชค เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชนเชพเชฐเซเชกเชตเซ‡เชฐ.
  • เชธเชฎเชฏ, เชœเซเชžเชพเชจเชคเช‚เชคเซ เช…เชจเซ‡ เชชเซˆเชธเชพเชจเซ‹ เชฌเช—เชพเชก.
  • เช•เซ‹เชˆเชชเชฃ เช…เชจเซเชฏ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เช•เซ‡ เชœเซ‡ เช‰เชชเชฐ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชจเชฅเซ€.

เช†เชฏเชฐเซเชจ

เช‰เชชเชฒเชฌเซเชง เชนเชคเชพ:

Z2013 เชšเชฟเชชเชธเซ‡เชŸ เชธเชพเชฅเซ‡ 87 เชจเซเช‚ เชฎเชงเชฐเชฌเซ‹เชฐเซเชก, Intel Core i7 / Haswell เชธเชพเชฅเซ‡ เชชเซ‚เชฐเซเชฃ.

  • เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ 4 เช•เซ‹เชฐเซ‹, 8 เชฅเซเชฐเซ‡เชกเซ‹
  • 32 เชœเซ€เชฌเซ€ เชกเซ€เชกเซ€เช†เชฐ 3 เชฐเซ‡เชฎ
  • 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 เชซเชฐเซเชฎเชตเซ‡เชฐเชฎเชพเช‚ เช† เช†เชฆเซ‡เชถเซ‹ เชฌเชฟเชฒเช•เซเชฒ เช†เชงเชพเชฐเชญเซ‚เชค เชจเชฅเซ€, เช…เชจเซ‡ HBA, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฌเชธ เชชเชฐ เช•เชฏเชพ เช†เชฆเซ‡เชถเซ‹ เชชเซเชฐเชธเชพเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเซ€ เช•เชพเชณเชœเซ€ เชฒเซ‡เชคเซเช‚ เชจเชฅเซ€.

เชนเชพเชฐเซเชก เชกเซเชฐเชพเชˆเชตเซ‹ - เชฒเซ‡เชชเชŸเซ‹เชชเชจเซ€ เชœเซ‡เชฎ 8 เชซเซ‹เชฐเซเชฎ เชซเซ‡เช•เซเชŸเชฐเชฎเชพเช‚ 7 TB เชจเซ€ เช•เซเชทเชฎเชคเชพ เชธเชพเชฅเซ‡ HGST Travelstar 1000K1 เชจเชพ 2.5 เชŸเซเช•เชกเชพเช“. เช† เชกเซเชฐเชพเชˆเชตเซ‹ เช…เช—เชพเช‰ RAID 6 เชเชฐเซ‡เชฎเชพเช‚ เชนเชคเซ€. เชจเชตเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เชชเชฃ เช‰เชชเชฏเซ‹เช— เชฅเชถเซ‡. เชธเซเชฅเชพเชจเชฟเช• เชฌเซ‡เช•เช…เชช เชธเช‚เช—เซเชฐเชนเชตเชพ เชฎเชพเชŸเซ‡.

เชตเชงเซเชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚:

6 เชŸเซเช•เชกเชพเช“ SATA SSD เชฎเซ‹เชกเซ‡เชฒ Samsung 860 QVO 2TB. เช† SSD เชจเซ‡ เชฎเซ‹เชŸเซ€ เชฎเชพเชคเซเชฐเชพ, SLC เช•เซ‡เชถเชจเซ€ เชนเชพเชœเชฐเซ€, เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เช…เชจเซ‡ เช“เช›เซ€ เช•เชฟเช‚เชฎเชคเชจเซ€ เชœเชฐเซ‚เชฐ เชนเชคเซ€. เช•เชพเชขเซ€ เชจเชพเช–เซ‹/เชถเซ‚เชจเซเชฏ เชฎเชพเชŸเซ‡ เช†เชงเชพเชฐ เชœเชฐเซ‚เชฐเซ€ เชนเชคเซ‹, เชœเซ‡ dmesg เชฎเชพเช‚ เชฒเชพเช‡เชจ เชฆเซเชตเชพเชฐเชพ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡:

kernel: ata1.00: Enabling discard_zeroes_data

NVMe SSD เชฎเซ‹เชกเชฒ Samsung SSD 2 EVO 970GB เชจเชพ 500 เชŸเซเช•เชกเชพเช“.

เช† SSDs เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชตเชพเช‚เชšเชจ/เชฒเช–เชตเชพเชจเซ€ เชเชกเชช เช…เชจเซ‡ เชธเช‚เชธเชพเชงเชจ เช•เซเชทเชฎเชคเชพ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชฐเซ‡เชกเชฟเชฏเซ‡เชŸเชฐ. เชœเชฐเซ‚เชฐเซ€. เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡. เชจเชนเชฟเช‚เชคเชฐ, เชชเซเชฐเชฅเชฎ RAID เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชคเซ‡เชฎเชจเซ‡ เช•เซเชฐเชฟเชธเซเชชเซ€ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เชซเซเชฐเชพเชฏ เช•เชฐเซ‹.

PCIe 8 2x เชธเซเชฒเซ‹เชŸเชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ 2 x NVMe SSD เชฎเชพเชŸเซ‡ StarTech PEX2M3.0E8 เชเชกเซ‡เชชเซเชŸเชฐ. เช†, เชซเชฐเซ€เชฅเซ€, เชฎเชพเชคเซเชฐ เชเช• HBA เช›เซ‡, เชชเชฐเช‚เชคเซ NVMe เชฎเชพเชŸเซ‡. เชคเซ‡ เชธเชธเซเชคเชพ เชเชกเซ‡เชชเซเชŸเชฐเซ‹เชฅเซ€ เช…เชฒเช— เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เชฌเชฟเชฒเซเชŸ-เช‡เชจ PCIe เชธเซเชตเซ€เชšเชจเซ€ เชนเชพเชœเชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชคเซ‡เชจเซ‡ เชฎเชงเชฐเชฌเซ‹เชฐเซเชกเชฅเซ€ PCIe เชฆเซเชตเชฟเชญเชพเชœเชจ เชธเชชเซ‹เชฐเซเชŸเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชคเซ‡ PCIe เชธเชพเชฅเซ‡ เชธเซŒเชฅเซ€ เชชเซเชฐเชพเชšเซ€เชจ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชชเชฃ เช•เชพเชฎ เช•เชฐเชถเซ‡, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡ x1 PCIe 1.0 เชธเซเชฒเซ‹เชŸ เชนเซ‹เชฏ. เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡, เชฏเซ‹เช—เซเชฏ เชเชกเชชเซ‡. เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ RAID เชจเชฅเซ€. เชฌเซ‹เชฐเซเชก เชชเชฐ เช•เซ‹เชˆ เชฌเชฟเชฒเซเชŸ-เช‡เชจ BIOS เชจเชฅเซ€. เชคเซ‡เชฅเซ€, เชคเชฎเชพเชฐเซ€ เชธเชฟเชธเซเชŸเชฎ เชœเชพเชฆเซเชˆ เชฐเซ€เชคเซ‡ NVMe เชธเชพเชฅเซ‡ เชฌเซเชŸ เช•เชฐเชตเชพเชจเซเช‚ เชถเซ€เช–เชถเซ‡ เชจเชนเซ€เช‚, เช† เช‰เชชเช•เชฐเชฃเชจเซ‡ เช†เชญเชพเชฐเซ€ NVMe RAID เช˜เชฃเซเช‚ เช“เช›เซเช‚ เช›เซ‡.

เช† เช˜เชŸเช• เชซเช•เซเชค เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชฎเชซเชค 8x PCIe 3.0 เชจเซ€ เชนเชพเชœเชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชนเชคเซเช‚, เช…เชจเซ‡, เชœเซ‹ เชคเซเชฏเชพเช‚ 2 เชฎเชซเชค เชธเซเชฒเซ‹เชŸ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชฌเซ‡ เชชเซ‡เชจเซ€ PEX4M2E1 เช…เชฅเชตเชพ เชเชจเชพเชฒเซ‹เช— เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชœเซ‡ 600เชจเซ€ เช•เชฟเช‚เชฎเชคเซ‡ เช—เชฎเซ‡ เชคเซเชฏเชพเช‚ เช–เชฐเซ€เชฆเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชฐเซ‚เชฌเชฒ

เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เช…เชฅเชตเชพ เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชšเชฟเชชเชธเซ‡เชŸ/BIOS RAID เชจเซ‹ เช…เชธเซเชตเซ€เช•เชพเชฐ เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชœเซ‡เชฅเซ€ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชจเซ‡ เชธเชพเชšเชตเซ€เชจเซ‡, SSD/HDDเชจเชพ เช…เชชเชตเชพเชฆ เชธเชฟเชตเชพเชฏ, เชธเชฎเช—เซเชฐ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ. เช†เชฆเชฐเซเชถเชฐเซ€เชคเซ‡, เชœเซ‡เชฅเซ€ เชคเชฎเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชจเชตเชพ/เชตเชฟเชตเชฟเชง เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชœเชคเซ€ เชตเช–เชคเซ‡ เชธเซเชฅเชพเชชเชฟเชค เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชชเชฃ เชธเชพเชšเชตเซ€ เชถเช•เซ‹. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ SATA เช…เชจเซ‡ PCIe เชชเซ‹เชฐเซเชŸ เช›เซ‡. เชคเซ‡ เชฒเชพเชˆเชต เชธเซ€เชกเซ€ เช…เชฅเชตเชพ เชฌเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเชˆเชต เชœเซ‡เชตเซ€ เช›เซ‡, เชฎเชพเชคเซเชฐ เช–เซ‚เชฌ เชœ เชเชกเชชเซ€ เช…เชจเซ‡ เชฅเซ‹เชกเซ€ เชฎเซ‹เชŸเซ€.

เชตเชฟเชจเซ‹เชฆเซ€เชจเชนเชฟเช‚เชคเชฐ, เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹ เช•เซ‡ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡ - เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเชพเชฐเซ‡ เชคเชพเช•เซ€เชฆเซ‡ เชธเชฎเช—เซเชฐ เชเชฐเซ‡เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฒเชˆ เชœเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชนเซเช‚ เชกเซ‡เชŸเชพ เช—เซเชฎเชพเชตเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจเชฅเซ€. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฎ เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชฎเชพเชงเซเชฏเชฎเซ‹ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช•เซ‡เชธเชจเซ€ 5.25 เชฌเซ‡เชเชฎเชพเช‚ เชธเซเชฒเชพเช‡เชกเซเชธ เชชเชฐ เช…เชจเซเช•เซ‚เชณ เชฐเซ€เชคเซ‡ เชธเซเชฅเชฟเชค เช›เซ‡.

เชธเชพเชฐเซเช‚, เช…เชจเซ‡, เช…เชฒเชฌเชคเซเชค, Linux เชฎเชพเช‚ SSD เช•เซ‡เชถเซ€เช‚เช—เชจเซ€ เชตเชฟเชตเชฟเชง เชชเชฆเซเชงเชคเชฟเช“ เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡.

เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชฆเชฐเซ‹เชกเชพ เช•เช‚เชŸเชพเชณเชพเชœเชจเช• เช›เซ‡. เชšเชพเชฒเซ เช•เชฐเซ‹. เชคเซ‡ เช•เชพเช‚ เชคเซ‹ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชฅเชตเชพ เชคเซ‡ เชจเชฅเซ€ เช•เชฐเชคเซเช‚. เช…เชจเซ‡ mdadm เชธเชพเชฅเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชตเชฟเช•เชฒเซเชชเซ‹ เชนเซ‹เชฏ เช›เซ‡.

เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ

เช…เช—เชพเช‰, เชกเซ‡เชฌเชฟเชฏเชจ 8 เชœเซ‡เชธเซ€ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชœเซ‡ EOL เชจเซ€ เชจเชœเซ€เช• เช›เซ‡. RAID 6 เช LVM เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒ เช‰เชชเชฐเซ‹เช•เซเชค HDDs เชฎเชพเช‚เชฅเซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชคเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ kvm/libvirt เชฎเชพเช‚ เชšเชฒเชพเชตเซ‡ เช›เซ‡.

เช•เชพเชฐเชฃ เช•เซ‡ เชฒเซ‡เช–เช•เชจเซ‡ เชชเซ‹เชฐเซเชŸเซ‡เชฌเชฒ เชฌเซ‚เชŸเซ‡เชฌเชฒ SATA/NVMe เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเซเชธ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชฏเซ‹เช—เซเชฏ เช…เชจเซเชญเชต เช›เซ‡, เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฏเซ‹เช—เซเชฏ เชจเชฎเซ‚เชจเชพเชจเซ‡ เชจ เชคเซ‹เชกเชตเชพ เชฎเชพเชŸเซ‡, เช‰เชฌเซเชจเซเชŸเซ 18.04 เชจเซ‡ เชฒเช•เซเชทเซเชฏ เชธเชฟเชธเซเชŸเชฎ เชคเชฐเซ€เช•เซ‡ เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เชœเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชชเซ‚เชฐเชคเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเซเชฅเชฟเชฐ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเชœเซ เชชเชฃ 3 เชตเชฐเซเชท เช›เซ‡. เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชธเชชเซ‹เชฐเซเชŸ.

เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฌเชงเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชกเซเชฐเชพเช‡เชตเชฐเซ‹ เช›เซ‡ เชœเซ‡ เช†เชชเชฃเชจเซ‡ เชฌเซ‹เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช…เชฎเชจเซ‡ เช•เซ‹เชˆ เชคเซƒเชคเซ€เชฏ-เชชเช•เซเชท เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เช…เชฅเชตเชพ เชกเซเชฐเชพเช‡เชตเชฐเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชธเซเชฅเชพเชชเชจ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐเซ€ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชธเชฟเชธเซเชŸเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เช‡เชฎเซ‡เชœเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชธเชฐเซเชตเชฐ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชœเซ‹เชฐเชถเซ‹เชฐเชฅเซ€ เช‡เชจเซเชธเซเชŸเซ‹เชฒเชฐ เชนเซ‹เชฏ เช›เซ‡, เชœเซ‡ เช…เชคเชฟเชถเชฏ เชธเซเชตเชคเช‚เชคเซเชฐเชคเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡ UEFI เชธเชฟเชธเซเชŸเชฎ เชชเชพเชฐเซเชŸเซ€เชถเชจเชจเซ‡ เชเช• เชกเชฟเชธเซเช• เชชเชฐ เชนเชฒเชพเชตเซ€เชจเซ‡ เชฌเชงเซ€ เชธเซเช‚เชฆเชฐเชคเชพเชจเซ‡ เชฌเช—เชพเชกเซ€เชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€. เชคเชฆเชจเซเชธเชพเชฐ, เชคเซ‡ เชซเช•เซเชค UEFI เชฎเซ‹เชกเชฎเชพเช‚ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช›เซ‡. เช•เซ‹เชˆเชชเชฃ เชตเชฟเช•เชฒเซเชชเซ‹ เช“เชซเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เช…เชฎเซ‡ เช†เชจเชพเชฅเซ€ เช–เซเชถ เชจเชฅเซ€.

เชถเชพ เชฎเชพเชŸเซ‡?เช•เชฎเชจเชธเซ€เชฌเซ‡, UEFI เชฌเซเชŸ เชฌเซเชŸ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ RAID เชธเชพเชฅเซ‡ เช…เชคเซเชฏเช‚เชค เช–เชฐเชพเชฌ เชฐเซ€เชคเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡... UEFI ESP เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เช…เชฎเชจเซ‡ เชฐเชฟเชเชฐเซเชตเซ‡เชถเชจ เช“เชซเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช‘เชจเชฒเชพเช‡เชจ เชตเชพเชจเช—เซ€เช“ เช›เซ‡ เชœเซ‡ USB เชชเซ‹เชฐเซเชŸเชฎเชพเช‚ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชชเชฐ ESP เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเซ‚เช•เชตเชพเชจเซเช‚ เชธเซ‚เชšเชจ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชจเชฟเชทเซเชซเชณเชคเชพเชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เช›เซ‡. เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชธเช‚เชธเซเช•เชฐเชฃ 1 เชธเชพเชฅเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ mdadm RAID 0.9 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซ€ เชตเชพเชจเช—เซ€เช“ เช›เซ‡ เชœเซ‡ UEFI BIOS เชจเซ‡ เช† เชชเชพเชฐเซเชŸเซ€เชถเชจ เชœเซ‹เชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเชคเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช† เช–เซเชถ เช•เซเชทเชฃ เชธเซเชงเซ€ เชœเซ€เชตเซ‡ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ BIOS เช…เชฅเชตเชพ เช…เชจเซเชฏ เชนเชพเชฐเซเชกเชตเซ‡เชฐ OS ESP เชชเชฐ เช•เช‚เชˆเช• เชฒเช–เซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช…เชจเซเชฏ เชธเชพเชฅเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเซ€ เชœเชพเชฏ เช›เซ‡. เช…เชฐเซ€เชธเชพเช“

เชตเชงเซเชฎเชพเช‚, UEFI เชฌเซเชŸ NVRAM เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡, เชœเซ‡ เชกเชฟเชธเซเช• เชธเชพเชฅเซ‡ เชจเชตเซ€ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เช–เชธเซ‡เชกเชถเซ‡ เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชฎเชงเชฐเชฌเซ‹เชฐเซเชกเชจเซ‹ เชญเชพเช— เช›เซ‡.

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชจเชตเชพ เชšเช•เซเชฐเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชถเซ‹เชงเซ€เชถเซเช‚ เชจเชนเซ€เช‚. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชคเซˆเชฏเชพเชฐ, เชธเชฎเชฏ-เชšเช•เชพเชธเชพเชฏเซ‡เชฒ เชฆเชพเชฆเชพเชจเซ€ เชฌเชพเช‡เช• เช›เซ‡, เชœเซ‡เชจเซ‡ เชนเชตเซ‡ เชฒเซ‡เช—เชธเซ€/BIOS เชฌเซ‚เชŸ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ UEFI- เชธเซเชธเช‚เช—เชค เชธเชฟเชธเซเชŸเชฎเซเชธ เชชเชฐ CSM เชจเซเช‚ เช—เซŒเชฐเชตเชชเซ‚เชฐเซเชฃ เชจเชพเชฎ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เชซเช•เซเชค เชถเซ‡เชฒเซเชซเชฎเชพเช‚เชฅเซ€ เช‰เชคเชพเชฐเซ€เชถเซเช‚, เชคเซ‡เชจเซ‡ เชฒเซเชฌเซเชฐเชฟเช•เซ‡เชŸ เช•เชฐเซ€เชถเซเช‚, เชŸเชพเชฏเชฐ เชชเช‚เชช เช•เชฐเซ€เชถเซเช‚ เช…เชจเซ‡ เชญเซ€เชจเชพ เช•เชชเชกเชพเชฅเซ€ เชคเซ‡เชจเซ‡ เชธเชพเชซ เช•เชฐเซ€เชถเซเช‚.

เช‰เชฌเซเชจเซเชŸเซเชจเซเช‚ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชตเชฐเซเชเชจ เชชเชฃ เชฒเซ‡เช—เชธเซ€ เชฌเซเชŸเชฒเซ‹เชกเชฐ เชธเชพเชฅเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚, เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡.

เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เช‰เชฌเซเชจเซเชŸเซ เชฒเชพเช‡เชต เชฌเซ‚เชŸเซ‡เชฌเชฒ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ เชธเชฟเชธเซเชŸเชฎ เชฒเซ‹เชก เช•เชฐเซ€เช เช›เซ€เช. เช…เชฎเชพเชฐเซ‡ เชชเซ‡เช•เซ‡เชœเซ‹ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเซ‡เชŸเชตเชฐเซเช• เชธเซ‡เชŸ เช•เชฐเซ€เชถเซเช‚. เชœเซ‹ เชคเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชคเชฎเซ‡ เช…เช—เชพเช‰เชฅเซ€ เชซเซเชฒเซ‡เชถ เชกเซเชฐเชพเช‡เชต เชชเชฐ เชœเชฐเซ‚เชฐเซ€ เชชเซ‡เช•เซ‡เชœเซ‹ เชฒเซ‹เชก เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช…เชฎเซ‡ เชกเซ‡เชธเซเช•เชŸเซ‰เชช เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚ เชœเชˆเช เช›เซ€เช, เชŸเชฐเซเชฎเชฟเชจเชฒ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เชฒเซ‹เช‚เชš เช•เชฐเซ€เช เช›เซ€เช, เช…เชจเซ‡ เช…เชฎเซ‡ เชœเชˆเช เช›เซ€เช:

#sudo bash

เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡โ€ฆ?เช‰เชชเชฐเชจเซ€ เชฒเซ€เชŸเซ€ เชธเซเชกเซ‹ เชตเชฟเชถเซ‡ เชนเซ‹เชฒเซ€เชตเชพเชฐ เชฎเชพเชŸเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชŸเซเชฐเชฟเช—เชฐ เช›เซ‡. เชธเซ€ เชฌเซ€ะพเชตเชงเซ เชคเช•เซ‹ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ะพเชตเชงเซ เชœเชตเชพเชฌเชฆเชพเชฐเซ€. เชชเซเชฐเชถเซเชจ เช เช›เซ‡ เช•เซ‡ เชถเซเช‚ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชคเชฎเชพเชฐเชพ เชชเชฐ เชฒเชˆ เชถเช•เซ‹ เช›เซ‹. เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ เชฎเชพเชจเซ‡ เช›เซ‡ เช•เซ‡ เช† เชฐเซ€เชคเซ‡ เชธเซเชกเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชธเชพเชตเชšเซ‡เชคเซ€เชญเชฐเซเชฏเซเช‚ เชจเชฅเซ€. เชœเซ‹ เช•เซ‡:

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

ZFS เช•เซ‡เชฎ เชจเชนเซ€เช‚...?เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เช•เชฎเซเชชเซเชฏเซเชŸเชฐ เชชเชฐ เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช†เชตเชถเซเชฏเช•เชชเชฃเซ‡ เช† เชธเซ‰เชซเซเชŸเชตเซ‡เชฐเชจเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เชจเซ‡ เชกเซเชฐเชพเช‡เชต เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐเชจเซ‡ เช‰เชงเชพเชฐ เช†เชชเซ€เช เช›เซ€เช.
เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเซ€ เชธเชฒเชพเชฎเชคเซ€ เชธเชพเชฅเซ‡ เช† เชธเซ‰เชซเซเชŸเชตเซ‡เชฐ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เช† เชกเซ‡เชŸเชพเชจเซ‡ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชจเชพ เช–เชฐเซเชš เชœเซ‡เชŸเชฒเซ€ เชฒเซ‹เชจ เชฒเชˆเช เช›เซ€เช, เชœเซ‡ เช…เชฎเชพเชฐเซ‡ เช•เซ‹เชˆ เชฆเชฟเชตเชธ เชšเซ‚เช•เชตเชตเซ€ เชชเชกเชถเซ‡.

เช† เชฆเซƒเชทเซเชŸเชฟเช•เซ‹เชฃเชฅเซ€, ZFS เช เชซเซ‡เชฐเชพเชฐเซ€ เช›เซ‡, เช…เชจเซ‡ mdadm+lvm เช เชธเชพเชฏเช•เชฒ เชœเซ‡เชตเซเช‚ เช›เซ‡.

เชตเซเชฏเช•เซเชคเชฟเชฒเช•เซเชทเซ€ เชฐเซ€เชคเซ‡, เชฒเซ‡เช–เช• เชซเซ‡เชฐเชพเชฐเซ€เชจเซ‡ เชฌเชฆเชฒเซ‡ เช…เชœเชพเชฃเซเชฏเชพ เชตเซเชฏเช•เซเชคเชฟเช“เชจเซ‡ เช•เซเชฐเซ‡เชกเชฟเชŸ เชชเชฐ เชฌเชพเช‡เช• เช†เชชเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡. เชคเซเชฏเชพเช‚, เช‡เชถเซเชฏเซ‚เชจเซ€ เช•เชฟเช‚เชฎเชค เชตเชงเชพเชฐเซ‡ เชจเชฅเซ€. เช…เชงเชฟเช•เชพเชฐเซ‹เชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€. เชŸเซเชฐเชพเชซเชฟเช• เชจเชฟเชฏเชฎเซ‹ เช•เชฐเชคเชพเช‚ เชธเชฐเชณ. เชชเชพเชฐเซเช•เชฟเช‚เช— เชฎเชซเชค เช›เซ‡. เช•เซเชฐเซ‹เชธ-เช•เชจเซเชŸเซเชฐเซ€ เช•เซเชทเชฎเชคเชพ เชตเชงเซ เชธเชพเชฐเซ€ เช›เซ‡. เชคเชฎเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชธเชพเชฏเช•เชฒ เชธเชพเชฅเซ‡ เชชเช— เชœเซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹, เช…เชจเซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชนเชพเชฅเชฅเซ€ เชธเชพเชฏเช•เชฒ เชฐเซ€เชชเซ‡เชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชคเซ‹ เชชเช›เซ€ BTRFS เชถเชพ เชฎเชพเชŸเซ‡...?เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชฌเซ‚เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเชจเซ‡ เชเช• เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชœเซ‡ เชฒเซ‡เช—เชธเซ€/BIOS GRUB เชฎเชพเช‚ เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ เชฒเชพเช‡เชต เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— /boot เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเชพเชŸเซ‡ เช•เชฐเซ€เชถเซเช‚. เชตเชงเซเชฎเชพเช‚, เชฒเซ‡เช–เช• เช† FS เชจเซ‡ / (เชฐเซเชŸ) เชฎเชพเชŸเซ‡ เชตเชพเชชเชฐเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡, เช เชจเซ‹เช‚เชงเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชคเชพ เชจเชฅเซ€ เช•เซ‡ เช…เชจเซเชฏ เช•เซ‹เชˆเชชเชฃ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ LVM เชชเชฐ เช…เชฒเช— เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹ เชฌเชจเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“เชฎเชพเช‚ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เช…เชฎเซ‡ เช† FS เชชเชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹ เช…เชฅเชตเชพ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ€ เช•เซ‹เชˆเชชเชฃ เช›เชฌเซ€เช“ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚.
เช† FS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชซเช•เซเชค เชธเชฟเชธเซเชŸเชฎเชจเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ เชฌเช‚เชง เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เชคเซ‡เชจเซ‡ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช…เชจเซ‡ เชชเช›เซ€ เชฎเซ‹เช•เชฒเซ‹/เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชจเซ‡ เช† เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ เชฌเซ‡เช•เช…เชช เชกเชฟเชธเซเช•เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‹.

เชตเชงเซเชฎเชพเช‚, เชฒเซ‡เช–เช• เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชธเซ€เชงเชพ เชœ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ เชฐเชพเช–เชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เช…เชจเซเชฏ เชคเชฎเชพเชฎ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐเชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชจเซเช‚ เชชเชธเช‚เชฆ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชฎ เช•เซ‡ GPUs เช…เชจเซ‡ PCI-USB เชนเซ‹เชธเซเชŸ เช•เช‚เชŸเซเชฐเซ‹เชฒเชฐเซเชธเชจเซ‡ IOMMU เชฎเชพเชฐเชซเชคเซ‡ KVM เชชเชฐ เชซเซ‹เชฐเชตเชฐเซเชก เช•เชฐเชตเชพ เชœเซ‡เชตเซ€ เชฌเชพเชฌเชคเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡.

เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชฎเชพเชคเซเชฐ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ, เชตเชฐเซเชšเซเชฏเซเช…เชฒเชพเชˆเชเซ‡เชถเชจ เช…เชจเซ‡ เชฌเซ‡เช•เช…เชช เชฌเชพเช•เซ€ เชฐเชนเซ‡ เช›เซ‡.

เชœเซ‹ เชคเชฎเซ‡ ZFS เชชเชฐ เชตเชงเซ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เช‰เชฒเซเชฒเซ‡เช–เชฟเชค เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชคเซ‡เช“ เชตเชฟเชจเชฟเชฎเชฏเช•เซเชทเชฎ เช›เซ‡.

เชœเซ‹ เช•เซ‡, เชฒเซ‡เช–เช• เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• เชฌเชฟเชฒเซเชŸ-เช‡เชจ เชฎเชฟเชฐเชฐเชฟเช‚เช—/RAID เช…เชจเซ‡ เชฐเชฟเชกเชจเซเชกเชจเซเชธเซ€ เชธเซเชตเชฟเชงเชพเช“เชจเซ‡ เช…เชตเช—เชฃเซ‡ เช›เซ‡ เชœเซ‡ ZFS, BRTFS เช…เชจเซ‡ LVM เชชเชพเชธเซ‡ เช›เซ‡.

เชตเชงเชพเชฐเชพเชจเซ€ เชฆเชฒเซ€เชฒ เชคเชฐเซ€เช•เซ‡, BTRFS เชชเชพเชธเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชฐเชพเช‡เชŸเซเชธเชจเซ‡ เช•เซเชฐเชฎเชฟเช•เชฎเชพเช‚ เชซเซ‡เชฐเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ เช›เซ‡, เชœเซ‡ HDD เชชเชฐ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ/เชฌเซ‡เช•เช…เชชเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชจเซ€ เชเชกเชช เชชเชฐ เช…เชคเซเชฏเช‚เชค เชนเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ เชฌเชงเชพ เช‰เชชเช•เชฐเชฃเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเซเช•เซ‡เชจ เช•เชฐเซ€เช:

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

เชšเชพเชฒเซ‹ เช†เชธเชชเชพเชธ เชเช• เชจเชœเชฐ เช•เชฐเซ€เช:

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

เชกเชฟเชธเซเช• เชฒเซ‡เช†เช‰เชŸ

เชเชจเชเชฎเชตเซ€เช เชเชธเชเชธเชกเซ€

เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชคเซ‡เชฎเชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชฐเซ€เชคเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚. เชธเชฎเชพเชจ เชฐเซ€เชคเซ‡, เช…เชฎเชพเชฐเชพ BIOS เช† เชกเซเชฐเชพเช‡เชตเซเชธเชจเซ‡ เชœเซ‹เชคเชพ เชจเชฅเซ€. เชคเซ‡เชฅเซ€, เชคเซ‡เช“ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซ‹เชซเซเชŸเชตเซ‡เชฐ RAID เชชเชฐ เชœเชถเซ‡. เช…เชฎเซ‡ เชคเซเชฏเชพเช‚ เชตเชฟเชญเชพเช—เซ‹ เชชเชฃ เชฌเชจเชพเชตเซ€เชถเซเช‚ เชจเชนเซ€เช‚. เชœเซ‹ เชคเชฎเซ‡ "เช•เซ‡เชจเชจ" เช…เชฅเชตเชพ "เชฎเซเช–เซเชฏเชคเซเชตเซ‡" เชจเซ‡ เช…เชจเซเชธเชฐเชตเชพ เชฎเชพเช‚เช—เชคเชพ เชนเซ‹, เชคเซ‹ 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 เชŸเซ‡เชฐเชพเชฌเชพเชˆเชŸเชจเซ€ เช…เช‚เชฆเชฐ เชธเซเชฅเชฟเชค เชนเซ‹เชฏ. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เช† เชกเชฟเชธเซเช• เชชเชฐ เชฌเซ‚เชŸ เชชเชพเชฐเซเชŸเซ€เชถเชจ เช…เชจเซ‡ bios_grub เชชเชพเชฐเซเชŸเซ€เชถเชจ เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช. เช† เชคเชฎเชจเซ‡ GPT เชฒเซ‡เช—เชธเซ€/BIOS เชกเซเชฐเชพเช‡เชตเซเชธเชฎเชพเช‚เชฅเซ€ เชฌเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชชเชฃ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡.

เชชเชฐเช‚เชคเซ เช† เช…เชฎเชพเชฐเซ‹ เช•เซ‡เชธ เชจเชฅเซ€.

เช…เชนเซ€เช‚ เช†เชชเชฃเซ‡ เชฌเซ‡ เชตเชฟเชญเชพเช— เชฌเชจเชพเชตเซ€เชถเซเช‚. เชชเซเชฐเชฅเชฎเชจเซเช‚ เช•เชฆ 1 GB เชนเชถเซ‡ เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— RAID 1 /boot เชฎเชพเชŸเซ‡ เชฅเชถเซ‡.

เชฌเซ€เชœเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— RAID 6 เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช…เชจเซ‡ เชกเซเชฐเชพเช‡เชตเชจเชพ เช…เช‚เชคเซ‡ เชเช• เชจเชพเชจเช•เชกเชพ เชฌเชฟเชจ เชซเชพเชณเชตเซ‡เชฒ เชตเชฟเชธเซเชคเชพเชฐ เชธเชฟเชตเชพเชฏ เชฌเชพเช•เซ€เชจเซ€ เชฌเชงเซ€ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เชฒเซ‡เชถเซ‡.

เช† เช…เชšเชฟเชนเซเชจเชฟเชค เชตเชฟเชธเซเชคเชพเชฐ เชถเซเช‚ เช›เซ‡?เชจเซ‡เชŸเชตเชฐเซเช• เชชเชฐเชจเชพ เชธเซ‚เชคเซเชฐเซ‹เชจเชพ เชœเชฃเชพเชตเซเชฏเชพ เช…เชจเซเชธเชพเชฐ, เช…เชฎเชพเชฐเชพ SATA SSDs เชชเชพเชธเซ‡ 6 เชฅเซ€ 78 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชธเซเชงเซ€เชจเชพ เช•เชฆเชจเซ€ เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชตเชฟเชธเซเชคเซƒเชค SLC เช•เซ‡เชถ เช›เซ‡. เชกเซเชฐเชพเช‡เชตเชจเซ€ เชกเซ‡เชŸเชพ เชถเซ€เชŸเชฎเชพเช‚ "เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ" เช…เชจเซ‡ "เช—เซ€เชฌเซ€เชฌเชพเช‡เชŸเซเชธ" เชตเชšเซเชšเซ‡เชจเชพ เชคเชซเชพเชตเชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช…เชฎเชจเซ‡ 6 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ "เชฎเชซเชคเชฎเชพเช‚" เชฎเชณเซ‡ เช›เซ‡. เชฌเชพเช•เซ€เชจเซ€ 72 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชฌเชฟเชจเช‰เชชเชฏเซ‹เช—เซ€ เชœเช—เซเชฏเชพเชฎเชพเช‚เชฅเซ€ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เช…เชนเซ€เช‚ เช เชจเซ‹เช‚เชงเชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ SLC เช•เซ‡เชถ เช›เซ‡, เช…เชจเซ‡ เชœเช—เซเชฏเชพ 4 เชฌเซ€เชŸ MLC เชฎเซ‹เชกเชฎเชพเช‚ เช›เซ‡. เชœเซ‡เชจเซ‹ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช…เชธเชฐเช•เชพเชฐเช• เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชฆเชฐเซ‡เช• 4 เช—เซ€เช—เชพเชฌเชพเชˆเชŸ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชจเซ‡ เชซเช•เซเชค 1 เช—เซ€เช—เชพเชฌเชพเชˆเชŸ SLC เช•เซ‡เชถ เชฎเชณเชถเซ‡.

72 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธเชจเซ‹ 4 เชตเชกเซ‡ เช—เซเชฃเชพเช•เชพเชฐ เช•เชฐเซ‹ เช…เชจเซ‡ 288 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชฎเซ‡เชณเชตเซ‹. เช† เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เช›เซ‡ เชœเซ‡เชจเซ‡ เช…เชฎเซ‡ เชกเซเชฐเชพเช‡เชตเซเชธเชจเซ‡ SLC เช•เซ‡เชถเชจเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚.

เช†เชฎ, เช…เชฎเซ‡ เช•เซเชฒ เช› เชกเซเชฐเชพเช‡เชตเชฎเชพเช‚เชฅเซ€ 312 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ SLC เช•เซ‡เชถ เช…เชธเชฐเช•เชพเชฐเช• เชฐเซ€เชคเซ‡ เชฎเซ‡เชณเชตเซ€เชถเซเช‚. เชฌเชงเซ€ เชกเซเชฐเชพเชˆเชตเซ‹เชฎเชพเช‚เชฅเซ€, 2 เชจเซ‹ เช‰เชชเชฏเซ‹เช— RAID เชฎเชพเช‚ เชจเชฟเชฐเชฐเซเชฅเช•เชคเชพ เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช•เซ‡เชถเชจเซ€ เช† เชฐเช•เชฎ เช…เชฎเชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชœเซ€เชตเชจเชฎเชพเช‚ เช…เชคเซเชฏเช‚เชค เชญเชพเช—เซเชฏเซ‡ เชœ เชเชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชจเซ‹ เชธเชพเชฎเชจเซ‹ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ เชœเซเชฏเชพเช‚ เชฒเช–เชพเชฃ เช•เซ‡เชถเชฎเชพเช‚ เชจ เชœเชพเชฏ. เช† QLC เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชธเซŒเชฅเซ€ เชฆเซ:เช–เชฆ เช–เชพเชฎเซ€ เชฎเชพเชŸเซ‡ เช–เซ‚เชฌ เชœ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชตเชณเชคเชฐ เช†เชชเซ‡ เช›เซ‡ - เชœเซเชฏเชพเชฐเซ‡ เช•เซ‡เชถเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ เชกเซ‡เชŸเชพ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฒเช–เชตเชพเชจเซ€ เชเชกเชช เช…เชคเซเชฏเช‚เชค เช“เช›เซ€ เช›เซ‡. เชœเซ‹ เชคเชฎเชพเชฐเซ‹ เชฒเซ‹เชก เช†เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เชนเซเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ เช•เซ‡ เชคเชฎเซ‡ เชกเซ‡เชŸเชพ เชถเซ€เชŸเชฎเชพเช‚เชฅเซ€ TBW เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เซ€เชจเซ‡, เช†เชตเชพ เชญเชพเชฐ เชนเซ‡เช เชณ เชคเชฎเชพเชฐเซ‹ SSD เช•เซ‡เชŸเชฒเซ‹ เชธเชฎเชฏ เชšเชพเชฒเชถเซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชธเช–เชค เชตเชฟเชšเชพเชฐเซ‹.

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

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

เชเชฐเซ‡ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชชเซเชฐเชฅเชฎ, เช†เชชเชฃเซ‡ เชฎเชถเซ€เชจเชจเซเช‚ เชจเชพเชฎ เชฌเชฆเชฒเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชฏเชœเชฎเชพเชจ เชจเชพเชฎ mdadm เชจเซ€ เช…เช‚เชฆเชฐ เช•เซเชฏเชพเช‚เช• เชเชฐเซ‡ เชจเชพเชฎเชจเซ‹ เชญเชพเช— เช›เซ‡ เช…เชจเซ‡ เช•เซเชฏเชพเช‚เช• เช•เช‚เชˆเช• เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡. เช…เชฒเชฌเชคเซเชค, เชเชฐเซ‡เชจเซเช‚ เชจเชพเชฎ เชชเช›เซ€เชฅเซ€ เชฌเชฆเชฒเซ€ เชถเช•เชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เช† เชเช• เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชชเช—เชฒเซเช‚ เช›เซ‡.

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

เชเชจเชเชฎเชตเซ€เช เชเชธเชเชธเชกเซ€

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

เชถเชพ เชฎเชพเชŸเซ‡-เชงเชพเชฐเซ‹-เชธเซเชตเชšเซเช›...?เชเชฐเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซเช‚ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡. RAID เชธเซเชคเชฐ 1 เช…เชจเซ‡ 6 เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เช† เชฎเชพเชจเซเชฏ เช›เซ‡. เชœเซ‹ เชคเซ‡ เชจเชตเซ€ เชเชฐเซ‡ เชนเซ‹เชฏ เชคเซ‹ เชฌเชงเซเช‚ เช†เชฐเช‚เชญ เชตเชฟเชจเชพ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชตเชงเซเชฎเชพเช‚, เชฌเชจเชพเชตเชŸ เชชเชฐ SSD เชเชฐเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚ เช TBW เชธเช‚เชธเชพเชงเชจเชจเซ‹ เชฌเช—เชพเชก เช›เซ‡. เช…เชฎเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ‡เชฒ SSD เชเชฐเซ‡เชจเซ‡ "เชชเซเชฐเชพเชฐเช‚เชญเชฟเช•" เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเซเชฏเชพเช‚ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ TRIM/DISCARD เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.

SSD เชเชฐเซ‡ เชฎเชพเชŸเซ‡, RAID 1 DISCARD เช เชฌเซ‰เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡.

SSD RAID 6 DISCARD เชเชฐเซ‡ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชจเซ‡ เช•เชฐเซเชจเชฒ เชฎเซ‹เชกเซเชฏเซเชฒ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชฎเชพเช‚ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.

เช† เชฎเชพเชคเซเชฐ เชคเซเชฏเชพเชฐเซ‡ เชœ เชฅเชตเซเช‚ เชœเซ‹เชˆเช เชœเซ‹ เช† เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชฒเซ‡เชตเชฒ 4/5/6 เชเชฐเซ‡เชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เชคเชฎเชพเชฎ SSDs เชชเชพเชธเซ‡ discard_zeroes_data เชฎเชพเชŸเซ‡ เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชธเชฎเชฐเซเชฅเชจ เชนเซ‹เชฏ. เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเชฎเซ‡ เชตเชฟเชšเชฟเชคเซเชฐ เชกเซเชฐเชพเชˆเชตเซ‹ เชชเชฐ เช†เชตเซ‹ เช›เซ‹ เชœเซ‡ เช•เชฐเซเชจเชฒเชจเซ‡ เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ เช† เชซเช‚เช•เซเชถเชจ เชธเชชเซ‹เชฐเซเชŸเซ‡เชก เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชคเซ‡ เชคเซเชฏเชพเช‚ เชจเชฅเซ€, เช…เชฅเชตเชพ เชซเช‚เช•เซเชถเชจ เชนเช‚เชฎเซ‡เชถเชพ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เช† เช•เซเชทเชฃเซ‡, เชธเชชเซ‹เชฐเซเชŸ เชฒเช—เชญเช— เชฆเชฐเซ‡เช• เชœเช—เซเชฏเชพเช เช‰เชชเชฒเชฌเซเชง เช›เซ‡, เชœเซ‹ เช•เซ‡, เชญเซ‚เชฒเซ‹ เชธเชพเชฅเซ‡ เชœเซ‚เชจเซ€ เชกเซเชฐเชพเช‡เชตเซเชธ เช…เชจเซ‡ เชซเชฐเซเชฎเชตเซ‡เชฐ เช›เซ‡. เช† เช•เชพเชฐเชฃเซ‹เชธเชฐ, RAID 6 เชฎเชพเชŸเซ‡ DISCARD เช†เชงเชพเชฐ เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เชจเชฟเชทเซเช•เซเชฐเชฟเชฏ เชฅเชฏเซ‡เชฒ เช›เซ‡.

เชงเซเชฏเชพเชจ เช†เชชเซ‹, เชจเซ€เชšเซ‡เชจเซ‹ เช†เชฆเซ‡เชถ "เชถเซ‚เชจเซเชฏ" เชธเชพเชฅเซ‡ เชเชฐเซ‡เชจเซ‡ "เชชเซเชฐเชพเชฐเช‚เชญ" เช•เชฐเซ€เชจเซ‡ NVMe เชกเซเชฐเชพเช‡เชตเซเชธ เชชเชฐเชจเชพ เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพเชจเซ‹ เชจเชพเชถ เช•เชฐเชถเซ‡.

#blkdiscard /dev/md0

เชœเซ‹ เช•เช‚เชˆเช• เช–เซ‹เชŸเซเช‚ เชฅเชพเชฏ, เชคเซ‹ เชเช• เชชเช—เชฒเซเช‚ เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹.

#blkdiscard --step 65536 /dev/md0

SATA SSD

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

เช†เชŸเชฒเซเช‚ เชฎเซ‹เชŸเซเช‚ เช•เซ‡เชฎ...?เชšเช‚เช•-เชธเชพเชˆเชเชฎเชพเช‚ เชตเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชฅเซ€ เช–เช‚เชก-เช•เชฆ เชธเซเชงเซ€เชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚ เชฐเซ‡เชจเซเชกเชฎ เชฐเซ€เชกเชฟเช‚เช—เชจเซ€ เชเชกเชช เชชเชฐ เชธเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชธเชฐ เชชเชกเซ‡ เช›เซ‡. เช†เชตเซเช‚ เชเชŸเชฒเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชฏเซ‹เช—เซเชฏ เช•เชฆ เช…เชฅเชตเชพ เชคเซ‡เชจเชพเชฅเซ€ เชจเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชเช• เชœ เช‰เชชเช•เชฐเชฃ เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชคเซ‡เชฅเซ€, เชฌเชงเชพ เช‰เชชเช•เชฐเชฃเซ‹เชฎเชพเช‚เชฅเซ€ IOPS เชจเซ‹ เชธเชพเชฐเชพเช‚เชถ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช†เช‚เช•เชกเชพ เช…เชจเซเชธเชพเชฐ, 99% IO 512K เช•เชฐเชคเชพเช‚ เชตเชงเซ€ เชจเชฅเซ€.

RAID เชฎเชพเช‚ เชฒเช–เชตเชพ เชฆเซ€เช  6 IOPS เช›เซ‡ เชนเช‚เชฎเซ‡เชถเชพเช‚ เชเช• เชกเซเชฐเชพเช‡เชตเชจเชพ IOPS เช•เชฐเชคเชพเช‚ เช“เช›เซเช‚ เช…เชฅเชตเชพ เชคเซ‡เชจเซ€ เชฌเชฐเชพเชฌเชฐ. เชœเซเชฏเชพเชฐเซ‡, เชฐเซ‡เชจเซเชกเชฎ เชฐเซ€เชก เชคเชฐเซ€เช•เซ‡, IOPS เช เชเช• เชกเซเชฐเชพเชˆเชต เช•เชฐเชคเชพ เช…เชจเซ‡เช• เช—เชฃเซเช‚ เชตเชงเชพเชฐเซ‡ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชนเซ€เช‚ เชฌเซเชฒเซ‹เช•เชจเซเช‚ เช•เชฆ เชฎเชนเชคเซเชคเซเชตเชจเซเช‚ เช›เซ‡.
เชฒเซ‡เช–เช• RAID 6 เชฌเชพเชฏ-เชกเชฟเชเชพเช‡เชจเชฎเชพเช‚ เช–เชฐเชพเชฌ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชชเซ‡เชฐเชพเชฎเซ€เชŸเชฐเชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ‹ เชฎเซเชฆเซเชฆเซ‹ เชœเซ‹เชคเชพ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ RAID 6 เชถเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡ เชคเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡.
เช…เชฎเซ‡ RAID 6 เชจเชพ เชจเชฌเชณเชพ เชฐเซ‡เชจเซเชกเชฎ เชฒเช–เชพเชฃ เชฎเชพเชŸเซ‡ NVMe เช•เซ‡เชถ เช…เชจเซ‡ เชชเชพเชคเชณเซ€-เชœเซ‹เช—เชตเชพเชˆ เชฏเซเช•เซเชคเชฟเช“ เชธเชพเชฅเซ‡ เชตเชณเชคเชฐ เช†เชชเซ€เชถเซเช‚.

เช…เชฎเซ‡ เชนเชœเซ€ เชธเซเชงเซ€ RAID 6 เชฎเชพเชŸเซ‡ DISCARD เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€. เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เช† เชเชฐเซ‡เชจเซ‡ "เชชเซเชฐเชพเชฐเช‚เชญ" เช•เชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚. OS เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช† เชชเช›เซ€เชฅเซ€ เช•เชฐเซ€เชถเซเช‚.

เชธเชพเชŸเชพ เชเชšเชกเซ€เชกเซ€

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

NVMe RAID เชชเชฐ LVM

เชเชกเชช เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฐเซ‚เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ NVMe RAID 1 เชชเชฐ เชฎเซ‚เช•เชตเชพ เชฎเชพเช‚เช—เซ€เช เช›เซ€เช เชœเซ‡ /dev/md0 เช›เซ‡.
เชœเซ‹ เช•เซ‡, เช…เชฎเชจเซ‡ เชนเชœเซ เชชเชฃ เช…เชจเซเชฏ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ เช† เชเชกเชชเซ€ เชเชฐเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชœเซ‡เชฎ เช•เซ‡ เชธเซเชตเซ‡เชช, เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช…เชจเซ‡ LVM-cache เช…เชจเซ‡ LVM-เชชเชพเชคเชณเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เช† เชเชฐเซ‡ เชชเชฐ LVM VG เชฌเชจเชพเชตเซ€เชถเซเช‚.

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

เชšเชพเชฒเซ‹ เชฐเซเชŸ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎ เชฎเชพเชŸเซ‡ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฌเชจเชพเชตเซ€เช.

#lvcreate -L 128G --name root root

เชšเชพเชฒเซ‹ RAM เชจเชพ เชฎเชพเชช เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซเชตเซ‡เชช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฌเชจเชพเชตเซ€เช.

#lvcreate -L 32G --name swap root

OS เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ

เช•เซเชฒเชฎเชพเช‚, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเชฟเชธเซเชŸเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชฌเชงเซเช‚ เช›เซ‡.

เช‰เชฌเซเชจเซเชŸเซ เชฒเชพเช‡เชต เชชเชฐเซเชฏเชพเชตเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชธเชฟเชธเซเชŸเชฎ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชตเชฟเชเชพเชฐเซเชก เชฒเซ‹เช‚เชš เช•เชฐเซ‹. เชธเชพเชฎเชพเชจเซเชฏ เชธเซเชฅเชพเชชเชจ. เชซเช•เซเชค เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเชพเชŸเซ‡ เชกเชฟเชธเซเช• เชชเชธเช‚เชฆ เช•เชฐเชตเชพเชจเชพ เชคเชฌเช•เซเช•เซ‡, เชคเชฎเชพเชฐเซ‡ เชจเซ€เชšเซ‡เชจเชพเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

  • /dev/md1, - เชฎเชพเช‰เชจเซเชŸ เชชเซ‹เชˆเชจเซเชŸ /boot, FS - BTRFS
  • /dev/root/root (เช‰เชฐเซเชซเซ‡ /dev/mapper/root-root), - เชฎเชพเช‰เชจเซเชŸ เชชเซ‹เชˆเชจเซเชŸ / (เชฐเซเชŸ), FS - BTRFS
  • /dev/root/swap (เช‰เชฐเซเชซเซ‡ /dev/mapper/root-swap), - เชธเซเชตเซ‡เชช เชชเชพเชฐเซเชŸเซ€เชถเชจ เชคเชฐเซ€เช•เซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹
  • /dev/sda เชชเชฐ เชฌเซเชŸเชฒเซ‹เชกเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹

เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชฐเซเชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชคเชฐเซ€เช•เซ‡ BTRFS เชชเชธเช‚เชฆ เช•เชฐเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชธเซเชฅเชพเชชเช• เช†เชชเชฎเซ‡เชณเซ‡ / (เชฐเซเชŸ) เชฎเชพเชŸเซ‡ "@" เชจเชพเชฎเชจเชพ เชฌเซ‡ BTRFS เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เช…เชจเซ‡ /home เชฎเชพเชŸเซ‡ "@home" เชฌเชจเชพเชตเชถเซ‡.

เชšเชพเชฒเซ‹ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชถเชฐเซ‚ เช•เชฐเซ€เช...

เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชฎเซ‹เชกเชฒ เชกเชพเชฏเชฒเซ‹เช— เชฌเซ‹เช•เซเชธ เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชถเซ‡ เชœเซ‡ เชฌเซเชŸเชฒเซ‹เชกเชฐ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เชญเซ‚เชฒ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชคเชฎเซ‡ เชฎเชพเชจเช• เชฎเชพเชงเซเชฏเชฎเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชธเช‚เชตเชพเชฆเชฎเชพเช‚เชฅเซ€ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚ เช…เชจเซ‡ เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚. เช…เชฎเซ‡ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚เชฅเซ€ เชฒเซ‰เช— เช†เช‰เชŸ เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเซ‰เช— เช‡เชจ เช•เชฐเซ€เช เช›เซ€เช, เชœเซ‡เชจเซ‹ เช…เช‚เชค เชธเซเชตเชšเซเช› เช‰เชฌเซเชจเซเชŸเซ เชฒเชพเช‡เชต เชกเซ‡เชธเซเช•เชŸเซ‰เชชเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡. เชŸเชฐเซเชฎเชฟเชจเชฒ เช–เซ‹เชฒเซ‹, เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€:

#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 เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ€ เชถเช•เซ‡ เช›เซ‡

เชšเชพเชฒเซ‹ TRIM/DISCARD เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ RAID 6 เชฎเซ‹เชกเซเชฏเซเชฒ เชฎเชพเชŸเซ‡เชจเชพ เชชเชฐเชฟเชฎเชพเชฃเซ‹เชจเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€เช:

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

เชšเชพเชฒเซ‹ เช†เชชเชฃเชพ เชเชฐเซ‡เชจเซ‡ เชฅเซ‹เชกเซ‹ เชเชŸเช•เซ‹ เช•เชฐเซ€เช:

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

เชถเซเช‚ เชนเชคเซเช‚..?เช…เชฎเซ‡ udev เชจเชฟเชฏเชฎเซ‹เชจเซ‹ เชธเชฎเซ‚เชน เชฌเชจเชพเชตเซเชฏเซ‹ เช›เซ‡ เชœเซ‡ เชจเซ€เชšเซ‡ เชฎเซเชœเชฌ เช•เชฐเชถเซ‡:

  • RAID 2020 เชฎเชพเชŸเซ‡ เชฌเซเชฒเซ‹เช• เช•เซ‡เชถเชจเซเช‚ เช•เชฆ 6 เชฎเชพเชŸเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เชนเซ‹เชตเชพ เชฎเชพเชŸเซ‡ เชธเซ‡เชŸ เช•เชฐเซ‹. เชกเชฟเชซเซ‹เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ, เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, Linux เชจเซ€ เชฐเชšเชจเชพ เชชเช›เซ€ เชฌเชฆเชฒเชพเชฏเซเช‚ เชจเชฅเซ€, เช…เชจเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชชเชฐเซเชฏเชพเชชเซเชค เชจเชฅเซ€.
  • เชเชฐเซ‡ เชšเซ‡เช•เซเชธ/เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจเชจเซ€ เช…เชตเชงเชฟ เชฎเชพเชŸเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ IO เช…เชจเชพเชฎเชค เชฐเชพเช–เซ‹. เช† เชคเชฎเชพเชฐเชพ เชเชฐเซ‡เชจเซ‡ เชฒเซ‹เชก เชนเซ‡เช เชณ เชถเชพเชถเซเชตเชค เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เช…เชŸเชตเชพเชคเชพ เช…เชŸเช•เชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช›เซ‡.
  • เชเชฐเซ‡เชจเชพ เชšเซ‡เช•/เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฎเชนเชคเซเชคเชฎ IO เชจเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเซ‹. เช† เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เชœเซ‡เชฅเซ€ SSD RAIDs เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช/เชคเชชเชพเชธเชตเชพเชฅเซ€ เชคเชฎเชพเชฐเซ€ เชกเซเชฐเชพเช‡เชตเชจเซ‡ เชšเชชเชณเชคเชพเชฅเซ€ เชซเซเชฐเชพเชฏ เชจ เชฅเชพเชฏ. เช† เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ NVMe เชฎเชพเชŸเซ‡ เชธเชพเชšเซเช‚ เช›เซ‡. (เชฐเซ‡เชกเชฟเชเชŸเชฐ เชตเชฟเชถเซ‡ เชฏเชพเชฆ เช›เซ‡? เชนเซเช‚ เชฎเชœเชพเช• เช•เชฐเชคเซ‹ เชจ เชนเชคเซ‹.)
  • เชกเชฟเชธเซเช•เชจเซ‡ APM เชฆเซเชตเชพเชฐเชพ เชธเซเชชเชฟเชจเซเชกเชฒ เชฐเซ‹เชŸเซ‡เชถเชจ (HDD) เชฐเซ‹เช•เชตเชพเชฅเซ€ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช•เชฐเซ‹ เช…เชจเซ‡ เชกเชฟเชธเซเช• เชจเชฟเชฏเช‚เชคเซเชฐเช•เซ‹ เชฎเชพเชŸเซ‡ เชธเซเชฒเซ€เชช เชŸเชพเชˆเชฎเช†เช‰เชŸเชจเซ‡ 7 เช•เชฒเชพเช• เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ‹. เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชกเซเชฐเชพเช‡เชตเซเชธ เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡ เชคเซ‹ เชคเชฎเซ‡ APM เชจเซ‡ โ€‹โ€‹เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (-B 255). เชกเชฟเชซเซ‰เชฒเซเชŸ เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡, เชกเซเชฐเชพเช‡เชตเซเชธ เชชเชพเช‚เชš เชธเซ‡เช•เชจเซเชก เชชเช›เซ€ เชฌเช‚เชง เชฅเชˆ เชœเชถเซ‡. เชชเช›เซ€ OS เชกเชฟเชธเซเช• เช•เซ‡เชถ เชฐเซ€เชธเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเช‚เช—เซ‡ เช›เซ‡, เชกเชฟเชธเซเช• เชซเชฐเซ€เชฅเซ€ เชธเซเชชเชฟเชจ เชฅเชถเซ‡, เช…เชจเซ‡ เชฌเชงเซเช‚ เชซเชฐเซ€เชฅเซ€ เชถเชฐเซ‚ เชฅเชถเซ‡. เชกเชฟเชธเซเช•เชฎเชพเช‚ เชธเซเชชเชฟเชจเซเชกเชฒ เชชเชฐเชฟเชญเซเชฐเชฎเชฃเชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชฎเชนเชคเซเชคเชฎ เชธเช‚เช–เซเชฏเชพ เชนเซ‹เชฏ เช›เซ‡. เช†เชตเซ€ เชธเชฐเชณ เชกเชฟเชซเซ‰เชฒเซเชŸ เชธเชพเช‡เช•เชฒ เชคเชฎเชพเชฐเซ€ เชกเชฟเชธเซเช•เชจเซ‡ เชฅเซ‹เชกเชพ เชตเชฐเซเชทเซ‹เชฎเชพเช‚ เชธเชฐเชณเชคเชพเชฅเซ€ เชฎเชพเชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เชฌเชงเซ€ เชกเชฟเชธเซเช• เช†เชจเชพเชฅเซ€ เชชเซ€เชกเชพเชคเซ€ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชฎเชพเชฐเซ€ "เชฒเซ‡เชชเชŸเซ‹เชช" เช›เซ‡, เชฏเซ‹เช—เซเชฏ เชกเชฟเชซเซ‹เชฒเซเชŸ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชธเชพเชฅเซ‡, เชœเซ‡ RAID เชจเซ‡ เชฎเชฟเชจเซ€-MAID เชœเซ‡เชตเซ‹ เชฌเชจเชพเชตเซ‡ เช›เซ‡.
  • เชกเชฟเชธเซเช• เชชเชฐ เชฐเซ€เชกเชนเซ‡เชก เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‹ (เชซเชฐเชคเซ€) 1 เชฎเซ‡เช—เชพเชฌเชพเชˆเชŸ - เชธเชคเชค เชฌเซ‡ เชฌเซเชฒเซ‹เช•เซเชธ/เชšเช‚เช• RAID 6
  • เชเชฐเซ‡ เชชเชฐ เชœ เชฐเซ€เชกเชนเซ‡เชกเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‹.

เชšเชพเชฒเซ‹ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเซ€เช /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

เชเชตเซเช‚ เช•เซ‡เชฎ..?เช…เชฎเซ‡ UUID เชฆเซเชตเชพเชฐเชพ /boot เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเชพเชŸเซ‡ เชถเซ‹เชงเซ€เชถเซเช‚. เชเชฐเซ‡ เชจเชพเชฎเช•เชฐเชฃ เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡.

เช…เชฎเซ‡ เชฌเชพเช•เซ€เชจเชพ เชตเชฟเชญเชพเช—เซ‹เชจเซ‡ LVM เชจเชพเชฎเซ‹ เชฆเซเชตเชพเชฐเชพ /dev/mapper/vg-lv เชจเซ‹เชŸเซ‡เชถเชจเชฎเชพเช‚ เชถเซ‹เชงเซ€เชถเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เช“ เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹เชจเซ‡ เชคเชฆเซเชฆเชจ เชตเชฟเชถเชฟเชทเซเชŸ เชฐเซ€เชคเซ‡ เช“เชณเช–เซ‡ เช›เซ‡.

เช…เชฎเซ‡ LVM เชฎเชพเชŸเซ‡ UUID เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเชพ เชจเชฅเซ€ เช•เชพเชฐเชฃ เช•เซ‡ LVM เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เช…เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซเช‚ UUID เชธเชฎเชพเชจ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.เชฎเชพเช‰เชจเซเชŸ /dev/mapper/root-root.. เชฌเซ‡ เชตเชพเชฐ?เชนเชพ. เชฌเชฐเชพเชฌเชฐ. BTRFS เชจเซ€ เชตเชฟเชถเซ‡เชทเชคเชพ. เช† เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชตเชฟเชตเชฟเชง เชธเชฌเชตเซ‹เชฒ เชธเชพเชฅเซ‡ เช˜เชฃเซ€ เชตเช–เชค เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช† เชœ เชฒเช•เซเชทเชฃเชจเซ‡ เชฒเซ€เชงเซ‡, เชนเซเช‚ เช•เซเชฏเชพเชฐเซ‡เชฏ เชธเช•เซเชฐเชฟเชฏ BTRFS เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเชพ LVM เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชคเซ‹ เชจเชฅเซ€. เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเซ‹ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชจเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชฎเชณเซ€ เชถเช•เซ‡ เช›เซ‡.

เชšเชพเชฒเซ‹ 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

เชถเซเช‚ เชนเชคเซเช‚..?เช…เชฎเซ‡ เช•เชฌเชœเซ‡ เช•เชฐเซ‡เชฒเซ€ เชœเช—เซเชฏเชพเชจเชพ 90% เชธเซเชงเซ€ เชตเซ‹เชฒเซเชฏเซเชฎเชจเชพ 5% เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชตเชพ เชชเชฐ LVM เชชเชพเชคเชณเชพ เชชเซ‚เชฒเชจเชพ เชธเซเชตเชšเชพเชฒเชฟเชค เชตเชฟเชธเซเชคเชฐเชฃเชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซเชฏเซเช‚ เช›เซ‡.

เช…เชฎเซ‡ LVM เช•เซ‡เชถ เชฎเชพเชŸเซ‡ เช•เซ‡เชถ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชฎเชนเชคเซเชคเชฎ เชธเช‚เช–เซเชฏเชพ เชตเชงเชพเชฐเซ€ เช›เซ‡.

เช…เชฎเซ‡ LVM เชจเซ‡ เช†เชจเชพ เชชเชฐ LVM เชตเซ‹เชฒเซเชฏเซเชฎเซเชธ (PV) เชถเซ‹เชงเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซเชฏเซเช‚ เช›เซ‡:

  • LVM เช•เซ‡เชถ (cdata) เชงเชฐเชพเชตเชคเชพ เช‰เชชเช•เชฐเชฃเซ‹
  • LVM เช•เซ‡เชถเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชถ เชฅเชฏเซ‡เชฒ เช‰เชชเช•เชฐเชฃเซ‹, เช•เซ‡เชถเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡ ( _เช•เซ‹เชฐเซ€เช—). เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชนเชœเซ€ เชชเชฃ เช•เซ‡เชถ เชฆเซเชตเชพเชฐเชพ เชธเซเช•เซ‡เชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ (เชซเช•เซเชค ).
  • LVM เช•เซ‡เชถ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ (cmeta) เชงเชฐเชพเชตเชคเชพ เช‰เชชเช•เชฐเชฃเซ‹
  • VG เชฎเชพเช‚ เชคเชฎเชพเชฎ เช‰เชชเช•เชฐเชฃเซ‹ เชจเชพเชฎเชจเซ€ เช›เชฌเซ€เช“ เชธเชพเชฅเซ‡. เช…เชนเซ€เช‚ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชจเซ€ เชกเชฟเชธเซเช• เชˆเชฎเซ‡เชœเซ‹ เชนเชถเซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เชจเชฅเซ€ เชˆเชšเซเช›เชคเชพ เช•เซ‡ เชนเซ‹เชธเซเชŸ เชชเชฐ LVM เช—เซ‡เชธเซเชŸ OS เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเซ‡.
  • เชจเชพเชฎ เชฌเซ‡เช•เช…เชช เชธเชพเชฅเซ‡ VG เชฎเชพเช‚ เชคเชฎเชพเชฎ เช‰เชชเช•เชฐเชฃเซ‹. เช…เชนเซ€เช‚ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชˆเชฎเซ‡เชœเซ€เชธเชจเซ€ เชฌเซ‡เช•เช…เชช เช•เซ‹เชชเซ€ เชนเชถเซ‡.
  • เชฌเชงเชพ เช‰เชชเช•เชฐเชฃเซ‹ เช•เซ‡ เชœเซ‡เชจเชพ เชจเชพเชฎ "gpv" เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡ (เช…เชคเชฟเชฅเชฟ เชญเซŒเชคเชฟเช• เชตเซ‹เชฒเซเชฏเซเชฎ)

LVM VG เชชเชฐ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เช–เชพเชฒเซ€ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชฎเซ‡ DISCARD เชธเชชเซ‹เชฐเซเชŸ เชธเช•เซเชฐเชฟเชฏ เช•เชฐเซเชฏเซ‹ เช›เซ‡. เชธเชพเชตเชšเซ‡เชค เชฐเชนเซ‹. เช†เชจเชพเชฅเซ€ SSD เชชเชฐ LVs เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช˜เชฃเซ‹ เชธเชฎเชฏ เชฒเชพเช—เชถเซ‡. เช† เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ SSD RAID 6 เชชเชฐ เชฒเชพเช—เซ เชชเชกเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชฏเซ‹เชœเชจเชพ เช…เชจเซเชธเชพเชฐ, เช…เชฎเซ‡ เชชเชพเชคเชณเซ€ เชœเซ‹เช—เชตเชพเชˆเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚, เชคเซ‡เชฅเซ€ เช† เช…เชฎเชจเซ‡ เชฌเชฟเชฒเช•เซเชฒ เช…เชตเชฐเซ‹เชงเซ‡ เชจเชนเซ€เช‚.

เชšเชพเชฒเซ‹ initramfs เชˆเชฎเซ‡เชœ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช:

#update-initramfs -u -k all

เช—เซเชฐเชฌ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช…เชจเซ‡ เช—เซ‹เช เชตเซ‹:

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

เช•เชˆ เชกเชฟเชธเซเช• เชชเชธเช‚เชฆ เช•เชฐเชตเซ€?เชฌเชงเชพ เชœเซ‡เช“ sd* เช›เซ‡. เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชˆเชชเชฃ เช•เชพเชฐเซเชฏเชฐเชค SATA เชกเซเชฐเชพเช‡เชต เช…เชฅเชตเชพ SSD เชฎเชพเช‚เชฅเซ€ เชฌเซเชŸ เช•เชฐเชตเชพ เชธเช•เซเชทเชฎ เชนเซ‹เชตเซ€ เชœเซ‹เชˆเช.

เชถเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“เช เช“เชเชธ-เชชเซเชฐเซ‹เชฌเชฐ เช‰เชฎเซ‡เชฐเซเชฏเซเช‚..?เช…เชคเชฟเชถเชฏ เชธเซเชตเชคเช‚เชคเซเชฐเชคเชพ เช…เชจเซ‡ เชฐเชฎเชคเชฟเชฏเชพเชณ เชนเชพเชฅ เชฎเชพเชŸเซ‡.

เชคเซ‡ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€ เชœเซ‹ RAIDsเชฎเชพเช‚เชฅเซ€ เชเช• เชกเชฟเช—เซเชฐเซ‡เชกเซ‡เชก เชธเซเชŸเซ‡เชŸเชฎเชพเช‚ เชนเซ‹เชฏ. เชคเซ‡ เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹ เชชเชฐ OS เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช† เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชชเชฐ เชšเชพเชฒเชคเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเซ‹เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡.

เชœเซ‹ เชคเชฎเชจเซ‡ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เช›เซ‹เชกเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เช‰เชชเชฐเซ‹เช•เซเชค เชคเชฎเชพเชฎ เชฌเชพเชฌเชคเซ‹เชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เซ‹. เชนเซเช‚ เช‘เชจเชฒเชพเช‡เชจ เชคเซ‹เชซเชพเชจเซ€ เชนเชพเชฅเชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชตเชพเชจเช—เซ€เช“ เชถเซ‹เชงเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚.

เช† เชธเชพเชฅเซ‡ เช…เชฎเซ‡ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เช‡เชจเซเชธเซเชŸเซ‹เชฒเซ‡เชถเชจ เชชเซ‚เชฐเซเชฃ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชจเชตเชพ เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒ OS เชฎเชพเช‚ เชฐเซ€เชฌเซ‚เชŸ เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เช›เซ‡. เชฌเซเชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซ€ Live CD/USB เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซเช‚ เชญเซ‚เชฒเชถเซ‹ เชจเชนเซ€เช‚.

#exit
#reboot

เชฌเซเชŸ เช‰เชชเช•เชฐเชฃ เชคเชฐเซ€เช•เซ‡ เช•เซ‹เชˆเชชเชฃ SATA SSDs เชชเชธเช‚เชฆ เช•เชฐเซ‹.

SATA SSD เชชเชฐ LVM

เช† เชฌเชฟเช‚เชฆเซเช, เช…เชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชจเชตเชพ OS เชฎเชพเช‚ เชฌเซเชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชจเซ‡เชŸเชตเชฐเซเช• เช—เซ‹เช เชตเซเชฏเซเช‚ เช›เซ‡, เชฏเซ‹เช—เซเชฏ เช›เซ‡, เชŸเชฐเซเชฎเชฟเชจเชฒ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เช–เซ‹เชฒเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเซเชฏเซเช‚ เช›เซ‡:

#sudo bash

เชšเชพเชฒเซ‹ เชšเชพเชฒเซ เชฐเชพเช–เซ€เช.

SATA SSD เชฎเชพเช‚เชฅเซ€ เชเชฐเซ‡เชจเซ‡ "เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเซ‹":

#blkdiscard /dev/md2

เชœเซ‹ เชคเซ‡ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹:

#blkdiscard --step 65536 /dev/md2
SATA SSD เชชเชฐ LVM VG เชฌเชจเชพเชตเซ‹:

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

เชถเชพ เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ VG..?เชนเช•เซ€เช•เชคเชฎเชพเช‚, เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฐเซเชŸ เชจเชพเชฎเชจเซเช‚ VG เช›เซ‡. เชถเชพ เชฎเชพเชŸเซ‡ เชเช• VG เชฎเชพเช‚ เชฌเชงเซเช‚ เช‰เชฎเซ‡เชฐเชคเชพ เชจเชฅเซ€?

เชœเซ‹ VG เชฎเชพเช‚ เช…เชจเซ‡เช• PVs เชนเซ‹เชฏ, เชคเซ‹ VG เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชธเช•เซเชฐเชฟเชฏ เชฅเชพเชฏ เชคเซ‡ เชฎเชพเชŸเซ‡, เชฌเชงเชพ PV เชนเชพเชœเชฐ (เช“เชจเชฒเชพเชˆเชจ) เชนเซ‹เชตเชพ เชœเซ‹เชˆเช. เช…เชชเชตเชพเชฆ LVM RAID เช›เซ‡, เชœเซ‡ เช†เชชเชฃเซ‡ เชœเชพเชฃเซ€เชœเซ‹เชˆเชจเซ‡ เชตเชพเชชเชฐเชคเชพ เชจเชฅเซ€.

เช…เชฎเซ‡ เช–เชฐเซ‡เช–เชฐ เช‡เชšเซเช›เซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‹ RAID 6 เชเชฐเซ‡เชฎเชพเช‚เชฅเซ€ เช•เซ‹เชˆเชชเชฃ เชชเชฐ เชจเชฟเชทเซเชซเชณเชคเชพ (เชกเซ‡เชŸเชพ เชจเซเช•เชถเชพเชจ เชตเชพเช‚เชšเซ‹) เชนเซ‹เชฏ, เชคเซ‹ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฌเซ‚เชŸ เชฅเชถเซ‡ เช…เชจเซ‡ เช…เชฎเชจเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเชตเชพเชจเซ€ เชคเช• เช†เชชเชถเซ‡.

เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‚เชฐเซเชคเชคเชพเชจเชพ เชชเซเชฐเชฅเชฎ เชธเซเชคเชฐเซ‡ เช…เชฎเซ‡ เชฆเชฐเซ‡เช• เชชเซเชฐเช•เชพเชฐเชจเชพ เชญเซŒเชคเชฟเช• "เชฎเซ€เชกเชฟเชฏเชพ" เชจเซ‡ เช…เชฒเช— VG เชฎเชพเช‚ เช…เชฒเช— เช•เชฐเซ€เชถเซเช‚.

เชตเซˆเชœเซเชžเชพเชจเชฟเช• เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เชตเชฟเชตเชฟเชง RAID เชเชฐเซ‡ เชตเชฟเชตเชฟเชง "เชตเชฟเชถเซเชตเชธเชจเซ€เชฏเชคเชพ เชกเซ‹เชฎเซ‡เชจเซเชธ" เชฅเซ€ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡. เชคเชฎเชพเชฐเซ‡ เชคเซ‡เชฎเชจเซ‡ เชเช• VG เชฎเชพเช‚ เช•เซเชฐเซ‡เชฎ เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชจเชฟเชทเซเชซเชณเชคเชพเชจเซ‹ เชตเชงเชพเชฐเชพเชจเซ‹ เชธเชพเชฎเชพเชจเซเชฏ เชฎเซเชฆเซเชฆเซ‹ เชฌเชจเชพเชตเชตเซ‹ เชœเซ‹เชˆเช เชจเชนเซ€เช‚.

"เชนเชพเชฐเซเชกเชตเซ‡เชฐ" เชธเซเชคเชฐเซ‡ LVM เชจเซ€ เชนเชพเชœเชฐเซ€ เช†เชชเชฃเชจเซ‡ เชตเชฟเชตเชฟเชง RAID เชเชฐเซ‡เชจเชพ เชŸเซเช•เชกเชพเช“เชจเซ‡ เช…เชฒเช— เช…เชฒเช— เชฐเซ€เชคเซ‡ เชœเซ‹เชกเซ€เชจเซ‡ เชฎเชจเชธเซเชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชชเซ€ เชจเชพเช–เชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเชถเซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ - เชšเชฒเชพเชตเซ‹ เชคเซ‡ เชœ เชธเชฎเชฏเซ‡ bcache + LVM เชชเชพเชคเชณเซเช‚, bcache + BTRFS, LVM cache + LVM เชชเชพเชคเชณเซเช‚, เช•เซ‡เชถ เชธเชพเชฅเซ‡เชจเซเช‚ เชœเชŸเชฟเชฒ ZFS เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ, เช…เชฅเชตเชพ เชคเซ‡ เชฌเชงเชพเชจเซ‡ เช…เชœเชฎเชพเชตเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆเชชเชฃ เช…เชจเซเชฏ เชจเชฐเช• เชฎเชฟเชถเซเชฐเชฃ.

"เชนเชพเชฐเซเชกเชตเซ‡เชฐ" เชธเซเชคเชฐเซ‡, เช…เชฎเซ‡ เชธเชพเชฐเชพ เชœเซ‚เชจเชพ "เชœเชพเชกเชพ" LVM เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชธเชฟเชตเชพเชฏ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆเชชเชฃ เชตเชพเชชเชฐเซ€เชถเซเช‚ เชจเชนเซ€เช‚. เช† เชจเชฟเชฏเชฎเชจเซ‹ เช…เชชเชตเชพเชฆ เชฌเซ‡เช•เช…เชช เชชเชพเชฐเซเชŸเซ€เชถเชจ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช† เช•เซเชทเชฃ เชธเซเชงเซ€เชฎเชพเช‚, เช˜เชฃเชพ เชตเชพเชšเช•เซ‹ เชจเซ‡เชธเซเชŸเชฟเช‚เช— เชกเซ‹เชฒ เชตเชฟเชถเซ‡ เช•เช‚เชˆเช• เชถเช‚เช•เชพ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€ เชฆเซ€เชงเซเช‚ เชนเชคเซเช‚.

SATA HDD เชชเชฐ LVM

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

เชซเชฐเซ€ เชจเชตเซเช‚ เชตเซ€เชœเซ€..?เช…เชฎเซ‡ เช–เชฐเซ‡เช–เชฐ เช‡เชšเซเช›เซ€เช เช›เซ€เช เช•เซ‡ เชœเซ‹ เช…เชฎเซ‡ เชกเซ‡เชŸเชพ เชฌเซ‡เช•เช…เชช เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚ เชคเซ‡ เชกเชฟเชธเซเช• เชเชฐเซ‡ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ, เชคเซ‹ เช…เชฎเชพเชฐเซ€ เช‘เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เชถเซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฌเชฟเชจ-เชฌเซ‡เช•เช…เชช เชกเซ‡เชŸเชพเชจเซ€ เชเช•เซเชธเซ‡เชธ เชœเชพเชณเชตเซ€ เชฐเชพเช–เชถเซ‡. เชคเซ‡เชฅเซ€, VG เชธเช•เซเชฐเชฟเชฏเช•เชฐเชฃ เชธเชฎเชธเซเชฏเชพเช“ เชŸเชพเชณเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชเช• เช…เชฒเช— VG เชฌเชจเชพเชตเซ€เช เช›เซ€เช.

LVM เช•เซ‡เชถ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช•เซ‡เชถเซ€เช‚เช— เช‰เชชเช•เชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชตเชพเชชเชฐเชตเชพ เชฎเชพเชŸเซ‡ NVMe RAID 1 เชชเชฐ LV เชฌเชจเชพเชตเซ€เช.

#lvcreate -L 70871154688B --name cache root

เช†เชŸเชฒเซเช‚ เช“เช›เซเช‚ เช•เซ‡เชฎ เช›เซ‡...?เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเชพ NVMe SSDs เชชเชพเชธเซ‡ SLC เช•เซ‡เชถ เชชเชฃ เช›เซ‡. 4-เชฌเซ€เชŸ MLC เชฎเชพเช‚ เช•เชฌเชœเซ‡ เช•เชฐเซ‡เชฒเซ€ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ 18 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ "เชซเซเชฐเซ€" เช…เชจเซ‡ 3 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เชกเชพเชฏเชจเซ‡เชฎเชฟเช•. เชเช•เชตเชพเชฐ เช† เช•เซ‡เชถ เช–เชฒเชพเชธ เชฅเชˆ เชœเชพเชฏ, NVMe SSD เช เช•เซ‡เชถ เชธเชพเชฅเซ‡เชจเชพ เช…เชฎเชพเชฐเชพ SATA SSD เช•เชฐเชคเชพเช‚ เชตเชงเซ เชเชกเชชเซ€ เชจเชนเซ€เช‚ เชนเซ‹เชฏ. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช† เช•เชพเชฐเชฃเซ‹เชธเชฐ, LVM เช•เซ‡เชถ เชชเชพเชฐเซเชŸเซ€เชถเชจเชจเซ‡ NVMe เชกเซเชฐเชพเช‡เชตเชจเชพ SLC เช•เซ‡เชถเชจเชพ เช•เชฆ เช•เชฐเชคเชพเช‚ เชฌเชฎเชฃเซเช‚ เชฎเซ‹เชŸเซเช‚ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เช•เซ‹เชˆ เช…เชฐเซเชฅ เชจเชฅเซ€. เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเซ€ NVMe เชกเซเชฐเชพเช‡เชตเซเชธ เชฎเชพเชŸเซ‡, เชฒเซ‡เช–เช• 32-64 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เช•เซ‡เชถ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เชตเชพเชœเชฌเซ€ เชฎเชพเชจเซ‡ เช›เซ‡.

เช†เชชเซ‡เชฒ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฎเชพเชช 64 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ เช•เซ‡เชถ, เช•เซ‡เชถ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช…เชจเซ‡ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฌเซ‡เช•เช…เชช เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เชตเชงเซเชฎเชพเช‚, เชนเซเช‚ เชจเซ‹เช‚เชงเซเช‚ เช›เซเช‚ เช•เซ‡ เช—เช‚เชฆเชพ เชธเชฟเชธเซเชŸเชฎ เชฌเช‚เชง เชฅเชฏเชพ เชชเช›เซ€, LVM เชธเชฎเช—เซเชฐ เช•เซ‡เชถเชจเซ‡ เช—เช‚เชฆเชพ เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเชถเซ‡ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเซเชฎเซ‡เชณ เช•เชฐเชถเซ‡. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชธเชฟเชธเซเชŸเชฎ เชซเชฐเซ€เชฅเซ€ เชฐเซ€เชฌเซ‚เชŸ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช† เช‰เชชเช•เชฐเชฃ เชชเชฐ lvchangeเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฆเชฐ เชตเช–เชคเซ‡ เช† เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชคเซ‡เชฅเซ€, เชนเซเช‚ เชฏเซ‹เช—เซเชฏ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเชฐเชค เชœ เช•เซ‡เชถเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚.

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชตเชพเชชเชฐเชตเชพ เชฎเชพเชŸเซ‡ SATA RAID 6 เชชเชฐ LV เชฌเชจเชพเชตเซ€เช.

#lvcreate -L 3298543271936B --name cache data

เชถเชพ เชฎเชพเชŸเซ‡ เชฎเชพเชคเซเชฐ เชคเซเชฐเชฃ เชŸเซ‡เชฐเชพเชฌเชพเชˆเชŸ..?เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡, เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เช…เชจเซเชฏ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡ SATA SSD RAID 6 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เช•เซ‡เชถเซเชก เชธเซเชชเซ‡เชธเชจเซเช‚ เช•เชฆ เชธเชฟเชธเซเชŸเชฎเชจเซ‡ เชฐเซ‹เช•เซเชฏเชพ เชตเชฟเชจเชพ, เชซเซเชฒเชพเชฏ เชชเชฐ, เช—เชคเชฟเชถเซ€เชฒ เชฐเซ€เชคเซ‡ เชตเชงเชพเชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเชฎเชพเชฐเซ‡ เช•เซ‡เชถเชจเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชฐเซ‚เชชเซ‡ เชฌเช‚เชง เช•เชฐเชตเชพเชจเซ€ เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเช•เซเชทเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ LVM-cache เช“เชตเชฐเชจเซ‹ เชตเชฟเชถเชฟเชทเซเชŸ เชซเชพเชฏเชฆเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, bcache เช เช›เซ‡ เช•เซ‡ เช† เชซเซเชฒเชพเชฏ เชชเชฐ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เซ‡เชถเซ€เช‚เช— เชฎเชพเชŸเซ‡ เชเช• เชจเชตเซเช‚ VG เชฌเชจเชพเชตเซ€เช.

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

เชšเชพเชฒเซ‹ เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชชเชฐ เชเชฒเชตเซ€ โ€‹โ€‹เชฌเชจเชพเชตเซ€เช.

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

เช…เชนเซ€เช‚ เช…เชฎเซ‡ เชคเชฐเชค เชœ /dev/data/cache เชชเชฐ เชฌเชงเซ€ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เชฒเชˆ เชฒเซ€เชงเซ€ เช›เซ‡ เชœเซ‡เชฅเซ€ เช•เชฐเซ€เชจเซ‡ เช…เชจเซเชฏ เชคเชฎเชพเชฎ เชœเชฐเซ‚เชฐเซ€ เชชเชพเชฐเซเชŸเซ€เชถเชจเซ‹ /dev/root/cache เชชเชฐ เชคเชฐเชค เชœ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡. เชœเซ‹ เชคเชฎเซ‡ เช–เซ‹เชŸเซ€ เชœเช—เซเชฏเชพเช เช•เช‚เชˆเช• เชฌเชจเชพเชตเซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเชฎเซ‡ pvmove เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เช–เชธเซ‡เชกเซ€ เชถเช•เซ‹ เช›เซ‹.

เชšเชพเชฒเซ‹ เช•เซ‡เชถ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชธเช•เซเชทเชฎ เช•เชฐเซ€เช:

#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 เช•เซ‡เชถ เชฌเซเชฒเซ‹เช•เชจเซเช‚ เช•เชฆ LVM เชชเชพเชคเชณเชพ เชฌเซเชฒเซ‹เช•เชจเชพ เช•เชฆ เชธเชพเชฅเซ‡ เชเช•เชฐเซเชช เชนเซ‹เชฏ เชคเซ‹ เชถเซเชฐเซ‡เชทเซเช  เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เชคเชฆเซเชชเชฐเชพเช‚เชค, เช•เชฆ เชœเซ‡เชŸเชฒเซเช‚ เชจเชพเชจเซเช‚ เช›เซ‡, เชฐเซ‡เชจเซเชกเชฎ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—เชฎเชพเช‚ เช—เซ‹เช เชตเชฃเซ€ เชตเชงเซ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ‡ เช›เซ‡.

64k เช LVM เชชเชพเชคเชณเชพ เชฎเชพเชŸเซ‡ เชฎเช‚เชœเซ‚เชฐ เชฒเช˜เซเชคเซเชคเชฎ เชฌเซเชฒเซ‹เช• เช•เชฆ เช›เซ‡.

เชฒเช–เชตเชพ เชธเชพเชตเชšเซ‡เชค เชฐเชนเซ‹..!เชนเชพ. เช† เชชเซเชฐเช•เชพเชฐเชจเซ€ เช•เซ‡เชถ เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชชเชฐ เชฒเช–เชตเชพเชจเซเช‚ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชตเชฟเชฒเช‚เชฌเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เช•เซ‡เชถ เช–เซ‹เชตเชพเชˆ เชœเชพเชฏ, เชคเซ‹ เชคเชฎเซ‡ เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชชเชฐเชจเซ‹ เชกเซ‡เชŸเชพ เช—เซเชฎเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชพเช›เชณเชฅเซ€, เชฒเซ‡เช–เช• เชคเชฎเชจเซ‡ เชœเชฃเชพเชตเชถเซ‡ เช•เซ‡ เช† เชœเซ‹เช–เชฎเชจเซ€ เชญเชฐเชชเชพเชˆ เช•เชฐเชตเชพ NVMe RAID 1 เช‰เชชเชฐเชพเช‚เชค เช•เชฏเชพ เชชเช—เชฒเชพเช‚ เชฒเชˆ เชถเช•เชพเชฏ.

เช† เช•เซ‡เชถ เชชเซเชฐเช•เชพเชฐ เช‡เชฐเชพเชฆเชพเชชเซ‚เชฐเซเชตเช• 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 เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹.

เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹ เชเช• เช†เชฆเซ‡เชถ เชธเชพเชฅเซ‡ เชคเชฎเซ‡ เช•เซ‡เชถเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹:

#lvconvert -y --uncache cache/cachedata

เช† เช“เชจเชฒเชพเชˆเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. LVM เชซเช•เซเชค เช•เซ‡เชถเชจเซ‡ เชกเชฟเชธเซเช•เชฎเชพเช‚ เชธเชฎเชจเซเชตเชฏเชฟเชค เช•เชฐเชถเซ‡, เชคเซ‡เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชถเซ‡, เช…เชจเซ‡ cachedata_corig เชจเซ‡ เชชเชพเช›เซเช‚ cachedata เชฎเชพเช‚ เชจเชพเชฎ เชฌเชฆเชฒเชถเซ‡.

LVM เชชเชพเชคเชณเซเช‚ เชธเซเชฏเซ‹เชœเชฟเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช

เชšเชพเชฒเซ‹ เช…เช‚เชฆเชพเชœ เชฒเช—เชพเชตเซ€เช เช•เซ‡ LVM เชชเชพเชคเชณเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เช†เชชเชฃเชจเซ‡ เช•เซ‡เชŸเชฒเซ€ เชœเช—เซเชฏเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡:

#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

เชฌเซ‡ เชตเชกเซ‡ เช—เซเชฃเชพเช•เชพเชฐ เช•เชฐเซ‹ เช…เชจเซ‡ LVM PV เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ 4194304B เช‰เชฎเซ‡เชฐเซ‹: 8594128896B
เชšเชพเชฒเซ‹ NVMe RAID 1 เชชเชฐ LVM เชชเชพเชคเชณเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชฌเซ‡เช•เช…เชช เชจเช•เชฒ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชเช• เช…เชฒเช— เชชเชพเชฐเซเชŸเซ€เชถเชจ เชฌเชจเชพเชตเซ€เช:

#lvcreate -L 8594128896B --name images root

เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡..?เช…เชนเซ€เช‚ เชชเซเชฐเชถเซเชจ เชŠเชญเซ‹ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡: เชถเชพ เชฎเชพเชŸเซ‡ LVM เชชเชพเชคเชณเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชฒเช—เชฅเซ€ เชฎเซ‚เช•เซ‹ เชœเซ‹ เชคเซ‡ เชนเชœเซ เชชเชฃ NVMe เชชเชฐ เช•เซ‡เชถ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช…เชจเซ‡ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเชถเซ‡.

เชœเซ‹ เช•เซ‡ เช…เชนเซ€เช‚ เชเชกเชช เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡, เชคเซ‡ เชฎเซเช–เซเชฏ เช•เชพเชฐเชฃเชฅเซ€ เชฆเซ‚เชฐ เช›เซ‡. เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เช•เซ‡เชถ เชจเชฟเชทเซเชซเชณเชคเชพเชจเซ‹ เชเช• เชฌเชฟเช‚เชฆเซ เช›เซ‡. เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เช‚เชˆเช• เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‹ LVM เชชเชพเชคเชณเซ‹ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช•เซ‡เชถ เชฅเชฏเซ‡เชฒ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชฌเชงเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชจเชทเซเชŸ เชฅเชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเชถเซ‡. เชธเช‚เชชเซ‚เชฐเซเชฃ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชตเชฟเชจเชพ, เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพเชจเซเช‚ เชฒเช—เชญเช— เช…เชถเช•เซเชฏ เชนเชถเซ‡.

เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ‡ เช…เชฒเช— เชฌเชฟเชจ-เช•เซ‡เชถเซเชก, เชชเชฐเช‚เชคเซ เชเชกเชชเซ€, เชตเซ‹เชฒเซเชฏเซเชฎเชฎเชพเช‚ เช–เชธเซ‡เชกเซ€เชจเซ‡, เช…เชฎเซ‡ เช•เซ‡เชถ เช–เซ‹เชตเชพเชˆ เชœเชตเชพ เช…เชฅเชตเชพ เชญเซเชฐเชทเซเชŸเชพเชšเชพเชฐเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพเชจเซ€ เชธเชฒเชพเชฎเชคเซ€เชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ€เช เช›เซ€เช. เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช•เซ‡เชถเชจเชพ เชจเซเช•เชธเชพเชจเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชคเชพ เชคเชฎเชพเชฎ เชจเซเช•เชธเชพเชจเชจเซ‡ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ€ เช…เช‚เชฆเชฐ เชธเซเชฅเชพเชจเซ€เช•เซƒเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชœเซ‡ เชคเซ€เชตเซเชฐเชคเชพเชจเชพ เช“เชฐเซเชกเชฐ เชฆเซเชตเชพเชฐเชพ เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชคเชฟ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชธเชฐเชณ เชฌเชจเชพเชตเชถเซ‡. เช‰เชšเซเชš เชธเช‚เชญเชพเชตเชจเชพ เชธเชพเชฅเซ‡, เช† เชจเซเช•เชธเชพเชจ FS เชฒเซ‰เช—เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชคเชฆเซเชชเชฐเชพเช‚เชค, เชœเซ‹ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ‹ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เช…เช—เชพเช‰ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเซ‹เชฏ, เช…เชจเซ‡ เชคเซ‡ เชชเช›เซ€ เช•เซ‡เชถ เช“เช›เชพเชฎเชพเช‚ เช“เช›เชพ เชเช• เชตเช–เชค เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡, เชคเซ‹ เชชเช›เซ€, LVM เชชเชพเชคเชณเซ€เชจเซ€ เช†เช‚เชคเชฐเชฟเช• เชกเชฟเชเชพเช‡เชจเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เช•เซ‡เชถเชจเชพ เชจเซเช•เชถเชพเชจเชจเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ€ เช…เช–เช‚เชกเชฟเชคเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. .

เชšเชพเชฒเซ‹ เชเช• เชจเชตเซเช‚ 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เช† เชฎเซ‹เชก เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชถเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฌเชจเชพเชตเชพเชฏเซ‡เชฒ เช›เซ‡ เชคเซ‡ เช‰เชชเชฐเชพเช‚เชค - เชœเช—เซเชฏเชพเชจเซเช‚ เชชเซเชจเชƒเชตเชฟเชคเชฐเชฃ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เชเช• เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชจเซ‡ เชฌเซ€เชœเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เชฒเซ€เช• เชฅเชคเซ‹ เช…เชŸเช•เชพเชตเชตเชพ - 64k เช•เชฐเชคเชพเช‚ เชจเชพเชจเชพ เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚ เชฐเซ‡เชจเซเชกเชฎ เชฒเช–เชตเชพเชจเซ€ เชเชกเชช เชตเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชถเซ‚เชจเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชชเชฃ เชฅเชพเชฏ เช›เซ‡. เชชเชพเชคเชณเซ€ เชตเซ‹เชฒเซเชฏเซเชฎเชจเชพ เช…เช—เชพเช‰ เชซเชพเชณเชตเซ‡เชฒ เชจ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชตเชฟเชธเซเชคเชพเชฐเชฎเชพเช‚ 64k เช•เชฐเชคเชพเช‚ เช“เช›เซเช‚ เชฒเช–เซ‡เชฒเซเช‚ เช•เซ‹เชˆเชชเชฃ เช•เซ‡เชถเชฎเชพเช‚ 64K เชงเชพเชฐ-เชธเช‚เชฐเซ‡เช–เชฟเชค เชฅเชˆ เชœเชถเซ‡. เช† เช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃเชจเซ‡ เชฌเชพเชฏเชชเชพเชธ เช•เชฐเซ€เชจเซ‡, เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เช•เซ‡เชถ เชฆเซเชตเชพเชฐเชพ เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡.

เชšเชพเชฒเซ‹ 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 เช—เซ€เช—เชพเชฌเชพเช‡เชŸเซเชธ SSD เชธเช‚เชธเชพเชงเชจ เช–เชพเชˆ เชถเช•เซ‡ เช›เซ‡.

เชตเชพเช‚เชšเชจ เช…เชจเซ‡ เชฒเซ‡เช–เชจ เชฎเชฟเชถเซเชฐ?เชนเชพ. เชตเชพเช‚เชšเชตเชพ เช…เชจเซ‡ เชฒเช–เชตเชพเชจเซ€ เช•เชธเซ‹เชŸเซ€เช“ เช…เชฒเช—เชฅเซ€ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡. เชคเชฆเซเชชเชฐเชพเช‚เชค, เชคเซ‡ เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฐเซเชฅเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฎ เช•เซ‡เชถ เชธเชฎเชจเซเชตเชฏเชฟเชค เช›เซ‡ เชœเซ‡เชฅเซ€ เช…เช—เชพเช‰ เชฌเชจเชพเชตเซ‡เชฒ เชฒเช–เชพเชฃ เชตเชพเช‚เชšเชตเชพเชจเซ‡ เช…เชธเชฐ เชจ เช•เชฐเซ‡.

เช•เซ‡เชถ เช…เชจเซ‡ เชชเชพเชคเชณเซเช‚ เชตเซ‹เชฒเซเชฏเซเชฎ เชญเชฐเชพเชˆ เชœเชคเชพเช‚ เชชเซเชฐเชฅเชฎ เชฒเซ‹เช‚เชš เชฆเชฐเชฎเชฟเชฏเชพเชจ เช…เชจเซ‡ เชคเซเชฏเชพเชฐเชชเช›เซ€เชจเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชฌเชฆเชฒเชพเชถเซ‡, เช…เชจเซ‡ เชคเซ‡ เชชเชฃ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡ เช•เซ‡ เชธเชฟเชธเซเชŸเชฎ เช›เซ‡เชฒเซเชฒเชพ เชฒเซ‹เช‚เชš เชฆเชฐเชฎเชฟเชฏเชพเชจ เชญเชฐเซ‡เชฒเซ€ เช•เซ‡เชถเชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพเชฎเชพเช‚ เชธเชซเชณ เชฐเชนเซ€ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ.

เช…เชจเซเชฏ เชตเชธเซเชคเซเช“เชฎเชพเช‚, เชนเซเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเชกเชชเชจเซ‡ เชฎเชพเชชเชตเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเซเช‚ เช›เซเช‚ เชœเซ‡เชฎเชพเช‚เชฅเซ€ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชนเชฎเชฃเชพเช‚ เชœ เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชฒเซ‡เช–เช•เชจเซ‡ เชชเซเชฐเชฅเชฎ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€ เชคเชฐเชค เชœ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชฒเช–เชพเชฃเซ‹ เชเชกเชชเชฅเซ€ เชตเซ‡เช— เช†เชชเซ‡ เช›เซ‡ เชคเซ‡ เช…เชตเชฒเซ‹เช•เชจ เช•เชฐเชตเชพเชจเซ€ เชคเช• เชฎเชณเซ€, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เซ‡เชถ เชนเชœเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชญเชฐเชพเชฏเซ‡เชฒ เชจเชฅเซ€. เช† เช•เซ‹เชชเซ€-เช“เชจ-เชฐเชพเชˆเชŸ เชฐเชพเชˆเชŸ เชธเชฟเชฎเซ‡เชจเซเชŸเชฟเช•เซเชธ, เช•เซ‡เชถเชจเซ€ เช—เซ‹เช เชตเชฃเซ€ เช…เชจเซ‡ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ RAID 6 เชชเชฐ เชฐเซ‡เชจเซเชกเชฎ เชฒเช–เชตเซเช‚ เช RAID 6 เชฎเชพเช‚เชฅเซ€ เชฐเซ‡เชจเซเชกเชฎ เชฐเซ€เชกเชฎเชพเช‚ เชซเซ‡เชฐเชตเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชคเซเชฏเชพเชฐเชฌเชพเชฆ เช•เซ‡เชถเชฎเชพเช‚ เชฒเช–เชตเชพเชจเซเช‚ เช›เซ‡. เช…เชฎเชพเชฐเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚, RAID 6 เชฅเซ€ เชฐเซ‡เชจเซเชกเชฎ เชฐเซ€เชกเชฟเช‚เช— 6 เช—เชฃเซเช‚ (เชเชฐเซ‡เชฎเชพเช‚ SATA SSD เชจเซ€ เชธเช‚เช–เซเชฏเชพ) เชฒเช–เชตเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชเชกเชชเซ€ เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡ CoW เชฎเชพเชŸเซ‡ เชฌเซเชฒเซ‹เช•เซเชธ เชชเชพเชคเชณเชพ เชชเซ‚เชฒเชฎเชพเช‚เชฅเซ€ เช•เซเชฐเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชซเชพเชณเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเช›เซ€ เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช—, เชฎเซ‹เชŸเชพเชญเชพเช—เซ‡, เชชเชฃ เช•เซเชฐเชฎเชฟเช•เชฎเชพเช‚ เชซเซ‡เชฐเชตเชพเชฏ เช›เซ‡.

เช† เชฌเช‚เชจเซ‡ เชธเซเชตเชฟเชงเชพเช“เชจเซ‹ เชคเชฎเชพเชฐเชพ เชซเชพเชฏเชฆเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช•เซ‡เชถ "เชธเซเชธเช‚เช—เชค" เชธเซเชจเซ‡เชชเชถเซ‹เชŸ

เช•เซ‡เชถ เชจเซเช•เชธเชพเชจ/เชจเซเช•เชธเชพเชจเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเชพ เชจเซเช•เชธเชพเชจเชจเชพ เชœเซ‹เช–เชฎเชจเซ‡ เช˜เชŸเชพเชกเชตเชพ เชฎเชพเชŸเซ‡, เชฒเซ‡เช–เช• เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡เชฎเชจเซ€ เช…เช–เช‚เชกเชฟเชคเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ เชซเซ‡เชฐเชตเชตเชพเชจเซ€ เชชเซเชฐเชฅเชพ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซ€ เชฆเชฐเช–เชพเชธเซเชค เช•เชฐเซ‡ เช›เซ‡.

เชชเซเชฐเชฅเชฎ, เช•เชพเชฐเชฃ เช•เซ‡ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เช…เชจเช•เซ‡เชถเซเชก เช‰เชชเช•เชฐเชฃ เชชเชฐ เชฐเชนเซ‡ เช›เซ‡, เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชธเซเชธเช‚เช—เชค เชฐเชนเซ‡เชถเซ‡ เช…เชจเซ‡ เชธเช‚เชญเชตเชฟเชค เชจเซเช•เชธเชพเชจเชจเซ‡ เชกเซ‡เชŸเชพ เชฌเซเชฒเซ‹เช•เซเชธเชฎเชพเช‚ เช…เชฒเช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชจเซ€เชšเซ‡ เช†เชชเซ‡เชฒ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฐเซ‹เชŸเซ‡เชถเชจ เชธเชพเชฏเช•เชฒ เช•เซ‡เชถ เชจเซเช•เชถเชพเชจเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ€ เช…เช‚เชฆเชฐเชจเชพ เชกเซ‡เชŸเชพเชจเซ€ เช…เช–เช‚เชกเชฟเชคเชคเชพเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเซ‡ เช›เซ‡:

  1. <name> เชจเชพเชฎ เชธเชพเชฅเซ‡ เชฆเชฐเซ‡เช• เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชฎเชพเชŸเซ‡, <name>.cached เชจเชพเชฎ เชธเชพเชฅเซ‡ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเซ‹
  2. เชšเชพเชฒเซ‹ เชธเซเชฅเชณเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชกเชจเซ‡ เชตเชพเชœเชฌเซ€ เช‰เชšเซเชš เชฎเซ‚เชฒเซเชฏ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เช: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. เชฒเซ‚เชชเชฎเชพเช‚ เช†เชชเชฃเซ‡ เช•เซ‡เชถเชฎเชพเช‚ เช—เช‚เชฆเชพ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชคเชชเชพเชธเซ€เช เช›เซ€เช: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เช†เชชเชฃเซ‡ เชถเซ‚เชจเซเชฏ เชจ เชฎเซ‡เชณเชตเซ€เช. เชœเซ‹ เชถเซ‚เชจเซเชฏ เช–เซ‚เชฌ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เช–เซ‚เชŸเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชฐเซ‚เชชเซ‡ เช•เซ‡เชถเชจเซ‡ เชฐเชพเชˆเชŸเชฅเซเชฐเซ เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซ€เชจเซ‡ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชœเซ‹ เช•เซ‡, เช…เชฎเชพเชฐเชพ SATA เช…เชจเซ‡ NVMe SSD เชเชฐเซ‡เชจเซ€ เช—เชคเชฟ เชตเชฟเชถเซ‡เชทเชคเชพเช“ เชคเซ‡เชฎเชœ เชคเซ‡เชฎเชจเชพ TBW เชธเช‚เชธเชพเชงเชจเชจเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชคเชพ, เชคเชฎเซ‡ เช•เซ‡เชถ เชฎเซ‹เชกเชจเซ‡ เชฌเชฆเชฒเซเชฏเชพ เชตเชฟเชจเชพ เช•เซเชทเชฃเชจเซ‡ เชเชกเชชเชฅเซ€ เชชเช•เชกเซ€ เชถเช•เชถเซ‹ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเซเช‚ เชนเชพเชฐเซเชกเชตเซ‡เชฐ เชคเซ‡เชจเชพ เชธเชฎเช—เซเชฐ เชธเช‚เชธเชพเชงเชจเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เชพเชˆ เชœเชถเซ‡. เชฅเซ‹เชกเชพ เชฆเชฟเชตเชธ. เชธเช‚เชธเชพเชงเชจเชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชพเช“เชจเซ‡ เชฒเซ€เชงเซ‡, เชธเชฟเชธเซเชŸเชฎ, เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชฆเชฐเซ‡เช• เชธเชฎเชฏเซ‡ 100% เชฒเซ‡เช–เชจ เชฒเซ‹เชก เชนเซ‡เช เชณ เชฐเชนเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เช…เชธเชฎเชฐเซเชฅ เช›เซ‡. เช…เชฎเชพเชฐเชพ NVMe SSDs 100% เชฒเซ‡เช–เชจ เชฒเซ‹เชก เชนเซ‡เช เชณเชจเชพ เชธเช‚เชธเชพเชงเชจเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เชฒเชพเชธ เช•เชฐเชถเซ‡ 3-4 เชฆเชฟเชตเชธ. SATA SSDs เชฎเชพเชคเซเชฐ เชฌเชฎเชฃเชพ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€ เชšเชพเชฒเชถเซ‡. เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเซ‹ เชญเชพเชฐ เชตเชพเช‚เชšเชจ เชชเชฐ เชœเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฒเซ‡เช–เชจ เชฎเชพเชŸเซ‡ เชธเชฐเซ‡เชฐเชพเชถ เช“เช›เชพ เชญเชพเชฐ เชธเชพเชฅเซ‡ เชธเช‚เชฏเซเช•เซเชค เช…เชคเซเชฏเช‚เชค เช‰เชšเซเชš เชชเซเชฐเชตเซƒเชคเซเชคเชฟเชจเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชŸเซ‚เช‚เช•เชพ เช—เชพเชณเชพเชจเชพ เชตเชฟเชธเซเชซเซ‹เชŸเซ‹ เช›เซ‡.
  4. เชœเชฒเชฆเซ€ เช†เชชเชฃเซ‡ เชถเซ‚เชจเซเชฏ เชชเช•เชกเซเชฏเซเช‚ (เช…เชฅเชตเชพ เชฌเชจเชพเชตเซเชฏเซเช‚), เช…เชฎเซ‡ <name>.cached เชจเซ‡ <name>.committed เชจเชพเชฎ เช†เชชเซ€เช เช›เซ€เช. เชœเซ‚เชจเซเช‚ <name>.committed เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡.
  5. เชตเซˆเช•เชฒเซเชชเชฟเช• เชฐเซ€เชคเซ‡, เชœเซ‹ เช•เซ‡เชถ 100% เชญเชฐเซ‡เชฒเซ€ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡, เช†เชฎ เชคเซ‡เชจเซ‡ เชธเชพเชซ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡. เช…เชฐเซเชง-เช–เชพเชฒเซ€ เช•เซ‡เชถ เชธเชพเชฅเซ‡, เชฒเช–เชคเซ€ เชตเช–เชคเซ‡ เชธเชฟเชธเซเชŸเชฎ เชตเชงเซ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡.
  6. เชธเซเชฅเชณเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชก เชถเซ‚เชจเซเชฏ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ‹: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata เช† เช•เซ‡เชถเชจเซ‡ เชฎเซเช–เซเชฏ เชฎเซ€เชกเชฟเชฏเชพ เชธเชพเชฅเซ‡ เชธเชฎเชจเซเชตเชฏเชฟเชค เชฅเชตเชพเชฅเซ€ เช…เชธเซเชฅเชพเชฏเซ€ เชฐเซ‚เชชเซ‡ เช…เชŸเช•เชพเชตเชถเซ‡.
  7. เช•เซ‡เชถเชฎเชพเช‚ เช˜เชฃเชพ เชฌเชงเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชเช•เช เชพ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ เช…เชฎเซ‡ เชฐเชพเชน เชœเซเช“ #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' เช…เชฅเชตเชพ เชŸเชพเชˆเชฎเชฐ เชฌเช‚เชง เชฅเชˆ เชœเชถเซ‡.
  8. เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ เช•เชฐเซ€เช เช›เซ€เช.

เชธเซเชฅเชณเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชกเชฎเชพเช‚ เชฎเซเชถเซเช•เซ‡เชฒเซ€เช“ เชถเชพ เชฎเชพเชŸเซ‡...?เช† เชฌเชพเชฌเชค เช เช›เซ‡ เช•เซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, "เชฐเซ‡เชจเซเชกเชฎ" เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชจเชฅเซ€. เชœเซ‹ เช†เชชเชฃเซ‡ 4 เช•เชฟเชฒเซ‹เชฌเชพเชˆเชŸเชจเชพ เช•เชฆเชจเชพ เชธเซ‡เช•เซเชŸเชฐเชฎเชพเช‚ เช•เช‚เชˆเช• เชฒเช–เซเชฏเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชเชตเซ€ เช‰เชšเซเชš เชธเช‚เชญเชพเชตเชจเชพ เช›เซ‡ เช•เซ‡ เช†เช—เชพเชฎเซ€ เชฌเซ‡ เชฎเชฟเชจเชฟเชŸเชฎเชพเช‚ เชคเซ‡ เชœ เช…เชฅเชตเชพ เชชเชกเซ‹เชถเซ€ (+- 32K) เชธเซ‡เช•เซเชŸเชฐเชฎเชพเช‚เชจเชพ เชเช•เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชธเซเชฅเชณเชพเช‚เชคเชฐ เชฅเซเชฐเซ‡เชถเซ‹เชฒเซเชกเชจเซ‡ เชถเซ‚เชจเซเชฏ เชชเชฐ เชธเซ‡เชŸ เช•เชฐเซ€เชจเซ‡, เช…เชฎเซ‡ SATA SSD เชชเชฐ เชฐเชพเช‡เชŸ เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชพเช‡เชเซ‡เชถเชจเชจเซ‡ เชฎเซเชฒเชคเชตเซ€ เชฐเชพเช–เซ€เช เช›เซ€เช เช…เชจเซ‡ เช•เซ‡เชถเชฎเชพเช‚ เชเช• 64K เชฌเซเชฒเซ‹เช•เชฎเชพเช‚ เช˜เชฃเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชเช•เซ€เช•เซƒเชค เช•เชฐเซ€เช เช›เซ€เช. เช† SATA SSD เชจเชพ เชธเช‚เชธเชพเชงเชจเชจเซ‡ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชฐเซ€เชคเซ‡ เชฌเชšเชพเชตเซ‡ เช›เซ‡.

เช•เซ‹เชก เช•เซเชฏเชพเช‚ เช›เซ‡..?เช•เชฎเชจเชธเซ€เชฌเซ‡, เชฒเซ‡เช–เช• เชชเซ‹เชคเชพเชจเซ‡ เชฌเซ‡เชถ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเชพ เชตเชฟเช•เชพเชธเชฎเชพเช‚ เช…เชชเซ‚เชฐเชคเซ€ เชฐเซ€เชคเซ‡ เชธเช•เซเชทเชฎ เชฎเชพเชจเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ 100% เชธเซเชต-เชถเชฟเช•เซเชทเชฟเชค เช›เซ‡ เช…เชจเซ‡ "เช—เซเช—เชฒ"-เชธเช‚เชšเชพเชฒเชฟเชค เชตเชฟเช•เชพเชธเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡ เชฎเชพเชจเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡เชจเชพ เชนเชพเชฅเชฎเชพเช‚เชฅเซ€ เชœเซ‡ เชญเชฏเช‚เช•เชฐ เช•เซ‹เชก เชจเซ€เช•เชณเซ‡ เช›เซ‡ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‹เชˆเช เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช เชจเชนเซ€เช‚. เชฌเซ€เชœเซเช‚

เชฎเชจเซ‡ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช† เช•เซเชทเซ‡เชคเซเชฐเชจเชพ เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช•เซ‹ เชœเซ‹ เชœเชฐเซ‚เชฐเซ€ เชนเซ‹เชฏ เชคเซ‹, เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชคเชฎเชพเชฎ เชคเชฐเซเช•เชจเซ‡ เชธเซเชตเชคเช‚เชคเซเชฐ เชฐเซ€เชคเซ‡ เชฆเชฐเซเชถเชพเชตเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชถเซ‡, เช…เชจเซ‡, เช•เชฆเชพเชš, เชฒเซ‡เช–เช•เซ‡ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เชคเซ‡เชฎ, เชคเซ‡เชจเซ‡ เชธเชฟเชธเซเชŸเชฎเชก เชธเซ‡เชตเชพ เชคเชฐเซ€เช•เซ‡ เชธเซเช‚เชฆเชฐ เชฐเซ€เชคเซ‡ เชกเชฟเชเชพเช‡เชจ เชชเชฃ เช•เชฐเซ€ เชถเช•เชถเซ‡.

เช†เชตเซ€ เชธเชฐเชณ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฐเซ‹เชŸเซ‡เชถเชจ เชธเซเช•เซ€เชฎ เช…เชฎเชจเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ SATA SSD เชชเชฐ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เชธเชฎเชจเซเชตเชฏเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เช…เชฎเชจเซ‡ thin_delta เช‰เชชเชฏเซ‹เช—เชฟเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡ เชถเซ‹เชงเชตเชพเชจเซ€ เชชเชฃ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ เช•เซ‡ เชคเซ‡เชจเชพ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€ เช•เชฏเชพ เชฌเซเชฒเซ‹เช•เซเชธ เชฌเชฆเชฒเชพเชฏเชพ เช›เซ‡ เช…เชจเซ‡ เช†เชฎ เชจเซเช•เชธเชพเชจเชจเซ‡ เชธเซเชฅเชพเชจเชฟเช•เซ€เช•เชฐเชฃ เช•เชฐเซ€ เชถเช•เชถเซ‡. เชฎเซเช–เซเชฏ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹, เชชเซเชจเชƒเชชเซเชฐเชพเชชเซเชคเชฟเชจเซ‡ เชฎเซ‹เชŸเชพ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชธเชฐเชณ เชฌเชจเชพเชตเซ‡ เช›เซ‡.

libvirt/KVM เชฎเชพเช‚ TRIM/DISCARD

เช•เชพเชฐเชฃ เช•เซ‡ เชกเซ‡เชŸเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœเชจเซ‹ เช‰เชชเชฏเซ‹เช— KVM เชšเชฒเชพเชตเชคเชพ libvirt เชฎเชพเชŸเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชคเซ‹ เชชเช›เซ€ เช…เชฎเชพเชฐเชพ VM เชจเซ‡ เชฎเชพเชคเซเชฐ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เชฒเซ‡เชตเชพ เชฎเชพเชŸเซ‡ เชœ เชจเชนเชฟ, เชชเชฃ เชœเซ‡ เชนเชตเซ‡ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€ เชคเซ‡เชจเซ‡ เช–เชพเชฒเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชถเซ€เช–เชตเชตเซเช‚ เช เชธเชพเชฐเซ‹ เชตเชฟเชšเชพเชฐ เช›เซ‡.

เช† เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชกเชฟเชธเซเช• เชชเชฐ 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>

เชฎเชนเซ‡เชฎเชพเชจ OS เชฎเชพเช‚เชฅเซ€ เช†เชตเชพ DISCARDs เช LVM เชฆเซเชตเชพเชฐเชพ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซเชฒเซ‹เช•เซเชธ เช•เซ‡เชถ เช…เชจเซ‡ เชชเชพเชคเชณเชพ เชชเซ‚เชฒเชฎเชพเช‚ เชฏเซ‹เช—เซเชฏ เชฐเซ€เชคเซ‡ เชฎเซเช•เซเชค เชฅเชพเชฏ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เช†เช—เชฒเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชคเซ€ เชตเช–เชคเซ‡, เช† เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡.

BTRFS เชฌเซ‡เช•เช…เชช

เชธเชพเชฅเซ‡ เชคเซˆเชฏเชพเชฐ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ เช†เชคเซเชฏเช‚เชคเชฟเช• เชธเชพเชตเชงเชพเชจเซ€ เช…เชจเซ‡ เชชเซ‹เชคเชพเชจเชพ เชœเซ‹เช–เชฎเซ‡. เชฒเซ‡เช–เช•เซ‡ เช† เช•เซ‹เชก เชชเซ‹เชคเซ‡ เช…เชจเซ‡ เชซเช•เซเชค เชชเซ‹เชคเชพเชจเชพ เชฎเชพเชŸเซ‡ เชœ เชฒเช–เซเชฏเซ‹ เช›เซ‡. เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เช›เซ‡ เช•เซ‡ เช˜เชฃเชพ เช…เชจเซเชญเชตเซ€ Linux เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชชเชพเชธเซ‡ เชธเชฎเชพเชจ เชธเชพเชงเชจเซ‹ เช›เซ‡, เช…เชจเซ‡ เช•เซ‹เชˆ เชฌเซ€เชœเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชšเชพเชฒเซ‹ เชฌเซ‡เช•เช…เชช เช‰เชชเช•เชฐเชฃ เชชเชฐ เชตเซ‹เชฒเซเชฏเซเชฎ เชฌเชจเชพเชตเซ€เช:

#lvcreate -L 256G --name backup backup

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ BTRFS เชฎเชพเช‚ เชซเซ‹เชฐเซเชฎเซ‡เชŸ เช•เชฐเซ€เช:

#mkfs.btrfs /dev/backup/backup

เชšเชพเชฒเซ‹ เชฎเชพเช‰เชจเซเชŸ เชชเซ‹เชˆเชจเซเชŸ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชซเชพเชˆเชฒ เชธเชฟเชธเซเชŸเชฎเชจเชพ เชฐเซ‚เชŸ เชชเซ‡เชŸเชพเชตเชฟเชญเชพเช—เซ‹เชจเซ‡ เชฎเชพเช‰เชจเซเชŸ เช•เชฐเซ€เช:

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

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

เชšเชพเชฒเซ‹ เชฌเซ‡เช•เช…เชช เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชฌเชจเชพเชตเซ€เช:

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

เชšเชพเชฒเซ‹ เชฌเซ‡เช•เช…เชช เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเซ€เช:

#mkdir /root/btrfs-backup

เชšเชพเชฒเซ‹ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เช:

เช˜เชฃเชพ เชฌเชงเชพ เชกเชฐเชพเชฎเชฃเชพ เชฌเซ‡เชถ เช•เซ‹เชก. เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชœเซ‹เช–เชฎเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹. เชฒเซ‡เช–เช•เชจเซ‡ เช—เซเชธเซเชธเซ‡ เชชเชคเซเชฐเซ‹ เชจ เชฒเช–เซ‹...#cat >/root/btrfs-backup/btrfs-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

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

function wait_lock()
{
flock 98
}

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

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

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

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

function list()
{
LIST_TARGET_BASE_PATH="$BACKUPS$1$BASE_SUFFIX"
LIST_TARGET_BASE_DIR="$(dirname $LIST_TARGET_BASE_PATH)"
LIST_TARGET_BASE_NAME="$(basename -s .$BASE_SUFFIX $LIST_TARGET_BASE_PATH)"
find "$LIST_TARGET_BASE_DIR" -maxdepth 1 -mindepth 1 -type d -printf "%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 เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ BTRFS เชฎเซ‹เช•เชฒเซ‹/เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€เชจเซ‡ เช…เชจเซเชฏ FS เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เช†เชฆเซ‡เชถเซ‹เชจเซ‹ เชธเชฎเซ‚เชน เชธเชฎเชพเชตเซ‡ เช›เซ‡.

เชชเซเชฐเชฅเชฎ เชชเซเชฐเช•เซเชทเซ‡เชชเชฃ เชชเซเชฐเชฎเชพเชฃเชฎเชพเช‚ เชฒเชพเช‚เชฌเซ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡... เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชคเชฎเชพเชฎ เชกเซ‡เชŸเชพ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เช†เช—เชณเชจเชพ เชชเซเชฐเช•เซเชทเซ‡เชชเชฃ เช–เซ‚เชฌ เชœ เชเชกเชชเซ€ เชนเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡... เชฎเชพเชคเซเชฐ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชœ เชจเช•เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เชฌเซ€เชœเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชœเซ‡ เช†เชชเชฃเซ‡ เช•เซเชฐเซ‹เชจเชฎเชพเช‚ เชฎเซ‚เช•เซ€เชถเซเช‚:

เช•เซ‡เชŸเชฒเชพเช• เชตเชงเซ เชฌเซ‡เชถ เช•เซ‹เชก#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

เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡..?เชฌเซ‡เช•เช…เชช FS เชชเชฐ เชธเซ‚เชšเชฟเชฌเชฆเซเชง BTRFS เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเชพ เช‡เชจเซเช•เซเชฐเซ€เชฎเซ‡เชจเซเชŸเชฒ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชฌเชจเชพเชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเซ‡ เช›เซ‡. เช† เชชเช›เซ€, เชคเซ‡ 60 เชฆเชฟเชตเชธ เชชเชนเซ‡เชฒเชพ เชฌเชจเชพเชตเซ‡เชฒ เชคเชฎเชพเชฎ เชšเชฟเชคเซเชฐเซ‹ เช•เชพเชขเซ€ เชจเชพเช–เซ‡ เช›เซ‡. เชฒเซ‰เชจเซเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเชพ เชกเซ‡เชŸเซ‡เชก เชธเซเชจเซ‡เชชเชถเซ‹เชŸ /backup/btrfs/back/remote/ เชธเชฌเชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชเชฎเชพเช‚ เชฆเซ‡เช–เชพเชถเซ‡.

เชšเชพเชฒเซ‹ เช•เซ‹เชก เช…เชฎเชฒเชจเชพ เช…เชงเชฟเช•เชพเชฐเซ‹ เช†เชชเซ€เช:

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

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชคเชชเชพเชธเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฐเซ‹เชจเชฎเชพเช‚ เชฎเซ‚เช•เซ€เช:

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

LVM เชชเชพเชคเชณเซ‹ เชฌเซ‡เช•เช…เชช

เชšเชพเชฒเซ‹ เชฌเซ‡เช•เช…เชช เช‰เชชเช•เชฐเชฃ เชชเชฐ เชเช• เชชเชพเชคเชณเซ‹ เชชเซ‚เชฒ เชฌเชจเชพเชตเซ€เช:

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

เชšเชพเชฒเซ‹ ddrescue เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ€เช, เช•เชพเชฐเชฃ เช•เซ‡... เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เช† เชธเชพเชงเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชถเซ‡:

#apt-get install gddrescue

เชšเชพเชฒเซ‹ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเซ€เช:

#mkdir /root/lvm-thin-backup

เชšเชพเชฒเซ‹ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เช:

เช…เช‚เชฆเชฐ เช˜เชฃเซ€ เชฌเชฌเชพเชฒ...#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

export LVM_SUPPRESS_FD_WARNINGS=1

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

function wait_lock()
{
flock 98
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap

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

}

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

activate_volume $SYNC_VG $SYNC_PEND

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

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

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

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

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

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

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

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

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

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

echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"

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

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

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

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

}

(
COMMAND="$1"
shift

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

EOF

เชคเซ‡ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡...?เชชเชพเชคเชณเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸเชจเซ€ เชนเซ‡เชฐเชซเซ‡เชฐ เช•เชฐเชตเชพ เช…เชจเซ‡ ddrescue เช…เชจเซ‡ blkdiscard เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเซ€เชœเชพ เชฌเซเชฒเซ‹เช• เช‰เชชเช•เชฐเชฃ เชชเชฐ thin_delta เชฆเซเชตเชพเชฐเชพ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ เชฌเซ‡ เชชเชพเชคเชณเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชตเชšเซเชšเซ‡เชจเชพ เชคเชซเชพเชตเชคเชจเซ‡ เชธเซเชฎเซ‡เชณ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเซ‹ เชธเชฎเซ‚เชน เชธเชฎเชพเชตเซ‡ เช›เซ‡.

เชฌเซ€เชœเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชœเซ‡ เช†เชชเชฃเซ‡ เช•เซเชฐเซ‹เชจเชฎเชพเช‚ เชฎเซ‚เช•เซ€เชถเซเช‚:

เชฅเซ‹เชกเซ€ เชตเชงเซ เช†เชกเชถ#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

เชคเซ‡ เชถเซเช‚ เช•เชฐเซ‡ เช›เซ‡...?เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเชพ เชฌเซ‡เช•เช…เชช เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เช—เชพเช‰เชจเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเซ‚เชšเชฟเชฌเชฆเซเชง เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเชพ เชจเชฟเชทเซเช•เซเชฐเชฟเชฏ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เช›เซ‹เชกเชถเซ‡, เชœเซ‡ เช›เซ‡เชฒเซเชฒเชพ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เชชเช›เซ€เชจเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชŸเซเชฐเซ…เช• เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเซ€ เช†เชตเชถเซเชฏเช• เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเซ€ เชธเซ‚เชšเชฟเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชฌเซ‡เช•เช…เชช เชจเช•เชฒเซ‹ เชฌเชจเชพเชตเชตเซ€ เชœเซ‹เชˆเช. เช†เชชเซ‡เชฒเชพ เชจเชพเชฎเซ‹ เชฎเชพเชคเซเชฐ เชฆเซƒเชทเซเชŸเชพเช‚เชคเชฐเซ‚เชช เชนเซ‡เชคเซ เชฎเชพเชŸเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชˆเชšเซเช›เซ‹, เชคเซ‹ เชคเชฎเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹ เชœเซ‡ เชคเชฎเชพเชฎ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹เชจเซ‡ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เช เช•เชฐเชถเซ‡.

เชšเชพเชฒเซ‹ เช…เชงเชฟเช•เชพเชฐเซ‹ เช†เชชเซ€เช:

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

เชšเชพเชฒเซ‹ เชคเซ‡เชจเซ‡ เชคเชชเชพเชธเซ€เช เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช•เซเชฐเซ‹เชจเชฎเชพเช‚ เชฎเซ‚เช•เซ€เช:

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

เชชเซเชฐเชฅเชฎ เชฒเซ‹เชจเซเชš เชฒเชพเช‚เชฌเซ‹ เชนเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡... เชฌเชงเซ€ เชตเชชเชฐเชพเชฏเซ‡เชฒเซ€ เชœเช—เซเชฏเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€เชจเซ‡ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชฎเชจเซเชตเชฏเชฟเชค เชฅเชถเซ‡. LVM เชชเชพเชคเชณเชพ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ, เช…เชฎเซ‡ เชœเชพเชฃเซ€เช เช›เซ€เช เช•เซ‡ เช•เชฏเชพ เชฌเซเชฒเซ‹เช•เซเชธ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชฎเชพเชคเซเชฐ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชตเชชเชฐเชพเชฏเซ‡เชฒ เชชเชพเชคเชณเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช…เชจเซเช—เชพเชฎเซ€ เชฐเชจ LVM เชฅเชฟเชจ เชฎเซ‡เชŸเชพเชกเซ‡เชŸเชพ เชฆเซเชตเชพเชฐเชพ เชŸเซเชฐเซ‡เช•เชฟเช‚เช— เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เช†เชญเชพเชฐ เชตเชงเชพเชฐเชพเชจเซ€ เชฐเซ€เชคเซ‡ เชกเซ‡เชŸเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเชถเซ‡.

เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เชถเซเช‚ เชฅเชฏเซเช‚:

#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

เช†เชจเซ‹ เชจเซ‡เชธเซเชŸเชฟเช‚เช— เชกเซ‹เชฒเซเชธ เชธเชพเชฅเซ‡ เชถเซเช‚ เชธเช‚เชฌเช‚เชง เช›เซ‡?

เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡, เช†เชชเซ‡เชฒ เช›เซ‡ เช•เซ‡ LVM LV เชฒเซ‹เชœเชฟเช•เชฒ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เช…เชจเซเชฏ VG เชฎเชพเชŸเซ‡ LVM PV เชญเซŒเชคเชฟเช• เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. LVM เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชจเซ‡เชธเซเชŸเชฟเช‚เช— เชกเซ‹เชฒเซเชธเชจเซ€ เชœเซ‡เชฎ. เช† LVM เชจเซ‡ เช…เชคเซเชฏเช‚เชค เชธเซเช—เชฎเชคเชพ เช†เชชเซ‡ เช›เซ‡.

PS

เช†เช—เชฒเชพ เชฒเซ‡เช–เชฎเชพเช‚, เช…เชฎเซ‡ เชนเซ‹เชฎ เชกเซ‡เชธเซเช•เชŸเซ‹เชช, เชนเซ‹เชฎ เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เช…เชจเซ‡ P2P เชจเซ‡เชŸเชตเชฐเซเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช–เช‚เชกเซ‹ เชชเชฐ เชฐเชฟเชกเชจเซเชกเชจเซเชธเซ€ เชธเชพเชฅเซ‡ เชœเซ€เช“-เชกเชฟเชธเซเชŸเซเชฐเชฟเชฌเซเชฏเซเชŸเซ‡เชก เชธเซเชŸเซ‹เชฐเซ‡เชœ/เชตเซ€เชเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชฌเชจเชพเชตเชตเชพเชจเชพ เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เช˜เชฃเซ€ เชธเชฎเชพเชจ เชฎเซ‹เชฌเชพเช‡เชฒ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชธเชฟเชธเซเชŸเชฎเซเชธ/KVM เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹