តើ LVM αž“αž·αž„ Matryoshka αž˜αžΆαž“αž’αŸ’αžœαžΈαžαŸ’αž›αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆ?

αžαŸ’αž„αŸƒαžŠαŸαž›αŸ’αž’αŸ”
αžαŸ’αž‰αž»αŸ†αž…αž„αŸ‹αž…αŸ‚αž€αžšαŸ†αž›αŸ‚αž€αž‡αžΆαž˜αž½αž™αžŸαž αž‚αž˜αž“αŸαž“αžΌαžœαž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αžŸαžΆαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ KVM αžŠαŸ„αž™αž”αŸ’αžšαžΎ md RAID + LVM αŸ”

αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αžΉαž„αžšαž½αž˜αž”αž‰αŸ’αž…αžΌαž›αŸˆ

  • αž€αžΆαžšαž€αžŸαžΆαž„ md RAID 1 αž–αžΈ NVMe SSD αŸ”
  • αž€αžΆαžšαž•αŸ’αž‚αž»αŸ† md RAID 6 αž–αžΈ SATA SSD αž“αž·αž„αžŠαŸ’αžšαžΆαž™αž’αž˜αŸ’αž˜αžαžΆαŸ”
  • αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαž“αŸƒαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš TRIM/DISCARD αž“αŸ…αž›αžΎ SSD RAID 1/6 αŸ”
  • αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αžΆαžšαŸ md RAID 1/6 αžŠαŸ‚αž›αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αžΆαž“αž“αŸ…αž›αžΎαžŸαŸ†αžŽαž»αŸ†αž‘αžΌαž‘αŸ…αž“αŸƒαžαžΆαžŸαŸ”
  • αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž›αžΎ NVMe RAID 1 αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš NVMe αž“αŸ…αž€αŸ’αž“αž»αž„ BIOS αŸ”
  • αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM αž“αž·αž„ LVM αžŸαŸ’αžαžΎαž„αŸ”
  • αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαžΌαž”αžαž BTRFS αž“αž·αž„αž•αŸ’αž‰αžΎ / αž‘αž‘αž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ”
  • αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžšαžΌαž”αžαžαžŸαŸ’αžαžΎαž„ LVM αž“αž·αž„ thin_delta αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžšαž…αž“αžΆαž”αŸαž‘αŸ’αž˜ BTRFS αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž’αžΆαžšαž˜αŸ’αž˜αžŽαŸαžŸαžΌαž˜αž˜αžΎαž›αž†αŸ’αž˜αžΆαŸ”

αžŸαŸαž…αž€αŸ’αžαžΈαžαŸ’αž›αŸ‚αž„αž€αžΆαžšαžŽαŸ

αž’αŸ’αž“αž€β€‹αž“αž·αž–αž“αŸ’αž’β€‹αž˜αž·αž“β€‹αž‘αž‘αž½αž›β€‹αžαž»αžŸβ€‹αžαŸ’αžšαžΌαžœβ€‹αžŽαžΆβ€‹αž˜αž½αž™β€‹αž…αŸ†αž–αŸ„αŸ‡β€‹αž•αž›β€‹αžœαž·αž”αžΆαž€β€‹αž“αŸƒβ€‹αž€αžΆαžšβ€‹αž”αŸ’αžšαžΎ αž¬β€‹αž˜αž·αž“β€‹αž”αŸ’αžšαžΎβ€‹αžŸαž˜αŸ’αž—αžΆαžš/αž§αž‘αžΆαž αžšαžŽαŸ/αž€αžΌαžŠ/αž–αŸαžαŸŒαž˜αžΆαž“β€‹αž‡αŸ†αž“αž½αž™/αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž–αžΈβ€‹αž’αžαŸ’αžαž”αž‘β€‹αž“αŸαŸ‡β€‹αž‘αŸαŸ” αžαžΆαž˜αžšαž™αŸˆαž€αžΆαžšαž’αžΆαž“ αž¬αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŸαž˜αŸ’αž—αžΆαžšαŸˆαž“αŸαŸ‡αžαžΆαž˜αž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŽαžΆαž˜αž½αž™ αž’αŸ’αž“αž€αž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž›αž‘αŸ’αž’αž•αž›αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸƒαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αž‘αžΆαŸ†αž„αž“αŸαŸ‡αŸ” αž•αž›αžœαž·αž”αžΆαž€αžŠαŸ‚αž›αž’αžΆαž…αž€αžΎαžαž˜αžΆαž“αžšαž½αž˜αž˜αžΆαž“αŸ–

  • NVMe SSDs αž…αŸ€αž“αž”αŸ†αž–αž„αŸ”
  • αž”αžΆαž“αž”αŸ’αžšαžΎαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αžΌαžœαž’αž“αž’αžΆαž“αž“αŸƒαž€αžΆαžšαž€αžαŸ‹αžαŸ’αžšαžΆ αž“αž·αž„αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αž“αŸƒαžŠαŸ’αžšαžΆαž™ SSD αŸ”
  • αž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αž–αŸαž‰αž›αŸαž‰αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαžŠαŸ’αžšαžΆαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž½αž˜αž‘αžΆαŸ†αž„αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ”
  • αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž˜αžΆαž“αž”αž‰αŸ’αž αžΆαŸ”
  • αžαŸ’αž‡αŸ‡αžαŸ’αž‡αžΆαž™αž–αŸαž›αžœαŸαž›αžΆ αžŸαžšαžŸαŸƒαž”αŸ’αžšαžŸαžΆαž‘ αž“αž·αž„αž›αž»αž™αŸ”
  • αž•αž›αžœαž·αž”αžΆαž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαžΆαž™αžαžΆαž„αž›αžΎαŸ”

αž‡αžΆαžαž·αžŠαŸ‚αž€

αžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžΎαž”αžΆαž“αž‚αžΊαŸ–

Motherboard αž…αžΆαž”αŸ‹αž–αžΈαž†αŸ’αž“αžΆαŸ† 2013 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž”αž“αŸ’αž‘αŸ‡αžˆαžΈαž” Z87 αž–αŸαž‰αž›αŸαž‰αž‡αžΆαž˜αž½αž™αž“αžΉαž„ Intel Core i7 / Haswell αŸ”

  • αž§αž”αž€αžšαžŽαŸαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš 4 αžŸαŸ’αž“αžΌαž› 8 αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™
  • RAM 32 GB DDR3
  • 1 x 16 ឬ 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • αž§αž”αž€αžšαžŽαŸαž—αŸ’αž‡αžΆαž”αŸ‹ SATA 6 6 x 3 GBps

αž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžš SAS LSI SAS9211-8I αž”αžΆαž“αž”αž‰αŸ’αž…αŸαž‰αž–αž“αŸ’αž›αžΊαž‘αŸ…αž‡αžΆαžšαž”αŸ€αž” IT / HBA αŸ” αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ‚αž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš RAID αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž…αŸαžαž“αžΆαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ HBA αžŠαžΎαž˜αŸ’αž”αžΈαŸ–

  1. αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ„αŸ‡αž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžšαž“αŸαŸ‡αž…αŸαž‰αž“αŸ…αž–αŸαž›αžŽαžΆαž€αŸαž”αžΆαž“ αž αžΎαž™αž‡αŸ†αž“αž½αžŸαžœαžΆαžŠαŸ„αž™αž§αž”αž€αžšαžŽαŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αŸ”
  2. TRIM/Discard αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž“αŸ…αž›αžΎαžαžΆαžŸ αž–αŸ’αžšαŸ„αŸ‡... αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹ RAID αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž˜αž·αž“αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž αžΎαž™ HBA αž‡αžΆαž‘αžΌαž‘αŸ…αž˜αž·αž“αžαŸ’αžœαž›αŸ‹αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž‡αžΌαž“αž“αŸ…αž›αžΎαž‘αžΆαž“αž€αŸ’αžšαž»αž„αž“αŸ„αŸ‡αž‘αŸαŸ”

αžαžΆαžŸαžšαžΉαž„ - 8 αž”αŸ†αžŽαŸ‚αž€αž“αŸƒ HGST Travelstar 7K1000 αžŠαŸ‚αž›αž˜αžΆαž“αžŸαž˜αžαŸ’αžαž—αžΆαž– 1 TB αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹ 2.5 αžŠαžΌαž…αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒαŸ” αžŠαŸ’αžšαžΆαž™αž‘αžΆαŸ†αž„αž“αŸαŸ‡αž–αžΈαž˜αž»αž“αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸ RAID 6 αŸ” αž–αž½αž€αž‚αŸαž€αŸαž“αžΉαž„αž˜αžΆαž“αž€αžΆαžšαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈαž•αž„αžŠαŸ‚αžšαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αŸ”

αž”αž“αŸ’αžαŸ‚αž˜αŸ–

6 αž”αŸ†αžŽαŸ‚αž€ SATA SSD αž˜αŸ‰αžΌαžŠαŸ‚αž› Samsung 860 QVO 2TB αŸ” SSDs αž‘αžΆαŸ†αž„αž“αŸαŸ‡αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž‘αŸ†αž αŸ†αž’αŸ† αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αž—αžΆαž–αž‡αžΏαž‡αžΆαž€αŸ‹ αž“αž·αž„αžαž˜αŸ’αž›αŸƒαž‘αžΆαž”αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž…αž„αŸ‹αž”αžΆαž“αŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αŸ„αŸ‡αž”αž„αŸ‹/αžŸαžΌαž“αŸ’αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžš αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž–αž·αž“αž·αžαŸ’αž™αžŠαŸ„αž™αž”αž“αŸ’αž‘αžΆαžαŸ‹αž€αŸ’αž“αž»αž„ dmesgαŸ–

kernel: ata1.00: Enabling discard_zeroes_data

2 αž”αŸ†αžŽαŸ‚αž€αž“αŸƒ NVMe SSD αž˜αŸ‰αžΌαžŠαŸ‚αž› Samsung SSD 970 EVO 500GB αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ SSDs αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž›αŸ’αž”αžΏαž“αž’αžΆαž“/αžŸαžšαžŸαŸαžšαž…αŸƒαžŠαž“αŸ’αž™ αž“αž·αž„αžŸαž˜αžαŸ’αžαž—αžΆαž–αž’αž“αž’αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž‚αžΊαžŸαŸ†αžαžΆαž“αŸ‹αŸ” αžœαž·αž‘αŸ’αž™αž»αžŸαž€αž˜αŸ’αž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαŸ” αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ” αžŠαžΆαž…αŸ‹αžαžΆαžαŸ” αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž…αŸ€αž“αžœαžΆαžšαž αžΌαžαžŠαž›αŸ‹αž€αŸ’αžšαŸ€αž˜ αž€αŸ†αž‘αž»αž„αž–αŸαž›αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ RAID αžŠαŸ†αž”αžΌαž„αŸ”

αž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžš StarTech PEX8M2E2 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 2 x NVMe SSD αžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž“αŸ’αž’ PCIe 3.0 8x αŸ” αž“αŸαŸ‡αž˜αŸ’αžαž„αž‘αŸ€αžαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆ HBA αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ NVMe αŸ” αžœαžΆαžαž»αžŸαž‚αŸ’αž“αžΆαž–αžΈαž’αžΆαžŠαžΆαž”αŸ‹αž‘αŸαžšαžŠαŸ‚αž›αž˜αžΆαž“αžαŸ†αž›αŸƒαžαŸ„αž€αžŠαŸ‚αž›αžœαžΆαž˜αž·αž“αžαž˜αŸ’αžšαžΌαžœαž±αŸ’αž™αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš PCIe bifurcation αž–αžΈ motherboard αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžœαžαŸ’αžαž˜αžΆαž“αž“αŸƒαž€αž»αž„αžαžΆαž€αŸ‹ PCIe αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αŸ” αžœαžΆαž“αžΉαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αž»αžšαžΆαžŽαž”αŸ†αž•αž»αžαž‡αžΆαž˜αž½αž™ PCIe αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαžœαžΆαž‡αžΆαžšαž“αŸ’αž’ x1 PCIe 1.0 αž€αŸαžŠαŸ„αž™αŸ” αžαžΆαž˜αž’αž˜αŸ’αž˜αž‡αžΆαžαž·αž€αŸ’αž“αž»αž„αž›αŸ’αž”αžΏαž“αžŸαž˜αžšαž˜αŸ’αž™αŸ” αž˜αž·αž“αž˜αžΆαž“ RAIDs αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” αž˜αž·αž“αž˜αžΆαž“ BIOS αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžšαžΆαž”αŸ‹αž“αŸ…αž›αžΎαž™αž“αŸ’αžαž αŸ„αŸ‡αž‘αŸαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αžšαŸ€αž“αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‡αžΆαž˜αž½αž™ NVMe αž”αžΆαž“αž‘αŸ αž˜αž·αž“αžŸαžΌαžœαž’αŸ’αžœαžΎ NVMe RAID αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αŸ”

