แแแ แแ แแฆแ.
แแกแฃแ แก แกแแแแแแแแแแแก แแแแฃแแแแ แ แฉแแแ แแ แแฅแขแแแฃแแ แแแแแชแแแแแแ KVM-แกแแแแก แแแแแชแแแแ แจแแแแฎแแแก แกแแกแขแแแแก แจแแฅแแแแก แจแแกแแฎแแ md RAID + LVM แแแแแงแแแแแแ.
แแ แแแ แแแ แแแแชแแแก:
- Build md RAID 1 NVMe SSD-แแแ.
- md RAID 6-แแก แแฌแงแแแ SATA SSD-แแแ แแ แฉแแแฃแแแแ แแแ แแแกแแแแแแแ.
- TRIM/DISCARD แแแแ แแชแแแก แแแฎแแกแแแแแแแแแ SSD RAID 1/6-แแ.
- แฉแแแขแแแ แแแแ md RAID 1/6 แแแกแแแแก แจแแฅแแแ แแแกแแแแแก แกแแแ แแ แแแแแแแฅแขแแ.
- แกแแกแขแแแแก แแแกแขแแแแชแแ NVMe RAID 1-แแ, แ แแแแกแแช BIOS-แจแ แแ แแ แแก NVMe แแฎแแ แแแญแแ แ.
- LVM แฅแแจแแก แแแแแงแแแแแ แแ LVM แแฎแแแ.
- แแแแแแงแแแแ BTRFS แกแแแแจแแขแแแ แแ แแแแแแแแแ/แแแแฆแแ แกแแ แแแแ แแ แแกแแแกแแแแก.
- LVM แแฎแแแ แกแแแแจแแขแแแแก แแ thin_delta-แก แแแแแงแแแแแ BTRFS แกแขแแแแก แกแแ แแแแ แแ แแกแแแกแแแแก.
แแฃ แแแแแขแแ แแกแแแ, แแแฎแแ แแแขแ.
แแแแชแฎแแแแแ
แแแขแแ แ แแ แแแแแก แแแกแฃแฎแก แแ แกแขแแขแแแแแ แแแกแแแแแแก/แแแแแแแแแแแก/แแแแแแแก/แ แฉแแแแแแก/แแแแแชแแแแแแก แแแแแงแแแแแแก แแ แแแแแฃแงแแแแแแแแแก แจแแแแแแแแ. แแ แแแกแแแแก แแแแแกแแแแ แ แกแแฎแแ แฌแแแแแฎแแแ แแ แแแแแงแแแแแแ, แแฅแแแ แแฆแแแ แแแกแฃแฎแแกแแแแแแแแแก แแ แฅแแแแแแแแแก แงแแแแ แจแแแแแแแแ. แจแแกแแซแแ แจแแแแแแแ แแแแชแแแก:
- แจแแแฌแแแ แ NVMe SSD-แแแ.
- แแแแแแแแ แแแแแงแแแแแฃแแ แฉแแฌแแ แแก แ แแกแฃแ แกแ แแ SSD แแแกแแแแแก แฌแแ แฃแแแขแแแแแแ.
- แงแแแแ แแแแแชแแแแก แกแ แฃแแ แแแแแ แแแ แงแแแแ แแแกแแแ, แกแแ แแแแ แแ แแกแแแแแก แฉแแแแแแ.
- แแแฃแแแ แแแแ แแแแแแฃแขแแ แฃแแ แขแแฅแแแแ.
- แแแแแ แแฃแแ แแ แ, แแแ แแแแ แแ แคแฃแแ.
- แแแแแกแแแแ แ แกแฎแแ แจแแแแแ, แ แแแแแแช แแ แแ แแก แฉแแแแแแแแแ แแแแแ.
แ แแแแแก
แฎแแแแแกแแฌแแแแแ แแงแ:
แแแแแแแแขแ แแแแฎแแแแแแ 2013 แฌแแแแแ Z87 แฉแแแกแแขแแ, แแแกแ แฃแแแแฃแแแ Intel Core i7 / Haswell-แแ.
- แแ แแชแแกแแ แ 4 แแแ แแแ, 8 แซแแคแ
- 32 GB DDR3 แแแแ แแขแแฃแแ แแแฎแกแแแ แแแ
- 1 x 16 แแ 2 x 8 PCIe 3.0
- 1 x 4 + 1 x 1 PCIe 2.0
- 6 x 6 GBps SATA 3 แแแแแฅแขแแ แแแ
SAS แแแแแขแแ แ LSI SAS9211-8I แแแชแแแชแแแ IT / HBA แ แแแแแจแ. RAID-แแ แฉแแ แแฃแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแแแแ แแฎ แจแแแชแแแแ HBA แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแ, แ แแแ:
- แแฅแแแ แจแแแแซแแแแ แแแแแกแแแแ แแ แแก แแแแแแแแแ แแก แแแแแขแแ แ แแ แจแแชแแแแแ แแแ แแแแแกแแแแ แ แกแฎแแ แแแแแขแแ แแ, แ แแแแแแช แจแแแฎแแแแแแ.
- TRIM/Discard แฉแแแฃแแแแ แแ แแฃแจแแแแแ แแแกแแแแแ, แ แแแแแ... RAID firmware-แจแ แแก แแ แซแแแแแแแ แกแแแ แแแ แแ แแ แแก แแฎแแ แแแญแแ แแแ แแ HBA-แก, แแแแแแแ, แแ แแแแขแแ แแกแแแก แ แ แแ แซแแแแแแแ แแแแแแชแแแ แแแขแแแฃแกแก.
แแงแแ แ แแแกแแแแ - 8 แชแแแ HGST Travelstar 7K1000 1 แขแ แขแแแแแแแแ 2.5 แคแแ แแแขแจแ, แ แแช แจแแแฎแแแ แแแแขแแแแแก. แแก แแแกแแแแ แแแ แ แแงแ RAID 6 แแแกแแแจแ. แแแ แแกแแแ แแฅแแแแแ แแแแแงแแแแแ แแฎแแ แกแแกแขแแแแจแ. แแแแแแแแ แแแ แกแแ แแแแ แแ แแกแแแแแก แจแแกแแแแฎแแ.
แแแแแขแแแแ แแแแแขแแแฃแแแ:
6 แชแแแ SATA SSD แแแแแแ Samsung 860 QVO 2TB. แแก SSD-แแแ แแแแแฎแแแแแแ แแแ แแแชแฃแแแแแก, แกแแกแฃแ แแแแ แแงแ SLC แฅแแจแแก แแ แกแแแแแ, แกแแแแแแแแแ แแ แแแแแแ แคแแกแ. แกแแญแแ แ แแงแ แแแฃแฅแแแแแก/แแฃแแแก แแฎแแ แแแญแแ แ, แ แแแแแแช แแแฌแแแแแ dmesg-แแก แฎแแแแ:
kernel: ata1.00: Enabling discard_zeroes_data
2 แชแแแ NVMe SSD แแแแแแ Samsung SSD 970 EVO 500GB.
แแ SSD-แแแแกแแแแก แแแแจแแแแแแแแแแ แฌแแแแแฎแแแก/แฉแแฌแแ แแก แจแแแแฎแแแแแแ แกแแฉแฅแแ แ แแ แ แแกแฃแ แกแแก แแแชแฃแแแแ แแฅแแแแ แกแแญแแ แแแแแกแแแแก. แ แแแแแขแแ แ แแแแแแแก. แแฃแชแแแแแแแ. แแแกแแแฃแขแฃแ แแ. แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แจแแฌแแแ แแกแแแ RAID-แแก แแแ แแแแ แกแแแฅแ แแแแแแชแแแก แแ แแก, แกแแแแ แแ แแแฎแแแแ แฎแ แแจแฃแแ.
StarTech PEX8M2E2 แแแแแขแแ แ 2 x NVMe SSD-แกแแแแก แแแแแกแขแแแแ แแแฃแแ PCIe 3.0 8x แกแแแขแจแ. แแก, แแกแแ แแ แแกแแ, แแ แแก แแฎแแแแ HBA, แแแแ แแ NVMe-แกแแแแก. แแก แแแแกแฎแแแแแแแ แแแคแ แแแแแขแแ แแแแกแแแ แแแแ, แ แแ แแ แกแแญแแ แแแแก PCIe แแแคแฃแ แแแชแแแก แแฎแแ แแแญแแ แแก แแแแแแแแขแแกแแแ, แฉแแจแแแแแฃแแ PCIe แแแแแแ แแแแแแก แแ แกแแแแแแก แแแแ. แแก แแแฃแจแแแแแก แฃแซแแแแแก แกแแกแขแแแแจแแช แแ PCIe-แแ, แแฃแแแแช แแก แแงแแก x1 PCIe 1.0 แกแแแขแ. แแฃแแแแ แแแแ, แจแแกแแแแแแกแ แกแแฉแฅแแ แแ. แแฅ แแ แแ แแก RAID-แแแ. แแแ แขแแ แแ แแ แแก แฉแแจแแแแแฃแแ BIOS. แแกแ แ แแ, แแฅแแแแ แกแแกแขแแแ แฏแแแแกแแฃแ แแ แแ แแกแฌแแแแแก NVMe-แแ แฉแแขแแแ แแแแก, แแแ แฃแแแขแแก, แ แแ NVMe RAID แแ แแแฌแงแแแแแแแแก แฌแงแแแแแแ.
แแก แแแแแแแแแขแ แแแแแแ แแแแแฃแแ แแงแ แแฎแแแแ แแ แแ แฃแคแแกแ 8x PCIe 3.0 แกแแกแขแแแแจแ แแ แกแแแแแแ แแ, แแฃ แแ แแก 2 แฃแคแแกแ แกแแแขแ, แแแกแ แแแ แขแแแแ แจแแชแแแ แจแแกแแซแแแแแแแ แแ แ แแแแ PEX4M2E1-แแ แแ แแแแแแแแแแ, แ แแแแแแ แงแแแแ แจแแกแแซแแแแแแแ แกแแแแ 600 แคแแกแแ. แ แฃแแแ.
แงแแแแ แกแแฎแแก แขแแฅแแแแแก แแ แฉแแจแแแแแฃแแ แฉแแแกแแขแแก/BIOS RAID-แแก แฃแแ แงแแคแ แแแแแ แแฎ แแแแแแแ, แ แแแ แจแแกแแซแแแแแแ แงแแคแแแแงแ แแแแแ แกแแกแขแแแแก แแแแแแแแ แฉแแแแชแแแแแ, แแแ แแ แแแแแ SSD/HDD-แแกแ, แงแแแแ แแแแแชแแแแก แจแแแแ แฉแฃแแแแแ. แแแแแแฃแ แจแแแแฎแแแแแจแ, แ แแแ แแแแแกแขแแแแ แแแฃแแ แแแแ แแชแแฃแแ แกแแกแขแแแแช แแ แจแแแแแฎแแ แกแ แฃแแแแ แแฎแแ/แแแแกแฎแแแแแแฃแ แแแแ แแขแแ แแแแแกแแแแกแแก. แแแแแแ แ แแก แแ แแก, แ แแ แแ แกแแแแแก SATA แแ PCIe แแแ แขแแแ. แแก แแ แแก แชแแชแฎแแแ CD แแ แฉแแแขแแแ แแแแ แคแแแจ แแ แแแแ, แแฎแแแแ แซแแแแแ แกแฌแ แแคแ แแ แชแแขแ แแแชแฃแแแแแแ.
แแฃแแแ แแฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ, แแฅแแแ แแชแแ, แ แ แฎแแแแ - แแแแฏแแ แกแแกแฌแ แแคแแ แแญแแ แแแแแ แแแ แฌแแแฆแแ แแแแแ แแแกแแแ, แ แแ แฌแแแฆแแ. แแแแ แแ แแ แแแแแ แแแแแชแแแแแแก แแแแแ แแแ. แแแแกแแแแแก แงแแแแ แแฆแแแจแแฃแแ แแแแแ แแแฎแแ แฎแแแฃแแแ แแ แแก แแแแแแแแแฃแแ แกแแแแแแแแ แกแขแแแแแ แขแฃแแ แแแ แแฃแกแแก 5.25 แแแแจแ.
แแแ แแแ, แแ, แ แ แแฅแแ แฃแแแ, Linux-แจแ SSD แฅแแจแแ แแแแก แกแฎแแแแแกแฎแแ แแแแแแแแแก แแฅแกแแแ แแแแแขแแแแกแแแแก.
แขแแฅแแแแแก แ แแแแแแ แแแกแแฌแงแแแแ. แฉแแ แแแ แแแ. แแ แแฃแจแแแแก แแ แแ แ. แแ mdadm-แแแ แแ แแแ แงแแแแแแแแก แแ แแก แแแ แแแแขแแแ.
แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ
แแแ แ, Debian 8 Jessie แแแแแกแขแแแแ แแแฃแแ แแงแ แแแแ แแขแฃแ แแแ, แ แแแแแแช แแฎแแแกแแ EOL-แแแ. RAID 6 แแฌแงแแแแแ แแงแ แแแแแ แแฆแแแจแแฃแแ HDD-แแแแแแ, แแแฌแงแแแแแแฃแแ LVM-แแ. แแก แแฃแจแแแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแแ kvm/libvirt-แจแ.
แแแแขแแ แ แแ แแแขแแ แก แแฅแแก แจแแกแแแแแแกแ แแแแแชแแแแแแ แแแ แขแแขแฃแแ แฉแแแขแแแ แแแแ SATA/NVMe แคแแแจ แแ แแแแแแแก แจแแฅแแแแก แกแแฅแแแจแ แแ แแกแแแ, แแแแกแแแแแก, แ แแ แแ แแแแ แฆแแแก แฉแแแฃแแ แจแแกแแคแแ แแกแ แจแแแแแแ, แกแแแแแแ แกแแกแขแแแแ แแแ แฉแแแก Ubuntu 18.04, แ แแแแแแช แฃแแแ แกแแแแแ แแกแแ แกแขแแแแแแแแ แแแฃแแแ, แแแแ แแ แฏแแ แแแแแ แแฅแแก 3 แฌแแแ. แแฎแแ แแแญแแ แ แแแแแแแแจแ.
แแฆแแแจแแฃแแ แกแแกแขแแแ แจแแแชแแแก แงแแแแ แขแแฅแแแแแก แแ แแแแแ แก, แ แแแแแแช แฉแแแ แแแญแแ แแแแ out of box. แฉแแแ แแ แแแญแแ แแแแ แแแกแแแ แแฎแแ แแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแ แแ แแแแแ แแแ.
แแแกแขแแแแชแแแกแแแแก แแแแแแแแ
แกแแกแขแแแแก แแแกแแงแแแแแแแ แแแญแแ แแแแ Ubuntu Desktop Image. แกแแ แแแ แแก แกแแกแขแแแแก แแฅแแก แแ แแแแแ แ แแแแ แแแฃแแ แแแกแขแแแแ แ, แ แแแแแแช แแฉแแแแแแก แแแแแแข แแแแแฃแแแแแแแแแแก, แ แแแแแก แแแแแ แแแ แจแแฃแซแแแแแแแ UEFI แกแแกแขแแแแก แแแแแงแแคแแก แแ แ-แแ แ แแแกแแแ แแแแแขแแแแ, แ แแช แแคแฃแญแแแก แแแแ แกแแแแแแแแก. แจแแกแแแแแแกแแ, แแก แแแแแกแขแแแแ แแแฃแแแ แแฎแแแแ UEFI แ แแแแแจแ. แแ แแแแแแแแแแก แ แแแแ แแแ แแแแขแก.
แฉแแแ แแ แแแ แ แแแแงแแคแแแ แแแแ.
แ แแขแแ?แกแแแฌแฃแฎแแ แแ, UEFI แฉแแขแแแ แแแ แฃแแแแฃแ แแกแแ แชแฃแแแ แแแแกแแแแแแ แฉแแขแแแ แแแแก แแ แแแ แแแฃแ RAID-แแแ, แ แแแแแ... แแ แแแแ แแแแแแแแแแก แแแฏแแแจแแแก UEFI ESP แแแแแงแแคแแกแแแแก. แแแขแแ แแแขแจแ แแ แแก แ แแชแแแขแแแ, แ แแแแแแแช แแแแแแแแแแแ ESP แแแแแงแแคแแก แคแแแจ แแ แแแแแ USB แแแ แขแแก แแแแแแแกแแแแก, แแแแ แแ แแก แแ แแก แฌแแ แฃแแแขแแแแแแแก แฌแแ แขแแแ. แแ แกแแแแแก แ แแชแแแขแแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก mdadm RAID 1-แแก แแแแแงแแแแแแ แแแขแแแแแแชแแแแแแก 0.9 แแแ แกแแแ, แ แแแแแแแช แฎแแแก แแ แฃแจแแแก UEFI BIOS-แก แแ แแแแแงแแคแแก แแแฎแแแจแ, แแแแ แแ แแก แแ แซแแแแแแ แแ แแแแแแแ แแแแแแขแแแแ, แ แแแแกแแช BIOS แแ แกแฎแแ แแแแ แแขแฃแ แแก OS แฌแแ แก แ แแฆแแชแแก ESP-แแ แแ แแแแฌแงแแแแ แแแก แกแแแฅแ แแแแแแชแแแก แกแฎแแแกแแแ. แกแแ แแแแแ.
แแแ แแ แแแแกแ, UEFI แฉแแขแแแ แแแ แแแแแแแแแแฃแแแ NVRAM-แแ, แ แแแแแแช แแ แแแแแแ แแแกแแแแแแ แแ แแแ แแฎแแ แกแแกแขแแแแจแ, แ แแแแแ แแ แแก แแแแแแแแขแแก แแแฌแแแ.
แแกแ แ แแ, แฉแแแ แแ แแแแแแแแแแแแ แแฎแแ แแแ แแแแก. แฉแแแ แฃแแแ แแแแฅแแก แแแ, แแ แแจแ แแแแแชแแแแ แแแแฃแแก แแแแแกแแแแแ, แ แแแแแกแแช แแฎแแ Legacy/BIOS-แแก แฉแแฅแแ แฐแฅแแแ, แ แแแแแกแแช UEFI-แแแ แแแแกแแแแแ แกแแกแขแแแแแแ CSM แแแแงแ แกแแฎแแแ แแฅแแก. แฉแแแ แฃแแ แแแแ แแแแแแฆแแแ แแแ แแแแ, แจแแแแแแแก, แกแแแฃแ แแแแแก แแแแขแฃแแแแแ แแ แแแกแขแแแแ แฅแกแแแแแแ แแแแฌแแแแแ.
Ubuntu-แก แแแกแแขแแแแก แแแ แกแแ แแกแแแ แแ แจแแแซแแแแ แกแฌแแ แแ แแแแแกแขแแแแ แแแก Legacy bootloader-แแ, แแแแ แแ แแฅ, แ แแแแ แช แแแแแแแ, แแแแแช แแ แแก แแแ แแแแขแแแ.
แแกแ แ แแ, แฉแแแ แแแแ แแแแแ แแแแ แแขแฃแ แแก แแ แแขแแแ แแแแ แกแแกแขแแแแก Ubuntu Live แฉแแแขแแแ แแแแ แคแแแจ แแ แแแแแแแ. แฉแแแ แแแแแญแแ แแแแ แแแแแขแแแแก แฉแแแแขแแแ แแแ, แแแแขแแ แฉแแแ แแแแแงแแแแแ แแฅแแแแแแแก แแแ แแแแฃแ แฅแกแแแก. แแฃ แแก แแ แแฃแจแแแแก, แจแแแแซแแแแ แฌแแแแกแฌแแ แฉแแขแแแ แแแ แกแแญแแ แ แแแแแขแแแ แคแแแจ แแแกแแแ.
แฉแแแ แจแแแแแแแ แ Desktop แแแ แแแแจแ, แแแแฃแจแแแ แขแแ แแแแแแแก แแแฃแแแขแแ แ แแ แแแแแแแแ แ:
#sudo bash
แฒ แแแแ โฆ?แแแแแ แแแชแแแฃแแ แกแขแ แแฅแแแ แแ แแก แแแแแแแแฃแ แ แแแแแแฌแแแแ แฐแแแแแแ แแแแกแแแแก แกแฃแแแก แจแแกแแฎแแ. C แะพแฃแคแ แ แแแแ แจแแกแแซแแแแแแแแแ แแแแแก แแะพแฃแคแ แ แแแแ แแแกแฃแฎแแกแแแแแแแแ. แกแแแแแฎแแแแ, แจแแแแซแแแ แแฃ แแ แ แกแแแฃแแแ แแแแแ แแฆแแแ. แแแแ แ แคแแฅแ แแแก, แ แแ แกแฃแแแก แแ แแแแ แแแแแงแแแแแ แแแแแช แแ แแ แแก แคแ แแฎแแแแ. แแฃแแชแ:
#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 แแแแแงแแแแแฃแแ แแฅแแแแ แแฎแแแแ แกแแกแขแแแแก แกแแแแจแแขแแแแก แจแแกแแฅแแแแแแ แแแกแ แแแแแ แแแแก แแแ แแจแ แแ แจแแแแแ แแแแแแขแแแแก แแก แแแแ แแแ แกแแ แแแแ แแ แแแกแแแ แแแแแแแแแก/แแแฆแแแแก แแแแแงแแแแแแ.
แแแ แแ แแแแกแ, แแแขแแ แก แแแแแแแ แแแฏแแแแแแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแแแแฃแแ แฃแจแฃแแแแ แแแแ แแขแฃแ แแแ แแแ แฉแแแ แแ แงแแแแ แกแฎแแ แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแแก แแแจแแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแจแ แแกแแแ แ แแฆแแชแแแแแก แแแแแงแแแแแแ, แ แแแแ แแชแแ GPU แแ PCI-USB แแแกแแแแซแแแ แแแแขแ แแแแ แแแแก แแแแแแแแแแ KVM-แแ IOMMU-แแก แกแแจแฃแแแแแแ.
แแ แแแแแ แแ แ แแช แแแ แฉแ แแแแ แแขแฃแ แแแ แแ แแก แแแแแชแแแแ แจแแแแฎแแ, แแแ แขแฃแแแแแแชแแ แแ แกแแ แแแแ แแ แแกแแ.
แแฃ แฃแคแ แ แแแขแแ แแแแแแแ ZFS-แก, แแแจแแ, แแ แแแชแแแจแ, แแแแแแแแฃแแ แแแแแแแชแแแกแแแแก แแกแแแ แฃแ แแแแ แแจแแแชแแแแแแ แแ แแแ.
แแฃแแชแ, แแแขแแ แ แแแแแ แแฎ แฃแแฃแแแแแแงแแคแก แฉแแจแแแแแฃแ แกแแ แแแกแแแฃแ /RAID แแ แญแแ แแ แคแฃแแฅแชแแแแก, แ แแแแแแแช แแแแฉแแแแ ZFS, BRTFS แแ LVM.
แ แแแแ แช แแแแแขแแแแแ แแ แแฃแแแแขแ, BTRFS-แก แแฅแแก แจแแกแแซแแแแแแแ แแแแแแฅแชแแแก แจแแแแฎแแแแแแ แฉแแแแฌแแ แแแ แแแแแแแแแแ แฃแ แฉแแแแฌแแ แแแแ, แ แแช แฃแแแแฃแ แแกแแ แแแแแแแแแ แแแฅแแแแแแก HDD-แแ แกแแแแจแแขแแแแก/แกแแ แแแแ แแ แแกแแแแแก แกแแแฅแ แแแแแแชแแแก แกแแฉแฅแแ แแแ.
แแแแแ แฎแแแแฎแแ แแแแแแฎแแแแ แงแแแแ แแแฌแงแแแแแแแแก:
#udevadm control --reload-rules && udevadm trigger
แแแแแ, แแแแแแแฎแแแแ แแแ แจแแแ:
#lsscsi && nvme list
[0:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sda
[1:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdb
[2:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdc
[3:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdd
[4:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sde
[5:0:0:0] disk ATA Samsung SSD 860 2B6Q /dev/sdf
[6:0:0:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdg
[6:0:1:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdh
[6:0:2:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdi
[6:0:3:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdj
[6:0:4:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdk
[6:0:5:0] disk ATA HGST HTS721010A9 A3B0 /dev/sdl
[6:0:6:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdm
[6:0:7:0] disk ATA HGST HTS721010A9 A3J0 /dev/sdn
Node SN Model Namespace Usage Format FW Rev
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/dev/nvme0n1 S466NXXXXXXX15L Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7
/dev/nvme1n1 S5H7NXXXXXXX48N Samsung SSD 970 EVO 500GB 1 0,00 GB / 500,11 GB 512 B + 0 B 2B2QEXE7
แแแกแแแก แแแแแแแแแ
NVMe SSD
แแแแ แแ แฉแแแ แแ แแแแแ แแ แแ แแฆแแแแจแแแแ แแแ. แแ แแ แแ แแแแแ, แฉแแแแ BIOS แแแ แฎแแแแแก แแ แแแกแแแแก. แแกแ แ แแ, แแกแแแ แแแแแแแแ แแแแแแแแ แแ แแแ แแแฃแ RAID-แแ. แฉแแแ แแฅ แกแแฅแชแแแแกแแช แแ แจแแแฅแแแแ. แแฃ แแกแฃแ แ แแแแชแแแก โแแแแแแโ แแ โแซแแ แแแแแแโ, แจแแฅแแแแแ แแ แแ แแแแ แแแแแงแแคแ, แ แแแแ แแชแแ HDD.
SATA แแงแแ แ แแแกแแ
แแ แแ แแก แกแแญแแ แ แแฅ แ แแแแ แแแแกแแแฃแแ แแแฃแแแก แแแแแแแแแแ. แฉแแแ แจแแแฅแแแแ แแ แ แแแแงแแคแแแแแแก แงแแแแแคแ แแกแแแแก. แฉแแแ แจแแแฅแแแแ แแแแแงแแคแก, แ แแแแแ 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 แขแ แแแแแก. แแก แแ แแก MBR-แกแแแแก แแแกแแฆแแแ แแแแแแแแแแก แคแแ แแแแแจแ, แ แแกแแช แฉแแแ แแแแแแแงแแแแแ. แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแแซแแแแ แจแแแชแแแแแก GPT-แแ. GPT แแแกแแแแก แแฅแแ แแแแกแแแแแแแแก แจแ แ, แ แแแแแแช แกแแจแฃแแแแแแก แแซแแแแก MBR-แแแ แแแแกแแแแ แกแแกแขแแแแแก แแแฎแแ แแแ แแแแ 4 แแแแแงแแคแ, แแฃ แแกแแแ แแแแแแแแแฃแแแ แแแ แแแ 2 แขแแ แแแแแขแจแ. แแแแแแ แแ, แ แแ แแ แแแกแแแแแ boot partition แแ bios_grub แแแแแงแแคแแแ แฃแแแ แแงแแก แแแกแแฌแงแแกแจแ. แแก แกแแจแฃแแแแแแก แแแซแแแแ แฉแแขแแแ แแแ GPT Legacy/BIOS แแแกแแแแแแแ.
แแแแ แแ แแก แแ แแ แแก แฉแแแแ แกแแฅแแ.
แแฅ แฉแแแ แจแแแฅแแแแ แแ แแแแงแแคแแแแแแก. แแแ แแแแ แแฅแแแแ 1 GB แแแแแก แแ แแแแแงแแแแแฃแแ แแฅแแแแ RAID 1/boot-แแกแแแแก.
แแแแ แ แแแแแงแแแแแฃแแ แแฅแแแแ RAID 6-แแกแแแแก แแ แแแแแแแแแก แแแแ แแแ แฉแแแแ แแแแแกแฃแคแแ แแแแแแก, แแแ แแ แแแกแแแก แแแแแก แแชแแ แ แแแแแฃแงแแแแแแแ แแแแแแแกแ.
แ แ แแ แแก แแก แแแฃแกแแฎแแแแแแแ แขแแ แแขแแ แแ?แฅแกแแแจแ แแ แกแแแฃแแ แฌแงแแ แแแแแก แแแแแฎแแแ, แฉแแแแก SATA SSD-แแแก แแฅแแ แแแแแแแฃแ แแ แแแคแแ แแแแแแแ SLC แฅแแจแ, แ แแแแแก แแแแแแแ 6-แแแ 78 แแแแแแแแขแแแแ. แฉแแแ แแแฆแแแ 6 แแแแแแแแขแก "แฃแคแแกแแ" แแแกแแแก แแแแแชแแแแ แคแฃแ แชแแแจแ "แแแแแแแแขแกแ" แแ "แแแแแแแแขแก" แจแแ แแก แกแฎแแแแแแก แแแแ. แแแ แฉแแแแแ 72 แแแแแแแแขแ แแแแแฃแงแแแแแแแ แกแแแ แชแแแแ แแ แแก แแแแแงแแคแแแ.
แแฅแแ แฃแแแ แแฆแแแแจแแแก, แ แแ แแแแฅแแก SLC แฅแแจแ, แฎแแแ แกแแแ แชแ 4 แแแขแแแแ MLC แ แแแแแจแแ แแแแแแแแฃแแ. แ แแช แฉแแแแแแแก แแคแแฅแขแฃแ แแ แแแจแแแแก, แ แแ แงแแแแแ 4 แแแแแแแแขแ แแแแแกแฃแคแแ แกแแแ แชแแจแ แฉแแแ แแแแแฆแแแ แแฎแแแแ 1 แแแแแแแแข SLC แฅแแจแก.
แแแแแ แแแแแ 72 แแแแแแแแขแ 4-แแ แแ แแแแฆแแ 288 แแแแแแแแขแ. แแก แแ แแก แแแแแกแฃแคแแแ แแแแแแ, แ แแแแแกแแช แฉแแแ แแ แแแแแแงแแคแ, แ แแแ แแแกแแแแก แแแแชแแ แกแแจแฃแแแแแ แกแ แฃแแแ แแแแแแงแแแแ SLC แฅแแจแ.
แแแ แแแแ, แฉแแแ แแคแแฅแขแฃแ แแ แแแแแฆแแแ 312 แแแแแแแแขแแแแ SLC แฅแแจแก แกแฃแ แแฅแแกแ แแแกแแแแแ. แงแแแแ แแแกแแแแแ 2 แแแแแงแแแแแฃแแ แแฅแแแแ RAID-แจแ แแแแแแขแแแแกแแแแก.
แฅแแจแแก แแก แ แแแแแแแแ แกแแจแฃแแแแแแก แแแแแชแแแก แ แแแแฃแ แชแฎแแแ แแแแจแ แฃแแแแฃแ แแกแแ แแจแแแแแแ แจแแแฎแแแแ แกแแขแฃแแชแแแก, แ แแแแกแแช แฉแแแแฌแแ แ แแ แแแแแก แฅแแจแจแ. แแก แซแแแแแ แแแ แแแ แแแแแฆแแฃแ แแแก QLC แแแฎแกแแแ แแแแก แงแแแแแแ แกแแแฌแฃแฎแแ แ แแแแแก - แฉแแฌแแ แแก แฃแแแแฃแ แแกแแ แแแแแแ แกแแฉแฅแแ แ, แ แแแแกแแช แแแแแชแแแแแ แแฌแแ แแแ แฅแแจแแก แแแแ แแแก แแแแแ. แแฃ แแฅแแแแ แแแขแแแ แแแแแ แแแแก แแ แจแแแกแแแแแแแ, แแแจแแ แแแ แฉแแแ แแแ แแแ แแแคแแฅแ แแแ, แ แแแแแ แฎแแแก แแแซแแแแก แแฅแแแแ SSD แแกแแแ แแแขแแแ แแแแก แฅแแแจ, แแแแแชแแแแ แคแฃแ แชแแแก TBW-แแก แแแแแแแแกแฌแแแแแแ.
#cat >ssd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors
/dev/sda1 : start= 2048, size= 2097152, type=fd, bootable
/dev/sda2 : start= 2099200, size= 3300950016, type=fd
EOF
#sfdisk /dev/sda < ssd.part
#sfdisk /dev/sdb < ssd.part
#sfdisk /dev/sdc < ssd.part
#sfdisk /dev/sdd < ssd.part
#sfdisk /dev/sde < ssd.part
#sfdisk /dev/sdf < ssd.part
แแแกแแแแแแก แจแแฅแแแ
แแแ แแแ แ แแแจแ, แฉแแแ แฃแแแ แแแแแแแ แฅแแแ แแแแฅแแแ. แแก แแฃแชแแแแแแแแ, แ แแแแแ แแแกแแแแซแแแก แกแแฎแแแ แแ แแก แแแกแแแแก แกแแฎแแแแก แแแฌแแแ แกแแแฆแแช mdadm-แจแ แแ แแแแแแแแก แแฎแแแแก แ แแฆแแชแแแ. แ แ แแฅแแ แฃแแแ, แแแกแแแแแก แจแแแซแแแแ แแแแแแแแแแแ แแแแ แฅแแแก แกแแฎแแแ, แแแแ แแ แแก แแ แแกแแญแแ แ แแแแแฏแแ.
#mcedit /etc/hostname
#mcedit /etc/hosts
#hostname
vdesk0
NVMe SSD
#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 แแแกแแแแแแกแแแแก, แแฅแแแ แฃแแแ แฉแแ แแแ แแก แแแ แแแแก แแแแฃแแแก แแแ แแแแขแ แแแจแ.
แแก แฃแแแ แแแแแแแแก แแฎแแแแ แแ แจแแแแฎแแแแแจแ, แแฃ แแ แกแแกแขแแแแจแ 4/5/6 แแแแแก แแแกแแแแแจแ แแแแแงแแแแแฃแแ แงแแแแ SSD-แก แแฅแแก 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 แงแแแแ แแแฌแงแแแแแแแแแแ. แกแขแแขแแกแขแแแแก แแแฎแแแแแ, IO-แก 99% แแ แแฆแแแแขแแแ 512K.
RAID 6 IOPS แแแแ แฉแแฌแแ แแแ แงแแแแแแแแก แแ แแ แแแกแแแก IOPS-แแ แแแแแแแ แแ แขแแแ. แ แแแแกแแช, แจแแแแฎแแแแแแ แฌแแแแแฎแแแกแแก, IOPS แจแแแซแแแแ แแงแแก แ แแแแแแฏแแ แแ แแแขแ แแแแ แ แแ แแ แแแกแแ, แแ แแฅ แแแแแแก แแแแแก แแแแแแ แ แแแแจแแแแแแแ แแฅแแก.
แแแขแแ แ แแแ แฎแแแแแก แแแ แก แแ แแแ แแแแขแ แแก แแแขแแแแแแชแแแก แแชแแแแแแแจแ, แ แแแแแแช แชแฃแแแ RAID 6-แแก แแแแแแแจแ แแ แแแแก แแแชแแแแ แแแขแแแแแแชแแแก แฃแแแแแแก RAID 6-แก.
แฉแแแ แจแแแแแแแฆแแฃแ แแแ RAID 6-แแก แชแฃแ แจแแแแฎแแแแแ แฉแแฌแแ แแก NVMe แฅแแจแแ แแ แฌแแ แแ-แแ แแแแแแแ แแแแก แฎแ แแแแแแ.
แฉแแแ แฏแแ แแ แฉแแแ แแแแ DISCARD RAID 6-แแกแแแแก. แแแแขแแ แแ แแแกแแแแก โแแแแชแแแแแแแชแแแกโ แแ แแ แแแกแแแแก แแ แแแแแแแแแแ. แฉแแแ แแแแก แแแแแแแแแแ แแแแแแแแแแแ, OS-แแก แแแงแแแแแแก แจแแแแแ.
SATA แแงแแ แ แแแกแแ
#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 แแแขแแแแแแชแแแแแ, แแแแขแแ แฉแแแ แจแแแฅแแแแ LVM VG-แก แแ แแแกแแแแ.
#pvcreate /dev/md0
#vgcreate root /dev/md0
แแแแแ แจแแแฅแแแแ แแแแแงแแคแ root แคแแแแฃแ แ แกแแกแขแแแแกแแแแก.
#lvcreate -L 128G --name root root
แแแแแ แจแแแฅแแแแ แแแแแงแแคแ RAM-แแก แแแแแก แแแฎแแแแแ แแแแแกแแชแแแแแแ.
#lvcreate -L 32G --name swap root
OS แแแกแขแแแแชแแ
แกแแแ แแ แฏแแแจแ, แฉแแแ แแแแฅแแก แงแแแแแคแแ แ, แ แแช แกแแญแแ แแ แกแแกแขแแแแก แแแกแแงแแแแแแแ.
แแแฃแจแแแ แกแแกแขแแแแก แแแกแขแแแแชแแแก แแกแขแแขแ Ubuntu Live แแแ แแแแแแ. แแแ แแแแฃแ แ แแแกแขแแแแชแแ. แแฎแแแแ แแแกแขแแแแชแแแกแแแแก แแแกแแแแแก แแ แฉแแแแก แแขแแแแ, แแฅแแแ แฃแแแ แแแฃแแแแแ แจแแแแแแ:
- /dev/md1, - แแแแแแ แแแแก แฌแแ แขแแแ /แฉแแขแแแ แแแ, FS - BTRFS
- /dev/root/root (a.k.a /dev/mapper/root-root), - แแแแแแ แแแแก แฌแแ แขแแแ / (root), FS - BTRFS
- /dev/root/swap (a.k.a /dev/mapper/root-swap), - แแแแแงแแแแแ แ แแแแ แช swap แแแแแงแแคแ
- แแแแแแกแขแแแแ แแ แฉแแแขแแแ แแแแ /dev/sda-แแ
แ แแแแกแแช แแ แฉแแแ BTRFS, แ แแแแ แช root แคแแแแฃแ แกแแกแขแแแแก, แแแกแขแแแแ แ แแแขแแแแขแฃแ แแ แจแแฅแแแแก BTRFS แแ แขแแแก แกแแฎแแแแ "@" for / (root) แแ "@home" for /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 แฌแแแกแแแแก. แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแ, แ แแแแ แช แฉแแแก, แแ แจแแชแแแแแ Linux-แแก แจแแฅแแแแก แจแแแแแ แแ แแ แแงแ แแแแแแแขแฃแ แ แแแแ แฎแแแก แแแแแแแแแแแจแ.
- แแแฏแแแจแแแ แแแแแแฃแ IO แแแกแแแแก แจแแแแฌแแแแแก/แกแแแฅแ แแแแแแชแแแก แฎแแแแ แซแแแแแแแกแแแแก. แแก แแ แแก แแแแกแแแแแก, แ แแ แแ แแแฃแจแแแก แแฅแแแแ แแแกแแแแแ แแแขแแแ แแแแก แฅแแแจ แแแ แแแแฃแแ แกแแแฅแ แแแแแแชแแแก แแแแแแแ แแแแแจแ.
- แจแแแฆแฃแแแ แแแฅแกแแแแแฃแ แ IO แแแกแแแแแแก แจแแแแฌแแแแแก/แกแแแฅแ แแแแแแชแแแก แแ แแก. แแก แแฃแชแแแแแแแแ แแแแกแแแแแก, แ แแ SSD RAID-แแแแก แกแแแฅแ แแแแแแชแแ/แจแแแแฌแแแแ แแ แแแแแ แแแแแก แแฅแแแแ แแแกแแแแ. แแก แแแแกแแแฃแแ แแแแ แแฎแแแ NVMe-แก. (แแแฎแกแแแก แ แแแแแขแแ แ? แแ แแฎแฃแแ แแแแ.)
- แแแ แซแแแแ แแแกแแแแแก แจแแฉแแ แแแ spindle rotation (HDD) APM-แแก แกแแจแฃแแแแแแ แแ แแแแงแแแแ แซแแแแก แแ แ แแแกแแแก แแแแขแ แแแแ แแแแกแแแแก 7 แกแแแแแแแ. แแฅแแแ แจแแแแซแแแแ แแแแแแแแ แแแแแ แแแ APM, แแฃ แแฅแแแแก แแแกแแแแก แจแแฃแซแแแแ แแแแก แแแแแแแแ (-B 255). แแแแฃแแแกแฎแแแแ แแแแจแแแแแแแแ, แแแกแแแแ แแแฉแแ แแแแ แฎแฃแแ แฌแแแแก แจแแแแแ. แจแแแแแ OS-แก แกแฃแ แก แแแกแแแก แฅแแจแแก แแแแแขแแแ แแแ, แแแกแแแแ แแกแแ แแแขแ แแแแแแแ แแ แงแแแแแคแแ แ แแแแแแแ แแแแฌแงแแแ. แแแกแแแแก แแฅแแ แจแขแ แแฎแแแแก แแ แฃแแแแก แจแแแฆแฃแแฃแแ แแแฅแกแแแแแฃแ แ แ แแแแแแแแ. แแกแแแ แแแ แขแแแ แแแแฃแแแกแฎแแแแ แชแแแแ แแแแแแแ แแแแแก แแฅแแแแก แแแกแแแแก แ แแแแแแแแ แฌแแแแฌแแแจแ. แงแแแแ แแแกแแ แแ แแแแแชแแแก แแแแก, แแแแ แแ แฉแแแแ แแ แแก "แแแแขแแแ", แจแแกแแแแแแกแ แแแแฃแแแกแฎแแแแ แแแ แแแแขแ แแแแ, แ แแช RAID-แก แแแแ-MAID-แก แฐแแแแก.
- Readahead-แแก แแแงแแแแแ แแแกแแแแแ (แแแ แฃแแแแ) 1 แแแแแแแแขแ - แแ แ แแแแแแแ แแแแแ/แแแฌแแแ RAID 6
- แแแแแ แแแ แฌแแแแกแฌแแ แฌแแแแแฎแแ แแแแแ แแแกแแแแแแ.
แแแแแ แแแแ แแแแฅแขแแ แแ /etc/fstab:
#cat >/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# file-system mount-point type options dump pass
/dev/mapper/root-root / btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@ 0 1
UUID=$(blkid -o value -s UUID /dev/md1) /boot btrfs defaults,space_cache,noatime,nodiratime,discard 0 2
/dev/mapper/root-root /home btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@home 0 2
/dev/mapper/root-swap none swap sw 0 0
EOF
แฒ แแขแแ แแ แแก, แ แแ..?แฉแแแ แแแแซแแแแแ /boot แแแแแงแแคแ UUID-แแ. แแแกแแแแก แแแกแแฎแแแแแ แแแแ แแฃแแแ แจแแแซแแแแ แจแแแชแแแแแก.
แฉแแแ แแแแซแแแแแ แแแ แฉแแแแ แกแแฅแชแแแแก LVM แกแแฎแแแแแแก แแแฎแแแแแ /dev/mapper/vg-lv แแแขแแชแแแจแ, แ แแแแแ แแกแแแ แแแแแขแแคแแชแแ แแแแ แแแแแงแแคแแแก แกแแแแแแ แชแแแกแแฎแแ.
แฉแแแ แแ แแแงแแแแแ UUID-แก LVM-แแกแแแแก, แ แแแแแ LVM แขแแแแแแก UUID แแ แแแแ แกแแแแจแแขแแแ แจแแแซแแแแ แแงแแก แแแแแ.แแแแแแแขแแแ /dev/mapper/root-root.. แแ แฏแแ ?แแแแฎ. แแฃแกแขแแ. BTRFS-แแก แแแแกแแแ. แแก แคแแแแฃแ แ แกแแกแขแแแ แจแแแซแแแแ แ แแแแแแฏแแ แแ แแแแแแขแแแแแก แกแฎแแแแแกแฎแแ แฅแแแแแแแแแ.
แแแแแ แแแฎแแกแแแแแแแแก แแแแ, แแแ แฉแแแ แแ แแกแแแแก แจแแฅแแแแ LVM แแฅแขแแฃแ แ BTRFS แขแแแแแแก แกแแแแจแแขแแแ. แจแแแซแแแแ แแแแแแแแ แแแ, แ แแแแกแแช แแแแแขแแแ แแแแ.
แแแแแ แแฆแแแแแแแแ mdadm แแแแคแแแฃแ แแชแแ:
#/usr/share/mdadm/mkconf | sed 's/#DEVICE/DEVICE/g' >/etc/mdadm/mdadm.conf
แแแแแ แแแแแ แแแฃแแแ แแ LVM แแแ แแแแขแ แแแ:
#cat >>/etc/lvm/lvmlocal.conf << EOF
activation {
thin_pool_autoextend_threshold=90
thin_pool_autoextend_percent=5
}
allocation {
cache_pool_max_chunks=2097152
}
devices {
global_filter=["r|^/dev/.*_corig$|","r|^/dev/.*_cdata$|","r|^/dev/.*_cmeta$|","r|^/dev/.*gpv$|","r|^/dev/images/.*$|","r|^/dev/mapper/images.*$|","r|^/dev/backup/.*$|","r|^/dev/mapper/backup.*$|"]
issue_discards=1
}
EOF
แฒ แ แแงแ แแก..?แฉแแแ แแแแแแฅแขแแฃแ แแ LVM แแฎแแแ แแฃแแแแแก แแแขแแแแขแฃแ แ แแแคแแ แแแแแ แแแแแแแแฃแแ แกแแแ แชแแก 90%-แแแ แแแชแฃแแแแแก 5%-แแ.
แฉแแแ แแแแแแ แแแ แฅแแจแ แแแแแแแแก แแแฅแกแแแแแฃแ แ แ แแแแแแแแ LVM แฅแแจแแกแแแแก.
แฉแแแ แจแแแฃแจแแแแ แฎแแแ LVM-แก LVM แขแแแแแแก (PV) แแแซแแแแแจแ:
- แแแฌแงแแแแแแแแแ, แ แแแแแแแช แจแแแชแแแก LVM แฅแแจแก (cdata)
- แแแฌแงแแแแแแแแแ แฅแแจแแ แแแฃแแ LVM แฅแแจแแก แแแแแงแแแแแแ แฅแแจแแก แแแแ แแแก แแแแแ (_corig). แแ แจแแแแฎแแแแแจแ, แแแแแ แฅแแจแแ แแแฃแแ แแแฌแงแแแแแแแ แแแแแ แกแแแแแ แแแฃแแ แแฅแแแแ แฅแแจแแก แแแจแแแแแแ (แฃแแ แแแแ ).
- แแแฌแงแแแแแแแแแ, แ แแแแแแแช แจแแแชแแแก LVM แฅแแจแ แแแขแแแแแแชแแแแแก (cmeta)
- แงแแแแ แแแฌแงแแแแแแแ VG-แจแ แกแแฎแแแแก แกแฃแ แแแแแแ. แแฅ แแแแฅแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแก แแแกแแแก แแแแแกแแฎแฃแแแแแแ แแ แแ แแแแแแ, แ แแ แฐแแกแขแแ LVM-แแ แแแแแฅแขแแฃแ แแก แกแขแฃแแ แแก OS-แแก แแฃแแแแแแ แขแแแแแ.
- แงแแแแ แแแฌแงแแแแแแแ VG-แจแ แกแแฎแแแแก แกแแ แแแแ แแ แแกแแแ. แแฅ แแแแฅแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแก แกแฃแ แแแแแแก แกแแ แแแแ แแ แแกแแแแ.
- แงแแแแ แแแฌแงแแแแแแแ, แ แแแแแก แกแแฎแแแ แแแแแ แแแแ โgpvโ-แแ (แกแขแฃแแ แแแแก แคแแแแแฃแ แ แแแชแฃแแแแ)
แฉแแแ แแแแแแฅแขแแฃแ แแ DISCARD แแฎแแ แแแญแแ แ LVM VG-แแ แแแแแกแฃแคแแแ แกแแแ แชแแก แแแแแแแกแฃแคแแแแแกแแก. แฒคแ แแฎแแแแ แแงแแแ. แแก แกแแแแแแ แจแ แแแแขแแแแแก แแแฎแแแก SSD-แแ LV-แแแแก แฌแแจแแแก. แแก แแแแกแแแฃแแ แแแแ แแฎแแแ SSD RAID 6-แก. แแฃแแชแ แแแแแแก แแแฎแแแแแ แแแแแแแงแแแแแ แแฎแแ แแแแฃแแแแแก, แแกแ แ แแ แแก แกแฃแแแช แแ แจแแแแแจแแแก แฎแแแก.
แแแแแ แแแแแแแฎแแแ initramfs แกแฃแ แแแ:
#update-initramfs -u -k all
แแแแแแกแขแแแแ แแ แแ แแแแแแแคแแแฃแ แแ แแ grub:
#apt-get install grub-pc
#apt-get purge os-prober
#dpkg-reconfigure grub-pc
แ แแแแแ แแแกแแแแ แแแ แฉแแแก?แงแแแแ แแแแช แแ แแก แกแ*. แกแแกแขแแแแก แฃแแแ แจแแแซแแแก แฉแแขแแแ แแแ แแแแแกแแแแ แ แกแแแฃแจแแ SATA แแแกแแแแแ แแ SSD-แแแ.
แ แแขแแ แแแแแแขแแก os-prober..?แแแแแแขแ แแแแแฃแแแแแแแแแแกแ แแ แกแแแแแแจแ แฎแแแแแแกแแแแก.
แแก แแ แแฃแจแแแแก แกแฌแแ แแ, แแฃ แแ แ-แแ แแ RAID แแ แแก แแแแ แแแแ แแแฃแ แแแแแแแ แแแแแจแ. แแก แชแแแแแแก แแแซแแแแแก แแแแ แแชแแฃแแ แกแแกแขแแแ แแแแแงแแคแแแแ, แ แแแแแแแช แแแแแแงแแแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแจแ, แ แแแแแแแช แแฃแจแแแแแ แแ แแแแ แแขแฃแ แแแ.
แแฃ แแแแญแแ แแแแแ, แจแแแแซแแแแ แแแขแแแแ, แแแแ แแ แแแแแแแแแกแฌแแแแ แงแแแแแแแ แแแแแแฅแแฃแแ. แแแ แฉแแแ แแแซแแแแแ แ แแชแแแขแแแ แแแ แแขแ แฎแแแแแแกแแแ แแแแแก แแแกแแฆแฌแแแแ.
แแแแ แฉแแแ แแแแแกแ แฃแแแ แกแแฌแงแแกแ แแแกแขแแแแชแแ. แแ แแ แแแแแขแแแ แแแ แแฎแแแ แแแงแแแแแฃแ OS-แจแ. แแ แแแแแแแฌแงแแแ แฉแแแขแแแ แแแแ Live CD/USB แแแแฆแแแ.
#exit
#reboot
แแแ แฉแแแ แแแแแกแแแแ แ SATA SSD, แ แแแแ แช แฉแแขแแแ แแแแก แแแฌแงแแแแแแแ.
LVM SATA SSD-แแ
แแ แแขแแแแ, แฉแแแ แฃแแแ แฉแแแขแแแ แแแ แแฎแแ OS-แจแ, แแแแแแแแคแแแฃแ แแ แแ แฅแกแแแ, แแแแฎแกแแแแ แขแแ แแแแแแแก แแแฃแแแขแแ แ แแ แแแแฃแจแแแ:
#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-แจแ?
แแฃ VG-แจแ แแ แแก แ แแแแแแแแ PV, แแแจแแ แแแแกแแแแแก, แ แแ VG แกแฌแแ แแ แแแแฅแขแแฃแ แแแก, แงแแแแ PV แฃแแแ แแงแแก แฌแแ แแแแแแแแแ (แแแแแแ). แแแแแแแแแแกแ แแ แแก LVM RAID, แ แแแแแกแแช แฉแแแ แแแแแ แแฎ แแ แแแงแแแแแ.
แฉแแแ แซแแแแแ แแแกแฃแ แก, แ แแ RAID 6-แแก แ แแแแแแแ แแแกแแแแ แฌแแ แฃแแแขแแแแแแแก แจแแแแฎแแแแแจแ (แฌแแแแแฎแฃแแ แแแแแชแแแแแแก แแแแแ แแแ), แแแแ แแชแแฃแแ แกแแกแขแแแ แแแ แแแแฃแ แแ แฉแแแขแแแ แแแก แแ แแแแแชแแก แแ แแแแแแแก แแแแแญแ แแก แจแแกแแซแแแแแแแ.
แแแแกแแแแแก, แแแกแขแ แแฅแชแแแก แแแ แแแ แแแแแแ แฉแแแ แแแแแแงแแคแ แคแแแแแฃแ "แแแแแแก" แแแแแแฃแ แขแแแก แชแแแแ VG-แจแ.
แแแชแแแแ แฃแแแ แ แแ แแแฅแแแ, แกแฎแแแแแกแฎแแ RAID แแแกแแแ แแแฃแแแแแก แกแฎแแแแแกแฎแแ "แกแแแแแแแแก แแแแแแแแก". แแฅแแแ แแ แฃแแแ แจแแฅแแแแ แแแแแขแแแแแ แกแแแ แแ แแแ แชแฎแแก แฌแแ แขแแแ แแแแแแแก แแ แ VG-แจแ แฉแแงแ แแ.
LVM-แแก แแ แกแแแแแ โแขแแฅแแแแแกโ แแแแแแ แกแแจแฃแแแแแแก แแแแแชแแแก แแแแแแแแฃแ แแ แแแแญแ แแ แกแฎแแแแแกแฎแแ RAID แแแกแแแแแแก แแแฌแแแแแ แแแแ แกแฎแแแแแกแฎแแ แแแแ แแแแแแแแชแแแ. แแแแแแแแแ - แแแฃแจแแแ แแ แแแ แแฃแแแ bcache + LVM thin, bcache + BTRFS, LVM cache + LVM thin, แ แแฃแแ ZFS แแแแคแแแฃแ แแชแแ แฅแแจแแแแ, แแ แแแแแกแแแแ แ แกแฎแแ แฏแแฏแแฎแแแฃแ แ แแแ แแแ, แ แแ แกแชแแแแ แแ แจแแแแแแ แแ แแก แงแแแแแคแแ แ.
"แขแแฅแแแแแก" แแแแแแ, แฉแแแ แแ แแแแแแแงแแแแแ แกแฎแแ แแแ แ แซแแแ "แกแฅแแ" LVM แขแแแแแก. แแ แฌแแกแแก แแแแแแแแแแกแ แจแแแซแแแแ แแงแแก แกแแ แแแแ แแ แแแแแงแแคแ.
แแคแแฅแ แแ, แแ แแแแแแขแแกแแแแก แแแแ แแ แแแแแฎแแแแแ แฃแแแ แแแแฌแงแ แ แแฆแแชแแก แแญแแ แแฃแแ แแแฏแแแแแ.
LVM SATA HDD-แแ
#pvcreate /dev/md3
#vgcreate backup /dev/md3
แแกแแ แแฎแแแ VG..?แฉแแแ แแแแแแแแแ แแแกแฃแ แก, แ แแ แแฃ แแแกแแแก แแแกแแแ, แ แแแแแกแแช แฉแแแ แแแแแแแงแแแแแ แแแแแชแแแแ แกแแ แแแแ แแ แแกแแแกแแแแก, แแแ แแแฎแแ แฎแแแแ, แฉแแแแ แแแแ แแชแแฃแแ แกแแกแขแแแ แแแแแแ แซแแแก แแแ แแแแฃแ แแ แแฃแจแแแแแก, แฎแแแ แฉแแแฃแแแแแกแแแแแ แจแแแแแ แฉแฃแแแแก แฌแแแแแแก แแ แ-แกแแ แแแแ แแ แแแแแชแแแแแแ. แแแแขแแ, VG แแฅแขแแแแชแแแก แแ แแแแแแแแแก แแแแแแแ แแกแแชแแแแแแแ, แฉแแแ แแฅแแแแ แชแแแแ VG-แก.
LVM แฅแแจแแก แแแงแแแแแ
แแแแแ แจแแแฅแแแแ LV NVMe RAID 1-แแ, แ แแ แแแแแแแงแแแแ แ แแแแ แช แฅแแจแแ แแแแก แแแฌแงแแแแแแแ.
#lvcreate -L 70871154688B --name cache root
แ แแขแแ แแ แแก แแกแ แชแแขแ...แคแแฅแขแแ, แ แแ แฉแแแแก NVMe SSD-แแแก แแกแแแ แแฅแแ SLC แฅแแจแ. 4 แแแแแแแแขแ "แแแแแกแฃแคแแแ" แแ 18 แแแแแแแแขแ แแแแแแแฃแ แ 3-แแแขแแแแ MLC-แจแ แแแแแแแแฃแแ แแแแแกแฃแคแแแ แกแแแ แชแแก แแแแ. แแ แฅแแจแแก แแแแฌแฃแ แแแก แจแแแแแ, NVMe SSD-แแแ แแ แแฅแแแแ แแแแ แแ แฃแคแ แ แกแฌแ แแคแ แแแแ แ แฉแแแแ SATA SSD แฅแแจแแ. แกแแแแแแแแแแจแ, แแ แแแแแแแ, แฉแแแแแแแก แแแ แ แแ แแฅแแก, แ แแ LVM แฅแแจแ แแแแแงแแคแ แแแแฎแแแแ แแแแ แแ แฃแคแ แ แแแแ แแแแ แ NVMe แแแกแแแก SLC แฅแแจแแก แแแแแแ แแ แฏแแ แแแขแ. แแแแแงแแแแแฃแแ NVMe แแแกแแแแแกแแแแก แแแขแแ แ แแแแแแ แฃแแแ แแแแฉแแแแก 32-64 แแแแแแแแขแแแแ แฅแแจแแก แแแแแแแแแแก.
แแแแแงแแคแแก แแแชแแแฃแแ แแแแ แกแแญแแ แแ 64 แแแแแแแแขแ แฅแแจแแก, แฅแแจแแก แแแขแแแแแแชแแแแแแก แแ แแแขแแแแแแชแแแแแแก แกแแ แแแแ แแ แแกแแแก แแ แแแแแแแแแกแแแแก.
แแแ แแ แแแแกแ, แแ แแฆแแแแจแแแ, แ แแ แแแแซแฃแ แ แกแแกแขแแแแก แแแแแ แแแแก แจแแแแแ, LVM แแแแแจแแแแก แแแแ แฅแแจแก แญแฃแญแงแแแแแ แแ แฎแแแแฎแแ แกแแแฅแ แแแแแแแแ. แฃแคแ แ แแแขแแช, แแก แแแแแแแ แแแแ แงแแแแ แฏแแ แแ, แ แแแแกแแช lvchange แแแแแแงแแแแแ แแ แแแฌแงแแแแแแแแแ, แกแแแแ แกแแกแขแแแ แฎแแแแฎแแ แแ แแแแแแขแแแ แแแแ. แแแแขแแ, แแแ แฉแแแ แแแฃแงแแแแแแแแ แฎแแแแฎแแ แจแแฅแแแแ แฅแแจแ แจแแกแแแแแแกแ แกแแ แแแขแแก แแแแแงแแแแแแ.
แแแแแ แจแแแฅแแแแ LV SATA RAID 6-แแ, แ แแ แแแแแแแงแแแแ แ แแแแ แช แฅแแจแแ แแแฃแแ แแแฌแงแแแแแแแ.
#lvcreate -L 3298543271936B --name cache data
แ แแขแแ แแฎแแแแ แกแแแ แขแแ แแแแแขแ..?แแกแ แ แแ, แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ, แจแแแแซแแแแ แแแแแแงแแแแ SATA SSD RAID 6 แกแฎแแ แกแแญแแ แแแแแกแแแแก. แฅแแจแแ แแแฃแแ แกแแแ แชแแก แแแแ แจแแแซแแแแ แแแแแแ แแแก แแแแแแแฃแ แแ, แคแ แแแแก แแ แแก, แกแแกแขแแแแก แจแแฉแแ แแแแก แแแ แแจแ. แแแแกแแแแแก แกแแญแแ แแ แแ แแแแแ แจแแแฉแแ แแ แแ แฎแแแแฎแแ แฉแแ แแแ แฅแแจแ, แแแแ แแ LVM-แฅแแจแแก แแแแแ แฉแแฃแแ แฃแแแ แแขแแกแแแ, แแแแแแแแแ, 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 thin-แแกแแแแก.
แคแ แแฎแแแแ แฉแแฌแแ แแ..!แแแแฎ. แแ แขแแแแก แฅแแจแ แแฉแแ แแแก แฉแแฌแแ แแก แกแแแฅแ แแแแแแชแแแก แฅแแจแแ แแแฃแ แแแฌแงแแแแแแแแแ. แแก แแแจแแแแก, แ แแ แแฃ แฅแแจแ แแแแแแ แแแแ, แจแแแซแแแแ แแแแแ แแแ แแแแแชแแแแแ แฅแแจแแ แแแฃแ แแแฌแงแแแแแแแแแ. แแแแแแแแแแแ, แแแขแแ แ แแแขแงแแแ, แ แ แแแแแแแก แแแฆแแแ แจแแแซแแแแ, แแแ แแ NVMe RAID 1-แแกแ, แแ แ แแกแแแก แแแแแแแกแแชแแแกแแแแก.
แฅแแจแแก แแก แขแแแ แจแแแแแแฃแแแ แแฅแแ แแ แฉแแฃแแ RAID 6-แแก แจแแแแฎแแแแแแ แฉแแฌแแ แแก แชแฃแแ แจแแกแ แฃแแแแแก แแแแแแแกแแชแแแก แแแแแแ.
แแแแแ แจแแแแแแฌแแแ แ แ แแแแแฆแแ:
#lvs -a -o lv_name,lv_size,devices --units B cache
LV LSize Devices
[cache] 68719476736B cache_cdata(0)
[cache_cdata] 68719476736B /dev/root/cache(0)
[cache_cmeta] 1073741824B /dev/root/cache(16384)
cachedata 3298539077632B cachedata_corig(0)
[cachedata_corig] 3298539077632B /dev/data/cache(0)
[lvol0_pmspare] 1073741824B /dev/root/cache(16640)
แแฎแแแแ [cachedata_corig] แฃแแแ แแงแแก แแแแแแแกแแแฃแแ /dev/data/cache-แแ. แแฃ แ แแแ แแ แแกแฌแแ แแ, แแแแแแงแแแแ pvmove.
แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ แจแแแแซแแแแ แแแแแ แแแ แฅแแจแ แแ แแ แแ แซแแแแแแ:
#lvconvert -y --uncache cache/cachedata
แแก แแแแแแแ แแแแแแ. LVM แฃแแ แแแแ แกแแแฅแ แแแแแแแก แฅแแจแก แแแกแแแ, แฌแแจแแแก แแแก แแ แแแแ แฅแแแแก cachedata_corig-แก แฃแแแ cachedata-แแ.
LVM แแฎแแแ แแแงแแแแแ
แแแแแ แฃแฎแแจแแ แจแแแแคแแกแแ แ แแแแแแ แกแแแ แชแ แแแญแแ แแแแ LVM แแฎแแแ แแแขแแแแแแชแแแแแแกแแแแก:
#thin_metadata_size --block-size=64k --pool-size=6terabytes --max-thins=100000 -u bytes
thin_metadata_size - 3385794560 bytes estimated metadata area size for "--block-size=64kibibytes --pool-size=6terabytes --max-thins=100000"
แแแแ แแแแแแ 4 แแแแแแแแขแแแแ: 4294967296B
แแแแแ แแแแแ แแ แแ แแ แแแแแแขแแ 4194304B LVM PV แแแขแแแแแแชแแแแแแกแแแแก: 8594128896B
แแแแแ แจแแแฅแแแแ แชแแแแ แแแแแงแแคแ NVMe RAID 1-แแ, แ แแแ แแแกแแ แแแแแแแแกแแ LVM แแฎแแแ แแแขแแแแแแชแแแแแ แแ แแแแ แกแแ แแแแ แแ แแกแแ:
#lvcreate -L 8594128896B --name images root
แฒ แแกแแแแก..?แแฅ แจแแแซแแแแ แแแฉแแแแก แแแแฎแแ: แ แแขแแ แแแแแแแแแกแแ LVM แแฎแแแ แแแขแแแแแแชแแแแแ แชแแแแ, แแฃ แแก แแแแแช แแฅแแแแ แฅแแจแแ แแแฃแแ NVMe-แแ แแ แกแฌแ แแคแแ แแแฃแจแแแแแก.
แแแฃแฎแแแแแแ แแแแกแ, แ แแ แกแแฉแฅแแ แ แแฅ แแแแจแแแแแแแแแแ, แแก แจแแ แก แแ แแก แแแแแแ แ แแแแแแแกแแแ. แกแแฅแแ แแก แแ แแก, แ แแ แฅแแจแ แแ แแก แแแ แชแฎแแก แฌแแ แขแแแ. แจแแแซแแแแ แ แแฆแแช แแแฎแแแก แแ แแฃ LVM แแฎแแแ แแแขแแแแแแชแแแแแแก แฅแแจแแ แแแ แแแฎแแแแ, แแก แแแแแแฌแแแแก แงแแแแแคแ แแก แกแ แฃแ แแแแแ แแแแก. แกแ แฃแแ แแแขแแแแแแชแแแแแแก แแแ แแจแ, แแแแฅแแแก แจแแฃแซแแแแแแ แแฅแแแแ แแฎแแแ แแแชแฃแแแแแแแก แจแแแ แแแ.
แแแขแแแแแแชแแแแแแก แชแแแแ แฅแแจแฃแ , แแแแ แแ แกแฌแ แแค แขแแแแ แแแแแขแแแแ, แฉแแแ แแแ แแแขแแแก แแแซแแแแ แแแขแแแแแแชแแแแแแก แฃแกแแคแ แแฎแแแแแก แฅแแจแแก แแแแแ แแแแก แแ แแแ แฃแคแชแแแก แจแแแแฎแแแแแจแ. แแ แจแแแแฎแแแแแจแ, แฅแแจแแก แแแแแ แแแแ แแแแแฌแแแฃแแ แงแแแแ แแแแแ แแแแแแแแแแแ แแฎแแแ แแแชแฃแแแแแแแก แจแแแแแ, แ แแช แแแแแแ แขแแแแแก แแฆแแแแแแก แแ แแชแแแฃแ แแก แแแกแจแขแแแแแแก แแ แซแแแแแแ. แแแแ แแแแแแแแแ, แแก แแแแแแแแแแแ แแฆแแแแแ FS แแฃแ แแแแแแแก แแแแแงแแแแแแ.
แฃแคแ แ แแแขแแช, แแฃ แแแ แ แแงแ แแแแแฆแแแฃแแ แแฎแแแ แแแชแฃแแแแแก แกแแแแจแแขแ แแ แแแแก แจแแแแแ แฅแแจแ แกแ แฃแแแ แกแแแฅแ แแแแแแแฃแแ แแงแ แแ แแฎแแ แแแแแช, แแแจแแ, LVM thin-แแก แจแแแ แแแแแแแแก แแแแ, แฅแแจแแก แแแแแ แแแแก แจแแแแฎแแแแแจแ แกแแแแจแแขแแก แแแแแแแแแ แแแ แแแขแแ แแแฃแแ แแฅแแแแ. .
แแแแแ แจแแแฅแแแแ แแฎแแแ 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แแแ แแ แแแแกแ, แ แแกแแแแกแแช แ แแแแฃแ แแ แแ แแก แแแแแฃแแแแแแ แแก แ แแแแแ - แแ แแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแ แแแแแชแแแแแแก แกแฎแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแ แแแแแแแแก แแแแแแแ แแกแแชแแแแแแแ, แกแแแ แชแแก แแแแแแแฌแแแแแแกแแก - แแฃแแแแแแ แแแแแขแแแแ แแแแแแงแแแแแ แจแแแแฎแแแแแแ แฉแแฌแแ แแก แกแแฉแฅแแ แแก แแแกแแแ แแแแแ 64แ-แแ แแชแแ แ แแแแแแแจแ. 64K-แแ แแแแแแแ แแแแแกแแแแ แ แฉแแแแฌแแ แ แแฎแแแ แแแชแฃแแแแแก แแแ แ แแแแแฃแงแแแแแแ แแแแแจแ แแแฎแแแแ 64K แแแแแแ แแแกแฌแแ แแแฃแแ แฅแแจแ. แแก แกแแจแฃแแแแแแก แแแกแชแแแก แแแแ แแชแแ แจแแกแ แฃแแแแก แแแแแแแแ แฅแแจแแก แแแจแแแแแแ, แฅแแจแแ แแแฃแแ แแแฌแงแแแแแแแแก แแแแ แแแก แแแแแ.
แแแแแแแขแแแแ LV-แแแ แจแแกแแแแแแก PV-แแแแ:
#pvmove -n images/thin-pool_tdata /dev/root/images /dev/cache/cachedata
#pvmove -n images/lvol0_pmspare /dev/cache/cachedata /dev/root/images
#pvmove -n images/thin-pool_tmeta /dev/cache/cachedata /dev/root/images
แแแแแ แจแแแแแแฌแแแ:
#lvs -a -o lv_name,lv_size,devices --units B images
LV LSize Devices
[lvol0_pmspare] 4294967296B /dev/root/images(0)
thin-pool 274877906944B thin-pool_tdata(0)
[thin-pool_tdata] 274877906944B /dev/cache/cachedata(0)
[thin-pool_tmeta] 4294967296B /dev/root/images(1024)
แแแแแ แจแแแฅแแแแ แแฎแแแ แแแชแฃแแแแ แขแแกแขแแแแกแแแแก:
#lvcreate -V 64G --thin-pool thin-pool --name test images
แฉแแแ แแแแแงแแแแแ แแแแแขแแแก แขแแกแขแแแแกแ แแ แแแแแขแแ แแแแแกแแแแก:
#apt-get install sysstat fio
แแ, แ แแแแ แจแแแแซแแแแ แแแแแแแ แแแ แฉแแแแ แจแแแแฎแแแก แแแแคแแแฃแ แแชแแแก แฅแชแแแแก แ แแแแฃแ แแ แแจแ:
#watch 'lvs --rows --reportformat basic --quiet -ocache_dirty_blocks,cache_settings cache/cachedata && (lvdisplay cache/cachedata | grep Cache) && (sar -p -d 2 1 | grep -E "sd|nvme|DEV|md1|md2|md3|md0" | grep -v Average | sort)'
แแ, แ แแแแ แจแแแแแซแแแ แจแแแแแแฌแแแ แฉแแแแ แแแแคแแแฃแ แแชแแ:
#fio --loops=1 --size=64G --runtime=4 --filename=/dev/images/test --stonewall --ioengine=libaio --direct=1
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread
--name=8kQD32read --bs=8k --iodepth=32 --rw=randread
--name=16kQD32read --bs=16k --iodepth=32 --rw=randread
--name=32KQD32read --bs=32k --iodepth=32 --rw=randread
--name=64KQD32read --bs=64k --iodepth=32 --rw=randread
--name=128KQD32read --bs=128k --iodepth=32 --rw=randread
--name=256KQD32read --bs=256k --iodepth=32 --rw=randread
--name=512KQD32read --bs=512k --iodepth=32 --rw=randread
--name=4Kread --bs=4k --rw=read
--name=8Kread --bs=8k --rw=read
--name=16Kread --bs=16k --rw=read
--name=32Kread --bs=32k --rw=read
--name=64Kread --bs=64k --rw=read
--name=128Kread --bs=128k --rw=read
--name=256Kread --bs=256k --rw=read
--name=512Kread --bs=512k --rw=read
--name=Seqread --bs=1m --rw=read
--name=Longread --bs=8m --rw=read
--name=Longwrite --bs=8m --rw=write
--name=Seqwrite --bs=1m --rw=write
--name=512Kwrite --bs=512k --rw=write
--name=256write --bs=256k --rw=write
--name=128write --bs=128k --rw=write
--name=64write --bs=64k --rw=write
--name=32write --bs=32k --rw=write
--name=16write --bs=16k --rw=write
--name=8write --bs=8k --rw=write
--name=4write --bs=4k --rw=write
--name=512KQD32write --bs=512k --iodepth=32 --rw=randwrite
--name=256KQD32write --bs=256k --iodepth=32 --rw=randwrite
--name=128KQD32write --bs=128k --iodepth=32 --rw=randwrite
--name=64KQD32write --bs=64k --iodepth=32 --rw=randwrite
--name=32KQD32write --bs=32k --iodepth=32 --rw=randwrite
--name=16KQD32write --bs=16k --iodepth=32 --rw=randwrite
--name=8KQD32write --bs=8k --iodepth=32 --rw=randwrite
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
| grep -E 'read|write|test' | grep -v ioengine
แคแ แแฎแแแแ! แ แแกแฃแ แกแ!แแก แแแแ แฉแแแขแแ แแแก 36 แกแฎแแแแแกแฎแแ แขแแกแขแก, แแแแแแฃแแ แแฃแจแแแแก 4 แฌแแแแก แแแแแแแแแแแจแ. แขแแกแขแแแแก แแแฎแแแแ แ แฉแแกแแฌแแ แแ. NVMe-แแ แแแแ แแก แฉแแฌแแ แ แจแแแแซแแแแ 4 แฌแแแจแ. 3 แแแแแแแแขแแแแ แฌแแแจแ. แแกแ แ แแ, แฌแแ แแก แขแแกแขแแแแก แงแแแแแ แแแจแแแแ แจแแฃแซแแแ แแฅแแแแแแ 216 แแแแแแแแขแแแแ SSD แ แแกแฃแ แกแแก แญแแแ.
แแแแฎแแ แแ แฌแแ แ แจแแ แแฃแแแ?แแแแฎ. แแแ แ แแฅแแก แแแแฎแแแกแ แแ แฌแแ แแก แขแแกแขแแแแก แชแแแแ แแแจแแแแแก. แฃแคแ แ แแแขแแช, แแแ แ แแฅแแก แแแแก แฃแแ แฃแแแแแงแแคแแก, แ แแ แงแแแแ แฅแแจแ แกแแแฅแ แแแแแแแฃแแแ แแกแ, แ แแ แแแ แ แแแแแแแแฃแแ แฉแแแแฌแแ แ แแแแแแแแก แแ แแแแฎแแแแก แฌแแแแแฎแแแแ.
แจแแแแแแแ แแแแจแแแแแแแแแ แแแแกแฎแแแแแแแแแ แแแ แแแแ แแแจแแแแแก แแ แแก แแ แจแแแแแแแจแ, แ แแแแ แช แฅแแจแ แแ แแฎแแแ แแแชแฃแแแแแก แจแแแกแแแ, แแกแแแ แแแแแแแแแแฃแแแ แแแแแ, แแแแฎแแ แฎแ แแฃ แแ แ แกแแกแขแแแแ แแแแ แแแจแแแแแก แแ แแก แจแแแกแแแฃแแ แฅแแจแแแแก แกแแแฅแ แแแแแแชแแ.
แกแฎแแ แกแแแแแฎแแแแแ แแ แแแ, แแแ แฉแแแ แกแแฉแฅแแ แแก แแแแแแแแก แฃแแแ แกแ แฃแ แแฎแแ แแแชแฃแแแแแแ, แกแแแแแแแช แแฎแแแฎแแ แแแแแฆแแแฃแแแ แกแแแแจแแขแ. แแแขแแ แก แฐแฅแแแแ แจแแกแแซแแแแแแแ แแแแแแฎแ, แแฃ แ แแแแ แแแแแแ แแ แแฉแฅแแ แแแแ แจแแแแฎแแแแแแ แฉแแฌแแ แ แแแ แแแแ แกแแแแจแแขแแก แจแแฅแแแแกแแแแแแ, แแแแกแแแฃแแ แแแแ แแแจแแ, แ แแแแกแแช แฅแแจแ แฏแแ แแแแแ แแ แแ แแก แกแแแกแ. แแก แฎแแแแ แแแแแ แแแ-แฉแแฌแแ แแก แฉแแฌแแ แแก แกแแแแแขแแแแก, แฅแแจแแกแ แแ แแฎแแแ แแแชแฃแแแแแก แแแแแแแแก แแแกแฌแแ แแแแก แแแแ แแ แแก แคแแฅแขแ, แ แแ แจแแแแฎแแแแแแ แฉแแฌแแ แ RAID 6-แจแ แแแแแแฅแชแแแ แจแแแแฎแแแแแ แฌแแแแแฎแแแ RAID 6-แแแ, แ แแกแแช แแแฐแงแแแแ แฉแแฌแแ แ แฅแแจแ. แฉแแแแก แแแแคแแแฃแ แแชแแแจแ, RAID 6-แแแ แจแแแแฎแแแแแแ แแแแฎแแ 6-แฏแแ (SATA SSD-แแแแก แ แแแแแแแแ แแแกแแแจแ) แฃแคแ แ แกแฌแ แแคแแ, แแแแ แ แฉแแฌแแ แ. แแแแขแแ แ แแ CoW-แกแแแแก แแแแแแแ แแแแแแแแแแ แฃแแแ แแแแแแงแแคแ แแฎแแแ แแฃแแแแแ, แจแแแแแ แฉแแแแฌแแ แ, แฃแแแขแแกแฌแแแแ, แแกแแแ แแฅแชแแแ แแแแแแแแแแ แฃแแแ.
แแ แแแ แแก แคแฃแแฅแชแแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แแฅแแแแก แกแแกแแ แแแแแแ.
แฅแแจแ โแแแแแแแแแแ แฃแแโ แแแแ แแแ
แฅแแจแแก แแแแแแแแแแก/แแแแแ แแแแก แจแแแแฎแแแแแจแ แแแแแชแแแแ แแแแแ แแแแก แ แแกแแแก แจแแกแแแชแแ แแแแแ, แแแขแแ แ แแแแแแแแแแก แแแแแ แแแก แกแแแแจแแขแแแแก แ แแขแแชแแแก แแ แแฅแขแแแ, แ แแแ แฃแแ แฃแแแแแงแแก แแแแ แแแแแแแแแ แแ แจแแแแฎแแแแแจแ.
แแแ แแแ แ แแแจแ, แแแแก แแแแ, แ แแ แแฎแแแ แแแชแฃแแแแแก แแแขแแแแแแชแแแแแ แแแแแแแแแฃแแแ แแ แแฅแแจแแ แแแฃแ แแแฌแงแแแแแแแแแ, แแแขแแแแแแชแแแแแ แแฅแแแแ แแแแแแแแแแ แฃแแ แแ แจแแกแแซแแ แแแแแแแ แแแแ แแแแแแ แแแฃแแ แแฅแแแแ แแแแแชแแแแ แแแแแแแจแ.
แจแแแแแแ แกแแแคแจแแขแแก แแ แฃแแแแก แชแแแแ แฃแแ แฃแแแแแงแแคแก แกแแแแจแแขแแแแก แจแแแแแ แแ แกแแแฃแแ แแแแแชแแแแแแก แแแแแแแแแแก แฅแแจแแก แแแแแ แแแแก แจแแแแฎแแแแแจแ:
- แแแแแแฃแแ แแฎแแแ แขแแแแกแแแแก แกแแฎแแแฌแแแแแแ แจแแฅแแแแแ แกแแแแจแแขแ แกแแฎแแแแ .cached
- แแแแแ แแแแแงแแแแ แแแแ แแชแแแก แแแ แแแ แ แแแแแแ แฃแ แแแฆแแ แแแแจแแแแแแแแแ:
#lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
- แแแ แงแฃแแจแ แฉแแแ แแแแแฌแแแแ แฅแแจแจแ แแแแซแฃแ แ แแแแแแแแก แ แแแแแแแแแก:
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'
แกแแแแ แแฃแแก แแแแแฆแแแ. แแฃ แแฃแแ แซแแแแแ แแแแ แฎแแแก แแแแแแแแแแแจแ แแแแแ, แแก แจแแแซแแแแ แจแแแฅแแแแก แฅแแจแแก แฉแแฌแแ แแก แ แแแแแจแ แแ แแแแแ แแแแแ แแแแ. แแฃแแชแ, แฉแแแแ SATA แแ NVMe SSD แแแกแแแแแแก แกแแฉแฅแแ แแก แแแฎแแกแแแแแแแแแแก, แแกแแแ แแแแ TBW แ แแกแฃแ แกแแก แแแแแแแแกแฌแแแแแแ, แแฅแแแ แจแแซแแแแ แกแฌแ แแคแแ แแแแญแแ แแ แแแแแแขแ แฅแแจแแก แ แแแแแแก แจแแชแแแแก แแแ แแจแ, แแ แแฅแแแแ แแแแ แแขแฃแ แ แแแแแแแแ แจแแญแแแก แแแก แแแแ แ แแกแฃแ แกแก. แ แแแแแแแแ แแฆแแก. แ แแกแฃแ แกแแแแก แจแแแฆแฃแแแแก แแแแ, แกแแกแขแแแ, แแ แแแชแแแจแ, แแแ แแฅแแแแ 100% แฉแแฌแแ แแก แแแขแแแ แแแแก แฅแแแจ. แฉแแแแ NVMe SSD 100% แฉแแฌแแ แแก แแแขแแแ แแแแก แฅแแแจ แแแแแแแแ แแแแฌแฃแ แแแก แ แแกแฃแ แกแก 3-4 แแฆแ. SATA SSD-แแแ แแฎแแแแ แแ แฏแแ แแแขแฎแแแก แแแฃแจแแแแแแ. แแแจแแกแแแแแ, แฉแแแ แแแแแ แแฃแแแแ, แ แแ แแแขแแแ แแแแก แฃแแแขแแกแ แแแฌแแแ แฌแแแแก แแแแฎแแแแ แแ แแแแฅแแก แฃแแแแฃแ แแกแแ แแแฆแแแ แแฅแขแแแแแแก แจแแแแ แแแแ แแแแแแแแแแแแ แแคแแแฅแแแแแ, แแแแแแแแ แแแฃแแ แกแแจแฃแแแแ แแแแแ แแแขแแแ แแแแกแแแ แฌแแ แแกแแแแก. - แ แแแแ แช แแ แแแแแญแแ แ (แแ แแแแแแแแแแ) แแฃแแก, แฉแแแ แแแ แฅแแแแก .cached to .committed. แซแแแแ .committed แฌแแจแแแแแ.
- แกแฃแ แแแแแกแแแแแ , แแฃ แฅแแจแ 100%-แแ แกแแแกแแ, แแก แจแแแซแแแแ แฎแแแแฎแแ แจแแแฅแแแแก แกแแ แแแขแแ, แ แแแแช แแแกแฃแคแแแแแแแ. แแแฎแแแ แแ แชแแ แแแแ แฅแแจแแ, แกแแกแขแแแ แแแแ แแ แฃแคแ แ แกแฌแ แแคแแ แแฃแจแแแแก แฌแแ แแกแแก.
- แแแแงแแแแ แแแแ แแชแแแก แแแ แแแ แ แแฃแแแ:
#lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata
แแก แแ แแแแแ แฎแแแก แจแแฃแจแแแก แฅแแจแแก แแแแแแ แแแแแแกแแแ แกแแแฅแ แแแแแแชแแแก. - แแแแแแแแแ แกแแแแ แฅแแจแจแ แกแแแแแแ แแแแ แ แชแแแแแแแ แแแแ แแแแแแ
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'
แแ แขแแแแแ แ แแแแแแจแแแ. - แแกแแ แแแแแแ แแแ.
แ แแขแแ แแ แแก แกแแ แแฃแแแแแ แแแแ แแชแแแก แแฆแฃแ แแแแแ แแแแแแจแแ แแแแ...?แกแแฅแแ แแกแแ, แ แแ แ แแแแฃแ แแ แแฅแขแแแแจแ โแจแแแแฎแแแแแแโ แฉแแแแฌแแ แ แคแแฅแขแแแ แแแแ แแ แแ แแก แกแ แฃแแแแ แจแแแแฎแแแแแแ. แแฃ แฉแแแ แแแแฌแแ แ แ แแฆแแช 4 แแแแแแแแขแแก แแแแแก แกแแฅแขแแ แก, แแแแ แแแแแแแแแ, แ แแ แแแแแแแแ แ แแแแแแแแ แฌแฃแแจแ แฉแแแแฌแแ แ แแแแฎแแ แชแแแแแแแ แแแแแ แแ แแ แ-แแ แ แแแแแแแ (+- 32K) แกแแฅแขแแ แแ.
แแแแ แแชแแแก แแฆแฃแ แแแแก แแฃแแแ แแแงแแแแแแ, แฉแแแ แแแแแแแแแแ แฉแแฌแแ แแก แกแแแฅแ แแแแแแชแแแก SATA SSD-แแ แแ แแแแ แแแแแ แ แแแแแแแแ แชแแแแแแแแก แแ แ 64K แแแแแจแ แฅแแจแจแ. แแก แแแแจแแแแแแแแแ แแแแแแแแก SATA SSD-แแก แ แแกแฃแ แกแก.
แกแแ แแ แแก แแแแ..?แกแแแฌแฃแฎแแ แแ, แแแขแแ แ แแแแก แแ แแกแแแแแ แแกแแ แแแแแแขแแแขแฃแ แแ แแแแแก แแแจแแก แกแแ แแแขแแแแก แจแแแฃแจแแแแแแจแ, แ แแแแแ แแก 100% แแแแแแแกแฌแแแแแ แแ แแงแแแแแก โแแฃแแแแกโ แแแแแแแแ แแแแก, แแแแขแแ แแแแแก, แ แแ แแแกแ แฎแแแแแแ แแแแแกแฃแแ แกแแจแแแแแ แแแแ แแ แแแแก แฃแแแ แแแแแแงแแแแก. แกแฎแแ.
แแคแแฅแ แแ, แแ แกแคแแ แแก แแ แแคแแกแแแแแแแแก แกแแจแฃแแแแแ แแฅแแแแแ แแแแแฃแแแแแแแแ แฌแแ แแแแฉแแแแ แแแแแ แแฆแฌแแ แแแ แงแแแแ แแแแแแ, แกแแญแแ แแแแแก แจแแแแฎแแแแแจแ แแ, แจแแกแแซแแแ, แแแแแแแแแช แแ แแแแแ แแแฅแขแแ แแก, แ แแแแ แช แกแแกแขแแแฃแ แ แกแแ แแแกแ, แ แแแแ แช แแแแก แแแขแแ แ แชแแแแแแแ.
แแกแแแ แแแ แขแแแ แกแแแแจแแขแแก แแ แฃแแแแก แกแฅแแแ แกแแจแฃแแแแแแก แแแแแชแแแก แแ แ แแฎแแแแ แแฃแแแแแแ แแแฅแแแแแก แแ แแ แกแแแแจแแขแ แกแ แฃแแแ แกแแแฅแ แแแแแแแฃแแ SATA SSD-แแ, แแ แแแแ แกแแจแฃแแแแแแก แแแแแชแแแก thin_delta แฃแขแแแแขแแก แแแแแงแแแแแแ แแแแแ แแแแแ, แ แแแแแ แแแแแแแ แจแแแชแแแแ แแแกแ แจแแฅแแแแก แจแแแแแ แแ แแแแ แแแฎแแแก แแแแแแแแแแก แแแแแแแแแแ. แซแแ แแแแแ แขแแแแแ, แแแแจแแแแแแแแแ แแแแ แขแแแแแก แแฆแแแแแแก.
TRIM/DISCARD libvirt/KVM-แจแ
แแแแขแแ แ แแ แแแแแชแแแแ แจแแแแฎแแ แแแแแงแแแแแฃแแ แแฅแแแแ KVM libvirt-แแก แแแจแแแแแกแแแแก, แแแจแแ แแแ แแ แแแแ แแฅแแแแ, แ แแ แแแกแฌแแแแแ แฉแแแแก VM-แแแก แแ แ แแฎแแแแ แแแแแกแฃแคแแแ แกแแแ แชแแก แแแแแแแแ, แแ แแแแ แแแแแแแแกแฃแคแแแ แแก, แ แแช แแฆแแ แแ แแก แกแแญแแ แ.
แแก แแแแแแแ แแแ แขแฃแแแฃแ แแแกแแแแแ TRIM/DISCARD แแฎแแ แแแญแแ แแก แแแฃแแแชแแแ. แแแแกแแแแแก แแฅแแแ แฃแแแ แจแแชแแแแแ แแแแขแ แแแแ แแก แขแแแ virtio-scsi แแ แจแแชแแแแแ xml.
#virsh edit vmname
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads' discard='unmap'/>
<source dev='/dev/images/vmname'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>
แแกแแแ DISCARD-แแแ แกแขแฃแแ แแก OS-แแแแแแ แกแฌแแ แแ แแฃแจแแแแแแ LVM-แแก แแแแ แแ แแแแแแแ แกแฌแแ แแ แแฎแกแแแแ แ แแแแ แช แฅแแจแจแ, แแกแแแ แแฎแแ แแฃแแจแ. แฉแแแแก แจแแแแฎแแแแแจแ, แแก แฎแแแแ แซแแ แแแแแแ แแแแแแแแแแแ, แจแแแแแแ แกแแแแจแแขแแก แฌแแจแแแกแแก.
BTRFS แกแแ แแแแ แแ
แแแแแแงแแแแ แแแ แกแแ แแแขแแแ แฃแแแแฃแ แแกแ แกแแคแ แแฎแแแ แแ แกแแแฃแแแ แ แ แแกแแแก แคแแกแแ. แแแขแแ แแ แแก แแแแ แแแแแ แแ แแฎแแแแ แแแแแกแแแแก แแแฌแแ แ. แแแ แฌแแฃแแแแฃแแ แแแ , แ แแ Linux-แแก แแแแ แแแแแชแแแ แแแแฎแแแ แแแแแก แแฅแแก แแกแแแแกแ แแแกแขแ แฃแแแแขแแแ แแ แแ แแ แแก แกแแญแแ แ แกแฎแแแกแ แแแแแ แแแ.
แแแแแ แจแแแฅแแแแ แขแแแ แกแแ แแแแ แแ แแแฌแงแแแแแแแแแ:
#lvcreate -L 256G --name backup backup
แแแแแ แแแแแคแแ แแแ แแก BTRFS-แจแ:
#mkfs.btrfs /dev/backup/backup
แแแแแ แจแแแฅแแแแ แกแแแแแขแแแ แฌแแ แขแแแแแ แแ แแแแแแแแ แแ แคแแแแฃแ แ แกแแกแขแแแแก แซแแ แแฃแแ แฅแแแกแแฅแชแแแแ:
#mkdir /backup
#mkdir /backup/btrfs
#mkdir /backup/btrfs/root
#mkdir /backup/btrfs/back
#ln -s /boot /backup/btrfs
# cat >>/etc/fstab << EOF
/dev/mapper/root-root /backup/btrfs/root btrfs defaults,space_cache,noatime,nodiratime 0 2
/dev/mapper/backup-backup /backup/btrfs/back btrfs defaults,space_cache,noatime,nodiratime 0 2
EOF
#mount -a
#update-initramfs -u
#update-grub
แแแแแ แจแแแฅแแแแ แแแ แแฅแขแแ แแแแ แกแแ แแแแ แแ แแกแแแกแแแแก:
#mkdir /backup/btrfs/back/remote
#mkdir /backup/btrfs/back/remote/root
#mkdir /backup/btrfs/back/remote/boot
แแแแแ แจแแแฅแแแแ แแแ แแฅแขแแ แแ แกแแ แแแแ แแ แกแแ แแแขแแแแกแแแแก:
#mkdir /root/btrfs-backup
แแแแแ แแแแแแแแแ แแ แกแแ แแแขแ:
แแแแ แ แกแแจแแแแแ 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 แแแแแแแแแก/แแแฆแแแแก แแแแแงแแแแแแ.
แแแ แแแแ แแแจแแแแ แจแแแซแแแแ แจแแแแ แแแแ แฎแแแแ แซแแแแ แแงแแก, แ แแแแแ... แแแกแแฌแงแแกแจแ, แงแแแแ แแแแแชแแแ แแแแแแแ แแแแ. แจแแแแแแแ แแแจแแแแ แแฅแแแแ แซแแแแแ แกแฌแ แแคแ, แ แแแแแ... แแแแแ แแแแ แแฎแแแแ แชแแแแแแแแแ.
แแแแแ แแ แแ แกแแ แแแขแ, แ แแแแแกแแช แฉแแแ แฉแแแแแแ แแ แแแจแ:
แแแแแ แ แแแแแแแแ 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
แแแแแ แจแแแแแแฌแแแ แแ แฉแแแแแ แแ แแแจแ:
#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
#cat /var/log/syslog | grep btrfs-backup
#crontab -e
0 2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
LVM แแฎแแแ แกแแ แแแแ แแ
แแแแแ แจแแแฅแแแแ แแฎแแแ แแฃแแ แกแแ แแแแ แแ แแแฌแงแแแแแแแแแ:
#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T backup/thin-pool
แแแแแ แแแแแงแแแแ ddrescue, แ แแแแแ... แกแแ แแแขแแแ แแแแแแงแแแแแแ แแ แฎแแแกแแฌแงแแก:
#apt-get install gddrescue
แแแแแ แจแแแฅแแแแ แแแ แแฅแขแแ แแ แกแแ แแแขแแแแกแแแแก:
#mkdir /root/lvm-thin-backup
แแแแแ แแแแแแแแแ แแ แกแแ แแแขแแแ:
แแแแ แ แจแแแแแฃแแ...#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".base"
PEND_SUFFIX=".pend"
SNAP_SUFFIX=".snap"
BACKUPS="backup"
BACKUPS_POOL="thin-pool"
export LVM_SUPPRESS_FD_WARNINGS=1
function terminate ()
{
echo "$1" >&2
exit 1
}
function wait_lock()
{
flock 98
}
function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}
function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}
function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}
function read_thin_id {
lvs --rows --reportformat basic --quiet -othin_id "$1/$2" | awk '{print $2}'
}
function read_pool_lv {
lvs --rows --reportformat basic --quiet -opool_lv "$1/$2" | awk '{print $2}'
}
function read_lv_dm_path {
lvs --rows --reportformat basic --quiet -olv_dm_path "$1/$2" | awk '{print $2}'
}
function read_lv_active {
lvs --rows --reportformat basic --quiet -olv_active "$1/$2" | awk '{print $2}'
}
function read_lv_chunk_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -ochunk_size "$1/$2" | awk '{print $2}'
}
function read_lv_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -olv_size "$1/$2" | awk '{print $2}'
}
function activate_volume {
lvchange -ay -Ky "$1/$2"
}
function deactivate_volume {
lvchange -an "$1/$2"
}
function read_thin_metadata_snap {
dmsetup status "$1" | awk '{print $7}'
}
function thindiff()
{
DIFF_VG="$1"
DIFF_SOURCE="$2"
DIFF_TARGET="$3"
DIFF_SOURCE_POOL=$(read_pool_lv $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_POOL=$(read_pool_lv $DIFF_VG $DIFF_TARGET)
if [ "$DIFF_SOURCE_POOL" == "" ]
then
(>&2 echo "Source LV is not thin.")
exit 1
fi
if [ "$DIFF_TARGET_POOL" == "" ]
then
(>&2 echo "Target LV is not thin.")
exit 1
fi
if [ "$DIFF_SOURCE_POOL" != "$DIFF_TARGET_POOL" ]
then
(>&2 echo "Source and target LVs belong to different thin pools.")
exit 1
fi
DIFF_POOL_PATH=$(read_lv_dm_path $DIFF_VG $DIFF_SOURCE_POOL)
DIFF_SOURCE_ID=$(read_thin_id $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_ID=$(read_thin_id $DIFF_VG $DIFF_TARGET)
DIFF_POOL_PATH_TPOOL="$DIFF_POOL_PATH-tpool"
DIFF_POOL_PATH_TMETA="$DIFF_POOL_PATH"_tmeta
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)
if [ "$DIFF_POOL_METADATA_SNAP" != "-" ]
then
(>&2 echo "Thin pool metadata snapshot already exist. Assuming stale one. Will release metadata snapshot in 5 seconds.")
sleep 5
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
fi
dmsetup message $DIFF_POOL_PATH_TPOOL 0 reserve_metadata_snap
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)
if [ "$DIFF_POOL_METADATA_SNAP" == "-" ]
then
(>&2 echo "Failed to create thin pool metadata snapshot.")
exit 1
fi
#We keep output in variable because metadata snapshot need to be released early.
DIFF_DATA=$(thin_delta -m$DIFF_POOL_METADATA_SNAP --snap1 $DIFF_SOURCE_ID --snap2 $DIFF_TARGET_ID $DIFF_POOL_PATH_TMETA)
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
echo $"$DIFF_DATA" | grep -E 'different|left_only|right_only' | sed 's/</"/g' | sed 's/ /"/g' | awk -F'"' '{print $6 "t" $8 "t" $11}' | sed 's/different/copy/g' | sed 's/left_only/copy/g' | sed 's/right_only/discard/g'
}
function thinsync()
{
SYNC_VG="$1"
SYNC_PEND="$2"
SYNC_BASE="$3"
SYNC_TARGET="$4"
SYNC_PEND_POOL=$(read_pool_lv $SYNC_VG $SYNC_PEND)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SYNC_VG $SYNC_PEND_POOL)
SYNC_PEND_PATH=$(read_lv_dm_path $SYNC_VG $SYNC_PEND)
activate_volume $SYNC_VG $SYNC_PEND
while read -r SYNC_ACTION SYNC_OFFSET SYNC_LENGTH ; do
SYNC_OFFSET_BYTES=$((SYNC_OFFSET * SYNC_BLOCK_SIZE))
SYNC_LENGTH_BYTES=$((SYNC_LENGTH * SYNC_BLOCK_SIZE))
if [ "$SYNC_ACTION" == "copy" ]
then
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SYNC_PEND_PATH" "$SYNC_TARGET"
fi
if [ "$SYNC_ACTION" == "discard" ]
then
blkdiscard -o $SYNC_OFFSET_BYTES -l $SYNC_LENGTH_BYTES "$SYNC_TARGET"
fi
done < <(thindiff "$SYNC_VG" "$SYNC_PEND" "$SYNC_BASE")
}
function discard_volume()
{
DISCARD_VG="$1"
DISCARD_LV="$2"
DISCARD_LV_PATH=$(read_lv_dm_path "$DISCARD_VG" "$DISCARD_LV")
if [ "$DISCARD_LV_PATH" != "" ]
then
echo "$DISCARD_LV_PATH found"
else
echo "$DISCARD_LV not found in $DISCARD_VG"
exit 1
fi
DISCARD_LV_POOL=$(read_pool_lv $DISCARD_VG $DISCARD_LV)
DISCARD_LV_SIZE=$(read_lv_size "$DISCARD_VG" "$DISCARD_LV")
lvremove -y --quiet "$DISCARD_LV_PATH" || exit 1
lvcreate --thin-pool "$DISCARD_LV_POOL" -V "$DISCARD_LV_SIZE"B --name "$DISCARD_LV" "$DISCARD_VG" || exit 1
}
function backup()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
SOURCE_PEND_LV="$SOURCE_LV$PEND_SUFFIX"
TARGET_PEND_LV="$TARGET_LV$PEND_SUFFIX"
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "Source base not found creating snapshot of $SOURCE_VG/$SOURCE_LV to $SOURCE_VG/$SOURCE_BASE_LV"
lvcreate --quiet --snapshot --name "$SOURCE_BASE_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo "Discarding $SOURCE_BASE_LV_PATH as we need to bootstrap."
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
sync
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found out of sync with source... removing..."
lvremove -y --quiet $TARGET_BASE_LV_PATH || exit 1
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
sync
fi
fi
SOURCE_BASE_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_VG/$TARGET_LV not found. Creating empty volume."
lvcreate --thin-pool "$BACKUPS_POOL" -V "$SOURCE_BASE_SIZE"B --name "$TARGET_BASE_LV" "$TARGET_VG" || exit 1
echo "Have to rebootstrap. Discarding source at $SOURCE_BASE_LV_PATH"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
TARGET_BASE_POOL=$(read_pool_lv $TARGET_VG $TARGET_BASE_LV)
TARGET_BASE_CHUNK_SIZE=$(read_lv_chunk_size $TARGET_VG $TARGET_BASE_POOL)
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
echo "Discarding target at $TARGET_BASE_LV_PATH"
discard_volume "$TARGET_VG" "$TARGET_BASE_LV"
sync
fi
if [ "$SOURCE_PEND_LV_PATH" != "" ]
then
echo "$SOURCE_PEND_LV_PATH found removing..."
lvremove -y --quiet "$SOURCE_PEND_LV_PATH" || exit 1
sync
fi
lvcreate --quiet --snapshot --name "$SOURCE_PEND_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
sync
if [ "$TARGET_PEND_LV_PATH" != "" ]
then
echo "$TARGET_PEND_LV_PATH found removing..."
lvremove -y --quiet $TARGET_PEND_LV_PATH
sync
fi
lvcreate --quiet --snapshot --name "$TARGET_PEND_LV" "$TARGET_VG/$TARGET_BASE_LV" || exit 1
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
SOURCE_PEND_LV_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_PEND_LV")
lvresize -L "$SOURCE_PEND_LV_SIZE"B "$TARGET_PEND_LV_PATH"
activate_volume "$TARGET_VG" "$TARGET_PEND_LV"
echo "Synching $SOURCE_PEND_LV_PATH to $TARGET_PEND_LV_PATH"
thinsync "$SOURCE_VG" "$SOURCE_PEND_LV" "$SOURCE_BASE_LV" "$TARGET_PEND_LV_PATH" || exit 1
sync
TARGET_DATE_SUFFIX=$(suffix)
lvcreate --quiet --snapshot --name "$TARGET_LV$TARGET_DATE_SUFFIX" "$TARGET_VG/$TARGET_PEND_LV" || exit 1
sync
lvremove --quiet -y "$SOURCE_BASE_LV_PATH" || exit 1
sync
lvremove --quiet -y "$TARGET_BASE_LV_PATH" || exit 1
sync
lvrename -y "$SOURCE_VG/$SOURCE_PEND_LV" "$SOURCE_BASE_LV" || exit 1
lvrename -y "$TARGET_VG/$TARGET_PEND_LV" "$TARGET_BASE_LV" || exit 1
sync
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function verify()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo Comparing "$SOURCE_BASE_LV_PATH" with "$TARGET_BASE_LV_PATH"
cmp "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function resync()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"
CMP_OFFSET=0
while [[ "$CMP_OFFSET" != "" ]] ; do
CMP_MISMATCH=$(cmp -i "$CMP_OFFSET" "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH" | grep differ | awk '{print $5}' | sed 's/,//g' )
if [[ "$CMP_MISMATCH" != "" ]] ; then
CMP_OFFSET=$(( CMP_MISMATCH + CMP_OFFSET ))
SYNC_OFFSET_BYTES=$(( ( CMP_OFFSET / SYNC_BLOCK_SIZE ) * SYNC_BLOCK_SIZE ))
SYNC_LENGTH_BYTES=$(( SYNC_BLOCK_SIZE ))
echo "Synching $SYNC_LENGTH_BYTES bytes at $SYNC_OFFSET_BYTES from $SOURCE_BASE_LV_PATH to $TARGET_BASE_LV_PATH"
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
else
CMP_OFFSET=""
fi
done
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function list()
{
LIST_SOURCE_VG="$1"
LIST_SOURCE_LV="$2"
LIST_TARGET_VG="$BACKUPS"
LIST_TARGET_LV="$LIST_SOURCE_VG-$LIST_SOURCE_LV"
LIST_TARGET_BASE_LV="$LIST_TARGET_LV$SNAP_SUFFIX"
lvs -olv_name | grep "$LIST_TARGET_BASE_LV.$DATE_REGEX"
}
function remove()
{
REMOVE_TARGET_VG="$BACKUPS"
REMOVE_TARGET_LV="$1"
lvremove -y "$REMOVE_TARGET_VG/$REMOVE_TARGET_LV"
sync
}
function removeall()
{
DATE_OFFSET="$3"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$SNAPSHOT"
done < <(list "$1" "$2" | grep "$FILTER")
}
(
COMMAND="$1"
shift
case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1" "$2"
;;
"list")
list "$1" "$2"
;;
"thindiff")
thindiff "$1" "$2" "$3"
;;
"thinsync")
thinsync "$1" "$2" "$3" "$4"
;;
"verify")
wait_lock_or_terminate
verify "$1" "$2"
;;
"resync")
wait_lock_or_terminate
resync "$1" "$2"
;;
"remove")
wait_lock_or_terminate
remove "$1"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2" "$3"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE
EOF
แ แแก แแแแแแแก...?แจแแแชแแแก แแ แซแแแแแแแแก แแ แแแแแแแแแก แแฎแแแ แกแแแแจแแขแแแแก แแแแแแฃแแแ แแแแกแแแแก แแ thin_delta-แแแ แแแฆแแแฃแ แแ แฌแแ แแ แกแฃแ แแแก แจแแ แแก แกแฎแแแแแแก แกแแแฅแ แแแแแแชแแแกแแแแก แกแฎแแ แแแแ แแแฌแงแแแแแแแแแ ddrescue แแ blkdiscard-แแก แแแแแงแแแแแแ.
แแแแแ แแ แแ แกแแ แแแขแ, แ แแแแแกแแช แฉแแแ แแแแแแแ แแ แแแจแ:
แชแแขแ แแแขแ แแแจ#cat >/root/lvm-thin-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
BACKUP_SCRIPT="$SCRIPT_DIR/lvm-thin-backup.sh"
RETENTION="-60 days"
$BACKUP_SCRIPT backup images linux-dev
$BACKUP_SCRIPT backup images win8
$BACKUP_SCRIPT backup images win8-data
#etc
$BACKUP_SCRIPT removeall images linux-dev "$RETENTION"
$BACKUP_SCRIPT removeall images win8 "$RETENTION"
$BACKUP_SCRIPT removeall images win8-data "$RETENTION"
#etc
EOF
แ แแก แแแแแแแก...?แแงแแแแแก แฌแแแ แกแแ แแแขแก แฉแแแแแแแแแ แแฎแแแ แขแแแแแแก แกแแ แแแแ แแ แแกแแแแแก แจแแกแแฅแแแแแแ แแ แกแแแฅแ แแแแแแชแแแกแแแแก. แกแแ แแแขแ แแแขแแแแแก แฉแแแแแแแแแ แขแแแแแแก แแ แแแฅแขแแฃแ แแแแ แแแก, แ แแแแแแแช แกแแญแแ แแ แแแแ แกแแแฅแ แแแแแแชแแแก แจแแแแแ แชแแแแแแแแแแก แแแแแงแฃแ แแก แแแแแแแแกแแแแก.
แแก แกแแ แแแขแ แฃแแแ แแงแแก แ แแแแฅแขแแ แแแฃแแ, แกแแแแช แแแแแแแแฃแแแ แแฎแแแ แขแแแแแแก แกแแ, แ แแแแแแแกแแแแกแแช แฃแแแ แแแแแแแแก แกแแ แแแแ แแ แแกแแแแ. แแแชแแแฃแแ แกแแฎแแแแแ แแฎแแแแ แกแแแแฃแกแขแ แแชแแ แแแแแแแแกแแแแกแแ. แแฃ แแกแฃแ แ, แจแแแแซแแแแ แแแฌแแ แแ แกแแ แแแขแ, แ แแแแแแช แกแแแฅแ แแแแแแแก แงแแแแ แขแแแก.
แแแแแ แแแแชแแ แฃแคแแแแแแ:
#chmod +x /root/lvm-thin-backup/cron-daily.sh
#chmod +x /root/lvm-thin-backup/lvm-thin-backup.sh
แแแแแ แจแแแแแแฌแแแ แแ แฉแแแแแ แแ แแแจแ:
#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
#cat /var/log/syslog | grep lvm-thin-backup
#crontab -e
0 3 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
แแแ แแแแ แแแจแแแแ แฎแแแแ แซแแแแ แแฅแแแแ, แ แแแแแ... แแฎแแแ แขแแแ แกแ แฃแแแ แแฅแแแแ แกแแแฅแ แแแแแแแฃแแ แงแแแแ แแแแแงแแแแแฃแแ แกแแแ แชแแก แแแแแ แแแแ. LVM แแฎแแแ แแแขแแแแแแชแแแแแแก แฌแงแแแแแแ, แฉแแแ แแแชแแ, แ แแแแแ แแแแแแแ แแแแแแงแแแแแ แ แแแแฃแ แแ, แแแแขแแ แแฎแแแแ แ แแแแฃแ แแ แแแแแงแแแแแฃแแ แแฎแแแ แแแชแฃแแแแแก แแแแแแแ แแแแแ แแแแ.
แจแแแแแแแ แแแจแแแแแแ แแแแแแแแ แแแก แแแแแชแแแแแก แแขแแแแแ แแแแ LVM แแฎแแแ แแแขแแแแแแชแแแแแแก แแแจแแแแแแ แแแแแแแแแแก แชแแแแแแแแก แฌแงแแแแแแ.
แแแแฎแแ แ แ แแแฎแแ:
#time /root/btrfs-backup/cron-daily.sh
real 0m2,967s
user 0m0,225s
sys 0m0,353s
#time /root/lvm-thin-backup/cron-daily.sh
real 1m2,710s
user 0m12,721s
sys 0m6,671s
#ls -al /backup/btrfs/back/remote/*
/backup/btrfs/back/remote/boot:
total 0
drwxr-xr-x 1 root root 1260 ะผะฐั 26 09:11 .
drwxr-xr-x 1 root root 16 ะผะฐั 6 09:30 ..
drwxr-xr-x 1 root root 322 ะผะฐั 26 02:00 .@base
drwxr-xr-x 1 root root 516 ะผะฐั 6 09:39 [email protected]
drwxr-xr-x 1 root root 516 ะผะฐั 6 09:39 [email protected]
...
/backup/btrfs/back/remote/root:
total 0
drwxr-xr-x 1 root root 2820 ะผะฐั 26 09:11 .
drwxr-xr-x 1 root root 16 ะผะฐั 6 09:30 ..
drwxr-xr-x 1 root root 240 ะผะฐั 26 09:11 @.@base
drwxr-xr-x 1 root root 22 ะผะฐั 26 09:11 @home.@base
drwxr-xr-x 1 root root 22 ะผะฐั 6 09:39 @[email protected]
drwxr-xr-x 1 root root 22 ะผะฐั 6 09:39 @[email protected]
...
drwxr-xr-x 1 root root 240 ะผะฐั 6 09:39 @[email protected]
drwxr-xr-x 1 root root 240 ะผะฐั 6 09:39 @[email protected]
...
#lvs -olv_name,lv_size images && lvs -olv_name,lv_size backup
LV LSize
linux-dev 128,00g
linux-dev.base 128,00g
thin-pool 1,38t
win8 128,00g
win8-data 2,00t
win8-data.base 2,00t
win8.base 128,00g
LV LSize
backup 256,00g
images-linux-dev.base 128,00g
images-linux-dev.snap.2020-03-08-10-09-11 128,00g
images-linux-dev.snap.2020-03-08-10-09-25 128,00g
...
images-win8-data.base 2,00t
images-win8-data.snap.2020-03-16-14-11-55 2,00t
images-win8-data.snap.2020-03-16-14-19-50 2,00t
...
images-win8.base 128,00g
images-win8.snap.2020-03-17-04-51-46 128,00g
images-win8.snap.2020-03-18-03-02-49 128,00g
...
thin-pool <2,09t
แ แ แแแแจแแ แจแแ แแก แแแแฃแแฃแ แแแฏแแแแแก?
แกแแแแ แแฃแแแ, แแแแก แแแแแแแแกแฌแแแแแแ, แ แแ LVM LV แแแแแแฃแ แ แแแชแฃแแแแแแ แจแแแซแแแแ แแงแแก LVM PV แคแแแแแฃแ แ แแแชแฃแแแแแแ แกแฎแแ VG-แแแแกแแแแก. LVM แจแแแซแแแแ แแงแแก แ แแแฃแ แกแแฃแแ, แแแแฃแแแ แ แแแฏแแแแแแก แแกแแแแกแแ. แแก แแซแแแแก LVM-แก แฃแแแแฃแ แแก แแแฅแแแแแแแก.
PS
แจแแแแแ แกแขแแขแแแจแ แฉแแแ แจแแแแชแแแแแ แแแแแแแงแแแแ แ แแแแแแแแ แแกแแแแกแ แแแแแแฃแ แ แจแแแแฎแแแก แกแแกแขแแแ/KVM, แ แแแแ แช แกแแคแฃแซแแแแ แแแแแแแแฌแแแแแฃแแ แจแแแแฎแแแก/แแ แแแแกแขแแ แแก แจแแกแแฅแแแแแแ แ แแแแแแแแ แแแแขแแแแแขแแ, แกแแฎแแแก แแแกแแขแแแแก, แกแแฎแแแก แแแขแแ แแแขแแกแ แแ P2P แฅแกแแแแแแก แแแแแงแแแแแแ.
แฌแงแแ แ: www.habr.com