αžŸαž˜αžΆαžŸαž’αžΆαžαž»αž“αŸαŸ‡αž‚αžΊαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ 8x PCIe 3.0 αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αžšαž“αŸ’αž’αžŠαŸ„αžαž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαž…αŸ†αž“αž½αž“ 2 αž“αŸ„αŸ‡ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž‡αžΆαž˜αž½αž™ PEX4M2E1 ឬ analogues αž–αžΈαžšαž€αžΆαž€αŸ‹αžŠαŸ‚αž›αž’αžΆαž…αž‘αž·αž‰αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„αž€αŸ’αž“αž»αž„αžαž˜αŸ’αž›αŸƒ 600 rubles αŸ”

αž€αžΆαžšαž”αžŠαž·αžŸαŸαž’αž‚αŸ’αžšαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž“αŸƒ Hardware ឬ Chipset/BIOS RAIDs αžŠαŸ‚αž›αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αž€αž‡αžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αžŠαŸ„αž™αž…αŸαžαž“αžΆ αžŠαžΎαž˜αŸ’αž”αžΈαž’αžΆαž…αž‡αŸ†αž“αž½αžŸαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‘αžΆαŸ†αž„αž˜αžΌαž›αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„ αž›αžΎαž€αž›αŸ‚αž„αžαŸ‚ SSD/HDD αžαŸ’αž›αž½αž“αž―αž„ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžαžΆαž˜αž§αžαŸ’αžŠαž˜αž‚αžαž· αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αž“αž€αž’αžΆαž…αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž–αŸαž›αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‘αŸ…αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αžαŸ’αž˜αžΈαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„/αžαž»αžŸαž‚αŸ’αž“αžΆαŸ” αžšαžΏαž„αž…αŸ†αž”αž„αž‚αžΊαžαžΆαž˜αžΆαž“αž…αŸ’αžšαž€ SATA αž“αž·αž„ PCIe αŸ” αžœαžΆαžŠαžΌαž…αž‡αžΆαžŸαŸŠαžΈαžŒαžΈαž”αž“αŸ’αžαž•αŸ’αž‘αžΆαž›αŸ‹ αž¬αžŠαŸ’αžšαžΆαž™αžœαŸαž–αž“αŸ’αž›αžΊαžŠαŸ‚αž›αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αžΆαž“ αž˜αžΆαž“αžαŸ‚αž›αžΏαž“ αž“αž·αž„αžŸαŸ†αž–αžΈαž„αžŸαŸ†αž–αŸ„αž„αž”αž“αŸ’αžαž·αž…αŸ”

αž€αžΆαžšαž›αŸαž„αžŸαžΎαž…αž”αžΎαž˜αž·αž“αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‘αŸ αž’αŸ’αž“αž€αžŠαžΉαž„αžαžΆαž˜αžΆαž“αž’αŸ’αžœαžΈαž€αžΎαžαž‘αžΎαž„ - αž–αŸαž›αžαŸ’αž›αŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž“αŸ’αž‘αžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž™αž€αž’αžΆαžšαŸαž‘αžΆαŸ†αž„αž˜αžΌαž›αž‡αžΆαž˜αž½αž™αž’αŸ’αž“αž€αžŠαžΎαž˜αŸ’αž”αžΈαž™αž€αž‘αŸ…αž†αŸ’αž„αžΆαž™αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž…αž„αŸ‹αž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž˜αžΆαž“αž‘αžΈαžαžΆαŸ†αž„αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ…αž›αžΎαžŸαŸ’αž›αžΆαž™αž€αŸ’αž“αž»αž„ 5.25 bays αž“αŸƒαž€αžšαžŽαžΈαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžšαŸ”

αž‡αžΆαž€αžΆαžšαž”αŸ’αžšαžŸαžΎαžšαžŽαžΆαžŸαŸ‹ αž αžΎαž™αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž˜αž½αž™αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αžαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SSD αž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž…αŸ”

αž€αžΆαžšαžœαžΆαž™αž†αŸ’αž˜αž€αŸ‹αž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‚αžΊαž‚αž½αžšαž±αŸ’αž™αž’αž»αž‰αŸ” αž”αžΎαž€β€‹αžœαžΆαŸ” αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž¬αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ” αž αžΎαž™αž‡αžΆαž˜αž½αž™ mdadm αžαŸ‚αž„αžαŸ‚αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαŸ”

αžŸαžΌαž αŸ’αžœαžœαŸ‚αžš

αž–αžΈαž˜αž»αž“ Debian 8 Jessie αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎ Hardware αžŠαŸ‚αž›αž“αŸ…αž‡αž·αž EOLαŸ” RAID 6 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž‚αž»αŸ†αž–αžΈ HDDs αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αžαžΆαž„αž›αžΎ αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž‡αžΆαž˜αž½αž™ LVM αŸ” αžœαžΆαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž€αŸ’αž“αž»αž„ kvm/libvirtαŸ”

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαžŸαž˜αžŸαŸ’αžšαž”αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŠαŸ’αžšαžΆαž™αžœαŸαž–αž“αŸ’αž›αžΊ SATA/NVMe αžŠαŸ‚αž›αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αžΆαž“ αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž±αŸ’αž™αžαžΌαž…αž‚αŸ†αžšαžΌ apt αž’αž˜αŸ’αž˜αžαžΆ αž’αŸŠαžΌαž”αŸŠαž»αž“αž‘αžΌ 18.04 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ„αž›αžŠαŸ…αžŠαŸ‚αž›αž˜αžΆαž“αžŸαŸ’αžαŸαžšαž—αžΆαž–αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžšαž½αž…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αžαŸ‚αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž› 3 αž†αŸ’αž“αžΆαŸ†αŸ” αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž“αžΆαž–αŸαž›αž’αž“αžΆαž‚αžαŸ”

αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αžΆαž“αžšαŸ€αž”αžšαžΆαž”αŸ‹αž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ” αž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž—αžΆαž‚αžΈαž‘αžΈαž”αžΈ αž¬αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž‰αŸ’αž‡αžΆαž‘αŸαŸ”

αž€αŸ†αž–αž»αž„αžšαŸ€αž”αž…αŸ†αžŠαŸ†αž‘αžΎαž„

αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš Ubuntu Desktop Image αŸ” αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αžΆαž“αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž‘αžΎαž„αžŠαŸαžαŸ’αž›αžΆαŸ†αž„αž€αŸ’αž›αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž—αžΆαž–αž―αž€αžšαžΆαž‡αŸ’αž™αž αž½αžŸαž αŸαžαž»αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž”αž·αž‘αž”αžΆαž“αžŠαŸ„αž™αž€αžΆαžšαžšαž»αž‰αž—αžΆαž‚αžαžΆαžŸαž”αŸ’αžšαž–αŸαž“αŸ’αž’ UEFI αž‘αŸ…αž›αžΎαžαžΆαžŸαž˜αž½αž™αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™αžαžΌαž…αžŸαŸ„αž—αŸαžŽαž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŠαžΌαž…αŸ’αž“αŸ„αŸ‡αž αžΎαž™αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” UEFI αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž˜αž·αž“αž•αŸ’αžαž›αŸ‹αž‡αž˜αŸ’αžšαžΎαžŸαžŽαžΆαž˜αž½αž™αž‘αžΎαž™αŸ”

αž™αžΎαž„αž˜αž·αž“αžŸαž”αŸ’αž”αžΆαž™αž…αž·αžαŸ’αžαž“αžΉαž„αžšαžΏαž„αž“αŸαŸ‡αž‘αŸαŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈ?αž‡αžΆαž’αž€αž»αžŸαž› UEFI boot αž‚αžΊαž˜αžΆαž“αž—αžΆαž–αž†αž”αž‚αŸ’αž“αžΆαž™αŸ‰αžΆαž„αž›αŸ†αž”αžΆαž€αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ RAID boot αž–αŸ’αžšαŸ„αŸ‡... αž‚αŸ’αž˜αžΆαž“αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αž“αžΌαžœαž€αžΆαžšαž€αž€αŸ‹αž‘αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž‚αžαžΆαžŸ UEFI ESP αž‘αŸαŸ” αž˜αžΆαž“αžšαžΌαž”αž˜αž“αŸ’αžαž›αžΎαž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αžŸαŸ’αž“αžΎαž±αŸ’αž™αžŠαžΆαž€αŸ‹αž—αžΆαž‚αžαžΆαžŸ ESP αž“αŸ…αž›αžΎ flash drive αž“αŸ…αž€αŸ’αž“αž»αž„αžšαž“αŸ’αž’ USB αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž…αŸ†αžŽαž»αž…αž”αžšαžΆαž‡αŸαž™αŸ” αž˜αžΆαž“αžšαžΌαž”αž˜αž“αŸ’αžαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ mdadm RAID 1 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαž€αŸ†αžŽαŸ‚ 0.9 αžŠαŸ‚αž›αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„ UEFI BIOS αž–αžΈαž€αžΆαžšαž˜αžΎαž›αžƒαžΎαž‰αž—αžΆαž‚αžαžΆαžŸαž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαžšαžŸαŸ‹αž“αŸ…αžšαž αžΌαžαžŠαž›αŸ‹αž–αŸαž›αžšαžΈαž€αžšαžΆαž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž› BIOS αž¬αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŸαžšαžŸαŸαžšαž’αŸ’αžœαžΈαž˜αž½αž™αž‘αŸ… ESP αž αžΎαž™αž—αŸ’αž›αŸαž…αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžœαžΆαž‘αŸ…αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž€αž‰αŸ’αž…αž€αŸ‹αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αž UEFI boot αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎ NVRAM αžŠαŸ‚αž›αž“αžΉαž„αž˜αž·αž“αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈαž‡αžΆαž˜αž½αž™αžŒαžΈαžŸαž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αž˜αžΈαž‘αŸαž–αŸ’αžšαŸ„αŸ‡ αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒ motherboard αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž€αž„αŸ‹αžαŸ’αž˜αžΈαž‘αžΎαž„αžœαž·αž‰αž‘αŸαŸ” αž™αžΎαž„β€‹αž˜αžΆαž“β€‹αž€αž„αŸ‹β€‹αžšαž”αžŸαŸ‹β€‹αž‡αžΈαžαžΆβ€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαŸ€αž˜β€‹αžšαž½αž…β€‹αž‡αžΆβ€‹αžŸαŸ’αžšαŸαž…β€‹αž αžΎαž™β€‹αžŠαŸ‚αž›β€‹αž”αžΆαž“β€‹αžŸαžΆαž€αž›αŸ’αž”αž„β€‹αž–αŸαž›β€‹αž“αŸαŸ‡ αžŠαŸ‚αž›β€‹αž₯αž‘αžΌαžœβ€‹αž‚αŸβ€‹αž αŸ…αžαžΆ Legacy/BIOS boot αžŠαŸ‚αž›β€‹αž˜αžΆαž“β€‹αžˆαŸ’αž˜αŸ„αŸ‡β€‹αž˜αŸ„αž‘αž“αž—αžΆαž–β€‹αž“αŸƒ CSM αž“αŸ…β€‹αž›αžΎβ€‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’β€‹αžŠαŸ‚αž›β€‹αžαŸ’αžšαžΌαžœβ€‹αž‚αŸ’αž“αžΆβ€‹αž“αžΉαž„ UEFIαŸ” αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž™αž€αžœαžΆαž…αŸαž‰αž–αžΈαž’αŸ’αž“αžΎ αžšαŸ†αž’αž·αž›αžœαžΆ αž”αžΌαž˜αžŸαŸ†αž”αž€αž€αž„αŸ‹ αž αžΎαž™αž‡αžΌαžαžœαžΆαžŠαŸ„αž™αž€αŸ’αžšαžŽαžΆαžαŸ‹αžŸαžΎαž˜αŸ”

αž€αŸ†αžŽαŸ‚αž•αŸ’αž‘αŸƒαžαž»αžšαž”αžŸαŸ‹ Ubuntu αž€αŸαž˜αž·αž“αž’αžΆαž…αžŠαŸ†αž‘αžΎαž„αž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‡αžΆαž˜αž½αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ Legacy bootloader αžŠαŸ‚αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αžŠαžΌαž…αžŠαŸ‚αž›αž–αž½αž€αž‚αŸαž“αž·αž™αžΆαž™ αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αžΆαž“αž‡αž˜αŸ’αžšαžΎαžŸαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αŸ’αžšαž˜αžΌαž› hardware αž“αž·αž„αž•αŸ’αž‘αž»αž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αžΈ Ubuntu Live flash drive αžŠαŸ‚αž›αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αžΆαž“αŸ” αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž‘αžΆαž‰αž™αž€αž€αž‰αŸ’αž…αž”αŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αžšαŸ€αž”αž…αŸ†αž”αžŽαŸ’αžαžΆαž‰αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ αž’αŸ’αž“αž€αž’αžΆαž…αž•αŸ’αž‘αž»αž€αž€αž‰αŸ’αž…αž”αŸ‹αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž‘αŸ… flash drive αž‡αžΆαž˜αž»αž“αŸ”

αž™αžΎαž„αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αžŸαŸ’αžαžΆαž“ Desktop αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŸαŸ’αžαžΆαž“αžΈαž™ αž αžΎαž™αž”αž·αž‘αž™αžΎαž„αž‘αŸ…αŸ–

#sudo bash

αž™αŸ‰αžΆαž„αž˜αŸ‰αŸαž…β€¦?αž”αž“αŸ’αž‘αžΆαžαŸ‹αžαžΆαž„αž›αžΎαž‚αžΊαž‡αžΆαž‚αž“αŸ’αž›αžΉαŸ‡ Canonical αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ holiwars αž’αŸ†αž–αžΈ sudo αŸ” αž‚ αžΠΎαž±αž€αžΆαžŸαž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αž˜αž€αžŠαž›αŸ‹αž αžΎαž™αŸ”ΠΎαž€αžΆαžšαž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž’αŸ†αž‡αžΆαž„αŸ” αžŸαŸ†αžŽαž½αžšαž‚αžΊαžαžΆαžαžΎαž’αŸ’αž“αž€αž’αžΆαž…αž™αž€αžœαžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž”αžΆαž“αŸ” αž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž‚αž·αžαžαžΆαž€αžΆαžšαž”αŸ’αžšαžΎ sudo αž“αŸ…αž€αŸ’αž“αž»αž„αžœαž·αž’αžΈαž“αŸαŸ‡αž‚αžΊαž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αž˜αž·αž“αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αŸ” αž‘αŸ„αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™αŸ–

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

αž αŸαžαž»αž’αŸ’αžœαžΈαž˜αž·αž“ ZFS...?αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸ…αž›αžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž•αŸ’αžαž›αŸ‹αž”αŸ’αžšαžΆαž€αŸ‹αž€αž˜αŸ’αž…αžΈαž™αŸ‰αžΆαž„αžŸαŸ†αžαžΆαž“αŸ‹αžŠαž›αŸ‹αž’αŸ’αž“αž€αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αžšαž»αž‰αŸ”
αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž™αžΎαž„αž‡αžΏαž‡αžΆαž€αŸ‹αž›αžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž“αŸαŸ‡αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžŸαž»αžœαžαŸ’αžαž·αž—αžΆαž–αž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αžŠαž€αž”αŸ’αžšαžΆαž€αŸ‹αž€αž˜αŸ’αž…αžΈαžŸαŸ’αž˜αžΎαž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž“αŸƒαž€αžΆαžšαžŸαŸ’αžŠαžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸαŸ‡αž‘αžΎαž„αžœαž·αž‰ αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαžŸαž„αž“αŸ…αžαŸ’αž„αŸƒαžŽαžΆαž˜αž½αž™αŸ”

αžαžΆαž˜αž‘αžŸαŸ’αžŸαž“αŸˆαž“αŸαŸ‡ ZFS αž‚αžΊαž‡αžΆαžšαžαž™αž“αŸ’αž Ferrari αž αžΎαž™ mdadm+lvm αž‚αžΊαžŠαžΌαž…αž‡αžΆαž€αž„αŸ‹αŸ”

αžαžΆαž˜αž€αžΆαžšαž™αž›αŸ‹αžƒαžΎαž‰ αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž…αžΌαž›αž…αž·αžαŸ’αžαžαŸ’αž…αžΈαž€αž„αŸ‹αžŠαŸ„αž™αž•αŸ’αžαž›αŸ‹αž₯αžŽαž‘αžΆαž“αžŠαž›αŸ‹αž”αž»αž‚αŸ’αž‚αž›αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸ’αž‚αžΆαž›αŸ‹ αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™αžšαžαž™αž“αŸ’αž Ferrari αŸ” αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αžαž˜αŸ’αž›αŸƒαž“αŸƒαž”αž‰αŸ’αž αžΆαž‚αžΊαž˜αž·αž“αžαŸ’αž–αžŸαŸ‹αž‘αŸαŸ” αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž‘αŸαŸ” αžŸαžΆαž˜αž‰αŸ’αž‰αž‡αžΆαž„αž…αŸ’αž”αžΆαž”αŸ‹αž…αžšαžΆαž…αžšαžŽαŸαŸ” αž…αŸ†αžŽαžαžšαžαž™αž“αŸ’αžαž‚αžΊαž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαŸ” αžŸαž˜αžαŸ’αžαž—αžΆαž–αž†αŸ’αž›αž„αž”αŸ’αžšαž‘αŸαžŸαž‚αžΊαž”αŸ’αžšαžŸαžΎαžšαž‡αžΆαž„αŸ” αž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΎαž„αž‘αŸ…αž“αžΉαž„αž€αž„αŸ‹ αž αžΎαž™αž’αŸ’αž“αž€αž’αžΆαž…αž‡αž½αžŸαž‡αž»αž›αž€αž„αŸ‹αžŠαŸ„αž™αžŠαŸƒαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž•αŸ’αž‘αžΆαž›αŸ‹αŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈ BTRFS...?αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžš αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž“αŸ…αž€αŸ’αž“αž»αž„ Legacy/BIOS GRUB αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹ αž αžΎαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αž‚αžΆαŸ†αž‘αŸ’αžšαž€αžΆαžšαžαžαžšαžΌαž”αž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαžœαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž‚αžαžΆαžŸ /boot αŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž…αžΌαž›αž…αž·αžαŸ’αžαž”αŸ’αžšαžΎ FS αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ / (root) αžŠαŸ„αž™αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž…αŸ†αžŽαžΆαŸ†αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž’αŸ’αž“αž€αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž—αžΆαž‚αžαžΆαžŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αŸ…αž›αžΎ LVM αž αžΎαž™αž˜αŸ‰αŸ„αž“αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžαžαž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžšαžΌαž”αž—αžΆαž–αžŽαžΆαž˜αž½αž™αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž¬αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎ FS αž“αŸαŸ‡αž‘αŸαŸ”
FS αž“αŸαŸ‡αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αžαžαž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ„αž™αž˜αž·αž“αž”αž·αž‘αžœαžΆ αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž•αŸ’αž‘αŸαžšαžšαžΌαž”αžαžαž‘αžΆαŸ†αž„αž“αŸαŸ‡αž‘αŸ…αžαžΆαžŸαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αžΆαžšαž•αŸ’αž‰αžΎ/αž‘αž‘αž½αž›αŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž‡αžΆαž‘αžΌαž‘αŸ…αž…αžΌαž›αž…αž·αžαŸ’αžαžšαž€αŸ’αžŸαžΆαž’αž”αŸ’αž”αžšαž˜αžΆαž“αŸƒαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž›αžΎαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ„αž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž’αŸ’αžœαžΈαŸ—αžŠαžΌαž…αž‡αžΆαž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αž GPUs αž“αž·αž„ PCI-USB Host controllers αž‘αŸ… KVM αžαžΆαž˜αžšαž™αŸˆ IOMMU αŸ”

αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αžŸαŸαžŸαžŸαž›αŸ‹β€‹αžαŸ‚β€‹αž˜αž½αž™β€‹αž‚αžαŸ‹β€‹αž“αŸ…β€‹αž›αžΎ hardware αž‚αžΊβ€‹αž€αžΆαžšβ€‹αž•αŸ’αž‘αž»αž€β€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž€αžΆαžšβ€‹αž“αž·αž˜αŸ’αž˜αž·αž αž“αž·αž„β€‹αž€αžΆαžšβ€‹αž”αž˜αŸ’αžšαž»αž„β€‹αž‘αž»αž€αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž‘αž»αž€αž…αž·αžαŸ’αž 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 αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž”αž„αŸ’αž€αžΎαžαž•αŸ’αž“αŸ‚αž€αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸαŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž…αž„αŸ‹αž’αŸ’αžœαžΎαžαžΆαž˜ "canon" ឬ "αž…αž˜αŸ’αž”αž„" αž”αž„αŸ’αž€αžΎαžαž—αžΆαž‚αž’αŸ†αž˜αž½αž™αžŠαžΌαž…αž‡αžΆ 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 Legacy/BIOS αž•αž„αžŠαŸ‚αžšαŸ”

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸαŸ”

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž•αŸ’αž“αŸ‚αž€αž–αžΈαžšαŸ” αž‘αžΈαž˜αž½αž™αž“αžΉαž„αž˜αžΆαž“αž‘αŸ†αž αŸ† 1 GB αž αžΎαž™αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RAID 1/bootαŸ”

αž‘αžΈαž–αžΈαžšβ€‹αž“αžΉαž„β€‹αžαŸ’αžšαžΌαžœβ€‹αž”αžΆαž“β€‹αž”αŸ’αžšαžΎβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RAID 6 αž αžΎαž™β€‹αž“αžΉαž„β€‹αž™αž€β€‹αž‘αŸ†αž αŸ†β€‹αž‘αŸ†αž“αŸαžšβ€‹αžŠαŸ‚αž›β€‹αž“αŸ…β€‹αžŸαž›αŸ‹β€‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹β€‹αž›αžΎαž€β€‹αž›αŸ‚αž„β€‹αžαŸ‚β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αžαŸ†αž”αž“αŸ‹β€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αž”αŸ‚αž„αž…αŸ‚αž€β€‹αžαžΌαž…β€‹αž“αŸ…β€‹αžαžΆαž„β€‹αž…αž»αž„β€‹αž“αŸƒβ€‹αžŠαŸ’αžšαžΆαž™αŸ”

αžαžΎβ€‹αžαŸ†αž”αž“αŸ‹β€‹αžŠαŸ‚αž›β€‹αž˜αž·αž“β€‹αž”αžΆαž“β€‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹β€‹αž“αŸαŸ‡β€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈ?αž™αŸ„αž„αžαžΆαž˜αž”αŸ’αžšαž—αž–αž“αŸ…αž›αžΎαž”αžŽαŸ’αžαžΆαž‰ SATA SSDs αžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αž“αŸ…αž›αžΎαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αžŠαŸ‚αž›αž’αžΆαž…αž–αž„αŸ’αžšαžΈαž€αž”αžΆαž“αž™αŸ‰αžΆαž„αžŸαŸ’αžœαžΆαž αžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž‘αŸ†αž αŸ†αž…αžΆαž”αŸ‹αž–αžΈ 6 αž‘αŸ… 78 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαŸ” αž™αžΎαž„αž‘αž‘αž½αž›αž”αžΆαž“ 6 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒ "αžŠαŸ„αž™αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ" αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαžœαžΆαž„ "αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒ" αž“αž·αž„ "αž‡αžΈαž”αŸŠαžΈαž”αŸƒ" αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž“αŸ’αž›αžΉαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸƒαžŠαŸ’αžšαžΆαž™αŸ” 72 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ‚αž„αž…αŸ‚αž€αž–αžΈαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αž˜αž·αž“αž”αŸ’αžšαžΎαŸ”

αž“αŸ…αž‘αžΈαž“αŸαŸ‡αžœαžΆαž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž™αžΎαž„αž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αž αžΎαž™αž…αž“αŸ’αž›αŸ„αŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž€αŸ’αž“αž»αž„αžšαž”αŸ€αž” MLC 4 αž”αŸŠαžΈαžαŸ” αžŠαŸ‚αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž˜αžΆαž“αž“αŸαž™αžαžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαžΆαž›αŸ‹αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžš 4 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αžαŸ’αžšαžΉαž˜αžαŸ‚ 1 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ”

αž‚αž»αžŽ 72 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαžŠαŸ„αž™ 4 αž“αž·αž„αž‘αž‘αž½αž›αž”αžΆαž“ 288 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαŸ” αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžŠαŸ’αžšαžΆαž™αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž–αŸαž‰αž›αŸαž‰αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž“αžΌαžœαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αžšαž αžΌαžαžŠαž›αŸ‹ 312 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž™αŸ‰αžΆαž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž– αž–αžΈαžŠαŸ’αžšαžΆαž™αžŸαžšαž»αž”αž…αŸ†αž“αž½αž“αž”αŸ’αžšαžΆαŸ†αž˜αž½αž™αŸ” αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžŠαŸ’αžšαžΆαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ 2 αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„ RAID αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž‘αŸ…αž‘αŸ€αžαŸ”

αž…αŸ†αž“αž½αž“αž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸαŸ‡αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž€αž˜αŸ’αžšαžŽαžΆαžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž‡αžΈαžœαž·αžαž–αž·αžαž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŠαŸ‚αž›αž€αžΆαžšαžŸαžšαžŸαŸαžšαž˜αž·αž“αž…αžΌαž›αž‘αŸ…αž€αžΆαž“αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αžŸαŸ†αžŽαž„αž™αŸ‰αžΆαž„αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αž»αžŽαžœαž·αž”αžαŸ’αžαž·αžŠαŸαž€αŸ’αžšαŸ€αž˜αž€αŸ’αžšαŸ†αž”αŸ†αž•αž»αžαž“αŸƒαž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† QLC - αž›αŸ’αž”αžΏαž“αžŸαžšαžŸαŸαžšαž‘αžΆαž”αž”αŸ†αž•αž»αžαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžšαŸ†αž›αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž€αžΆαžšαž•αŸ’αž‘αž»αž€αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αž·αž“αžαŸ’αžšαžΌαžœαž‚αŸ’αž“αžΆαž“αžΉαž„αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‘αŸ αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αž’αŸ’αž“αž€αž‚αž·αžαž±αŸ’αž™αž…αŸ’αž”αžΆαžŸαŸ‹αžαžΆαžαžΎ SSD αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž“αžΉαž„αž˜αžΆαž“αžšαž™αŸˆαž–αŸαž›αž”αŸ‰αž»αž“αŸ’αž˜αžΆαž“αž“αŸ…αž€αŸ’αžšαŸ„αž˜αž”αž“αŸ’αž‘αž»αž€αž”αŸ‚αž”αž“αŸαŸ‡ αžŠαŸ„αž™αž‚αž·αžαž‚αžΌαžšαž–αžΈ TBW αž–αžΈαžŸαž“αŸ’αž›αžΉαž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

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

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

αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž’αžΆαžšαŸ

αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αžαŸ’αžšαžΌαžœαž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ” αž“αŸαŸ‡αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž‚αžΊαž‡αžΆαž•αŸ’αž“αŸ‚αž€αž˜αž½αž™αž“αŸƒαžˆαŸ’αž˜αŸ„αŸ‡αž’αžΆαžšαŸαž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ mdadm αž αžΎαž™αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž’αŸ’αžœαžΈαž˜αž½αž™αž“αŸ…αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αŸ” αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αž’αžΆαžšαŸαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‡αŸ†αž αžΆαž“αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αŸ”

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

αž’αž·αž“αž’αŸαž˜αž’αŸαžŸαž’αŸαžŸ

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

αž αŸαžαž»αž’αŸ’αžœαžΈ-αžŸαž“αŸ’αž˜αžαŸ‹αžαžΆαžŸαŸ’αž’αžΆαž...?αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αžΆαžšαŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αžšαž·αž RAID αž‘αžΆαŸ†αž„ 1 αž“αž·αž„ 6 αž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαŸ” αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αž‚αŸ’αž˜αžΆαž“αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž‡αžΆαž’αžΆαžšαŸαžαŸ’αž˜αžΈαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž€αžΆαžšαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž’αžΆαžšαŸ SSD αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαž‚αžΊαž‡αžΆαž€αžΆαžšαžαŸ’αž‡αŸ‡αžαŸ’αž‡αžΆαž™αž’αž“αž’αžΆαž“ TBW αŸ” αž™αžΎαž„αž”αŸ’αžšαžΎ TRIM/DISCARD αžŠαŸ‚αž›αž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αž“αŸ…αž›αžΎαž’αžΆαžšαŸ SSD αžŠαŸ‚αž›αž”αžΆαž“αž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆαžŠαžΎαž˜αŸ’αž”αžΈ "αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜" αž–αž½αž€αžœαžΆαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαžšαŸ SSD, RAID 1 DISCARD αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžšαž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαžšαŸ SSD RAID 6 DISCARD αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαžαŸ‚αž”αžΎαž€αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαž˜αŸ‰αžΌαžŒαž»αž›αžαžΊαžŽαŸ‚αž›αŸ”

αž“αŸαŸ‡αž‚αž½αžšαžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚ SSDs αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αŸ’αžšαžΎαž€αŸ’αž“αž»αž„αž€αž˜αŸ’αžšαž·αž 4/5/6 αž’αžΆαžšαŸαž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸαŸ‡αž˜αžΆαž“αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ discard_zeroes_dataαŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αž’αŸ’αž“αž€αž‡αž½αž”αž”αŸ’αžšαž‘αŸ‡αž“αžΉαž„αžŠαŸ’αžšαžΆαž™αž…αž˜αŸ’αž›αŸ‚αž€αžŠαŸ‚αž›αž”αŸ’αžšαžΆαž”αŸ‹αžαžΊαžŽαŸ‚αž›αžαžΆαž˜αž»αžαž„αžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αžΆαŸ†αž‘αŸ’αžš αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΆαž˜αž–αž·αžαžœαžΆαž˜αž·αž“αž“αŸ…αž‘αžΈαž“αŸ„αŸ‡αž‘αŸ αž¬αž˜αž»αžαž„αžΆαžšαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž“αž·αž…αŸ’αž…αŸ” αž“αŸ…αž–αŸαž›αž“αŸαŸ‡ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžšαž˜αžΆαž“αžŸαŸ’αž‘αžΎαžšαžαŸ‚αž‚αŸ’αžšαž”αŸ‹αž‘αžΈαž€αž“αŸ’αž›αŸ‚αž„ αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž˜αžΆαž“αžŠαŸ’αžšαžΆαž™αžœαŸαž…αžΆαžŸαŸ‹ αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αž„αŸ’αž€αž”αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αž€αŸ†αž αž»αžŸαŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž“αŸαŸ‡ αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš DISCARD αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αžαžΆαž˜αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RAID 6 αŸ”

αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹ αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αžΉαž„αž”αŸ†αž•αŸ’αž›αžΆαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž›αžΎαžŠαŸ’αžšαžΆαž™ NVMe αžŠαŸ„αž™ "αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜" αž’αžΆαžšαŸαž‡αžΆαž˜αž½αž™ "αžŸαžΌαž“αŸ’αž™" αŸ”

#blkdiscard /dev/md0

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž˜αž½αž™αžαž»αžŸ αžŸαžΌαž˜αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž‡αŸ†αž αžΆαž“αž˜αž½αž™αŸ”

#blkdiscard --step 65536 /dev/md0

SATA SSD

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

αž αŸαžαž»αž’αŸ’αžœαžΈαž’αŸ†αž˜αŸ’αž›αŸαŸ‡...?αž€αžΆαžšαž”αž„αŸ’αž€αžΎαž“αž‘αŸ†αž αŸ†αž€αŸ†αžŽαžΆαžαŸ‹αž˜αžΆαž“αž₯αž‘αŸ’αž’αž·αž–αž›αžœαž·αž‡αŸ’αž‡αž˜αžΆαž“αž‘αŸ…αž›αžΎαž›αŸ’αž”αžΏαž“αž“αŸƒαž€αžΆαžšαž’αžΆαž“αž…αŸƒαžŠαž“αŸ’αž™αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αž›αž»αž€αžšαž αžΌαžαžŠαž›αŸ‹αž‘αŸ†αž αŸ†αž€αŸ†αžŽαžΆαžαŸ‹αŸ” αžœαžΆαž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž˜αž½αž™αž“αŸƒαž‘αŸ†αž αŸ†αžŸαž˜αžŸαŸ’αžšαž” αž¬αžαžΌαž…αž‡αžΆαž„αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαžαŸ‚αž˜αž½αž™αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ IOPS αž–αžΈαž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαž„αŸ’αžαŸαž”αŸ” αž™αŸ„αž„αžαžΆαž˜αžŸαŸ’αžαž·αžαž· 99% αž“αŸƒ IO αž˜αž·αž“αž›αžΎαžŸαž–αžΈ 512K αŸ”

RAID 6 IOPS αž€αŸ’αž“αž»αž„αž˜αž½αž™αžŸαžšαžŸαŸαžš αžαŸ‚αž„αžαŸ‚ αžαž·αž…αž‡αžΆαž„ αž¬αžŸαŸ’αž˜αžΎαž“αžΉαž„ IOPS αž“αŸƒαžŠαŸ’αžšαžΆαž™αž˜αž½αž™αŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž€αžΆαžšαž’αžΆαž“αž…αŸƒαžŠαž“αŸ’αž™ IOPS αž’αžΆαž…αž’αŸ†αž‡αžΆαž„αžŠαŸ’αžšαžΆαž™αž˜αž½αž™αžŠαž„αž…αŸ’αžšαžΎαž“αžŠαž„ αž αžΎαž™αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž‘αŸ†αž αŸ†αž”αŸ’αž›αž»αž€αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαžŸαŸ‹αŸ”
αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž˜αž·αž“αžƒαžΎαž‰αž…αŸ†αžŽαž»αž…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŠαŸ‚αž›αž˜αž·αž“αž›αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„ RAID 6 αžŠαŸ„αž™αž€αžΆαžšαžšαž…αž“αžΆαž“αŸ„αŸ‡αž‘αŸ αž αžΎαž™αž‡αŸ†αž“αž½αžŸαž˜αž€αžœαž·αž‰αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž› RAID 6 αž›αŸ’αž’αž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αŸ”
αž™αžΎαž„αž“αžΉαž„αž•αŸ’αžαž›αŸ‹αžŸαŸ†αžŽαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž…αŸƒαžŠαž“αŸ’αž™αž˜αž·αž“αž›αŸ’αž’αž“αŸƒ RAID 6 αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ NVMe αž“αž·αž„αž›αŸ’αž”αž·αž…αž•αŸ’αžαž›αŸ‹αžŸαŸ’αžαžΎαž„αŸ”

αž™αžΎαž„αž˜αž·αž“αž‘αžΆαž“αŸ‹αž”αžΆαž“αž”αžΎαž€ DISCARD αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ RAID 6αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“ "αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜" αž’αžΆαžšαŸαž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αŸαž›αž“αŸαŸ‡αž‘αŸαŸ” αž™αžΎαž„αž“αžΉαž„αž’αŸ’αžœαžΎαžœαžΆαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŠαŸ†αž‘αžΎαž„ OSαŸ”

ធេសធេសធេដឌីធេស

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

LVM αž“αŸ…αž›αžΎ NVMe RAID

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž›αŸ’αž”αžΏαž“ αž™αžΎαž„αž…αž„αŸ‹αžŠαžΆαž€αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš root αž“αŸ…αž›αžΎ NVMe RAID 1 αžŠαŸ‚αž›αž‡αžΆ /dev/md0 αŸ”
αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αžΎαž„αž“αžΉαž„αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αžΆαžšαŸαžŠαŸαž›αžΏαž“αž“αŸαŸ‡αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΌαž…αž‡αžΆ swap αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆ αž“αž·αž„ LVM-cache αž“αž·αž„ LVM-thin metadata αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαž LVM VG αž“αŸ…αž›αžΎαž’αžΆαžšαŸαž“αŸαŸ‡αŸ”

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

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž—αžΆαž‚αžαžΆαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš root αŸ”

#lvcreate -L 128G --name root root

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž Partition αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžαžΌαžšαžαžΆαž˜αž‘αŸ†αž αŸ† RAMαŸ”

#lvcreate -L 32G --name swap root

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ OS

αžŸαžšαž»αž”αž˜αž€ αž™αžΎαž„αž˜αžΆαž“αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ”

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž’αŸ’αž“αž€αž‡αŸ†αž“αž½αž™αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž–αžΈαž”αžšαž·αžŸαŸ’αžαžΆαž“ Ubuntu Live αŸ” αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž’αž˜αŸ’αž˜αžαžΆαŸ” αž˜αžΆαž“αžαŸ‚αž“αŸ…αžŠαŸ†αžŽαžΆαž€αŸ‹αž€αžΆαž›αž“αŸƒαž€αžΆαžšαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžαžΆαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αž‘αžΎαž„αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡ αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αžŠαžΌαž…αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

  • /dev/md1, - αž…αŸ†αžŽαž»αž…αž˜αŸ‰αŸ„αž“ / boot, FS - BTRFS
  • /dev/root/root (aka /dev/mapper/root-root), - αž…αŸ†αžŽαž»αž…αž˜αŸ‰αŸ„αž“ / (root), FS - BTRFS
  • /dev/root/swap (aka /dev/mapper/root-swap), - αž”αŸ’αžšαžΎαž‡αžΆαž—αžΆαž‚αžαžΆαžŸαžŸαŸ’αžœαž”
  • αžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž“αŸ…αž›αžΎ /dev/sda

αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ BTRFS αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš root αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αž‘αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž—αžΆαž‚ BTRFS αž–αžΈαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ "@" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ / (root) αž“αž·αž„ "@home" αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ /home αŸ”

αžαŸ„αŸ‡αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αž‘αžΎαž„...

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž“αžΉαž„αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž”αŸ’αžšαž’αž”αŸ‹αž˜αŸ‰αžΌαžŒαž»αž›αžŠαŸ‚αž›αž”αž„αŸ’αž αžΆαž‰αž–αžΈαž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αŸ” αž‡αžΆαž’αž€αž»αžŸαž› αž’αŸ’αž“αž€αž“αžΉαž„αž˜αž·αž“αž’αžΆαž…αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž’αž”αŸ‹αž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αž“αž·αž„αž”αž“αŸ’αžαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αžΆαž“αž‘αŸαŸ” αž™αžΎαž„αž…αŸαž‰αž–αžΈαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž αžΎαž™αž…αžΌαž›αž˜αŸ’αžαž„αž‘αŸ€αž αžŠαŸ„αž™αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αž•αŸ’αž‘αŸƒαžαž» Ubuntu Live αžŸαŸ’αž’αžΆαžαŸ” αž”αžΎαž€αžŸαŸ’αžαžΆαž“αžΈαž™ αž αžΎαž™αž˜αŸ’αžαž„αž‘αŸ€αžαŸ–

#sudo bash

αž”αž„αŸ’αž€αžΎαžαž”αžšαž·αž™αžΆαž€αžΆαžŸ chroot αžŠαžΎαž˜αŸ’αž”αžΈαž”αž“αŸ’αžαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αŸ–

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

αž…αžΌαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰ αž“αž·αž„αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αŸ…αž€αŸ’αž“αž»αž„ chrootαŸ–

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

αžαŸ„αŸ‡αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αžšαž·αž™αžΆαž€αžΆαžŸ chrootαŸ–

#chroot /mnt/chroot

αž‡αžΆαžŠαŸ†αž”αžΌαž„ αž™αžΎαž„αž“αžΉαž„αž…αŸ‚αž€αž…αžΆαž™αž€αž‰αŸ’αž…αž”αŸ‹αŸ–

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

αžŸαžΌαž˜αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž› αž“αž·αž„αž‡αž½αžŸαž‡αž»αž›αž€αž‰αŸ’αž…αž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžŠαŸ„αž™αž†αŸ„αžαž›αŸ’αž„αž„αŸ‹ αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž˜αž·αž“αž–αŸαž‰αž›αŸαž‰αŸ–

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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž’αŸ’αžœαžΈαž˜αž½αž™αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž’αŸ’αž“αž€αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžαŸ’αžšαžΌαžœαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› /etc/apt/sources.list αž‡αžΆαž˜αž»αž“αžŸαž·αž“

αžαŸ„αŸ‡αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž”αŸ‰αžΆαžšαŸ‰αžΆαž˜αŸ‰αŸ‚αžαŸ’αžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž˜αŸ‰αžΌαžŒαž»αž› RAID 6 αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€ TRIM/DISCARDαŸ–

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

αžŸαžΌαž˜β€‹αž€αŸ‚β€‹αžŸαž˜αŸ’αžšαž½αž›β€‹αž’αžΆαžšαŸβ€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž”αž“αŸ’αžαž·αž…αŸ–

#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αŸ” αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αžœαžΆαž αžΆαž€αŸ‹αž”αžΈαžŠαžΌαž…αž‡αžΆαž˜αž·αž“αž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž›αžΈαž“αž»αž… αž αžΎαž™αžœαžΆαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž™αžΌαžšαŸ”
  • αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž’αž”αŸ’αž”αž”αžšαž˜αžΆαž“αŸƒ IO αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαž™αŸˆαž–αŸαž›αž“αŸƒαž€αžΆαžšαžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž’αžΆαžšαŸ/αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αŸ” αž“αŸαŸ‡αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαž€αžΆαžšαž–αžΆαžšαž’αžΆαžšαŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž–αžΈαž€αžΆαžšαž‡αžΆαž”αŸ‹αž‚αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŠαŸαž’αžŸαŸ‹αž€αž›αŸ’αž”αžŠαŸ‚αž›αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž€αžΆαžšαž•αŸ’αž‘αž»αž€αŸ”
  • αž€αŸ†αžŽαžαŸ‹ IO αž’αžαž·αž”αžšαž˜αžΆαž€αŸ†αž‘αž»αž„αž–αŸαž›αž–αž·αž“αž·αžαŸ’αž™/αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž“αŸƒαž’αžΆαžšαŸαŸ” αž“αŸαŸ‡αž‚αžΊαž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ / αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž› SSD RAIDs αž˜αž·αž“αž’αŸ’αžœαžΎαž±αŸ’αž™αžŠαŸ’αžšαžΆαž™αžœαŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αžΆαž“αž—αžΆαž–αžŸαŸ’αžšαž‘αž“αŸ‹αž‘αŸαŸ” αž“αŸαŸ‡αž‡αžΆαž€αžΆαžšαž–αž·αžαž‡αžΆαž–αž·αžŸαŸαžŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ NVMe αŸ” (αž…αž„αž…αžΆαŸ†αž’αŸ†αž–αžΈαžœαž·αž‘αŸ’αž™αž»αžŸαž€αž˜αŸ’αž˜? αžαŸ’αž‰αž»αŸ†αž˜αž·αž“αž“αž·αž™αžΆαž™αž›αŸαž„αž‘αŸ)
  • αž αžΆαž˜αžƒαžΆαžαŸ‹αžαžΆαžŸαž–αžΈαž€αžΆαžšαž”αž‰αŸ’αžˆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αžœαž·αž› spindle (HDD) αžαžΆαž˜αžšαž™αŸˆ APM αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αž–αŸαž›αžœαŸαž›αžΆαž“αŸƒαž€αžΆαžšαž‚αŸαž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαžαžΆαžŸαžŠαž›αŸ‹ 7 αž˜αŸ‰αŸ„αž„αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž”αž·αž‘ APM αž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžŠαŸ’αžšαžΆαž™αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ (-B 255) αŸ” αž‡αžΆαž˜αž½αž™αž“αžΉαž„αžαž˜αŸ’αž›αŸƒαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜ αžŠαŸ’αžšαžΆαž™αž“αžΉαž„αžˆαž”αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αŸ’αžšαžΆαŸ†αžœαž·αž“αžΆαž‘αžΈαŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ OS αž…αž„αŸ‹αž€αŸ†αžŽαžαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαžΆαžŸαž‘αžΎαž„αžœαž·αž‰ αžαžΆαžŸαž“αžΉαž„αžœαž·αž›αž˜αŸ’αžαž„αž‘αŸ€αž αž αžΎαž™αž’αŸ’αžœαžΈαŸ—αž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŒαžΈαžŸαž˜αžΆαž“αž…αŸ†αž“αž½αž“αž’αžαž·αž”αžšαž˜αžΆαž€αŸ†αžŽαžαŸ‹αž“αŸƒαž€αžΆαžšαž”αž„αŸ’αžœαž·αž› spindle αŸ” αžœαžŠαŸ’αžαž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ‚αž”αž“αŸαŸ‡αž’αžΆαž…αžŸαž˜αŸ’αž›αžΆαž”αŸ‹αžαžΆαžŸαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž€αŸ’αž“αž»αž„αžšαž™αŸˆαž–αŸαž›αž–αžΈαžšαž”αžΈαž†αŸ’αž“αžΆαŸ†αŸ” αž˜αž·αž“αž˜αŸ‚αž“αžαžΆαžŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‘αž‘αž½αž›αžšαž„αž–αžΈαž”αž‰αŸ’αž αžΆαž“αŸαŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž‡αžΆ "αž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž™αž½αžšαžŠαŸƒ" αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž›αŸ†αž“αžΆαŸ†αžŠαžΎαž˜αžŠαŸ‚αž›αžŸαž˜αžŸαŸ’αžšαž” αžŠαŸ‚αž›αž’αŸ’αžœαžΎαž±αŸ’αž™ RAID αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž‡αžΆ mini-MAID αŸ”
  • αžŠαŸ†αž‘αžΎαž„ readahead αž“αŸ…αž›αžΎαžαžΆαžŸ (αž”αž„αŸ’αžœαž·αž›) 1 megabyte - αž–αžΈαžšαž”αŸ’αž›αž»αž€αž‡αžΆαž”αŸ‹αž‚αŸ’αž“αžΆ/αž€αŸ†αžŽαžΆαžαŸ‹ RAID 6
  • αž”αž·αž‘αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš readahead αž“αŸ…αž›αžΎαž’αžΆαžšαŸαžαŸ’αž›αž½αž“αž―αž„αŸ”

αžαŸ„αŸ‡αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› /etc/fstabαŸ–

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

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆβ€‹αž’αž‰αŸ’αž…αžΉαž„..?αž™αžΎαž„αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž—αžΆαž‚αžαžΆαžŸ /boot αžŠαŸ„αž™ UUID αŸ” αžˆαŸ’αž˜αŸ„αŸ‡αž’αžΆαžšαŸαž’αžΆαž…αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαžΆαž˜αž‘αŸ’αžšαžΉαžŸαŸ’αžαžΈαŸ”

αž™αžΎαž„αž“αžΉαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αž•αŸ’αž“αŸ‚αž€αžŠαŸ‚αž›αž“αŸ…αžŸαž›αŸ‹αžŠαŸ„αž™αžˆαŸ’αž˜αŸ„αŸ‡ LVM αž“αŸ…αž€αŸ’αž“αž»αž„αžŸαž‰αŸ’αž‰αžΆαžŽ /dev/mapper/vg-lv αž–αžΈαž–αŸ’αžšαŸ„αŸ‡ αž–αž½αž€αž‚αŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαž—αžΆαž‚αžαžΆαžŸαž™αŸ‰αžΆαž„αž–αž·αžŸαŸαžŸαŸ”

αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαžΎ UUID αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ LVM αž‘αŸαž–αŸ’αžšαŸ„αŸ‡ UUID αž“αŸƒαž”αžšαž·αž˜αžΆαžŽ LVM αž“αž·αž„αžšαžΌαž”αžαžαžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž’αžΆαž…αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”αž˜αŸ‰αŸ„αž“ /dev/mapper/root-root.. αž–αžΈαžšαžŠαž„?αž”αžΆαž‘αŸ” αž™αŸ‰αžΆαž„β€‹αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαŸ” αž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžšαž”αžŸαŸ‹ BTRFS αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αŸ‰αŸ„αž“αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„ subvols αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαŸ”

αžŠαŸ„αž™αžŸαžΆαžšαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž€αž»αŸ†αž±αŸ’αž™αž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αž—αžΆαž– LVM αž“αŸƒαž”αžšαž·αž˜αžΆαžŽ BTRFS αžŸαž€αž˜αŸ’αž˜αŸ” αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž‘αž½αž›αž”αžΆαž“αž€αžΆαžšαž—αŸ’αž‰αžΆαž€αŸ‹αž•αŸ’αž’αžΎαž›αž“αŸ…αž–αŸαž›αž’αŸ’αž“αž€αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αŸ”

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž mdadm config αž‘αžΎαž„αžœαž·αž‰αŸ–

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

αžαŸ„αŸ‡αž€αŸ‚αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹ LVMαŸ–

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

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

αžαŸβ€‹αžΈβ€‹αžœαžΆβ€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈ..?αž™αžΎαž„αž”αžΆαž“αž”αžΎαž€αž€αžΆαžšαž–αž„αŸ’αžšαžΈαž€αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸƒαž’αžΆαž„αžŸαŸ’αžαžΎαž„ LVM αž“αŸ…αž–αŸαž›αžˆαžΆαž“αžŠαž›αŸ‹ 90% αž“αŸƒαž‘αŸ†αž αŸ†αžŠαŸ‚αž›αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αžŠαŸ„αž™ 5% αž“αŸƒαž”αžšαž·αž˜αžΆαžŽαŸ”

αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαž“αž…αŸ†αž“αž½αž“αž’αžαž·αž”αžšαž˜αžΆαž“αŸƒαž”αŸ’αž›αž»αž€αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM αŸ”

αž™αžΎαž„αž”αžΆαž“αžšαžΆαžšαžΆαŸ†αž„ LVM αž–αžΈαž€αžΆαžšαžŸαŸ’αžœαŸ‚αž„αžšαž€αž”αžšαž·αž˜αžΆαžŽ LVM (PV) αž“αŸ…αž›αžΎαŸ–

  • αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM (cdata)
  • αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αžŠαŸ„αž™αž”αŸ’αžšαžΎαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM αžŠαŸ„αž™αž†αŸ’αž›αž„αž€αžΆαžαŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ ( _αž€αžΌαžšαžΈαž€)αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžαŸ’αž›αž½αž“αž―αž„αž“αžΉαž„αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαŸ’αž€αŸαž“αžαžΆαž˜αžšαž™αŸˆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ (αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚ )
  • αž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž˜αžΆαž“αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM (cmeta)
  • αž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ VG αžŠαŸ‚αž›αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αžŒαžΈαžŸαž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αž αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αž…αž„αŸ‹αž±αŸ’αž™ LVM αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžšαž·αž˜αžΆαžŽαžŠαŸ‚αž›αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹ OS αž—αŸ’αž‰αŸ€αžœαž‘αŸαŸ”
  • αž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ VG αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžˆαŸ’αž˜αŸ„αŸ‡αŸ” αž“αŸ…αž‘αžΈαž“αŸαŸ‡αž™αžΎαž„αž“αžΉαž„αž˜αžΆαž“αž…αŸ’αž”αžΆαž”αŸ‹αž…αž˜αŸ’αž›αž„αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž“αŸƒαžšαžΌαž”αž—αžΆαž–αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαŸ”
  • αž§αž”αž€αžšαžŽαŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αžˆαŸ’αž˜αŸ„αŸ‡αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™ "gpv" (αž”αžšαž·αž˜αžΆαžŽαžšαžΆαž„αž€αžΆαž™αž—αŸ’αž‰αŸ€αžœ)

αž™αžΎαž„αž”αžΆαž“αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αŸ†αž“αž½αž™ DISCARD αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž“αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαž“αŸ…αž›αžΎ LVM VGαŸ” αžαŸ’αžšαžΌαžœβ€‹αž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αŸ” αžœαžΆαž“αžΉαž„αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž›αž»αž” LVs αž“αŸ…αž›αžΎ SSD αž…αŸ†αžŽαžΆαž™αž–αŸαž›αž…αŸ’αžšαžΎαž“αŸ” αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸαŸ‡αž’αž“αž»αžœαžαŸ’αžαž…αŸ†αž–αŸ„αŸ‡ SSD RAID 6αŸ” αž‘αŸ„αŸ‡αž‡αžΆαž™αŸ‰αžΆαž„αžŽαžΆαž€αŸαžŠαŸ„αž™ αž™αŸ„αž„αžαžΆαž˜αž•αŸ‚αž“αž€αžΆαžš αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαž€αžΆαžšαž•αŸ’αžαž›αŸ‹αžŸαŸ’αžαžΎαž„ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž“αžΉαž„αž˜αž·αž“αžšαžΆαžšαžΆαŸ†αž„αž™αžΎαž„αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡αŸ”

αžαŸ„αŸ‡αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αžšαžΌαž”αž—αžΆαž– initramfsαŸ–

#update-initramfs -u -k all

αžŠαŸ†αž‘αžΎαž„αž“αž·αž„αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ grub:

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

αžαžΎαžαžΆαžŸαž˜αž½αž™αžŽαžΆαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ?αž’αŸ’αž“αž€β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αž‚αŸ’αž“αžΆ sd*. αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαžαŸ‚αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž–αžΈαžŠαŸ’αžšαžΆαž™ SATA ឬ SSD αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ”

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž‚αŸαž”αž“αŸ’αžαŸ‚αž˜ os-prober..?αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž–αž―αž€αžšαžΆαž‡αŸ’αž™αž αž½αžŸαž αŸαžαž»αž“αž·αž„αžŠαŸƒαž›αŸαž„αŸ”

αžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎ RAIDs αžŽαžΆαž˜αž½αž™αžŸαŸ’αžαž·αžαž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžαžΌαž…αŸ” αžœαžΆαž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαŸ’αžœαŸ‚αž„αžšαž€αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αŸ…αž›αžΎαž—αžΆαž‚αžαžΆαžŸαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž›αžΎαž•αŸ’αž“αŸ‚αž€αžšαžΉαž„αž“αŸαŸ‡αŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžš αž’αŸ’αž“αž€αž’αžΆαž…αž‘αž»αž€αžœαžΆαž…αŸ„αž›αž”αžΆαž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αžšαžΌαžœαž…αž„αž…αžΆαŸ†αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαžΆαž„αž›αžΎαŸ” αžαŸ’αž‰αž»αŸ†β€‹αžŸαžΌαž˜β€‹αžŽαŸ‚αž“αžΆαŸ†β€‹αž±αŸ’αž™β€‹αžšαž€β€‹αž˜αžΎαž›β€‹αžšαžΌαž”αž˜αž“αŸ’αžβ€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž€αž˜αŸ’αž…αžΆαžαŸ‹β€‹αžŠαŸƒβ€‹αž˜αž·αž“β€‹αžŸαŸ’αž’αžΆαžβ€‹αžαžΆαž˜β€‹αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαŸ”

αž‡αžΆαž˜αž½αž™αž“αŸαŸ‡αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž…αž”αŸ‹αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžŠαŸ†αž”αžΌαž„αŸ” αžœαžΆαžŠαž›αŸ‹αž–αŸαž›αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžŠαŸ‚αž›αž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αžαŸ’αž˜αžΈαŸ” αž€αž»αŸ†αž—αŸ’αž›αŸαž…αž™αž€ Live CD/USB αžŠαŸ‚αž›αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αžΆαž“αŸ”

#exit
#reboot

αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸ SATA SSDs αžŽαžΆαž˜αž½αž™αž‡αžΆαž§αž”αž€αžšαžŽαŸαž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αŸ”

LVM αž“αŸ…αž›αžΎ SATA SSD

αž“αŸ…αž…αŸ†αžŽαž»αž…αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžαŸ’αž˜αžΈαžšαž½αž…αž αžΎαž™ αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž”αžŽαŸ’αžαžΆαž‰ apt αž”αžΎαž€αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αžŸαŸ’αžαžΆαž“αžΈαž™ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαŸ–

#sudo bash

αžŸαžΌαž˜αž”αž“αŸ’αžαŸ”

"αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜" αž’αžΆαžšαŸαž–αžΈ SATA SSDαŸ–

#blkdiscard /dev/md2

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ αžŸαžΆαž€αž›αŸ’αž”αž„αŸ–

#blkdiscard --step 65536 /dev/md2
αž”αž„αŸ’αž€αžΎαž LVM VG αž“αŸ…αž›αžΎ SATA SSDαŸ–

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

αž αŸαžαž»αž’αŸ’αžœαžΈ VG αž˜αž½αž™αž‘αŸ€αž..?αžαžΆαž˜αž–αž·αžαž™αžΎαž„αž˜αžΆαž“ VG αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ root αžšαž½αž…αž αžΎαž™αŸ” αž αŸαžαž»αž’αŸ’αžœαžΈαž˜αž·αž“αž”αž“αŸ’αžαŸ‚αž˜αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‘αŸ…αž€αŸ’αž“αž»αž„ VG αžαŸ‚αž˜αž½αž™?

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“ PV αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž€αŸ’αž“αž»αž„ VG αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™ VG αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž”αžΆαž“αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœ PV αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαžαŸ‚αž˜αžΆαž“αžœαžαŸ’αžαž˜αžΆαž“ (αž’αž“αž‘αžΆαž‰)αŸ” αž€αžšαžŽαžΈαž›αžΎαž€αž›αŸ‚αž„αž‚αžΊ LVM RAID αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαžΎαžŠαŸ„αž™αž…αŸαžαž“αžΆαŸ”

αž™αžΎαž„αž–αž·αžαž‡αžΆαž…αž„αŸ‹αž”αžΆαž“αžαžΆαž”αŸ’αžšαžŸαž·αž“αž”αžΎαž˜αžΆαž“αž€αžΆαžšαž”αžšαžΆαž‡αŸαž™ (αž’αžΆαž“αž€αžΆαžšαž”αžΆαžαŸ‹αž”αž„αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™) αž“αŸ…αž›αžΎαž’αžΆαžšαŸ RAID 6 αžŽαžΆαž˜αž½αž™αž“αŸ„αŸ‡ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž“αžΉαž„αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αž αžΎαž™αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž™αžΎαž„αž“αžΌαžœαž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαŸ”

αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž“αŸ…αž€αž˜αŸ’αžšαž·αžαžŠαŸ†αž”αžΌαž„αž“αŸƒαž€αžΆαžšαž’αžšαžΌαž”αžΈ αž™αžΎαž„αž“αžΉαž„αž‰αŸ‚αž€αž”αŸ’αžšαž—αŸαž‘αž“αŸƒ "αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αžŸαž–αŸ’αžœαž•αŸ’αžŸαžΆαž™" αžšαžΆαž„αž€αžΆαž™αž“αžΈαž˜αž½αž™αŸ—αž‘αŸ…αž‡αžΆ VG αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”

αž“αž·αž™αžΆαž™αžαžΆαž˜αž”αŸ‚αž”αžœαž·αž‘αŸ’αž™αžΆαžŸαžΆαžŸαŸ’αžαŸ’αžš ធអរេ RAID αž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹ "αžŠαŸ‚αž“αž—αžΆαž–αž‡αžΏαž‡αžΆαž€αŸ‹" αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αž’αŸ’αž“αž€αž˜αž·αž“αž‚αž½αžšαž”αž„αŸ’αž€αžΎαžαž…αŸ†αžŽαž»αž…αž’αž˜αŸ’αž˜αžαžΆαž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž€αžΆαžšαž”αžšαžΆαž‡αŸαž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž–αž½αž€αž‚αŸαžŠαŸ„αž™αž”αž‰αŸ’αž…αžΌαž›αž–αž½αž€αžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„ VG αžαŸ‚αž˜αž½αž™αž“αŸ„αŸ‡αž‘αŸαŸ”

αžœαžαŸ’αžαž˜αžΆαž“αžšαž”αžŸαŸ‹ LVM αž“αŸ…αž€αž˜αŸ’αžšαž·αž "Hardware" αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž€αžΆαžαŸ‹αž”αŸ†αžŽαŸ‚αž€αž“αŸƒ RAID arrays αž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαžαžΆαž˜αž’αŸ†αž–αžΎαž…αž·αžαŸ’αžαžŠαŸ„αž™αž•αŸ’αžŸαŸ†αžœαžΆαžαžΆαž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αŸ—αž‚αŸ’αž“αžΆαŸ” αž§αž‘αžΆαž αžšαžŽαŸ - αžšαžαŸ‹ αž€αŸ’αž“αž»αž„αž–αŸαž›αžαŸ‚αž˜αž½αž™αŸ” bcache + LVM αžŸαŸ’αžαžΎαž„ bcache + BTRFS αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM + LVM αžŸαŸ’αžαžΎαž„ αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ ZFS αžŸαŸ’αž˜αž»αž‚αŸ’αžšαžŸαŸ’αž˜αžΆαž‰αž‡αžΆαž˜αž½αž™αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž¬αž›αŸ’αž”αžΆαž™αž“αžšαž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αžœαžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ”

αž“αŸ…αž€αž˜αŸ’αžšαž·αž "Hardware" αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž”αŸ’αžšαžΎαž’αŸ’αžœαžΈαž•αŸ’αžŸαŸαž„αž€αŸ’αžšαŸ…αž–αžΈαž”αžšαž·αž˜αžΆαžŽ LVM "αž€αŸ’αžšαžΆαžŸαŸ‹" αž…αžΆαžŸαŸ‹αž›αŸ’αž’αž“αŸ„αŸ‡αž‘αŸαŸ” αž€αžΆαžšαž›αžΎαž€αž›αŸ‚αž„αž…αŸ†αž–αŸ„αŸ‡αž…αŸ’αž”αžΆαž”αŸ‹αž“αŸαŸ‡αž’αžΆαž…αž‡αžΆαž—αžΆαž‚αžαžΆαžŸαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ”

αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž˜αž€αžŠαž›αŸ‹αž–αŸαž›αž“αŸαŸ‡ αž’αŸ’αž“αž€αž’αžΆαž“αž‡αžΆαž…αŸ’αžšαžΎαž“αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžŠαžΎαž˜αžŸαž„αŸ’αžŸαŸαž™αž’αŸ’αžœαžΈαž˜αž½αž™αž’αŸ†αž–αžΈαžαž»αž€αŸ’αž€αžαžΆαžŸαŸ†αž”αž»αž€αŸ”

LVM αž“αŸ…αž›αžΎ SATA HDD

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

VG αžαŸ’αž˜αžΈαž‘αŸ€αžαž αžΎαž™..?αž™αžΎαž„αž–αž·αžαž‡αžΆαž…αž„αŸ‹αž”αžΆαž“αžαžΆ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαžšαŸαžŒαžΈαžŸαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžšαžΆαž‡αŸαž™ αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž”αž“αŸ’αžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž’αž˜αŸ’αž˜αžαžΆ αžαžŽαŸˆαž–αŸαž›αžŠαŸ‚αž›αžšαž€αŸ’αžŸαžΆαž€αžΆαžšαž…αžΌαž›αž”αŸ’αžšαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž˜αž·αž“αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αžŠαžΌαž…αž’αž˜αŸ’αž˜αžαžΆαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ€αžŸαžœαžΆαž„αž”αž‰αŸ’αž αžΆαž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αžŸαž€αž˜αŸ’αž˜ VG αž™αžΎαž„αž”αž„αŸ’αž€αžΎαž VG αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž LV αž“αŸ…αž›αžΎ NVMe RAID 1 αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαžœαžΆαž‡αžΆαž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αŸ”

#lvcreate -L 70871154688B --name cache root

αž αŸαžαž»αž’αŸ’αžœαžΈαž”αžΆαž“αž‡αžΆαž˜αžΆαž“αžαž·αž…αž˜αŸ’αž›αŸ‰αŸαŸ‡...?αž€αžΆαžšαž–αž·αžαž‚αžΊαžαžΆ NVMe SSDs αžšαž”αžŸαŸ‹αž™αžΎαž„αž€αŸαž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αž•αž„αžŠαŸ‚αžšαŸ” 4 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž“αŸƒ "αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒ" αž“αž·αž„ 18 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž“αŸƒαžαžΆαž˜αžœαž“αŸ’αžαžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαžŠαŸ‚αž›αž”αžΆαž“αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„ MLC 3 αž”αŸŠαžΈαžαŸ” αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸαŸ‡αž’αžŸαŸ‹αž αžΎαž™ NVMe SSDs αž“αžΉαž„αž˜αž·αž“αž›αžΏαž“αž‡αžΆαž„ SATA SSD αžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαŸ‚αž›αž˜αžΆαž“αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αžαžΆαž˜αž–αž·αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž αŸαžαž»αž•αž›αž“αŸαŸ‡ αžœαžΆαž˜αž·αž“αžŸαž˜αž αŸαžαž»αž•αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž—αžΆαž‚αžαžΆαžŸαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ LVM αž’αŸ†αž‡αžΆαž„αž‘αŸ†αž αŸ†αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ SLC αž“αŸƒαžŠαŸ’αžšαžΆαž™ NVMe αž–αžΈαžšαžŠαž„αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ’αžšαžΆαž™ NVMe αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎ αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ 32-64 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαŸ”

αž‘αŸ†αž αŸ†αž—αžΆαž‚αžαžΆαžŸαžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž‚αžΊαžαŸ’αžšαžΌαžœαž”αžΆαž“αž‘αžΆαž˜αž‘αžΆαžšαžŠαžΎαž˜αŸ’αž”αžΈαžšαŸ€αž”αž…αŸ† 64 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž“αŸƒαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαŸ”

αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ€αžαžαŸ’αž‰αž»αŸ†αž€αžαŸ‹αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαžΆαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αž·αž‘αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž€αžαŸ’αžœαž€αŸ‹ LVM αž“αžΉαž„αžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αžΆαŸ†αž„αž˜αžΌαž›αžαžΆαž€αžαŸ’αžœαž€αŸ‹αž αžΎαž™αž“αžΉαž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžœαžΆαž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž˜αŸ’αžαž„αž‘αŸ€αžαžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž› lvchange αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡ αžšαž αžΌαžαžŠαž›αŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰αž˜αŸ’αžαž„αž‘αŸ€αžαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†β€‹αžŸαžΌαž˜β€‹αžŽαŸ‚αž“αžΆαŸ†β€‹αž±αŸ’αž™β€‹αž”αž„αŸ’αž€αžΎαžβ€‹αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹β€‹αž‘αžΎαž„β€‹αžœαž·αž‰β€‹αž—αŸ’αž›αžΆαž˜αŸ—β€‹αžŠαŸ„αž™β€‹αž”αŸ’αžšαžΎβ€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”β€‹αžŠαŸ‚αž›β€‹αžŸαž˜αžšαž˜αŸ’αž™αŸ”

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž LV αž“αŸ…αž›αžΎ SATA RAID 6 αžŠαžΎαž˜αŸ’αž”αžΈαž”αŸ’αžšαžΎαžœαžΆαž‡αžΆαž§αž”αž€αžšαžŽαŸαž•αŸ’αž‘αž»αž€αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”

#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

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαž LV αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαžŠαŸ‚αž›αž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ”

#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 αžαŸ’αžšαž‘αž”αŸ‹αž‘αŸ…αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžœαž·αž‰αŸ”

αž€αžΆαžšαžŠαŸ†αž‘αžΎαž„ 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

αž‚αž»αžŽαž“αžΉαž„αž–αžΈαžš αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜ 4194304B αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆ LVM PV: 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 edge-aligned αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αžœαžΆβ€‹αž“αžΉαž„β€‹αž’αž“αž»αž‰αŸ’αž‰αžΆαžβ€‹αž±αŸ’αž™β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž€αžΆαžšβ€‹αž‘αžΆαŸ†αž„β€‹αžŸαŸ’αžšαž»αž„β€‹αžαžΆαž˜β€‹αžšαž™αŸˆβ€‹αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αžŠαŸ„αž™β€‹αžšαŸ†αž›αž„β€‹αž§αž”αž€αžšαžŽαŸβ€‹αž€αŸ’αž“αž»αž„β€‹αžƒαŸ’αž›αžΆαŸ†αž„β€‹αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ”

αžαŸ„αŸ‡αž•αŸ’αž›αžΆαžŸαŸ‹αž‘αžΈ 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 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αžšαžΆαž›αŸ‹αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαžšαžŸαŸαžšαž’αžΆαž…αžŸαŸŠαžΈαž’αž“αž’αžΆαž“ SSD αžŠαž›αŸ‹αž‘αŸ… 216 αž‡αžΈαž αŸ’αž‚αžΆαž”αŸƒαž–αžΈαž’αŸ’αž“αž€αŸ”

αž€αžΆαžšαž’αžΆαž“ αž“αž·αž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž›αžΆαž™αž‘αŸ†αž‚αŸ’αž“αžΆ?αž”αžΆαž‘αŸ” αžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαŸαžŸαŸ’αžαž’αžΆαž“ αž“αž·αž„αžŸαžšαžŸαŸαžšαžŠαŸ„αž™αž‘αŸ‚αž€αž–αžΈαž‚αŸ’αž“αžΆαŸ” αž›αžΎαžŸαž–αžΈαž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αžœαžΆαžŸαž˜αž αŸαžαž»αž•αž›αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž“αžΆαžαžΆαžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž€αžΆαžšαžŸαžšαžŸαŸαžšαžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž–αžΈαž˜αž»αž“αž˜αž·αž“αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž€αžΆαžšαž’αžΆαž“αž“αŸ„αŸ‡αž‘αŸαŸ”

αž›αž‘αŸ’αž’αž•αž›αž“αžΉαž„αž”αŸ’αžšαŸ‚αž”αŸ’αžšαž½αž›αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ†αž”αžΌαž„ αž“αž·αž„αž‡αžΆαž”αž“αŸ’αžαž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž”αžšαž·αž˜αžΆαžŽαžŸαŸ’αžαžΎαž„αž”αŸ†αž–αŸαž‰αž‘αžΎαž„ αž αžΎαž™αž€αŸαž’αžΆαžŸαŸ’αžšαŸαž™αž‘αŸ…αž›αžΎαžαžΆαžαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ†αž–αŸαž‰αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αž“αŸƒαž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž…αž»αž„αž€αŸ’αžšαŸ„αž™αŸ”

αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αžšαž”αžŸαŸ‹αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αžŽαŸ‚αž“αžΆαŸ†αž±αŸ’αž™αžœαžΆαžŸαŸ‹αž›αŸ’αž”αžΏαž“αž“αŸ…αž›αžΎαž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαŸ’αžαžΎαž„αž–αŸαž‰αž›αŸαž‰αžŠαŸ‚αž›αžšαžΌαž”αžαžαž‘αžΎαž”αžαŸ‚αžαžαŸ” αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž˜αžΆαž“αž±αž€αžΆαžŸαžŠαžΎαž˜αŸ’αž”αžΈαžŸαž„αŸ’αž€αŸαžαž˜αžΎαž›αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž€αžΆαžšαžŸαžšαžŸαŸαžšαž…αŸƒαžŠαž“αŸ’αž™αž”αž„αŸ’αž€αžΎαž“αž›αŸ’αž”αžΏαž“αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αžαžαžŠαŸ†αž”αžΌαž„ αž‡αžΆαž–αž·αžŸαŸαžŸαž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αž˜αž·αž“αž‘αžΆαž“αŸ‹αž–αŸαž‰αŸ” αžœαžΆαž€αžΎαžαž‘αžΎαž„αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαž…αž˜αŸ’αž›αž„αž›αžΎαž€αžΆαžšαžŸαžšαžŸαŸαžšαžŸαž˜αžΈαž€αžΆαžš αž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž”αŸ’αž›αž»αž€αž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αžŸαŸ’αžαžΎαž„ αž αžΎαž™αž€αžΆαžšαž–αž·αžαžŠαŸ‚αž›αžαžΆαž€αžΆαžšαžŸαžšαžŸαŸαžšαž…αŸƒαžŠαž“αŸ’αž™αž‘αŸ… RAID 6 αž”αŸ’αžšαŸ‚αž‘αŸ…αž‡αžΆαž€αžΆαžšαž’αžΆαž“αž…αŸƒαžŠαž“αŸ’αž™αž–αžΈ RAID 6 αž’αž˜αžŠαŸ„αž™αž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αŸ…αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αžΆαžšαž’αžΆαž“αž…αŸƒαžŠαž“αŸ’αž™αž–αžΈ RAID 6 αž‚αžΊαžšαž αžΌαžαžŠαž›αŸ‹ 6 αžŠαž„ (αž…αŸ†αž“αž½αž“ SATA SSDs αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαžšαŸ) αž›αžΏαž“αž‡αžΆαž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαŸ” αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž”αŸ’αž›αž»αž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ 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 αŸ”

αž›αŸαžαž€αžΌαžŠαž“αŸ…αž―αžŽαžΆ..αž‡αžΆαž’αž€αž»αžŸαž› αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž…αžΆαžαŸ‹αž‘αž»αž€αžαžΆαžαŸ’αž›αž½αž“αž‚αžΆαžαŸ‹αž˜αž·αž“αž˜αžΆαž“αž‡αŸ†αž“αžΆαž‰αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŸαŸ’αž‚αŸ’αžšαžΈαž” bash αž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαž‚αžΆαžαŸ‹αž”αž„αŸ’αžšαŸ€αž“αžαŸ’αž›αž½αž“αž―αž„ 100% αž“αž·αž„αž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž’αž—αž·αžœαžŒαŸ’αžαž“αŸαžŠαŸ‚αž›αž‡αŸ†αžšαž»αž‰αžŠαŸ„αž™ "google" αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž‚αžΆαžαŸ‹αž‡αžΏαžαžΆαž›αŸαžαž€αžΌαžŠαžŠαŸαž’αžΆαž€αŸ’αžšαž€αŸ‹αžŠαŸ‚αž›αž…αŸαž‰αž–αžΈαžŠαŸƒαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž˜αž·αž“αž‚αž½αžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž‘αžΎαž™αŸ” αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαž’αŸ’αž“αž€αž‡αŸ†αž“αžΆαž‰αž€αŸ’αž“αž»αž„αžœαž·αžŸαŸαž™αž“αŸαŸ‡αž“αžΉαž„αž’αžΆαž…αž–αžŽαŸŒαž“αžΆαžŠαŸ„αž™αž―αž€αžšαžΆαž‡αŸ’αž™αž“αžΌαžœαžαž€αŸ’αž€αžœαž·αž‡αŸ’αž‡αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž–αž·αž–αžŽαŸŒαž“αžΆαžαžΆαž„αž›αžΎ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž…αžΆαŸ†αž”αžΆαž…αŸ‹ αž αžΎαž™αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αžšαž…αž“αžΆαžœαžΆαž™αŸ‰αžΆαž„αžŸαŸ’αžšαžŸαŸ‹αžŸαŸ’αž’αžΆαžαž‡αžΆαžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαŸ”

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž”αž„αŸ’αžœαž·αž›αžšαžΌαž”αžαžαžŸαžΆαž˜αž‰αŸ’αž‰αž”αŸ‚αž”αž“αŸαŸ‡αž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž˜αžΆαž“αžšαžΌαž”αžαžαž˜αž½αž™αžŸαž“αŸ’αž›αžΉαž€αžŠαŸ‚αž›αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž™αŸ‰αžΆαž„αž–αŸαž‰αž›αŸαž‰αž“αŸ…αž›αžΎ SATA SSD αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž“αžΉαž„αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αžŠαŸ„αž™αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹ thin_delta αžŠαžΎαž˜αŸ’αž”αžΈαžšαž€αž˜αžΎαž›αžαžΆαžαžΎαž”αŸ’αž›αž»αž€αžŽαžΆαž˜αž½αž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžšαž”αžŸαŸ‹αžœαžΆ αž αžΎαž™αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αžœαžΎαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžΈαž™αž€αž˜αŸ’αž˜αž€αžΆαžšαžαžΌαž…αžαžΆαžαž“αŸ…αž›αžΎ αž”αžšαž·αž˜αžΆαžŽαžŸαŸ†αžαžΆαž“αŸ‹αŸ— αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαžŸαŸ’αžαžΆαžšαž‘αžΎαž„αžœαž·αž‰αž€αžΆαž“αŸ‹αžαŸ‚αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ”

TRIM/DISCARD αž€αŸ’αž“αž»αž„ libvirt/KVM

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž€αžΆαžšαž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹ KVM αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš libvirt αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž‡αžΆαž€αžΆαžšαž›αŸ’αž’αž€αŸ’αž“αž»αž„αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“ VMs αžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž™αž€αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž”αž„αŸ’αž€αžΎαž“αž“αžΌαžœαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αŸ€αžαž•αž„αŸ”

αž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αžαŸ’αžšαžΆαž”αŸ‹αžαžΆαž˜αž€αžΆαžšαž‚αžΆαŸ†αž‘αŸ’αžš TRIM/DISCARD αž“αŸ…αž›αžΎαžαžΆαžŸαž“αž·αž˜αŸ’αž˜αž·αžαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ’αžšαž—αŸαž‘αž§αž”αž€αžšαžŽαŸαž”αž‰αŸ’αž‡αžΆαž‘αŸ…αž‡αžΆ virtio-scsi αž αžΎαž™αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž› xml αŸ”

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

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

αž€αžΆαžšαž”αŸ„αŸ‡αž”αž„αŸ‹αž…αŸ„αž›αž”αŸ‚αž”αž“αŸαŸ‡αž–αžΈ OSes αž—αŸ’αž‰αŸ€αžœαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαžŠαŸ„αž™ LVM αž αžΎαž™αž”αŸ’αž›αž»αž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αž›αŸ‚αž„αž™αŸ‰αžΆαž„αžαŸ’αžšαžΉαž˜αžαŸ’αžšαžΌαžœαž‘αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„αžƒαŸ’αž›αžΆαŸ†αž„αžŸαž˜αŸ’αž„αžΆαžαŸ‹ αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžΆαž„αžŸαŸ’αžαžΎαž„αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αžœαžΆαž€αžΎαžαž‘αžΎαž„αž‡αžΆαž…αž˜αŸ’αž”αž„αž€αŸ’αž“αž»αž„αž›αž€αŸ’αžαžŽαŸˆαž–αž“αŸ’αž™αžΆαžšαž–αŸαž› αž“αŸ…αž–αŸαž›αž›αž»αž”αžšαžΌαž”αžαžαž”αž“αŸ’αž‘αžΆαž”αŸ‹αŸ”

αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€ BTRFS

αž”αŸ’αžšαžΎαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ‚αž›αžαŸ’αžšαŸ€αž˜αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž…αž‡αžΆαž˜αž½αž™ αžαŸ’αž›αžΆαŸ†αž„ αž€αžΆαžšαž”αŸ’αžšαž»αž„αž”αŸ’αžšαž™αŸαžαŸ’αž“αž“αž·αž„ αž“αŸ…αž€αŸ’αž“αž»αž„αž αžΆαž“αž·αž—αŸαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“. αž’αŸ’αž“αž€αž“αž·αž–αž“αŸ’αž’αžŸαžšαžŸαŸαžšαž€αžΌαžŠαž“αŸαŸ‡αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αž“αž·αž„αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαŸ’αž›αž½αž“αž‚αžΆαžαŸ‹αž•αŸ’αž‘αžΆαž›αŸ‹αŸ” αžαŸ’αž‰αž»αŸ†αž”αŸ’αžšαžΆαž€αžŠαžαžΆαž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž›αžΈαž“αž»αž…αžŠαŸ‚αž›αž˜αžΆαž“αž”αž‘αž–αž·αžŸαŸ„αž’αž“αŸαž‡αžΆαž…αŸ’αžšαžΎαž“αž˜αžΆαž“αž§αž”αž€αžšαžŽαŸαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆ αž αžΎαž™αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αž…αž˜αŸ’αž›αž„αž’αŸ’αž“αž€αž•αŸ’αžŸαŸαž„αž‘αŸαŸ”

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αžšαž·αžαžŸαŸ†αž‘αŸαž„αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ–

#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

αžαŸ„αŸ‡αž…αž˜αŸ’αž›αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

αž€αžΌαžŠ bash αž‚αž½αžšαž±αŸ’αž™αžαŸ’αž›αžΆαž…αž‡αžΆαž…αŸ’αžšαžΎαž“αŸ” αž”αŸ’αžšαžΎαžŠαŸ„αž™αž αžΆαž“αž·αž—αŸαž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαŸ’αž›αž½αž“αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž€αž»αŸ†β€‹αžŸαžšαžŸαŸαžšβ€‹αžŸαŸ†αž”αž»αžαŸ’αžšβ€‹αžαžΉαž„β€‹αž’αŸ’αž“αž€β€‹αž“αž·αž–αž“αŸ’αž’...#cat >/root/btrfs-backup/btrfs-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

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

function wait_lock()
{
flock 98
}

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

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

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

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

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

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

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

}

(
COMMAND="$1"
shift

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

EOF

αžαŸ‚αž˜αž‘αžΆαŸ†αž„αž’αŸ’αžœαžΎαž’αžΈαž‘αŸ€αž..?αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαžΆαž˜αž‰αŸ’αž‰αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαžšαžΌαž”αžαž BTRFS αž“αž·αž„αž…αž˜αŸ’αž›αž„αž–αž½αž€αžœαžΆαž‘αŸ… FS αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ BTRFS αž•αŸ’αž‰αžΎ / αž‘αž‘αž½αž›αŸ”

αž€αžΆαžšβ€‹αž”αžΆαž‰αŸ‹β€‹αž”αž„αŸ’αž αŸ„αŸ‡β€‹αž›αžΎαž€β€‹αžŠαŸ†αž”αžΌαž„β€‹αž’αžΆαž…β€‹αž˜αžΆαž“β€‹αžšαž™αŸˆβ€‹αž–αŸαž›β€‹αž™αžΌαžšβ€‹αž–αŸ’αžšαŸ„αŸ‡... αž“αŸ…αž–αŸαž›αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜ αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ” αž€αžΆαžšβ€‹αž”αžΆαž‰αŸ‹β€‹αž”αž„αŸ’αž αŸ„αŸ‡β€‹αž”αž“αŸ’αžαŸ‚αž˜β€‹αž‘αŸ€αžβ€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹αž›αŸ’αž”αžΏαž“β€‹αž›αžΏαž“β€‹αžŽαžΆαžŸαŸ‹β€‹αž–αŸ’αžšαŸ„αŸ‡β€‹... αž˜αžΆαž“αžαŸ‚αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αžŠαŸ‚αž›αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αž˜αŸ’αž›αž„αŸ”

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„ cronαŸ–

αž€αžΌαžŠ bash αž˜αž½αž™αž…αŸ†αž“αž½αž“αž‘αŸ€αžαŸ”#cat >/root/btrfs-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

αžαžΎβ€‹αžœαžΆβ€‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ..?αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžšαžΌαž”αžαžαž”αž“αŸ’αžαŸ‚αž˜αž“αŸƒαž”αžšαž·αž˜αžΆαžŽ BTRFS αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž“αŸ…αž›αžΎ FS αž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αžœαžΆαž›αž»αž”αžšαžΌαž”αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž€αžΆαž›αž–αžΈ 60 αžαŸ’αž„αŸƒαž˜αž»αž“αŸ” αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžšαžΌαž”αžαžαžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αž€αžΆαž›αž”αžšαž·αž…αŸ’αž†αŸαž‘αž“αŸƒαž—αžΆαž‚αžŠαŸ‚αž›αž”αžΆαž“αžšαžΆαž™αž”αž‰αŸ’αž‡αžΈαž“αžΉαž„αž”αž„αŸ’αž αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αžαžαžšαž„ /backup/btrfs/back/remote/ αŸ”

αžαŸ„αŸ‡αž•αŸ’αžαž›αŸ‹αžŸαž·αž‘αŸ’αž’αž·αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΌαžŠαŸ–

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

αžαŸ„αŸ‡αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαžΆαž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ cron:

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

αž€αžΆαžšαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€ LVM αžŸαŸ’αžαžΎαž„

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž’αžΆαž„αžŸαŸ’αžαžΎαž„αž˜αž½αž™αž“αŸ…αž›αžΎαž§αž”αž€αžšαžŽαŸαž”αž˜αŸ’αžšαž»αž„αž‘αž»αž€αŸ–

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

αžαŸ„αŸ‡αžŠαŸ†αž‘αžΎαž„ ddrescue αž–αŸ’αžšαŸ„αŸ‡... αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž“αžΉαž„αž”αŸ’αžšαžΎαž§αž”αž€αžšαžŽαŸαž“αŸαŸ‡αŸ–

#apt-get install gddrescue

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαžαžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

#mkdir /root/lvm-thin-backup

αžαŸ„αŸ‡αž…αž˜αŸ’αž›αž„αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

αž”αŸ‚αž€αž‰αžΎαžŸαž…αŸ’αžšαžΎαž“αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„...#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

export LVM_SUPPRESS_FD_WARNINGS=1

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

function wait_lock()
{
flock 98
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap

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

}

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

activate_volume $SYNC_VG $SYNC_PEND

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

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

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

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

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

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

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

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

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

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

echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"

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

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

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

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

}

(
COMMAND="$1"
shift

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

EOF

αžαžΎβ€‹αžœαžΆβ€‹αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ...?αž˜αžΆαž“αžŸαŸ†αžŽαž»αŸ†αž“αŸƒαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžšαŸ€αž”αž…αŸ†αžšαžΌαž”αžαžαžŸαŸ’αžαžΎαž„ αž“αž·αž„αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž—αžΆαž–αžαž»αžŸαž‚αŸ’αž“αžΆαžšαžœαžΆαž„αžšαžΌαž”αžαžαžŸαŸ’αžαžΎαž„αž–αžΈαžšαžŠαŸ‚αž›αž‘αž‘αž½αž›αž”αžΆαž“αžαžΆαž˜αžšαž™αŸˆ thin_delta αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž”αŸ’αž›αž»αž€αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαŸ„αž™αž”αŸ’αžšαžΎ ddrescue αž“αž·αž„ blkdiscard αŸ”

αžŸαŸ’αž‚αŸ’αžšαžΈαž”αž˜αž½αž™αž‘αŸ€αžαžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αžŠαžΆαž€αŸ‹αž€αŸ’αž“αž»αž„ cronαŸ–

αž”αž»αž€αž”αž“αŸ’αžαž·αž…αž‘αŸ€αžαŸ”#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

αžαŸ„αŸ‡αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžœαžΆαž αžΎαž™αžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ cron:

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

αž€αžΆαžšβ€‹αžŸαž˜αŸ’αž–αŸ„αž’β€‹αž›αžΎαž€β€‹αžŠαŸ†αž”αžΌαž„β€‹αž“αžΉαž„β€‹αž˜αžΆαž“β€‹αžšαž™αŸˆαž–αŸαž›β€‹αž™αžΌαžšβ€‹αž–αŸ’αžšαŸ„αŸ‡... αž”αžšαž·αž˜αžΆαžŽαžŸαŸ’αžαžΎαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž–αŸαž‰αž›αŸαž‰αžŠαŸ„αž™αž…αž˜αŸ’αž›αž„αž‘αŸ†αž αŸ†αžŠαŸ‚αž›αž”αžΆαž“αž”αŸ’αžšαžΎαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ” αžŸαžΌαž˜αž’αžšαž‚αž»αžŽαž…αŸ†αž–αŸ„αŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸαžαžΆαžŸαŸ’αžαžΎαž„αžšαž”αžŸαŸ‹ 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 αž’αžΆαž…αž‡αžΆαž”αžšαž·αž˜αžΆαžŽαžšαžΌαž”αžœαž“αŸ’αž LVM PV αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ VGs αž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ” LVM αž’αžΆαž…αž€αžΎαžαž‘αžΎαž„αžŠαžŠαŸ‚αž›αŸ— αžŠαžΌαž…αž‡αžΆαžαž»αž€αŸ’αž€αžαžΆαžŸαŸ†αž”αž»αž€αŸ” αž“αŸαŸ‡αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™ LVM αž˜αžΆαž“αž—αžΆαž–αž”αžαŸ‹αž”αŸ‚αž“αžαŸ’αž›αžΆαŸ†αž„αŸ”

PS

αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αž™αžΎαž„αž“αžΉαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αŸ’αžšαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž•αŸ’αž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αž…αž›αŸαžαžŸαŸ’αžšαžŠαŸ€αž„αž‚αŸ’αž“αžΆαž˜αž½αž™αž…αŸ†αž“αž½αž“/KVM αž‡αžΆαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αž„αŸ’αž€αžΎαžαž…αž„αŸ’αž€αŸ„αž˜αž€αž“αŸ’αž›αŸ‚αž„αž•αŸ’αž‘αž»αž€/vm αžŠαŸ‚αž›αž”αžΆαž“αž…αŸ‚αž€αž…αžΆαž™αžαžΆαž˜αž—αžΌαž˜αž·αžŸαžΆαžŸαŸ’αžšαŸ’αžαž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžαž‘αŸ…αž‘αŸ€αžαž“αŸ…αž›αžΎαž‘αŸ’αžœαžΈαž”αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ„αž™αž”αŸ’αžšαžΎαž€αž»αŸ†αž–αŸ’αž™αžΌαž‘αŸαžšαž›αžΎαžαž»αž•αŸ’αž‘αŸ‡ αž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž“αŸ…αž•αŸ’αž‘αŸ‡ αž“αž·αž„αž”αžŽαŸ’αžαžΆαž‰ P2P αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