áá±á·áááºáá±á¬ááºážáá±á¬á
md RAID + LVM ááᯠá¡áá¯á¶ážááŒá¯á KVM á¡ááœáẠáá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á
áá
Ạáááºáá±á¬ááºááŒááºážá áááºááœá±á·áá»áá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááᯠá¡ááá¯ááºážá¡ááá¯ááºážááŸáá·áº áá»áŸáá±ááá¯áá«áááºá
á¡ááá¯áá«á¡á á®á¡á ááºááœááºáá«áááºáááá·áºáááº-
- NVMe SSD á០md RAID 1 ááá¯áááºáá±á¬ááºááŒááºážá
- SATA SSD ááŸáá·áº áá¯á¶ááŸáẠdrives áá»á¬ážá០md RAID 6 ááᯠá á¯á ááºážááŒááºážá
- SSD RAID 1/6 ááœáẠTRIM/DISCARD áá¯ááºáá±á¬ááºáá»ááºá á¡ááºá¹áá«áááºáá»á¬ážá
- á¡áá»á¬ážáá¯á¶áž disk áá»á¬ážáá±á«áºááœáẠbootable md RAID 1/6 array ááá¯áááºáá®ážááŒááºážá
- BIOS ááœáẠNVMe áá¶á·ááá¯ážááŸá¯áááŸááá«á NVMe RAID 1 ááœáẠá áá áºááᯠááá·áºááœááºážááŒááºážá
- LVM cache ááŸáá·áº LVM áá«ážááœáŸá¬ááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
- BTRFS áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á¡áááºáá°ážáá°áááºá¡ááœáẠáá±ážááá¯á·/áááºáá¶áá«á
- BTRFS á ááá¯áẠá¡áááºááááºážááŒááºážá¡ááœáẠLVM áá«ážááœáŸá¬áá±á¬ áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááŸáá·áº thin_delta ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
á
áááºáááºá
á¬ážááẠááŒá±á¬ááºááŒáá·áºáá±ážáá«á
ááŒáŸá±á¬áá»ááŸá¬
á€áá±á¬ááºážáá«ážá០áá á¹á ááºáž/á¥ááá¬/áá¯ááº/á¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž/áá±áá¬ááᯠá¡áá¯á¶ážááŒá¯ááŒááºáž ááá¯á·ááá¯áẠá¡áá¯á¶ážáááŒá¯ááŒááºážá á¡áá»áá¯ážáááºáá»á¬ážá¡ááœáẠá á¬áá±ážáá°ááẠáááºááá·áºáá¬áááºá០ááá°áá«á á€á¡ááŒá±á¬ááºážá¡áá¬ááᯠáááºááá·áºáááºážááŒáá·áºáááᯠáááºááŸá¯ááŒááºáž ááá¯á·ááá¯áẠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá á€áá¯ááºáááºáá»á¬ážá á¡áá»áá¯ážáááºá¡á¬ážáá¯á¶ážá¡ááœáẠáááºááẠáá¬áááºááŸááááºáᯠáá°ááá«áááºá ááŒá áºááá¯ááºáá±á¬á¡áá»áá¯ážáááºáá»á¬áž áá«áááºáááº-
- ááŒáœááºááŒáœááºááŒá±á¬áº NVMe SSDsá
- SSD drives áá»á¬ážá á¡áá¶ááœááºážáááºážááŒá áºááŸáá·áº áá»ááºááœááºááŸá¯áá»á¬ážááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž á¡áá¯á¶ážááŒá¯áá¬ážáááºá
- á¡áááºáááá¹áá°áá»á¬ážá¡áá«á¡ááẠáááá¯ááºááºáá»á¬ážá¡á¬ážáá¯á¶ážááŸá áá±áá¬á¡á¬ážáá¯á¶ážááᯠá¡ááŒá®ážá¡á á®ážáá¯á¶ážááŸá¯á¶ážááŒááºážá
- ááœááºááŒá°áᬠáá¬á·ááºáá² áá»áá¯á·ááœááºážááŒááºážá
- á¡áá»áááºááœá±á á¡á¬áá¯á¶ááŒá±á¬ááœá± áá²á· ááá¯ááºáá¶ááœá± ááŒá¯ááºážáá®ážáá áºáááºá
- á¡áááºááœááºáá±á¬áºááŒáá¬ážááŒááºážáááŸááá±á¬ á¡ááŒá¬ážá¡áá»áá¯ážáááºáá»á¬ážá
áá¶
áááŸáááá¯ááºáá±á¬áá»á¬ážááŸá¬-
Intel Core i2013 / Haswell ááŸáá·áºá¡áá° Z87 áá»á áºááºáááºááŒáá·áº 7 áá¯ááŸá áºáááºážáá»ááºá០Motherboard
- áááá¯áááºáᬠ4 cores, 8 threads
- 32 GB DDR3 RAM
- 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-enabled firmware ááᯠHBA firmware ááŒáá·áº áááºááœááºáá»ááºááŸáááŸá á¡á á¬ážááá¯ážáá²á·áááº-
- áááºááẠဠadapter ááᯠá¡áá»áááºáááœá±áž áá¯ááºáá áºááá¯ááºááŒá®áž áááºááœá±á·áá±á¬ á¡ááŒá¬ážáá áºáá¯ááŸáá·áº á¡á á¬ážááá¯ážááá¯ááºáááºá
- TRIM/Discard ááẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº disks áá»á¬ážááœáẠá¡áá¯ááºáá¯ááºáá±á¬ááŒá±á¬áá·áº... RAID firmware ááœáẠဠcommand áá»á¬ážááᯠáá¯á¶ážáááá¶á·ááá¯ážáá«á áá±áá¯áá»á¡á¬ážááŒáá·áº HBA ááẠáááºá áºáá¬ážáá±á«áºá០áááºááá·áº command áá»á¬ážááᯠááá¯á·áááºááᯠááá¯áá áá¯ááºáá«á
áá¬á·ááºáááá¯ááºáá»á¬áž - áááºááºáá±á¬á·áá»á¬ážá¡ááœááºáá²á·ááá¯á· 8 áá±á¬ááºáá¯á¶á¡áá»ááºááœáẠ7 TB ááá¬áááŸááá±á¬ HGST Travelstar 1000K1 á 2.5 á¡ááá¯ááºážááá¯ááºážá á€áááá¯ááºááºáá»á¬ážááẠááááºá RAID 6 á¡áááºážá¡áá»ááºážááœáẠááŸááá²á·áááºá áááºážááá¯á·ááẠá áá áºáá áºááœááºáááºáž á¡áá¯á¶ážááŒá¯ááá¯ááºáááºááŒá áºáááºá áá±áááœááºáž á¡áááºááááºážáááºážáááºá
áááºáá±á¬ááºážááá·áºááœááºážáá¬ážáááº-
6 á¡ááá¯ááºážááá¯ááºáž SATA SSD áá±á¬áºááẠSamsung 860 QVO 2TBá ဠSSD áá»á¬ážááẠááŒá®ážáá¬ážáá±á¬ááá¬á ááá¯á¡ááºáááºá SLC áááºááŸáºáá áºáá¯áá«áááºááŸá¯á áá¯á¶ááŒááºá áááºáá»áááŸá¯ááŸáá·áº á á»á±ážááŸá¯ááºážáá»áá¯áá¬ááŸá¯ááᯠááá¯áá»ááºáááºá dmesg ááœáẠá á¬ááŒá±á¬ááºážááŒáá·áº á á áºáá±ážáá¬ážááá·áº discard/zero á¡ááœáẠáá¶á·ááá¯ážááŸá¯ ááá¯á¡ááºáá«áááºá
kernel: ata1.00: Enabling discard_zeroes_data
NVMe SSD áá±á¬áºááẠSamsung SSD 2 EVO 970GB á áá¯á
ဠSSDs áá»á¬ážá¡ááœááºá ááá·áºááá¯á¡ááºáá»ááºá¡ááœáẠáá»áááºážáááº/á á¬áá±ážá¡ááŒááºááŸá¯ááºážááŸáá·áº á¡áááºážá¡ááŒá áºá áœááºážáááºááẠá¡áá±ážááŒá®ážáá«áááºá áá°ááá¯á·á¡ááœáẠáá±ááá¯ááºáá®á áá±áá»á¬áá±á«ááºá áá±ážáá¬á ááá¯ááºáá«á ááá RAID áááºáá°ááŒá¯ááŸá¯á¡ááœááºáž ááŒáœááºááœáá¬áááºá¡áá ááŒá±á¬áºáá«á
8 x NVMe SSD á¡ááœáẠStarTech PEX2M2E2 adapter ááᯠPCIe 3.0 8x á¡áá±á«ááºááœáẠááá·áºááœááºážáá¬ážáááºá áááºážááẠHBA áá áºáá¯áá¬ááŒá áºáá±á¬áºáááºáž NVMe á¡ááœááºááŒá áºáááºá Built-in PCIe ááá¯ááºáá«ááŸáááŒááºážááŒá±á¬áá·áº motherboard á០PCIe bifurcation áá¶á·ááá¯ážááŸá¯áááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº á á»á±ážáá±á«áá±á¬ adapter áá»á¬ážááŸáá·áº ááœá²ááŒá¬ážáááºá áááºážááẠx1 PCIe 1.0 slot áá áºáá¯ááŒá áºááá·áºááá¯áẠPCIe ááŸáá·áº ááŸá±ážá¡áá»áá¯á¶ážá áá áºááœááºááẠá¡áá¯ááºáá¯ááºáááºááŒá áºáááºá áá¯á¶ážá á¶á¡ááá¯ááºáž ááá·áºáá±á¬áºáá²á· á¡ááŸáááºáá²á·á á¡á²áá®ááŸá¬ RAID ááœá± áááŸááá°ážá áá¯ááºáá±á«áºááœáẠbuilt-in BIOS áááŸááá«á ááá¯á·ááŒá±á¬áá·áºá ááá·áºá áá áºááẠNVMe ááŸáá·áº á áááºááẠá¡á¶á·ááŒááœááºáá±á¬ááºážáá±á¬ááºá¡á±á¬áẠáááºáá°áááá·áºáááºááá¯ááºáá«á á€á ááºáá á¹á ááºážááá»á±ážáá°ážááŒá±á¬áá·áº NVMe RAID ááᯠáá»á¬ážá áœá¬áá»á±á¬á·áááºážá á±áááºá
á€á¡á áááºá¡ááá¯ááºážááẠá áá áºááœáẠá¡ááá²á· 8x PCIe 3.0 áá áºáá¯áááºážáá¬ááŸááá±ááŒááºážááŒá±á¬áá·áºááŒá áºááŒá®ážá á¡ááá²á· slot 2 áá¯ááŸááá«áá áááºážááᯠ4 á á»á±ážááŸá¯ááºážááŒáá·áº áááºááá·áºáá±áá¬ááœááºáááᯠáááºáá°ááá¯ááºáá±á¬ PEX2M1E600 ááá¯á·ááá¯áẠanalogues ááŸá áºáá¯ááŒáá·áº á¡ááœááºááá° á¡á á¬ážááá¯ážááá¯ááºáá«áááºá áá°áááºá
áá¬á·ááºáá² ááá¯á·ááá¯áẠáááºáááºáá«ááŸááá±á¬ áá»á áºááºáááº/BIOS RAID á¡áá»áá¯ážá¡á á¬ážá¡á¬ážáá¯á¶ážááᯠááŒááºážáááºááŒááºážááẠSSD/HDD áááºážááá¯á·ááá¯ááºááá¯ááºááŸááœá²á áá±áá¬á¡á¬ážáá¯á¶ážááᯠááááºážááááºážáá¬ážá áẠá áá áºáá áºáá¯áá¯á¶ážááᯠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážá¡á á¬ážááá¯ážááá¯ááºá á±ááẠááááºááᬠááŒá¯áá¯ááºáá²á·ááŒááºážááŒá áºáááºá á¡áá±á¬ááºážáá¯á¶ážááá±á¬á·á áá¬á·ááºáá²á¡áá áº/ááœá²ááŒá¬ážáá²á· áá¬á·ááºáá²ááá¯ááŒá±á¬ááºážáá²á·á¡áá« ááá·áºááœááºážáá¬ážáá²á· áááºáááºááŸá¯á áá áºááá¯áá±á¬áẠááááºážáááºážááá¯ááºá á±ááá¯á·á¡ááœáẠá¡áá±á¬ááºážáá¯á¶ážáá«áá²á á¡áááá¡áá»ááºááŸá¬ SATA ááŸáá·áº PCIe port áá»á¬ážááŸááááºá áááºážááẠááá¯ááºááá¯áẠCD ááá¯á·ááá¯áẠbootable flash drive áá²á·ááá¯á·ááŒá áºááŒá®áž á¡ááœááºáá»ááºááŒááºááŒá®áž á¡áááºážááẠááŒá®ážáá¬ážáááºá
áá¬ááá®ááá¯ááŸááá¯ááºááẠáááºáá¬ááŒá áºááœá¬ážáá²ááá¯áᬠáááºáááá«ááẠ- áá áºáá«áá áºáá¶ááŸá¬ array áá áºáá¯áá¯á¶ážááᯠáááºáá°ááá¯á· á¡áá±ážáááŒá®ážááá¯á¡ááºáá«áááºá áá«áá±ááá·áº data ááá¯á¶ážááŸá¯á¶ážáá»ááºáá°ážá ááá¯ááá¯á·áá¯ááºáá±á¬ááºáááºá áá±á¬áºááŒáá¬ážáá±á¬áá®áá®áá¬á¡á¬ážáá¯á¶ážááẠá á¶ááá á¹á á 5.25 bays ááŸá slides áá»á¬ážáá±á«áºááœáẠá¡áááºááŒá±á áœá¬áááºááŸááá«áááºá
áá±á¬ááºážááŒá®áá Linux ááœáẠSSD caching áááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬áááºážáááºážáá»á¬ážááá¯á ááºážáááºáááºá¡ááœááºáá±áá»á¬áá«áááºá
áá¬á·ááºáá²á á®ážáááºážááŸá¯áá»á¬ážááẠááŒá®ážááœá±á·ááœááºáá±á¬ááºážáááºá ááœáá·áºáá«á á¡áá¯ááºáá¯ááºáááºááŒá áºá á± áá»ááºáááºááŒá áºá á± ááŒá®ážáá±á¬á· mdad ááŸá¬ ááœá±ážáá»ááºá áá¬ááœá± á¡ááŒá²ááŸááááºá
soft
ááááºá EOL ááŸáá·áºáá®ážá ááºááá·áº áá¬á·ááºáá²ááœáẠDebian 8 Jessie ááᯠááá·áºááœááºážáá²á·áááºá RAID 6 ááᯠLVM ááŸáá·áºááœá²áááºáá¬ážáá±á¬ á¡áááºáá±á¬áºááŒáá« HDD áá»á¬ážá០á á¯áá±ážáá¬ážáá«áááºá áááºážááẠkvm/libvirt ááœáẠvirtual machines áá»á¬ážááᯠáá¯ááºáá±á¬ááºáááºá
áá¬ááŒá áºááá¯á·áá²ááá¯áá±á¬á· á á¬áá±ážáá°ááẠááá®ážáá±á¬áẠbootable SATA/NVMe flash drive áá»á¬ážááᯠáááºáá®ážáá¬ááœáẠááá·áºáá»á±á¬áºáá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááŸáááŒá®ážá áá¯á¶ááŸáẠapt template ááᯠááá»áá¯ážáá»ááºá á±áááºá¡ááœááºá Ubuntu 18.04 ááᯠáá¯á¶áá±á¬ááºá áœá¬ áááºááŒáááºááŒá®ážáá¬ážááŒá áºáá±á¬áºáááºážá 3 ááŸá áºáá»ááºáá±ážáá±á¬ áá áºááŸááºá áá áºá¡ááŒá Ạááœá±ážáá»ááºáá²á·áá«áááºá áá¶á·ááá¯ážááŸá¯áá±á«á·áá±á
áá±á¬áºááŒáá¬ážáá±á¬á áá áºááœáẠáá»áœááºá¯ááºááá¯á·ááá¯á¡ááºáá±á¬ áá¬á·ááºáá²áááá¯ááºáá¬áá»á¬áž á¡á¬ážáá¯á¶ážááᯠáá±á¬ááºá áºá¡ááœááºážá០áá«ááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠáááºááá·áºááŒááºááá±á¬á·ááºáá² ááá¯á·ááá¯áẠáááá¯ááºáá¬áá»á¬áž áááá¯á¡ááºáá«á
áááºáááºááŸá¯á¡ááœááºááŒááºáááºáá±áááº
á áá áºááá·áºááœááºážááẠUbuntu Desktop Image ááá¯á¡ááºáááºá áá¬áá¬á áá áºááœáẠUEFI á áá áºá¡áááºážááá·áºááᯠáá áºáá áºáá¯áá±á«áºáááºá á¡ááŸááá¬ážá¡á¬ážáá¯á¶ážááᯠáá»ááºáá®ážáá áºááŒááºážááŒáá·áº á¡ááœááºá¡áá»áœá¶ááœááºáááºááŸá¯ááᯠááŒáááá¯ááºááá·áº ááŒááºážáááºáá±á¬ááá·áºááœááºážáááááá¬áá»áá¯ážááŸááááºá ááá¯á·ááŒá±á¬áá·áº áááºážááᯠUEFI áá¯ááºááœááºáᬠááá·áºááœááºážáá¬ážáááºá áááºááá·áºááœá±ážáá»ááºááœáá·áºá០ááá±ážáá«á
áá«ááᯠáá»áœááºáá±á¬áºááá¯á· ááá»á±áááºáá°ážá
á¡áááºááŒá±á¬áá·áºáááºážáá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá UEFI boot ááẠboot software RAID ááŸáá·áº á¡ááœááºáááá¬ááááŒá áºáá±á¬ááŒá±á¬áá·áº... UEFI ESP á¡áááºážááá·áºá¡ááœáẠáááºáá°áá»áŸ áá»áœááºá¯ááºááá¯á·á¡á¬áž ááŒáá¯áááºá á¬áááºážáá±ážáá¬ážáááºá USB á¡áá±á«ááºááœáẠESP partition ááᯠflash drive ááœááºáá¬ážááẠá¡ááŒá¶ááŒá¯ááá·áº á¡áœááºááá¯ááºážááœáẠáá»ááºááŒá¯ááºáááºážáá»á¬áž ááŸááááºá ááá¯á·áá±á¬áº áááºážááẠáá¡á±á¬ááºááŒááºááá·áºá¡áá»ááºááŒá áºáááºá UEFI BIOS ááẠá€á¡áááºážááá·áºááá¯ááŒááºááœá±á·ááŒááºážááŸááá¬ážáá®ážááá¯ááºáá±á¬ áááºáá¬áá±áá¬áá¬ážááŸááºáž 1 áá«áá±á¬ áá±á¬á·ááºáá² mdadm RAID 0.9 ááá¯á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá»ááºááŒá¯ááºáááºážáá»á¬áž ááŸááá«áááºá ááá¯á·áá±á¬áº BIOS ááá¯á·ááá¯áẠá¡ááŒá¬ážáá¬á·ááºáá² OS á០ESP ááœáẠáá áºáá¯áá¯áá±ážááŒá®áž á¡ááŒá¬ážááá¯á· áááºáá°ááŒá¯ááẠáá±á·ááœá¬ážááá·áºááá¯ááºá¡á±á¬áẠáááºážááẠáá»á±á¬áºááœáŸááºááœááºá¡ááá¯ááºá¡ááá·áºáá áºáá¯ááŒá áºáááºá ááŸááºáá»á¬ážá
ááá¯á·á¡ááŒááºá UEFI boot ááẠNVRAM áá±á«áºááœááºáá°áááºáááºá áááºážááẠdisks áá»á¬ážááŸáá·áºá¡áá° system á¡áá áºááá¯á·ááœáŸá±á·áááºááá¯ááºáá±á¬ááŒá±á¬áá·áºá motherboard áá¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºáááºá
áá«ááŒá±á¬áá·áº áá®ážá¡áá áºááᯠááŒááºáááºáá®ááœááºááŸá¬ ááá¯ááºáá«áá°ážá áá»áœááºá¯ááºááá¯á·ááœáẠUEFI-áááá¬áá áá áºáá»á¬ážááœáẠCSM ááá¯ááºáá°ááœááºá¡áááºááŒáá·áº á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬á á¡áá»áááº-á ááºážáááºáá¬ážáá±á¬ á¡ááá¯ážáá ááºáá®ážá ááᯠLegacy/BIOS boot áá¯áá±á«áºááœááºááŒá®ážááŒá áºáááºá á¡á²áá«ááᯠá ááºáá±á«áºááá± áááºááŸá¬ážááŒá®áž áá»á±á¬áá®áá±á¬ááºážáááºá áá¬áá¬ááœá±ááᯠá á¯ááºáá¯ááºááŒá®áž á áá¯á áœááºáá²á· á¡áááºáá²á· áá¯ááºááá¯ááºáááºá
Ubuntu á desktop áá¬ážááŸááºážááá¯áááºáž Legacy bootloader ááŒáá·áº áá±á¬ááºážá áœá¬ááá·áºááœááºážááááá±á¬áºáááºážá áááºážááá¯á·ááŒá±á¬ááá·áºá¡ááá¯ááºáž á€áá±áá¬ááœáẠá¡áááºážáá¯á¶áž ááœá±ážáá»ááºá áá¬áá»á¬ážááŸááá«áááºá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá¬á·ááºáá²ááᯠá á¯áá±á¬ááºážááŒá®áž Ubuntu Live bootable flash drive á០á áá áºá¡á¬áž áááºáá«á áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á·áá»áºáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºááẠááá¯á¡ááºáááºááŒá áºáááŒáá·áº ááá·áºá¡ááœáẠá¡áááºááŒá±áá±á¬ ááœááºáááºááᯠá áá áºááá·áºááœááºážáá«áááºá á¡áááºáááŒá±áá«áá áááºááẠááá¯á¡ááºáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠflash drive ááœááºááŒáá¯áááºáááºááá¯ááºáááºá
áá»áœááºá¯ááºááá¯á·ááẠDesktop áááºáááºážáá»ááºááá¯á·ááœá¬ážáᬠterminal emulator ááá¯ááœáá·áºááŒá®áž ááœááºááœá¬ážáááº-
#sudo bash
áááºááá¯áá²âŠ?á¡áááºáá«á
á¬ááŒá±á¬ááºážááẠsudo ááŸáá·áºáááºáááºáá±á¬ holiwars á¡ááœáẠcanonical trigger ááŒá
áºáááºá á áПá¡ááœáá·áºá¡áááºážááœá± ááá¯ááŒá®ážáá¬áááºáПááá¯ááŒá®ážáá²á·áá¬áááºá áá±ážá
áá¬ááŸááá¬á áááºážááá¯ááºáááºáž áá°ááá¯ááºáá«á·ááá¬ážá á€áááºážááŒáá·áº sudo ááá¯á¡áá¯á¶ážááŒá¯ááŒááºážááẠá¡áááºážáá¯á¶ážáááááá¬ážááááŒá±á¬ááºáž áá°á¡áá»á¬ážááááºááŒááºááŒáááºá ááá¯á·áá±á¬áº-
#apt-get install mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc
áá¬ááŒá±á¬áá·áº ZFS ááá¯ááºáá¬áá²...áá»áœááºá¯ááºááá¯á·áááœááºááŒá°áá¬ááœáẠáá±á¬á·ááºáá²ááᯠááá·áºááœááºážáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á hardware ááᯠáá±á¬ááºážááŸááºáááºá¡ááœáẠá€áá±á¬á·ááºáá²ááºá developer áá»á¬ážáᶠááá¯á¡ááºáá±á¬ áá»áœááºá¯ááºááá¯á·á hardware ááᯠáá»á±ážááŸá¬ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááá±áá¬áá±ážáááºážááŸá¯ááŒáá·áº á€áá±á¬á·ááºáá²ááᯠáá»áœááºá¯ááºááá¯á·áá¯á¶ááŒááºáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠá€áá±áá¬ááᯠááŒááºáááºááá°ááŒááºážáá¯ááºáá»á
ááááºááŸáá·áº áá®áá»áŸáá±á¬ áá»á±ážááœá±ááᯠáá¯ááºáá°ááŒá®áž áá
áºáá±á·ááœáẠáá»áœááºá¯ááºááá¯á·áá±ážáá»á±ááááºááŒá
áºáá«áááºá
á€ááŸá¯áá±á¬áá·áºááŸááŒáá·áºáá»áŸáẠZFS ááẠFerrari ááŒá áºááŒá®áž mdadm+lvm ááẠá ááºáá®ážááŸáá·áº ááá¯áá°áááºá
ááá±á¬ááá¬ážá¡á á á¬áá±ážáá°ááẠFerrari á¡á á¬áž á¡áááºááááá°áá»á¬ážá¡á¬áž á ááºáá®ážááŸá¬ážááẠááŸá áºáááºáááºá á¡á²áá®ááŸá¬ ááŒá¿áá¬á áá±ážáááŒáá·áºáá°ážá á¡ááœáá·áºá¡áá±ážááœá± áááá¯áá°ážá áá¬ááºá ááºážáááºážááẠááá¯ááá¯ážááŸááºážáá«áááºá áá¬ážáá«áááºá á¡ááá²á·áá«á ááá¯ááºáá¶ááŒááºáá»á±á¬áºá áœááºážáááºá ááá¯áá±á¬ááºážáááºá á ááºáá®ážááŸá¬ ááŒá±áá±á¬ááºááœá±ááᯠá¡ááŒá²ááœá²áá¬ážááá¯ááºááŒá®áž á ááºáá®ážááᯠááá¯áá·áºáááºáá²á· ááŒá¯ááŒááºááá¯ááºáá«áááºá
áá«ááᯠáá¬ááŒá±á¬áá·áº BTRFS...áááºáááºááŸá¯á áá áºááᯠá áááºáááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá±á¬ááºá áºá¡ááœááºážá០Legacy/BIOS GRUB ááœáẠáá¶á·ááá¯ážáá±ážáá¬ážááá·áº ááá¯ááºá áá áºáá áºáᯠááá¯á¡ááºááŒá®áž áá áºáá»áááºáááºážááœáẠááá¯ááºááá¯ááºááá¯ááºáá»ááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá«áááºá /boot partition á¡ááœááºá¡áá¯á¶ážááŒá¯áá«áááºá ááá¯á·á¡ááŒááºá á á¬áá±ážáá°ááẠဠFS ááᯠ/ (root) á¡ááœáẠá¡áá¯á¶ážááŒá¯ááẠááŸá áºáááºáááºá á¡ááŒá¬áž áááºááá·áºáá±á¬á·ááºáá²ááºá¡ááœááºáááᯠLVM ááœáẠáá®ážááŒá¬áž partitions áá»á¬ážááᯠáááºáá®ážááá¯ááºááŒá®áž ááá¯á¡ááºáá±á¬ áááºážááœáŸááºáá»á¬ážááœáẠáááºáááºááá¯ááºááŒá±á¬ááºáž áááááŒá¯áá«á
áá»áœááºá¯ááºááá¯á·ááẠဠFS ááœáẠvirtual machines ááá¯á·ááá¯áẠdatabases áá»á¬ážááá¯á¶áá»á¬ážááᯠááááºážáááºážáááºááá¯ááºáá«á
áááºážááá¯áááááºáá² á€áá»áŸááºáá
áºááŒááºááá¯ááºáá»ááºáá»á¬ážá¡á¬áž áá±ážááá¯á·/áááºáá¶ááá°á¡áá¯á¶ážááŒá¯á á¡áááºáá
áºáá
áºáá¯ááá¯á· ááœáŸá²ááŒá±á¬ááºážááŒááºážáááŒá¯áᲠဠFS ááá»áŸááºáá
áºááŒááºááá¯ááºáá»ááºáá»á¬ážááᯠáááºáá®ážáááºá¡ááœááºáᬠá¡áá¯á¶ážááŒá¯áá«áááºá
ááá¯á·á¡ááŒááºá á á¬áá±ážáá°ááẠáá±áá¯áá»á¡á¬ážááŒáá·áº áá¬á·ááºáá²áá±á«áºááœáẠáá±á¬á·ááºáá²ááºá¡áááºážáá¯á¶áž á¡áááºážáá¯á¶ážáá¬ážááŸááááºááŸáá·áº IOMMU ááŸáá áºááá·áº GPUs ááŸáá·áº PCI-USB Host controllers áá»á¬ážááᯠKVM ááá¯á· áá±ážááá¯á·ááŒááºážáá²á·ááá¯á·áá±á¬ á¡áá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áᬠvirtual machine áá»á¬ážááœáẠá¡ááŒá¬ážáá±á¬ software á¡á¬ážáá¯á¶ážááᯠrun ááẠááŸá áºáááºáá«áááºá
áá¬á·ááºáá²ááœáẠáá»ááºááá·áºá¡áá¬áá»á¬ážááŸá¬ áá±áá¬ááá¯ááŸá±á¬ááºááŸá¯á virtualization ááŸáá·áº backup ááá¯á·ááŒá áºáááºá
á¡áááºá áááºááẠZFS ááᯠááá¯áá¯á¶ááŒááºáá«áá áá°á¡áá áááºááŸááºáá¬ážáá±á¬ á¡ááá®áá±ážááŸááºážá¡ááœáẠáááºážááá¯á·ááᯠáá²ááŸááºááá¯ááºáááºá
ááá¯á·áá±á¬áºá á á¬áá±ážáá°ááẠZFSá BRTFS ááŸáá·áº LVM áá«ááŸááá±á¬ built-in mirroring/RAID ááŸáá·áº áááºáá±áá±á¬á¡ááºá¹áá«áááºáá»á¬ážááᯠááááºááᬠáá»á áºáá»á°ááŸá¯áá¬ážáááºá
áááºáá±á¬ááºážá¡ááŒááºážá¡áá¯á¶áá áºáá¯á¡áá±ááŒáá·áº 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
Disk á¡ááŒááºá¡áááº
NVMe SSD ááá¯
áá«áá±ááá·áº áá°ááá¯á·ááᯠáááºááá¯áááºážáá²á·á០á¡ááŸááºá¡áá¬ážááŒá¯ááŸá¬ ááá¯ááºáá«áá°ážá á¡á¬ážáá¯á¶ážá¡áá°áá°áá«áá²á áá»áœááºá¯ááºááá¯á·á BIOS ááẠá€áááá¯ááºáá»á¬ážááᯠáááŒááºááá«á ááá¯á·ááŒá±á¬áá·áº áááºážááá¯á·ááẠsoftware RAID ááá¯á· áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬ážááœá¬ážáááºááŒá áºáááºá á¡á²áá®ááŸá¬ á¡ááá¯ááºážááœá±áá±á¬áẠáááºáá®ážááŸá¬ ááá¯ááºáá°ážá áááºááẠ"canon" ááá¯á·ááá¯áẠ"á¡áááá¡á¬ážááŒáá·áº" ááá¯ááá¯ááºáá¬ááá¯áá«á HDD áá²á·ááá¯á·ááŒá®ážáá¬ážáá±á¬á¡ááá¯ááºážáá áºáá¯ááá¯áááºáá®ážáá«á
SATA HDD áá«
á€áá±áá¬ááœáẠá¡áá°ážáááẠáá®ááœááºááẠáááá¯á¡ááºáá«á á¡áá¬á¡á¬ážáá¯á¶ážá¡ááœáẠááá¹ááá áºáᯠáááºáá®ážáá«áááºá BIOS ááẠá€áá áºáá»á¬ážááá¯ááŒááºáááŒá®áž áááºážááá¯á·áá¶á០boot áááºáááºááŒáá¯ážá á¬ážááá¯ááºáá±á¬ááŒá±á¬áá·áº partition áá áºáá¯áááºáá®ážáá«áááºá áá»áœááºá¯ááºááá¯á·ááẠá€áá áºáá»á¬ážáá±á«áºááœáẠ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 áá áºáá»á¬ážááẠááá 4 terabytes á¡ááœááºážááœáẠááŸááá±áá«á MBR-áááá¬áá áá áºáá»á¬ážááᯠááááá¯á¶áž á¡ááá¯ááºáž 2 áá¯ááᯠááŒááºááá¯ááºá á±ááá·áº ááá¯ááºáááºáá®áá±á¬ á¡ááœáŸá¬áá áºáᯠááŸááááºá á¡áááá¡áá»ááºááŸá¬ á€áá áºáá»á¬ážááŸá boot partition ááŸáá·áº bios_grub partition ááẠá¡á ááœááºááŸáááá·áºáááºá áááºážááẠááá·áºá¡á¬áž GPT Legacy/BIOS drives áá»á¬ážááŸááẠá áááºááá¯ááºáááºá
áá«áá±ááá·áº áá«á áá«ááá¯á·ááá á¹á ááá¯ááºáá°ážá
áá®áá±áá¬ááŸá¬ á¡ááá¯ááºážááŸá áºááá¯ááºáž áááºáá®ážáá«áááºá ááááá áºáá¯ááẠ1 GB á¡ááœááºá¡á á¬ážááŒá áºááŒá®áž RAID 1 /boot á¡ááœááºá¡áá¯á¶ážááŒá¯áááºááŒá áºáááºá
áá¯ááááá áºáá¯ááᯠRAID 6 á¡ááœááºá¡áá¯á¶ážááŒá¯áááºááŒá áºááŒá®áž drive áá¡áá¯á¶ážááœáẠááœá²áá±ááá¬ážáá±á¬á§áááá¬á¡áááºážáááºááŸááœá²á áá»ááºáá±áá¬ááœááºá¡á¬ážáá¯á¶ážááᯠáá°áá«áááºá
á€á¡ááŸááºá¡áá¬ážááá«áá±á¬ á§áááá¬áá¬áž á¡áááºáááºážáááœááºáááºáá±á«áºááŸá ááááºážáááºážááŒá áºáá»á¬ážá¡áá áá»áœááºá¯ááºááá¯á·á SATA SSD áá»á¬ážááẠá¡ááœááºá¡á á¬áž 6 á០78 áá áºáá«ááá¯ááºá០á¡ááœááºá¡á á¬ážá¡áá ááá¯ážáá»á²á·ááá¯ááºáá±á¬ SLC áááºááŸáºáá áºáá¯áá±á«áºááœáẠááŸááááºá drive ááá±áá¬á á¬ááœááºááŸá "gigabytes" ááŸáá·áº "gibibytes" á¡ááŒá¬ážááŒá¬ážáá¬ážáá»ááºááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠ6 áá áºáá«ááá¯ááºááᯠ"á¡ááá²á·" áááŸááá«áááºá áá»áẠ72 áá áºáá«ááá¯ááºááᯠá¡áá¯á¶ážáááŒá¯áá±á¬áá±áá¬á០ááœá²áá±áá±ážáá«áááºá
á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠSLC áááºááŸáºáá áºáá¯ááŸáááŒá®áž áá±áá¬ááᯠ4 bit MLC áá¯ááºááœáẠááááºážááá¯ááºáá¬ážáááºá áá»áœááºá¯ááºááá¯á·á¡ááœáẠáááááá±á¬ááºáá±á¬ááºááá¯ááá¯áááºááŸá¬ áá±áá¬ááœáẠ4 áá áºáá«ááá¯ááºááá¯ááºážá¡ááœáẠSLC áááºááŸáº 1 áá áºáá«ááá¯ááºáᬠáááŸááááºááŒá áºáááºá
72 áá áºáá«ááá¯ááºááᯠ4 ááŸáá·áº ááŒáŸá±á¬ááºááŒá®áž 288 áá áºáá«ááá¯ááºááᯠááá°áá«á SLC áááºááŸáºááᯠá¡ááŒáá·áºá¡áá¡áá¯á¶ážááŒá¯ááá¯ááºá á±ááẠdrives áá»á¬ážááᯠá¡ááŒáá·áºá¡áá¡áá¯á¶ážááŒá¯ááá¯ááºá á±áááºá¡ááœáẠá€áá±áá¬ááœááºááŒá áºáááºá
ááá¯á·ááŒá±á¬áá·áºá á á¯á á¯áá±á«ááºáž drive ááŒá±á¬ááºáá¯á០SLC cache 312 gigabyte á¡áá áááááá±á¬ááºáá±á¬áẠáááŸááá«áááºá áááá¯ááºáá»á¬ážá¡á¬ážáá¯á¶ážááœáẠ2 ááᯠRAID ááœáẠáááºáá±á¬ááºážá¡áá¯á¶ážááŒá¯áá«áááºá
ဠcache ááá¬áááẠáá»áœááºá¯ááºááá¯á·ááᯠáááºááœá±á·ááááœáẠá¡ááœááºááŸá¬ážáá«ážáá±á¬ áááºááŸáºááá¯á· áá±ážááá¬ážááá¯ááºáá±á¬ á¡ááŒá±á¡áá±áá»áá¯ážááᯠááŒá¯á¶ááœá±á·ááá¯ááºá á±áááºááŒá áºáááºá áááºážááẠQLC memory á áááºážáááºážá áá¬á¡áá±á¬ááºážáá¯á¶áž á¡á¬ážáááºážáá»ááºá¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬ áá»á±á¬áºááŒá±ážáá±ážááẠ- áá±áá¬ááᯠáááºááŸáºááá¯áá»á±á¬áºááŒááºá áá±ážáá¬ážááá·áºá¡áá« á¡ááœááºáááá·áºáá±á¬ á á¬áá±ážááŒááºááŸá¯ááºážááŒá áºáááºá á¡áááºá áááºá load áá»á¬ážááẠáááºážááŸáá·áºáááá¯ááºáá®áá«áá data sheet á០TBW ááá¯ááá·áºááœááºážá ááºážá á¬ážááŒá®áž áááºá SSD ááẠááᯠload á¡á±á¬ááºááœááºáááºáá»áŸááŒá¬ááŒá¬áá¶áááºááᯠáá±áá»á¬á ááºážá á¬ážááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá
#cat >ssd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors
/dev/sda1 : start= 2048, size= 2097152, type=fd, bootable
/dev/sda2 : start= 2099200, size= 3300950016, type=fd
EOF
#sfdisk /dev/sda < ssd.part
#sfdisk /dev/sdb < ssd.part
#sfdisk /dev/sdc < ssd.part
#sfdisk /dev/sdd < ssd.part
#sfdisk /dev/sde < ssd.part
#sfdisk /dev/sdf < ssd.part
Arrays áááºáá®ážááŒááºážá
ááááŠážá áœá¬ áá»áœááºá¯ááºááá¯á·ááẠá ááºááᯠá¡áááºááŒá±á¬ááºážááẠááá¯á¡ááºáá«áááºá host name ááẠmdadm á¡ááœááºážááŸá áá áºáá±áá¬áá¬ááœáẠarray name á áá áºá áááºáá áºááá¯ááºážááŒá áºááŒá®áž áá áºáá±áá¬áá¬ááœáẠáááºáá±á¬ááºááŸá¯ááŸááá±á¬ááŒá±á¬áá·áº áááºážááẠááá¯á¡ááºáá«áááºá áá¯ááºáá«áááºá array ááœá±ááᯠáá±á¬ááºááá¯ááºážááŸá¬ áá¬áááºááŒá±á¬ááºážááá¯ááºáá±ááá·áº áá«á áááá¯á¡ááºáá²á· á¡ááá·áºáá áºáá¯áá«á
#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
áá¬ááŒá±á¬áá·áº ááá·áºááŸááºážáááºááá¯á· áá°áááá¬áá²...?array áá»á¬ážááᯠá áááºááŒááºážá០ááŸá±á¬ááºááŸá¬ážáááºá RAID á¡ááá·áº 1 ááŸáá·áº 6 ááŸá áºáá¯á áá¯á¶ážá¡ááœáẠáááºážááẠááá¬ážáááºáááºá array á¡áá áºááŒá áºáá»áŸáẠá¡á áá»áá¯ážááŒááºážáááŸááá² á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡áá¯ááºáá¯ááºááá¯ááºáááºá ááá¯á·á¡ááŒááºá áááºáá®ážááŸá¯ááœáẠSSD á¡áááºážá¡áá»ááºážááᯠá¡á ááŒá¯ááŒááºážááẠTBW á¡áááºážá¡ááŒá áºááᯠááŒá¯ááºážáá®ážááŒááºážááŒá áºáááºá áááºážááá¯á·ááᯠâá¡á ááŒá¯â ááẠá á¯áá±ážáá¬ážáá±á¬ SSD á¡áááºážá¡áá»ááºážáá»á¬ážááœáẠááŒá áºááá¯ááºáá«á TRIM/DISCARD ááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
SSD á¡áááºážá¡áá»ááºážáá»á¬ážá¡ááœáẠRAID 1 DISCARD ááᯠáá±á¬ááºá áºá០áá¶á·ááá¯ážáá¬ážáááºá
SSD RAID 6 DisCARD arrays á¡ááœááºá kernel module parameters áá»á¬ážááœáẠáááºážááᯠenable áá¯ááºááá«áááºá
á€á áá áºááŸá á¡ááá·áº 4/5/6 á¡áááºážá¡áá»ááºážáá»á¬ážááœáẠá¡áá¯á¶ážááŒá¯ááá·áº SSD áá»á¬ážá¡á¬ážáá¯á¶ážááẠdiscard_zeroes_data á¡ááœáẠáá¯ááºáá±á¬ááºááá¯ááºáá±á¬ áá¶á·ááá¯ážááŸá¯ááŸáááŸáᬠáááºážááᯠáá¯ááºáá±á¬ááºááá·áºáááºá áá áºáá«áá áºáá¶ááœáẠáááºááẠá€áá¯ááºáá±á¬ááºáá»ááºááᯠáá¶á·ááá¯ážáá¬ážááŒá±á¬ááºáž kernel á¡á¬ážááŒá±á¬ááŒáá±á¬ áá°ážáááºážáá±á¬ drives áá»á¬ážááᯠáááºááœá±á·ááŒááºááá±á¬áºáááºáž á¡ááŸááºááááºááœáẠáááºážááẠááá¯áá±áá¬ááœááºáááŸááá«á ááá¯á·ááá¯áẠáá¯ááºáá±á¬ááºáá»ááºááẠá¡ááŒá²áááºážá¡áá¯ááºááá¯ááºáá«á áá±á¬áá±á¬áááºááœááºá áá¶á·ááá¯ážááŸá¯ááẠáá±áá¬ááá¯ááºážáá®ážáá«ážááœáẠáááá¯ááºáá±á¬áºáááºážá áá±á¬ááºážááœááºážáá±áá±á¬ drive áá»á¬ážááŸáá·áº firmware áá»á¬ážááẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááŸááá±áá«áááºá á€á¡ááŒá±á¬ááºážááŒá±á¬áá·áºá RAID 6 á¡ááœáẠáá¯á¶áá±á¡á¬ážááŒáá·áº DISCARD áá¶á·ááá¯ážááŸá¯ááᯠááááºáá¬ážáááºá
áááááŒá¯áááºá á¡á±á¬ááºáá« command ááẠarray ááᯠ"zeros" ááŒáá·áº "á¡á ááŒá¯ááŒááºáž" ááŒáá·áº NVMe drive áá»á¬ážááŸá áá±áá¬á¡á¬ážáá¯á¶ážááᯠáá»ááºáá®ážáá«áááºá
#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 áá±ážáááºá á¡ááŒá² drive áá
áºáá¯á IOPS áááºáááºážááẠááá¯á·ááá¯áẠáá®áá»áŸáááºá áá»áááºážáááºááá·áºá¡áá«á IOPS ááẠdrive áá
áºáá¯ááẠá¡ááá±á«ááºážáá»á¬ážá
áœá¬ ááá¯ááŒá®ážááá¯ááºááŒá®áž á€áá±áá¬ááœáẠblock size ááẠá¡áááá¡áá±ážááŒá®ážáá«áááºá
á
á¬áá±ážáá°ááẠRAID 6 by-design ááœááºááá±á¬ááºážáá±á¬ parameter ááá¯á¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬ááºááŒáá¯ážá
á¬ážáá¬ááœááºá¡áá»ááºááá¯áááŒááºáá² RAID 6 ááœááºáá±á¬ááºážááœááºáá±á¬á¡áá¬ááá¯á¡áá±á¬ááºážáá¯á¶ážááŒá
áºá¡á±á¬ááºáá¯ááºááá·áºá¡á
á¬ážá
RAID 6 á áá¶á·áá»ááºážáá±á¬ áá»áááºážáá±ážáá¬ážááŸá¯á¡ááœáẠNVMe áááºááŸáºááŸáá·áº áá«ážááœáŸá¬áá±á¬ ááŸáá·áºááœááºáá»á¬ážááŒáá·áº áá»á±á¬áºááŒá±ážáá±ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠRAID 6 á¡ááœáẠDISCARD ááᯠááœáá·áºáááá±ážáá«á ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠဠarray ááᯠááá¯áá±á¬áá±á¬áááºááœáẠá áááºáá¯ááºáá±á¬ááºáá±á¬á·ááẠááá¯ááºáá«á OS ááᯠinstall áá¯ááºááŒá®ážáá±á¬ááºááá¯ááºáž áá«ááá¯áá¯ááºáááºá
SATA HDD áá«
#mdadm --create --verbose --assume-clean /dev/md3 --chunk-size=512 --level=6 --raid-devices=8 /dev/sd[g-n]1
NVMe RAID ááœáẠLVM
ááŒááºááŸá¯ááºážá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠ/dev/md1 ááŒá
áºááá·áº NVMe RAID 0 ááœáẠá¡ááŒá
áºááá¯ááºá
áá
áºááᯠáá¬ážááŸáááá¯áá«áááºá
ááá¯á·áá±á¬áºáááºážá swapá metadata ááŸáá·áº LVM-cache ááŸáá·áº LVM-thin metadata áá²á·ááá¯á·áá±á¬ á¡ááŒá¬ážááá¯á¡ááºáá»ááºáá»á¬ážá¡ááœáẠá€á¡ááŒáẠarray ááᯠáá»áœááºá¯ááºááá¯á· ááá¯á¡ááºáá±áá±ážáááºá ááá¯á·ááŒá±á¬áá·áº ဠarray ááœáẠLVM VG áá
áºáá¯ááᯠáááºáá®ážáá«áááºá
#pvcreate /dev/md0
#vgcreate root /dev/md0
root file system á¡ááœáẠpartition áá áºáá¯áááºáá®ážááŒáá·áºáá¡á±á¬ááºá
#lvcreate -L 128G --name root root
RAM á¡ááœááºá¡á á¬ážá¡ááá¯áẠáá²ááŸááºááẠá¡ááá¯ááºážáá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á
#lvcreate -L 32G --name swap root
OS ááá·áºááœááºážááŒááºážá
á á¯á á¯áá±á«ááºážá áá»áœááºá¯ááºááá¯á·ááœáẠá áá áºááá·áºááœááºážááẠááá¯á¡ááºááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááŸááááºá
Ubuntu Live áááºáááºážáá»ááºá០á áá áºááá·áºááœááºážááŸá¯ áá áºáá¬ááᯠá áááºáá«á áá¯á¶ááŸááºáááºáááºááŒááºážá áááºáááºáááºá¡ááœáẠdisk áá»á¬ážááá¯ááœá±ážáá»ááºááŒááºážá¡ááá·áºááœááºáá¬á áááºááẠá¡á±á¬ááºáá«ááá¯á·ááᯠáááºááŸááºáááºááá¯á¡ááºáááº-
- /dev/md1á - mount point /bootá FS - BTRFS
- /dev/root/root (aka /dev/mapper/root-root), - mount point / (root), FS - BTRFS
- /dev/root/swap (aka /dev/mapper/root-swap), - swap partition á¡ááŒá áºáá¯á¶ážáá«á
- /dev/sda ááœáẠbootloader ááᯠinstall áá¯ááºáá«á
BTRFS ááᯠroot ááá¯ááºá áá áºá¡ááŒá Ạáááºááœá±ážáá»ááºáá±á¬á¡áá«á installer ááẠ"@" for / (root) ááŸáá·áº /home á¡ááœáẠ"@home" á¡áááºááŸá BTRFS volumes ááŸá áºáá¯ááᯠá¡ááá¯á¡áá»á±á¬áẠáááºáá®ážáá±ážáááá·áºáááºá
áááºáááºááŸá¯ á áááºááá¯ááºáá¡á±á¬ááº...
áááºáááºááŸá¯ááẠbootloader ááá¯ááá·áºááœááºážáá¬ááœáẠá¡ááŸá¬ážá¡ááœááºážáá áºáá¯ááᯠááœáŸááºááŒááá·áº modal dialog box ááŒáá·áº á¡áá¯á¶ážáááºáá«áááºá áá¶ááá±á¬ááºážá áœá¬áá²á áááºááẠá á¶áááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á á€ááá¯ááºáá¬áá±á¬á·ááºá០ááœááºá áááºáááºááŸá¯ááᯠáááºáááºáá¯ááºáá±á¬ááºááá¯ááºáááºááá¯ááºáá±á áá»áœááºá¯ááºááá¯á·ááẠá áá áºááŸááœááºááŒá®áž ááá·áºááŸááºážáá±á¬ Ubuntu Live áááºá áºáá±á¬á·ááœáẠá¡áá¯á¶ážáááºááŒá®áž áááºáá¶áááºáá±á¬ááºáá«á terminal ááá¯ááœáá·áºááŒá®áž áá±á¬ááºáá áºááŒáááº-
#sudo bash
áááºáááºááŸá¯ááᯠáááºáááºáá¯ááºáá±á¬ááºááẠchroot áááºáááºážáá»ááºááᯠáááºáá®ážáá«-
#mkdir /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@ /dev/mapper/root-root /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@home /dev/mapper/root-root /mnt/chroot/home
#mount -o defaults,space_cache,noatime,nodiratime,discard /dev/md1 /mnt/chroot/boot
#mount --bind /proc /mnt/chroot/proc
#mount --bind /sys /mnt/chroot/sys
#mount --bind /dev /mnt/chroot/dev
chroot ááœáẠnetwork ááŸáá·áº hostname ááᯠconfigure áá¯ááºááŒáá«á
áá¯á·á
#cat /etc/hostname >/mnt/chroot/etc/hostname
#cat /etc/hosts >/mnt/chroot/etc/hosts
#cat /etc/resolv.conf >/mnt/chroot/etc/resolv.conf
chroot áááºáááºážáá»ááºááá¯á· ááœá¬ážááŒáá«á
áá¯á·á
#chroot /mnt/chroot
ááááŠážá
áœá¬á áá»áœááºá¯ááºááá¯á·ááẠáááºáá±á·ááºá»áá»á¬ážááᯠááá¯á·áá±á¬ááºáá±ážáá«áááºá
apt-get install --reinstall mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc debsums hdparm
á áá áºááá·áºááœááºážááŸá¯ áááŒáá·áºá á¯á¶ááŒááºážááŒá±á¬áá·áº áá±á¬ááºáá±á¬ááºáá±á¬ááºáá«á¡á±á¬áẠáááºáááºáá¬ážááá·áº áááºáá±á·áá»áºá¡á¬ážáá¯á¶ážááᯠá á áºáá±ážááŒá®áž ááŒá¯ááŒááºááŒáá«á áá¯á·á
#CORRUPTED_PACKAGES=$(debsums -s 2>&1 | awk '{print $6}' | uniq)
#apt-get install --reinstall $CORRUPTED_PACKAGES
áá
áºáá¯áá¯á¡áááºáááŒá±áá«á /etc/apt/sources.list ááᯠáŠážá
áœá¬áááºážááŒááºááẠááá¯á¡ááºáá«áááºá
TRIM/DISCARD ááá¯ááœáá·áºááẠRAID 6 module á¡ááœáẠáá±á¬ááºáá»á¬ážááᯠáá»áááºááŸáááŒáá«á áá¯á·á
#cat >/etc/modprobe.d/raid456.conf << EOF
options raid456 devices_handle_discard_safely=1
EOF
áá»áœááºá¯ááºááá¯á·á array áá»á¬ážááᯠá¡áááºážááẠááŒááºáááºááŒáá·áºáá¡á±á¬ááºá
#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 á¡ááœáẠblock cache á¡ááœááºá¡á á¬ážááᯠ6 áá¯ááŸá áºá¡ááœáẠáá¯á¶áá±á¬ááºá á±ááẠáááºááŸááºáá«á áá°áááºážáááºááá¯ážááẠLinux ááᯠáááºáá®ážááŒá®ážááááºážá ááŒá±á¬ááºážáá²ááœá¬ážááŒááºážáááŸááááá¯á á¡áá»áááºá¡ááŒá¬ááŒá®áž áá¯á¶áá±á¬ááºááŸá¯áááŸááá±ážáá«á
- array á á áºáá±ážááŸá¯áá»á¬áž/áááºáá°ááŒá¯ááŒááºážáá»á¬ážáááŒá¬áá»áááºá¡ááœáẠá¡áááºážáá¯á¶áž IO ááᯠááááºážáááºážáá«á áááºážááẠáááºá array áá»á¬ážááᯠload á¡á±á¬ááºááœáẠáá¬áá synchronization á¡ááŒá±á¡áá±ááœáẠááááºáááá±ááŒááºážá០áá¬ááœááºáááºááŒá áºáááºá
- array áá»á¬ážááᯠá á áºáá±ážááŒááºáž/áááºáá°ááŒá¯ááŒááºáž ááŒá¯áá¯ááºáá±á áẠá¡áá»á¬ážáá¯á¶áž IO ááᯠááá·áºáááºáá«á SSD RAID áá»á¬ážááᯠáá áºááŒáá¯ááºáááºážá á áºáá±ážááŒááºáž/á á áºáá±ážááŒááºážáá»á¬ážááẠááá·áºáááá¯ááºááºáá»á¬ážááᯠááŒááºáá¬ážá áœá¬áááŒá±á¬áºááá¯ááºá¡á±á¬áẠááá¯á¡ááºáá«áááºá áááºážááẠNVMe á¡ááœáẠá¡áá°ážáááŒáá·áº ááŸááºáááºá (áá±ááá¯ááºáá®á¡ááŒá±á¬ááºáž ááŸááºáááá±ážáá¬ážá áá±á¬ááºáá±áá¬ááá¯ááºáá°áž)
- APM ááŸáá áºááá·áº spindle rotation (HDD) ááá¯áááºááá·áºááŒááºážá០disk áá»á¬ážááá¯áá¬ážááŒá áºááŒá®áž disk controllers á¡ááœáẠá¡áááºáá»áááºááᯠ7 áá¬áá®á¡áááááºááŸááºáá«á ááá·áº drives áá»á¬ážá áááºážááá¯áá¯ááºáá±á¬ááºááá¯ááºáá»áŸáẠAPM ááᯠáá¯á¶ážáááááºááá¯ááºááẠ(-B 255)á áá°áááºážáááºááá¯ážááŒáá·áºá áá«ážá áá¹ááá·áºá¡ááŒá¬ááœáẠáááá¯ááºáá»á¬ážááẠáááºááœá¬ážáá«áááºá ááá¯á·áá±á¬áẠOS ááẠdisk cache ááá¯ááŒááºáááºáááºááŸááºááá¯áááºá disks áá»á¬ážáááºáá¶áááºáááºáááºááŒá áºááŒá®ážá á¡á¬ážáá¯á¶ážáááºáá áºáááºááŒááºáááºá áááºáááá·áºáááºá áá»ááºááŒá¬ážáá»á¬ážááœáẠá¡áá»á¬ážáá¯á¶áž ááŸáá·áºáááºááŸáá·áºááŸá¯ á¡áá±á¡ááœáẠááá·áºáááºáá¬ážáááºá á€áá²á·ááá¯á·áá±á¬ ááá¯ážááŸááºážáá±á¬ áá¯á¶áá±á ááºáááºážááẠááŸá áºá¡áááºážáááºá¡ááœááºáž ááá·áºáá áºáá»á¬ážááᯠá¡ááœááºááá° áááºáá áºááá¯ááºáááºá áá áºáá»á¬ážá¡á¬ážáá¯á¶ážááẠáááºážááá¯ááá¶á á¬ážááá±á¬áºáááºáž áá»áœááºá¯ááºááá¯á·á RAID ááẠmini-MAID ááŸáá·áºáá°á á±ááẠááá·áºáá»á±á¬áºáá±á¬ áá¯á¶áá±áááºáááºáá»á¬ážááŒáá·áº âáááºáá±á¬á·ááºâ áá»á¬ážááŒá áºáááºá
- 1 megabyte ááᯠáá áºááºáá»á¬ážáá±á«áºááœáẠreadahead ááᯠááá·áºááœááºážáá« (ááŸáá·áºáááºááŒááºáž) 6 megabyte - ááŸá áºáá¯áááºááá¯áẠáá¯ááºááœááº/á¡áá¯á¶áž RAID XNUMX
- arrays áá»á¬ážáá±á«áºááœáẠreadahead ááᯠdisable áá¯ááºáá«á
/etc/fstab áááºážááŒááºááŒáá«á áá¯á·á
#cat >/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# file-system mount-point type options dump pass
/dev/mapper/root-root / btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@ 0 1
UUID=$(blkid -o value -s UUID /dev/md1) /boot btrfs defaults,space_cache,noatime,nodiratime,discard 0 2
/dev/mapper/root-root /home btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@home 0 2
/dev/mapper/root-swap none swap sw 0 0
EOF
á¡á²áá®ááá¯á·áá¬ááŒá
áºááá¯á·..?UUID á០/boot partition ááá¯ááŸá¬ááœá±áá«áááºá Array á¡áááºáá±ážááŒááºážááẠáá®á¡áá¯áá®á¡á ááŒá±á¬ááºážáá²ááá¯ááºáááºá
á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº /dev/mapper/vg-lv áááºá¹áá±áááœáẠLVM á¡áááºáá»á¬ážááŒáá·áº áá»ááºááŸááá±á¬á¡ááá¯ááºážáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááŸá¬ááœá±áá«áááºá áá°ááá¯á·ááẠpartitions ááá¯á¡áá±á¬áºáá±ážáá°ážááŒá¬ážá áœá¬ááœá²ááŒá¬ážáááºááŸááºá
áá»áœááºá¯ááºááá¯á·ááẠLVM á¡ááœáẠUUID ááá¯á¶ážáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá LVM volumes áá»á¬ážá UUID ááŸáá·áº áááºážááá¯á·á áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááẠáá°áá®ááá¯ááºáááºá/dev/mapper/root-root.. ááŸá áºáá« áá±á¬ááºáááºááá¬ážááá¯ááºáá²á·á á¡ááá¡áá»á BTRFS ááá°ážááŒá¬ážáá»ááºá á€ááá¯ááºá áá áºááᯠááá°áá®áá±á¬ subvols áá»á¬ážááŒáá·áº á¡ááŒáááºáá±á«ááºážáá»á¬ážá áœá¬ áááºáááºááá¯ááºáááºá
á€áá°áá®áá±á¬á¡ááºá¹áá«áááºááŒá±á¬áá·áºá áááºááŸáá¡áá¯á¶ážááŒá¯áá±áá±á¬ BTRFS volumes á LVM áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááᯠáááºáá±á¬á·ááŸááááºáá®ážááẠá¡ááŒá¶ááŒá¯áá«áááºá ááŒááºáááºá áááºáá±á¬á¡áá«ááœáẠáááºááẠá¡á¶á·á¡á¬ážááá·áºá áá¬ááŒá áºááá¯ááºáááºá
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
áá«áá¬áá²..?áá¯áááºá 90% ááŒáá·áº ááááºážááá¯ááºáá¬ážáá±á¬ áá±áá¬á 5% ááá¯áá±á¬ááºááŸááá±á¬á¡áá« LVM áá«ážááœáŸá¬áá±á¬ áá±áááºáá»á¬áž á¡ááá¯á¡áá»á±á¬áẠáá»á²á·ááœááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· ááœáá·áºáá¬ážáá«áááºá
LVM áááºááŸáºá¡ááœáẠá¡áá»á¬ážáá¯á¶áž áááºááŸáºáá¯ááºááœááºáá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· ááá¯ážááŒáŸáá·áºáá¬ážáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠLVM ááœáẠLVM á¡ááœá²áá»á¬áž (PV) ááᯠááŸá¬ááœá±ááŒááºážá០áá¬ážááŒá áºáá¬ážáááº-
- LVM áááºááŸáº (cdata) áá«ááŸááá±á¬ á ááºáá»á¬áž
- áááºááŸáºááá¯áá»á±á¬áºááŒááºá LVM áááºááŸáºááᯠá¡áá¯á¶ážááŒá¯á áááºááŸáºáá¯ááºáá¬ážáá±á¬ á ááºáá á¹á ááºážáá»á¬áž ( _corig)á á€ááá á¹á ááœááºá áááºááŸáºáá¯ááºáá¬ážáá±á¬á ááºáá á¹á ááºážááá¯ááºááá¯ááºááẠáááºááŸáºááŸáááá·áº á áááºááºáááºáá±áááá·áºááẠ(áᬠ)
- LVM áááºááŸáº áááºáá¬áá±áᬠ(cmeta) áá«ááŸááá±á¬ á ááºáá»á¬áž
- á¡áááºáá¯á¶áá»á¬ážááŸáá·áºá¡áá° VG ááŸá á ááºá¡á¬ážáá¯á¶ážá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááœáẠvirtual machines áá»á¬ážá disk áá¯á¶áá»á¬ážáá«ááŸááááºááŒá áºááŒá®ážá host ááœáẠLVM ááẠguest OS ááŸáá·áºáááºááá¯ááºááá·áº volumes áá»á¬ážááᯠá¡áááºááœááºážááẠáááá¯áá¬ážáá«á
- á¡áááºá¡áááºááááºážáááºážáá¬ážáá±á¬ VG ááŸá á ááºá¡á¬ážáá¯á¶ážá á€áá±áá¬ááœáẠáá»áœááºá¯ááºááá¯á·ááẠvirtual machine áá¯á¶áá»á¬ážá á¡áááºáááá¹áá°áá»á¬áž ááŸááá«áááºá
- "gpv" ááŒáá·áºá¡áá¯á¶ážáááºáá±á¬ á¡áááºááŸááá±á¬ á ááºáá»á¬ážá¡á¬ážáá¯á¶áž (á§áá·áºáááºáá¯ááºáá¯áááº)
LVM VG ááœáẠáá±áá¬ááœááºáá»á¬áž ááœááºáá¬áá±á¬á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á·ááẠDISCARD áá¶á·ááá¯ážááŸá¯ááᯠááœáá·áºáá¬ážáááºá ááááá¬ážáá«á áááºážááẠ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
áááºá¡ááœá±ááᯠááœá±ážááá·áºáá²ásd* áá»á¬áž á¡á¬ážáá¯á¶ážá á áá áºááẠáááºááá·áºá¡áá¯áẠSATA drive ááá¯á·ááá¯áẠSSD á០á áááºááá¯ááºááá«áááºá
áá¬ááá¯á· os-prober ááá¯ááá·áºáá¬áá²..á¡ááœááºá¡áá»áœá¶ááœááºáááºááŸá¯ááŸáá·áºá¡áá»á±á¬áºá¡áá»ááºáááºáá»á¬ážá¡ááœááºá
RAID áá»á¬ážáá²á០áá áºáá¯ááẠáá»ááºá á®ážáá±áá±á¬ á¡ááŒá±á¡áá±ááœáẠááŸááá±áá«á áááºážááẠááŸááºáááºá áœá¬ á¡áá¯ááºááá¯ááºáá«á áááºážááẠá€áá¬á·ááºáá²áá±á«áºááœááºáááºáááºáá±ááá·áº virtual machines áá»á¬ážááœááºá¡áá¯á¶ážááŒá¯ááá·áº partitions áá»á¬ážáá±á«áºááœáẠOS ááá¯ááŸá¬ááœá±áááºááŒáá¯ážá á¬ážáááºá
ááá¯á¡ááºáá«á áá¬ážáá²á·ááá¯ááºáá±á¬áºáááºáž á¡áááºáá«á¡áá»ááºá¡á¬ážáá¯á¶ážááᯠáááááŒá¯áá«á á¡áœááºááá¯ááºážááŸá¬ ááá¯ááºáá²áá²á·áááºááœá±ááᯠáááºááŸá¬ážááá¯á· áá»ááºááŒá¯ááºáááºážááœá±ááᯠááŸá¬ááŒáá·áºááá¯á· á¡ááŒá¶ááŒá¯áá»ááºáá«áááºá
á€á¡áá¬ááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠáááŠážáááºáááºááŸá¯ááᯠááŒá®ážááŒá±á¬ááºáá²á·áá«áááºá á¡áá áºááá·áºááœááºážáá¬ážáá±á¬ OS ááœáẠááŒááºáááºá áááºááẠá¡áá»áááºáááºáá«ááŒá®á bootable Live CD/USB ááᯠáááºááŸá¬ážááẠááá±á·áá«ááŸáá·áºá
#exit
#reboot
boot device á¡ááŒá ẠSATA SSDs áá áºáá¯áá¯ááᯠááœá±ážáá«á
SATA SSD ááœáẠLVM
á€á¡áá»áááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠOS á¡áá áºááœáẠá áááºáá¯ááºáá±á¬ááºááŒá®ážááŒá áºáááºá ááœááºáááºááᯠá á®á ááºáááºááŸááºááŒááºážá aptá terminal emulator ááá¯ááœáá·áºááŒá®áž áááºáááºáááº-
#sudo bash
áááºáá¯ááºááŒáá«á áá¯á·
SATA SSD á០array ááᯠ"á áááºáááº"
#blkdiscard /dev/md2
á¡áááºáááŒá±áá«áá á ááºážááŒáá·áºáá«á
#blkdiscard --step 65536 /dev/md2
SATA SSD ááœáẠLVM VG áááºáá®ážáá«á
#pvcreate /dev/md2
#vgcreate data /dev/md2
áá¬ááá¯á· áá±á¬ááºááẠVG áá²..?ááááºáá±á¬á· áá»áœááºáá±á¬áºááá¯á·ááŸá¬ VG ááá¯á·á¡áááºáá±ážáá¬ážáá²á· root ááŸáááŒá®ážáá¬ážáá«á á¡á¬ážáá¯á¶ážááᯠVG áá áºáá¯áááºážááŸá¬ áá¬ááŒá±á¬áá·áº áááá·áºáá¬áá²á
VG áá áºáá¯ááœáẠPV á¡áá»á¬ážá¡ááŒá¬ážááŸááá±áá«á VG ááá¯ááŸááºáááºá áœá¬á¡áááºááœááºážááá¯ááºáááºá PV áá»á¬ážá¡á¬ážáá¯á¶ážááẠááŸááá±áááẠ(á¡áœááºááá¯ááºáž)á ááŒáœááºážáá»ááºááŸá¬ LVM RAID ááŒá áºááŒá®áž áá»áœááºá¯ááºááá¯á· ááááºááᬠá¡áá¯á¶ážáááŒá¯áá«á
RAID 6 arrays áá áºáá¯áá¯ááœáẠáá»áá¯á·ááœááºážáá»áẠ(read data loss) ááŸááá«áá operating system ááẠáá¯á¶ááŸááºá¡ááá¯ááºáž boot áá¯ááºááŒá®áž ááŒá¿áá¬ááᯠááŒá±ááŸááºážááẠá¡ááœáá·áºá¡áááºážáá±ážáááºááᯠáá»áœááºá¯ááºááá¯á· á¡ááŸááºááááºááá¯áá¬ážáá«áááºá
áá«ááá¯áá¯ááºááá¯á·á abstraction áááá¡ááá·áºááŸá¬ áá¯ááºááá¯ááºážááá¯ááºáᬠâáá®áá®áá¬â á¡áá»áá¯ážá¡á á¬ážáá áºáá¯á á®ááᯠáá®ážááŒá¬áž VG áá áºáá¯á¡ááŒá Ạááœá²áá¯ááºáá«áááºá
áááá¹áá¶ááá¬á¡áááŒá±á¬ááá»áŸáẠááá°áá®áá±á¬ RAID array áá»á¬ážááẠááá°áá®áá±á¬ "áá¯á¶ááŒááºá áááºáá»ááá±á¬ááá¯ááááºážáá»á¬áž" ááŸáá·áºáááºááá¯ááºáá«áááºá áááºážááá¯á·ááᯠVG áá áºáá¯áááºážááœáẠááá·áºááœááºážááŒááºážááŒáá·áº áááºážááá¯á·á¡ááœáẠáá±á¬ááºááẠáá¯á¶áá°áá®áá±á¬á¡áá»ááºáá áºáᯠááááºáá®ážááá·áºáá«á
"áá¬á·ááºáá²" á¡ááá·áºááœáẠLVM áááŸááá±ááŒááºážááẠáá»áœááºá¯ááºááá¯á·á¡á¬áž ááá°áá®áá±á¬ RAID áááºážáá»ááºážááŸá¯áá»á¬ážááᯠááá°áá®áá±á¬áááºážáááºážáá»á¬ážááŒáá·áº áá±á«ááºážá ááºááŒááºážááŒáá·áº áááºáááá¯ááŒááºáá±á¬ááºááá¯ááºá á±áááºááŒá áºáááºá á¥ááá¬- run áá«á áá áºááŒáá¯ááºáááºáááºáž bcache + LVM áá«ážááœáŸá¬áá±á¬á bcache + BTRFSá LVM áááºááŸáº + LVM áá«ážááœáŸá¬á áááºááŸáºáá»á¬ážááŒáá·áº ááŸá¯ááºááœá±ážáá±á¬ ZFS ááœá²á·á ááºážááŸá¯áá¯á¶á á¶á ááá¯á·ááá¯áẠá¡á¬ážáá¯á¶ážááᯠááŸáá¯ááºážááŸááºááŒáá·áºááẠá¡ááŒá¬ážááá°áá®áá±á¬ á¡áá±á¬á¡ááŸá±á¬áá»á¬ážá
âáá¬á·ááºáá²â á¡ááá·áºááœááºá áá±á¬ááºážááœááºáá±á¬ âá¡áá°â LVM volumes áá»á¬ážááŸááœá²á á¡ááŒá¬ážáááºááá·áºá¡áá¬ááá¯áá»áŸ áá»áœááºá¯ááºááá¯á· á¡áá¯á¶ážááŒá¯áááºááá¯ááºáá«á á€á ááºážáá»ááºážá¡ááœáẠááŒáœááºážáá»ááºááŸá¬ á¡áááºááá¯ááºááœá²ááŒá áºááá¯ááºáááºá
á€á¡ááá¯ááºá¡ááá·áºááœáẠá á¬áááºáá°á¡áá»á¬ážá¡ááŒá¬ážááẠá¡ááá¯ááºá¡áá¯ááºááŸáá·áº áááºáááºá áá áºá á¯á¶áá áºáá¯ááᯠá áááºáá¶ááááŒá áºáá±ááŒá®áᯠáááºááŒááºáááá«áááºá
SATA HDD ááœáẠLVM
#pvcreate /dev/md3
#vgcreate backup /dev/md3
VG á¡áá áºâááŒááºâáááºâ..?áá±áá¬á¡áááºááááºážáááºážááŒááºážá¡ááœáẠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯ááá·áº disk áááºážáá»ááºážááŸá¯ áá»ááºááœááºáá«áá áá»áœááºá¯ááºááá¯á·á áááºáááºááŸá¯á áá áºááẠáá¯á¶ááŸááºá¡ááá¯ááºáž á¡áááºááá¯ááºáá±á¬ áá±áá¬áá»á¬ážááá¯á· áááºáá±á¬ááºááœáá·áºááᯠáááºáááºááááºážááááºážáá¬ážá áẠáá¯á¶ááŸááºá¡ááá¯ááºáž áááºáááºáá¯ááºáá±á¬ááºááœá¬ážáááºááŒá áºááŒá±á¬ááºáž áá»áœááºá¯ááºááá¯á· á¡ááŸááºááááºááá¯áá¬ážáá«áááºá ááá¯á·ááŒá±á¬áá·áº VG á¡áááºááœááºážááŒááºáž ááŒá¿áá¬áá»á¬ážááᯠááŸá±á¬ááºááŸá¬ážááẠáá®ážááŒá¬áž VG áá áºáá¯ááᯠáááºáá®ážáá«áááºá
LVM áááºááŸáºááᯠá áá áºááá·áºááœááºážááŒááºážá
áááºážááᯠáááºááŸáºáááááá¬á¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááẠNVMe RAID 1 ááœáẠLV áá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á
#lvcreate -L 70871154688B --name cache root
áá¬ááá¯á·áá®áá±á¬ááºáááºážáá±áá¬áá²...á¡ááŸááºááŸá¬ áá»áœááºá¯ááºááá¯á·á NVMe SSDs áá»á¬ážááœáẠSLC cache áááºážááŸááááºá 4-bit MLC ááœáẠááááºážááá¯ááºáá¬ážáá±á¬ áá±áá¬ááœááºááŒá±á¬áá·áº "á¡ááá²á·" 18 áá áºáá«ááá¯ááºááŸáá·áº ááŸá¯ááºááŸá¬ážáá±áá±á¬ 3 áá áºáá«ááá¯ááºá á€áááºááŸáº áá¯ááºáá¯á¶ážááœá¬ážáááºááŸáá·áºá NVMe SSDs áá»á¬ážááẠáá»áœááºá¯ááºááá¯á·á SATA SSD ááẠááá¯ááá¯ááŒááºáááºáááºááá¯ááºáá«á ááááºáá±á¬á·á á€á¡ááŒá±á¬ááºážááŒá±á¬áá·áºá LVM cache partition ááᯠNVMe drive á SLC cache á¡ááœááºá¡á á¬ážááẠááŸá áºáááá¯ááŒá®ážá¡á±á¬ááºáá¯ááºááŒááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áááá¹áá«ááºáááŸááá«á á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ NVMe drives áá»á¬ážá¡ááœáẠ32-64 gigabytes ááŸááá±á¬ cache ááŒá¯áá¯ááºááẠá á¬áá±ážáá°á ááá·áºáá»á±á¬áºáááºáᯠáá°ááá«áááºá
áááºááŸáºá áááºááŸáº áááºáá¬áá±áá¬ááŸáá·áº áááºáá¬áá±áᬠá¡áááºááááºážáááºážááŸá¯ 64 áá áºáá«ááá¯ááºááᯠá á¯á ááºážáááºá¡ááœáẠáá±ážáá¬ážáá±á¬ á¡ááá¯ááºážá¡ááœááºá¡á á¬ážááẠááá¯á¡ááºáááºá
ááá¯á·á¡ááŒááºá áá áºáááºáá±á¬á áá áºááááºááŒá®ážáá±á¬áẠLVM ááẠáááºááŸáºáá áºáá¯áá¯á¶ážááᯠáá áºáááºáááºáᯠá¡ááŸááºá¡áá¬ážááŒá¯ááŒá®áž áááºáá°ááŒá¯áááºááᯠáááááŒá¯áá«á ááá¯á·á¡ááŒááºá á áá áºááŒááºáááºá áááºááá·áºá¡áá»áááºá¡áá á€á ááºáá á¹á ááºážááœáẠlvchange ááá¯á¡áá¯á¶ážááŒá¯ááá·áºá¡áá«ááá¯ááºáž áááºážááᯠáááºáá«ááá²áá²ááŒá¯áá¯ááºáá«áááºá ááá¯á·ááŒá±á¬áá·áºá ááá·áºáá»á±á¬áºáá±á¬ script ááá¯á¡áá¯á¶ážááŒá¯á cache ááá¯áá»ááºáá»ááºážááŒááºáááºáááºáá®ážáááºá¡ááŒá¶ááŒá¯áá«áááºá
áááºážááᯠáááºááŸáºáá¯ááºáá¬ážáá±á¬ á ááºáá á¹á ááºážá¡ááŒá Ạá¡áá¯á¶ážááŒá¯ááẠSATA RAID 6 ááœáẠLV áá áºáá¯ááᯠáááºáá®ážááá¯ááºááŒáá«á áá¯á·á
#lvcreate -L 3298543271936B --name cache data
áá¬ááŒá±á¬áá·áº áá¯á¶áž terabytes áá²ááŸáááá¬áá²..ááá¯á·ááŒá±á¬áá·áºá ááá¯á¡ááºáá«áá áááºááẠá¡ááŒá¬ážááá¯á¡ááºáá»ááºáá»á¬ážá¡ááœáẠSATA SSD RAID 6 ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáááºá áááºááŸáºáá¯ááºáá¬ážáá±á¬ áá±áá¬á á¡ááœááºá¡á á¬ážááẠá áá áºá¡á¬áž ááááºááá·áºáá² ááá¯ááºážááá áºááŒáá·áº áá»á¶áááºážááá¯ááºáááºá áááºážááá¯áá¯ááºáá±á¬ááºáááºá áááºááẠáá¬áá®áááºááá·áºááŒá®áž ááŒááºáááºááœáá·áºááẠááá¯á¡ááºáá±á¬áºáááºážá á¥ááá¬á¡á¬ážááŒáá·áº LVM-cache ááá°ážááŒá¬ážáá±á¬á¡á¬ážáá¬áá»ááºááŸá¬ áááºážááᯠáá»ááºááŒááºážáá¯ááºáá±á¬ááºááá¯ááºááŒááºážááŒá±á¬áá·áºááŒá áºáááºá
áááºáá»ááŒááºážá¡ááœáẠ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 ááœáẠáá±áá¬ááœááºá¡á¬ážáá¯á¶ážááᯠáá»ááºáá»ááºážáá°á á¡ááŒá¬ážááá¯á¡ááºáá±á¬ partition á¡á¬ážáá¯á¶ážááᯠ/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 cache block á¡ááœááºá¡á
á¬ážááẠLVM áá«ážááœáŸá¬áá±á¬ ááá±á¬ááºá¡ááœááºá¡á
á¬ážááŸáá·áº ááá¯ááºááá¯ááºáá«á á¡áá±á¬ááºážáá¯á¶ážááááºááᯠáááŸáááá¯ááºááŒá±á¬ááºáž á
á¬áá±ážáá° ááŸá¬ááœá±ááœá±á·ááŸááá²á·áááºá ááá¯á·á¡ááŒááºá á¡ááœááºá¡á
á¬ážáá±ážáááºáá±á áá»áááºážááá¯ááºáá°ážááŸá¯ááœáẠconfiguration áá¯ááºáá±á¬ááºááá¯ááºáá±ááŒá
áºáááºá
64k ááẠLVM áá«ážááœáŸá¬ááŸá¯á¡ááœáẠááœáá·áºááŒá¯áá¬ážáá±á¬ á¡áááºážáá¯á¶áž ááá±á¬ááºá¡ááœááºá¡á á¬ážááŒá áºáááºá
ááááá¬ážáá±á¬áº..!áá¯ááºáá²á·á ဠcache á¡áá»áá¯ážá¡á á¬ážááẠáááºááŸáºáááááá¬ááá¯á· áááºáá°ááŒá¯ááŒááºážá¡á¬áž áá±ážááẠááœáŸá±á·ááá¯ááºážáá¬ážáááºá ááá¯ááá¯áááºááŸá¬ áááºááŸáº áá»á±á¬ááºáá¯á¶ážááœá¬ážáá«áá áááºááẠáááºááŸáºáá¯ááºáá¬ážáá±á¬ á ááºááœáẠáá±áá¬áá»á¬áž áá¯á¶ážááŸá¯á¶ážááœá¬ážááá¯ááºáááºá áá±á¬ááºááá¯ááºážááœááºá á€á¡áá¹ááá¬ááºá¡ááœáẠáá»á±á¬áºááŒá±ážáá±ážááẠNVMe RAID 1 á¡ááŒáẠáááºááá·áºá¡ááá¯ááºážá¡áá¬áá»á¬ážááᯠá á¬áá±ážáá°á០ááŒá±á¬ááŒáá«áááºá
ဠcache á¡áá»áá¯ážá¡á á¬ážááẠRAID 6 á áá¶á·áá»ááºážáá±á¬ áá»áááºážáá±ážáá¬ážááŸá¯á áœááºážáá±á¬ááºáááºá¡ááœáẠáá»á±á¬áºááŒá±ážáá±ážááẠáááºááœááºáá»ááºááŸáááŸá ááœá±ážáá»ááºáá¬ážáááºá
áá¬ááœá±ááá² á á áºáá±ážááŒáá·áºáá¡á±á¬ááºá
#lvs -a -o lv_name,lv_size,devices --units B cache
LV LSize Devices
[cache] 68719476736B cache_cdata(0)
[cache_cdata] 68719476736B /dev/root/cache(0)
[cache_cmeta] 1073741824B /dev/root/cache(16384)
cachedata 3298539077632B cachedata_corig(0)
[cachedata_corig] 3298539077632B /dev/data/cache(0)
[lvol0_pmspare] 1073741824B /dev/root/cache(16640)
[cachedata_corig] áá¬áá»áŸáẠ/dev/data/cache ááœááºáááºááŸáááá·áºáááºá áá
áºáá¯áá¯ááŸá¬ážáá±ááẠpvmove ááá¯áá¯á¶ážáá«á
ááá¯á¡ááºáá«á command áá áºáá¯áááºážááŒáá·áº cache ááᯠdisable áá¯ááºááá¯ááºáááºá
#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
ááŸá
áºáá»ááºááŒáŸá±á¬ááºááŒá®áž LVM PV áááºáá¬áá±áá¬á¡ááœáẠ4194304B ááᯠááá·áºáá«- 8594128896B
LVM áá«ážááœáŸá¬áá±á¬ áááºáá¬áá±áá¬ááŸáá·áº áááºážááá¯á·á á¡áááºáááá¹áá°ááᯠáááºážáá±á«áºááœáẠáá¬ážááŸáááẠNVMe RAID 1 ááœáẠáá®ážááŒá¬ážá¡ááá¯ááºážáá
áºáá¯ááᯠáááºáá®ážááŒáá«á
áá¯á·á
#lvcreate -L 8594128896B --name images root
áá¬á¡ááœááºáá²..?á€áá±áá¬ááœáẠáá±ážááœááºážáá±á«áºáá¬ááá¯ááºáááº- áááºážááẠNVMe ááœáẠáááºááŸáºáá»áá¬ážáá²ááŒá áºááŒá®áž áá»ááºááŒááºá áœá¬ á¡áá¯ááºáá¯ááºáááºááá¯áá«á LVM áá«ážááœáŸá¬áá±á¬ áááºáá¬áá±áá¬ááᯠá¡áááºááŒá±á¬áá·áº áá®ážááŒá¬ážáá¬ážááááºážá
á€áá±áá¬ááœáẠááŒááºááŸá¯ááºážááẠá¡áá±ážááŒá®ážáá±á¬áºáááºážá áááºážááẠá¡áááá¡ááŒá±á¬ááºážáááºážááŸáá·áº áá±ážáá«áááºá á¡áá±ážááŒá®ážáá¬á áááºááŸáºá áá»ááŸá¯á¶ážáá²á·á¡áá»ááºáá«á áá áºáá¯áá¯ááŒá áºááœá¬ážááá¯ááºááŒá®áž LVM áá«ážááœáŸá¬áá±á¬ áááºáá¬áá±áá¬ááᯠáááºááŸáºáá¯ááºáá«á á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯á¶ážááá¯á¶ážááŸá¯á¶ážááœá¬ážá á±áááºááŒá áºáááºá ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ áááºáá¬áá±áá¬áááŸááá²á áá«ážááœáŸá¬áá±á¬ volumes áá»á¬ážááᯠá á¯á ááºážááẠáááŒá áºááá¯ááºááá±á¬ááºááŒá áºáááá·áºáááºá
áááºáá¬áá±áá¬ááᯠáá®ážááŒá¬áž áááºááŸáºáááŸááá±á¬áºáááºáž áá»ááºááŒááºá áœá¬á á¡áá¶á¡ááá¯ážá¡áá»ááºááá¯á· ááœáŸá±á·ááŒááºážááŒáá·áºá áááºááŸáºáá»á±á¬ááºáá¯á¶ážááŒááºáž ááá¯á·ááá¯áẠá¡áá»áá·áºáá»ááºááŒá á¬ážááŸá¯ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºáá¬áá±áá¬á áá±ážáááºážááŸá¯ááᯠá¡á¬ááá¶áá«áááºá á€ááá á¹á ááœááºá áááºááŸáºáá¯á¶ážááŸá¯á¶ážááŸá¯ááŒá±á¬áá·áº ááŒá áºáá±á«áºáá¬áá±á¬ áá»ááºá á®ážááŸá¯á¡á¬ážáá¯á¶ážááᯠáá«ážááœáŸá¬áá±á¬ áá¯áááºáá»á¬ážá¡ááœááºážááœáẠáá±áá á¶áá¬ážáááºááŒá áºááŒá®ážá ááŒááºáááºááá°ááŒááºážáá¯ááºáááºážá ááºááᯠááŒááºážá¡á¬ážá¡ááŸá¬á á¬áá»á¬ážááŒáá·áº ááá¯ážááŸááºážá á±áááºááŒá áºáááºá ááŒá áºááá¯ááºááŒá±áá»á¬ážáá±á¬á¡á¬ážááŒáá·áºá á€áá»ááºá á®ážááŸá¯áá»á¬ážááᯠFS ááŸááºáááºážáá»á¬ážáá¯á¶ážááŒá®áž ááŒááºáááºááá°áá«áááºá
ááá¯á·á¡ááŒááºá á¡áááºá áá«ážááœáŸá¬áá±á¬ volume ááá»áŸááºáá áºááŒááºááá¯ááºáá»ááºá¡á¬áž ááááºááá°áá²á·ááŒá®ážá ááá¯á·áá±á¬áẠáááºááŸáºááᯠá¡áááºážáá¯á¶ážáá áºááŒááẠá¡ááŒáá·áºá¡ááááºáá°ááŒá¯áá«áá ááá¯á·áá±á¬ááºá 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á€áá¯ááºááᯠá¡ááŸááºáááẠáááºááœááºáá¬ážááá·áºá¡áá¬á¡ááŒáẠ- áá±áá¬ááœááºááᯠááŒááºáááºááŒáá·áºáá±ááá·áºá¡áá« virtual machine áá
áºáá¯ááŸáá±áá¬áá±á«ááºááŒá¬ážááŒááºážá០virtual machine áá
áºáá¯á០data áá»á¬ážáá±á«ááºááŒá¬ážááŒááºážááŸáá¬ááœááºááẠ- zeroing ááᯠ64k áááºáá±ážáááºáá±á¬ blocks áá»á¬ážááœáẠáá»áááºážá
á¬áá±ážááŒááºážá¡ááŒááºááŸá¯ááºážááᯠááá¯ážááŒáŸáá·áºáááºá¡ááœáẠáááºáá±á¬ááºážá¡áá¯á¶ážááŒá¯áá«áááºá áá«ážááœáŸá¬áá±á¬á¡áá¶á¡ááá¯ážá¡áá»ááºáááááºáááœá²áá±ááá¬ážáá±á¬á§áááá¬ááá¯á· 64k áááºáááºážáá±á¬áá±ážáá«á áááºááŸáºááœáẠ64K edge-aligned ááŒá
áºááœá¬ážáá«áááºá áááºážááẠáááºááŸáºáá¯ááºáá¬ážááá·áº áááááá¬ááᯠáá»á±á¬áºááŒááºáᬠáá¯ááºáá±á¬ááºáá»ááºááᯠáááºááŸáºááŸáááá·áº áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž áá¯ááºáá±á¬ááºááá¯ááºá
á±áááºááŒá
áºáááºá
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)
á
ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠáá«ážááœáŸá¬áá±á¬ volume áá
áºáá¯ááᯠáááºáá®ážááŒáá«á
áá¯á·á
#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 á
áá¹ááá·áºááŒá¬ áá¯ááºáá±á¬ááºáááºááŒá
áºáááºá á
á
áºáá±ážááŸá¯áá
áºáááºááẠááŸááºáááºážáááºáááºá¡ááœááºááŒá
áºáááºá áááºááẠNVMe ááœáẠ4 á
áá¹ááá·áºá¡ááœááºáž áá»á¬ážá
áœá¬ááŸááºáááºážáááºááá¯ááºáááºá áá
áºá
áá¹ááá·áºáá»áŸáẠ4 áá
áºáá«ááá¯ááºá¡ááá ááá¯á·ááŒá±á¬áá·áºá á
á¬áá±ážááŒááºážá
ááºážáááºááŸá¯ááá¯ááºážááẠááá·áºáá¶á០SSD á¡áááºážá¡ááŒá
Ạ3 áá
áºáá«ááá¯ááºá¡áá á
á¬ážááá¯ááºáááºá
á á¬áááºááŒááºážááŸáá·áº á á¬áá±ážááŒááºáž áá±á¬ááœá±ážáá±áá«ááá¬ážááá¯ááºáá²á·á á á¬áá±ážá á¬áááºá á¬áá±ážááœá²áá»á¬ážááᯠáá®ážááŒá¬ážá á®áá¯ááºáá±á¬ááºááŒááºážááẠá¡áááá¹áá¬ááºááŸááá±áááºá ááá¯á·á¡ááŒááºá ááááºááŒá¯áá¯ááºáá¬ážáá±á¬á á¬áááºáááºááŒááºážááá¯áááááá¯ááºá á±ááẠáááºááŸáºá¡á¬ážáá¯á¶ážááᯠáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááŒá±á¬ááºážáá±áá»á¬á á±ááẠá¡áááá¹áá«ááºááŸáá á±áááºá
áááºááŸáºááŸáá·áº áá«ážááœáŸá¬áá±á¬ ááá¬áááᯠááŒáá·áºááœááºážáá¬ážáá±á¬ááŒá±á¬áá·áº ááááºáá»á¬ážááẠáááá áááºáá¯ááºáá±á ááºááŸáá·áº áá±á¬ááºáááºááœá²áá»á¬ážá¡ááœááºáž áá»á¬ážá áœá¬ááœá²ááŒá¬ážáááºááŒá áºááŒá®ážá á áá áºááẠáá±á¬ááºáá¯á¶ážááœáŸáá·áºáááºá ááºá¡ááœááºáž ááŒáá·áºááœááºážáá¬ážááá·áº áááºááŸáºáá»á¬ážááᯠáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá¯ááºááŒááºážááŸááááŸáá¡áá±á«áºáááºáž áá°áááºáááºá
á¡ááŒá¬ážá¡áá¬áá»á¬ážáá²ááŸá áá»áŸááºáá áºááŒááºááá¯ááºáá°áá¬ážááá·áº áá«ážááœáŸá¬áá±á¬ áá¯áááºáá áºáá¯áá±á«áºááœáẠá¡ááŒááºááŸá¯ááºážááᯠááá¯ááºážáá¬ááẠá¡ááŒá¶ááŒá¯ááá¯áá«áááºá á¡áá°ážáááŒáá·áº áááºááŸáºááẠáá¯á¶ážáá¯á¶ážáááŒáá·áºáá±ážááá·áºá¡áá« á á¬áá±ážáá°ááẠááááá¯á¶ážáá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáááºáá®ážááŒá®ážáá±á¬áẠáá»ááºáá»ááºážááá¯áááᯠáá»áááºážá á¬áá»á¬áž á¡ááŸáááºá¡áá¯ááºááŒááºážá áœá¬ á¡ááŸáááºááŒáŸáá·áºáááºááᯠá á¬áá±ážáá° áá±á·áá¬ááœáá·áºááá²á·áááºá copy-on-write write semanticsá cache ááŸáá·áº thin volume blocks áá»á¬ážááᯠáá»áááºááŸáááŒááºážááŒá±á¬áá·áº ááŒá áºáááºááŒá®áž RAID 6 ááá¯á· áá»áááºážá á¬áá±ážááŒááºážááẠRAID 6 á០random read áá áºáá¯á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážááŒááºážááŒá áºááŒá®áž áá±á¬ááºááœáẠcache ááá¯á· á á¬áá±ážáá«á áá»áœááºá¯ááºááá¯á·áááœá²á·á ááºážáá¯á¶ááœááºá RAID 6 á០áá»áááºážáááºááŒááºážááẠá á¬áá±ážááŒááºážááẠ( array á¡ááœááºážááŸá SATA SSD á¡áá±á¡ááœááº) 6 áá¡áá ááá¯ááŒááºáá«áááºá áá¬ááŒá áºááá¯á·áá²ááá¯áá±á¬á· CoW á¡ááœáẠáá¯ááºááœááºáá»á¬ážááᯠáá«ážááœáŸá¬áá±á¬ áá±áááºáá áºáá¯á០áááºááá¯ááºááœá²áá±áá±ážáááºá ááá¯á·áá±á¬áẠááŸááºáááºážáááºááŒááºáž á¡áá»á¬ážá á¯ááẠáááºááá¯ááºá¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáááºá
á€á¡ááºá¹áá«áááºááŸá áºáá¯áá¯á¶ážááᯠááá·áºá¡á¬ážáá¬áá»ááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
áááºááŸáº "áá±á«ááºážá ááº" áá»áŸááºáá áºááŒááºáá¯á¶áá»á¬áž
áááºááŸáºáá»ááºá á®ážááŸá¯/áá¯á¶ážááŸá¯á¶ážááŸá¯áá»á¬ážááœáẠáá±áá¬áá¯á¶ážááŸá¯á¶ážááá¯ááºááŒá±ááᯠáá»áŸá±á¬á·áá»áááºá¡ááœáẠá€ááá á¹á áááºááœáẠáááºážááá¯á·á ááá¬ááááŸáááŸá¯ááᯠá¡á¬ááá¶áááºá¡ááœáẠááŸáá·áºáááºáá¬ážáá±á¬ áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážá¡á¬áž ááááºáááºááẠá á¬áá±ážáá°á á¡ááá¯ááŒá¯áá«áááºá
ááááŠážá áœá¬á áá±ážáááºáá±á¬ááá¬á áááºáá¬áá±áá¬ááẠáááºáá»ááá¬ážáá±á¬ á ááºáá á¹á ááºážááœáẠááŸááá±áá±á¬ááŒá±á¬áá·áºá áááºáá¬áá±áá¬ááẠáá áºááááºáááºážááŒá áºáá±áááºááŒá áºááŒá®áž áá¯á¶ážááŸá¯á¶ážááŸá¯ ááŒá áºááá¯ááºáá»á±áá»á¬ážááᯠáá±áá¬ááááºááá¯á·ááŸá¯áá»á¬ážá¡ááœááºáž áá®ážááŒá¬ážááœá²áá¯ááºáááºááŒá áºáááºá
á¡á±á¬ááºáá±á¬áºááŒáá« áá»áŸááºáá áºááŒáẠááŸáá·áºáááºááŸá¯á ááºáááºážááẠáááºááŸáºáá»á±á¬ááºáá¯á¶ážááœá¬ážáá±á¬á¡áá«ááœáẠáá»áŸááºáá áºááŒááºá¡ááœááºážááŸá áá±áá¬áá»á¬ážá ááá¯ááºáá¬ááŸá¯ááᯠá¡á¬ááá¶áááº-
- á¡ááẠ<name> ááŒáá·áº áá«ážááœáŸá¬áá±á¬ volume áá áºáá¯á á®á¡ááœááºá á¡ááẠ<name>.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% write load á¡á±á¬ááºááœááºá¡ááŒá²áááŸáááá¯ááºáá«á 100% write load á¡á±á¬ááºááŸá áá»áœááºá¯ááºááá¯á·á NVMe SSDs áá»á¬ážááẠáááºážááŒá áºá¡ááœááºážááá¯á· áá¯á¶ážááá¯ááºááœá¬ážáá«áááºá 3-4 áááºáá±á«ááºáž. SATA SSD áá»á¬ážááẠááŸá áºááᬠááŒá¬ááŸááºáááºááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá áááºá¡áá»á¬ážá á¯ááẠá á¬áááºááŒááºážááá¯á· áá±á¬ááºááœá¬ážáááºáᯠáá»áœááºá¯ááºááá¯á· áá°ááááºááŒá áºááŒá®ážá áá»áœááºá¯ááºááá¯á·ááœáẠá á¬áá±ážáááºá¡ááœáẠáá»ááºážáá»áŸá¡á¬ážááŒáá·áº áááºáááºážáá«ážááŒááºážááŸáá·áº áá±á«ááºážá ááºáá¬ážáá±á¬ á¡ááœááºááŒáá·áºáá¬ážáá±á¬ áá¯ááºáá±á¬ááºááŸá¯á áá±ááá¯áá±ááŸáẠáá±á«ááºááœá²ááœááºáá»á¬ážááŸááááºá - áá»áœááºá¯ááºááá¯á·ááẠáá¯áááá¯áááºážáááááºááŸáá·áºáááŒáá¯ááºááẠ<name>.cached ááᯠ<name>.committed ááá¯á· ááŒá±á¬ááºážáá«áááºá <name>.committed á¡áá±á¬ááºážááᯠáá»ááºááá¯ááºáá«ááŒá®á
- ááœá±ážáá»ááºááá¯ááºáá±á¬á¡á¬ážááŒáá·áºá áááºááŸáºááẠ100% ááŒáá·áºáá«áá áááºážááᯠscript áá áºáá¯ááŒáá·áº ááŒááºáááºáááºáá®ážááá¯ááºááŒá®áž áááºážááᯠááŸááºážáááºážááá¯ááºáááºá áááºááŸáºáá áºáááºááá¬ááŒáá·áºá á á¬áá±ážáá±á¬á¡áá«ááœáẠá áá áºááẠááá¯ááá¯ááŒááºáááºá áœá¬ á¡áá¯ááºáá¯ááºáá«áááºá
- ááœáŸá±á·ááŒá±á¬ááºážááŒááºážá¡ááá·áºááᯠáá¯áááá¯á· áááºááŸááºáá«-
#lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata
áááºážááẠáááºááŸáºááᯠáááºááá®áá®áá¬ááá¯á· áá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááŒááºážá០áá¬áá®áá¬ážáá®ážáááºááŒá áºáááºá - áááºááŸáºááœáẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá
áœá¬ á
á¯áá¯á¶áá¬áááºá¡áá áá»áœááºá¯ááºááá¯á· á
á±á¬áá·áºáá»áŸá±á¬áºáá±áá«áááºá
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'
áá«ááŸááá¯áẠtimer ááŒááºááœá¬ážáááá·áºáááºá - áá»áœááºáá±á¬áºááá¯á· áááºáá¯ááºáááºá
ááœáŸá±á·ááŒá±á¬ááºážáá±ááá¯ááºááŸá¯ ááá·áºáááºáá»áẠáá¬ááŒá±á¬áá·áº á¡áááºá¡áá²ááŸáááá²...?á¡ááŸááºááŸá¬ áááºááœá±á·ááœááºá "áá»áááºáž" ááŸááºáááºážáááºááŒááºážááẠá¡ááŸááºáááẠáá¯á¶ážááá»áááºážááá¯ááºáá±á á¡áááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááœááºá¡á á¬áž 4 áá®ááá¯ááá¯ááºááŸááá±á¬ ááá¹ááá áºáá¯ááá¯á· áá áºá á¯á¶áá áºáá¯ááᯠáá±ážáá²á·áá«á áá±á¬ááºááŸá áºáááá áºá¡ááœááºáž áá°áá®áá±á¬ ááá¯á·ááá¯áẠá¡áááºáá®ážáá»ááºáž (+- 32K) ááá¹ááá»á¬ážáá²á០áá áºáá¯ááá¯á· ááŸááºáááºážáá áºáᯠááŒá¯áá¯ááºááá¯ááºááŒá± ááŒáá·áºáá¬ážáá«áááºá
ááœáŸá±á·ááŒá±á¬ááºážááŒááºážá¡ááá·áºááᯠáá¯áá¡ááŒá ẠáááºááŸááºááŒááºážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠSATA SSD ááœáẠáááºáá°ááŒá¯ááŒááºážáá±ážáá¬ážááŒááºážááᯠááœáŸá±á·ááá¯ááºážááá¯ááºááŒá®áž áááºááŸáºááŸá 64K ááá±á¬ááºáá áºáá¯ááá¯á· á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá áœá¬ááᯠá á¯á ááºážááá¯ááºáá«áááºá áááºážááẠSATA SSD áá¡áááºážá¡ááŒá áºááᯠáááááá¬áᬠáááºáá¬á á±áááºá
áá¯ááºáááºááŸá¬áá²..áá¶ááá±á¬ááºážá áœá¬ááŒáá·áºá á á¬áá±ážáá°ááẠáá°á·ááá¯ááºáá° 100% ááá¯ááºááá¯ááºáááºááŒá¬ážááŒá®áž "google"-driven development ááᯠáá»áá·áºáá¯á¶ážáá±á¬ááŒá±á¬áá·áº bash script áá»á¬ážááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááœáẠáá°á·ááá¯ááºáá° á¡áááºá¡áá»ááºážáááŒáá·áºáá®áᯠáá°ááá±á¬ááŒá±á¬áá·áº áááºáá°á០á¡áá¯á¶ážáááŒá¯ááá·áºáᯠáá¯á¶ááŒááºáá«áááºá áááŒá¬áž
ááá¯á¡ááºáá«á á¡áááºáá±á¬áºááŒáá« áá¯áá¹áááá±á á¡á¬ážáá¯á¶ážááᯠá€áááºáááºá០áá»áœááºážáá»ááºááá¬ááŸááºáá»á¬ážá ááœááºáááºá áœá¬ áá¯á¶áá±á¬áºááá¯ááºáááºááŒá áºááŒá®áž á á¬áá±ážáá° ááŒáá¯ážá á¬ážáá²á·ááá·áºá¡ááá¯ááºáž áááºážááᯠá áá áºáá»áá±á¬ áááºáá±á¬ááºááŸá¯áá áºáá¯á¡ááŒá áºááẠááŸáá áœá¬ áá¯á¶áá±á¬áºááá¯ááºáááºáᯠáá»áœááºáá±á¬áºáááºáá«áááºá
á€áá²á·ááá¯á·áá±á¬ ááá¯ážááŸááºážáá±á¬áá»áŸááºáá áºááŒááºáááºáááºááŸá¯á¡á á®á¡á ááºááẠSATA SSD ááœáẠáá»áŸááºáá áºááŒááºáá áºáá¯á¶áá áºáá¯á¶ááᯠá¡áááºáááŒááºáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá¯ááºá á±áá¯á¶áá¬ááá áááºážááá¯áááºáá®ážááŒá®ážáá±á¬áẠáááºááá·áºááá±á¬ááºáá»á¬ážááŒá±á¬ááºážáá²ááœá¬ážáááºááᯠááááŸáááá¯ááºááẠthin_delta utility ááá¯á¡áá¯á¶ážááŒá¯ááááºáž áá»áœááºá¯ááºááá¯á·á¡á¬áž ááœáá·áºááŒá¯áá±ážáááºááŒá áºáááºá ááŒááºáááºááá°ááŒááºážááᯠá¡ááœááºááá¯ážááŸááºážá á±áá±á¬ á¡áááá¡ááœá²áá»á¬ážá
libvirt/KVM ááœáẠááŒááºáááº/áááºáá¯ááºáá«á
áá¬ááŒá áºááá¯á·áá²ááá¯áá±á¬á· áá±áá¬ááááºážáááºážááŸá¯ááᯠKVM áááºáááºáá±ááá·áº libvirt á¡ááœáẠá¡áá¯á¶ážááŒá¯áááºááŒá áºááŒá®ážá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·á VM áá»á¬ážááᯠáá±áá¬ááœááºáá°áá¯á¶áá¬áá áááá¯á¡ááºáá±á¬á·ááá·áºá¡áá¬áá»á¬ážááᯠá¡ááá²á·ááŒá áºá á±ááẠáááºááŒá¬ážáá±ážááŒááºážááẠáá±á¬ááºážáá±á¬á¡ááŒá¶ááŒá áºáá±áááºá
áááºážááᯠvirtual disk áá»á¬ážááœáẠTRIM/DISCARD áá¶á·ááá¯ážááŸá¯ááᯠá¡áá¯áá°ááŒááºážááŒáá·áº áá¯ááºáá±á¬ááºáááºá áá«ááá¯áá¯ááºááá¯á·á Controller á¡áá»áá¯ážá¡á á¬ážááᯠvirtio-scsi ááŒá±á¬ááºážááŒá®áž xml ááᯠáááºážááŒááºááá«áááºá
#virsh edit vmname
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads' discard='unmap'/>
<source dev='/dev/images/vmname'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>
á§áá·áºááẠOS áá»á¬ážá០áááºááŸá¬ážááŒááºážáá»á¬ážááᯠLVM á០ááŸááºáááºá
áœá¬ áá¯ááºáá±á¬ááºááŒá®áž ááááºááá¯á·ááŸá¯áá»á¬ážááᯠáááºááŸáºááœááºáá±á¬ áá«ážááœáŸá¬áá±á¬ áá±áá°ážáááºááœááºáá« ááŸááºáááºá
áœá¬ ááœáŸááºáá±ážáá«áááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºážááẠáá±á¬ááºáá»áŸááºáá
áºááŒááºááá¯ááºáá»ááºá¡á¬áž áá»ááºááá·áºá¡áá«ááœáẠá¡áááá¡á¬ážááŒáá·áº ááŸá±á¬áá·áºááŸá±ážááá·áºáá¯á¶á
á¶ááŒáá·áº ááŒá
áºááœá¬ážáááºá
BTRFS Backup
á¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ scripts áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á á¡á áœááºážáá±á¬áẠáááááŸáá·áº ááá¯áá·áºá¡áá¹ááá¬ááº. á á¬áá±ážááá¬á áá®áá¯ááºááᯠááá¯ááºááá¯ááºáá±ážááŒá®áž áá°á·á¡ááœáẠáá®ážááá·áºáá±ážáááºá á¡ááœá±á·á¡ááŒá¯á¶ááŸá Linux á¡áá¯á¶ážááŒá¯áá° á¡áá»á¬ážá¡ááŒá¬ážááœáẠá¡áá¬ážáá°áááááá¬áá»á¬áž ááŸáááŒá®áž á¡ááŒá¬ážáá°áá áºáŠážá áá°ážáá°ááẠáááá¯á¡ááºááŒá±á¬ááºáž áá»áœááºá¯ááºáá±áá»á¬áá«áááºá
á¡áááºáááááá¬áá±á«áºááœáẠá¡áá¶á¡ááá¯ážá¡áá»ááºááᯠáááºáá®ážááŒáá«á áá¯á·á
#lvcreate -L 256G --name backup backup
áááºážááᯠBTRFS ááŒáá·áº áá±á¬áºáááºáá¯ááºááŒáá«á áá¯á·á
#mkfs.btrfs /dev/backup/backup
mount á¡ááŸááºáá»á¬ážáááºáá®ážááŒá®áž ááá¯ááºá áá áºá á¡ááŒá áºá¡ááá¯ááºážááœá²áá»á¬ážááᯠáááºáááºááŒáá«á áá¯á·á
#mkdir /backup
#mkdir /backup/btrfs
#mkdir /backup/btrfs/root
#mkdir /backup/btrfs/back
#ln -s /boot /backup/btrfs
# cat >>/etc/fstab << EOF
/dev/mapper/root-root /backup/btrfs/root btrfs defaults,space_cache,noatime,nodiratime 0 2
/dev/mapper/backup-backup /backup/btrfs/back btrfs defaults,space_cache,noatime,nodiratime 0 2
EOF
#mount -a
#update-initramfs -u
#update-grub
á¡áááºáá°ážááŒááºážá¡ááœáẠáááºážááœáŸááºáá»á¬áž áááºáá®ážááŒáá«á
áá¯á·á
#mkdir /backup/btrfs/back/remote
#mkdir /backup/btrfs/back/remote/root
#mkdir /backup/btrfs/back/remote/boot
á¡ááẠscript áá»á¬ážá¡ááœáẠáááºážááœáŸááºáá
áºáᯠáááºáá®ážááŒáá«á
áá¯á·á
#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 áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááá¯áááºáá®ážáááºááŸáá·áº BTRFS áá±ážááá¯á·/áááºáá¶ááŸá¯ááᯠá¡áá¯á¶ážááŒá¯á á¡ááŒá¬áž FS ááá¯á·áá°ážáá°áááºá¡ááœáẠááá¯ážááŸááºážáá±á¬ command á¡á á¯á¶áá«ááŸááááºá
áááá¡ááŒááẠááœáŸááºáááºááŒááºážááẠá¡áá±á¬áºá¡áááºááŒá¬ááá¯ááºáá±á¬ááŒá±á¬áá·áº ... á¡á ááœááºá á¡áá»ááºá¡áááºá¡á¬ážáá¯á¶ážááᯠáá°ážáá°áááºááŒá áºáááºá áá±á¬ááºááẠááœáŸáá·áºáááºááŸá¯á á¡áááºážááŒááºááŸá¬ááá¯áá±á¬á·... á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááá¯áᬠáá°ážáá°áá«áááºá
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
áá¬áá¯ááºáá¬áá²..?á¡áááºááááºáž FS ááœáẠá á¬áááºážááœááºážáá¬ážáá±á¬ BTRFS volumes á ááá¯ážááŒáá·áºáá¬áá±á¬ áá»áŸááºáá áºááŒááºáá¯á¶áá»á¬ážááᯠáááºáá®ážááŒá®áž áááºáá°ááŒá¯áá«áááºá áááºážááŒá®ážáá±á¬ááºá áááºážááẠááœááºáá²á·áá±á¬ ááẠ60 á áááºáá®ážáá¬ážááá·áº áá¬ááºáá¯á¶á¡á¬ážáá¯á¶ážááᯠáá»ááºáá áºáááºá á áááºááŒá®ážáá±á¬ááºá á á¬áááºážááœááºážáá¬ážáá±á¬ volumes áá»á¬ážá áááºá áœá²áá« áá»áŸááºáá áºááŒááºáá¬ááºáá¯á¶áá»á¬ážááẠ/backup/btrfs/back/remote/ subdirectories áá»á¬ážááœáẠáá±á«áºáá¬áááá·áºáááºá
Code execution rights ááᯠáá±ážááŒáá«á áá¯á·á
#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 ááᯠinstall áá¯ááºáá¡á±á¬ááºááá¯áá±á¬á·... Script áá»á¬ážááẠá€áááááá¬ááᯠá¡áá¯á¶ážááŒá¯áááá·áºáááº-
#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 ááŸá¬ áááºááá·áº áá±á¬ááºááẠáá¬ááºááœáŸááºáž
áááºážáááºážááᯠbash#cat >/root/lvm-thin-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
BACKUP_SCRIPT="$SCRIPT_DIR/lvm-thin-backup.sh"
RETENTION="-60 days"
$BACKUP_SCRIPT backup images linux-dev
$BACKUP_SCRIPT backup images win8
$BACKUP_SCRIPT backup images win8-data
#etc
$BACKUP_SCRIPT removeall images linux-dev "$RETENTION"
$BACKUP_SCRIPT removeall images win8 "$RETENTION"
$BACKUP_SCRIPT removeall images win8-data "$RETENTION"
#etc
EOF
áá¬áá¯ááºáá¬áá²...?á á¬áááºážááœááºážáá¬ážáá±á¬ áá«ážááœáŸá¬áá±á¬ volumes áá»á¬ážá á¡áááºáá»á¬ážááᯠáááºáá®ážááŒá®áž áááºáá°ááŒá¯ááẠáááẠscript ááᯠá¡áá¯á¶ážááŒá¯áááºá áá¬ááºááœáŸááºážááẠáá±á¬ááºáá¯á¶ážáááºáá°ááŒá¯ááŒááºážááŸá ááŒá®áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒá±áá¬áá¶ááẠááá¯á¡ááºááá·áº á á¬áááºážááœááºážá¡ááœá²áá»á¬ážá ááŸá¯ááºááŸá¬ážááŸá¯áááŸááá±á¬ áá»áŸááºáá áºááŒááºááá¯ááºáá»ááºáá»á¬ážááᯠáá»ááºáá¬ážáá²á·áá«áááºá
á¡áááºáááá¹áá°áá»á¬áž ááŒá¯áá¯ááºááá·áºááá·áº á¡ááœá²áá»á¬ážá á¬áááºážááᯠáááºááŸááºááŒááºážááŒáá·áº á€áá¬ááºááœáŸááºážááᯠáááºážááŒááºááá«áááºá áá±ážáá¬ážáá±á¬á¡áááºáá»á¬ážááẠáá¯á¶á¥ááá¬á¡ááœááºáá¬ááŒá áºáááºá ááá¹áááŸááá«á volumes á¡á¬ážáá¯á¶ážááᯠáá áºááŒáá¯ááºáááºážáá¯ááºáá±á¬ááºááá·áº script ááᯠáá±ážááá¯ááºáááºá
á¡ááœáá·áºá¡áá±ážáá±ážááŒáá¡á±á¬ááºá
#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
áááá¡ááŒááẠááœáŸááºáááºáᬠááŒá¬ááŒá®ááá¯áá±á¬á·... á¡áá¯á¶ážááŒá¯áá¬ážáá±á¬ áá±áá¬á¡á¬ážáá¯á¶ážááᯠáá°ážáá°ááŒááºážááŒáá·áº áá«ážááœáŸá¬áá±á¬ volumes áá»á¬ážááᯠá¡ááŒáá·áºá¡á áááºáá°ááŒá¯áá«áááºá 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 logical volumes áá»á¬ážááẠá¡ááŒá¬ážáá±á¬ VG áá»á¬ážá¡ááœáẠLVM PV áá¯ááºááá¯ááºážááá¯ááºáᬠvolumes áá»á¬ážááŒá áºááá¯ááºáá±á¬ááŒá±á¬áá·áº ááŒá áºááá¯ááºáá»á±áá»á¬ážáá«áááºá LVM ááẠá¡ááá¯ááºá¡áá¯ááºáá»á¬ážáá²á·ááá¯á· áá áºáá»á±á¬á·ááŒááºááŒá áºáá¬ááá¯ááºáááºá áááºážááẠLVM á¡ááœááºááŒá±á¬ááºážááœááºááŒááºááœááºáá±ážáááºá
PS
áá±á¬ááºáá±á¬ááºážáá«ážááœááºá á¡áááºáá¯á¶ážáááºá
áá±á¬á·áá»á¬ážá á¡áááºáá¯á¶ážá¡ááºáá¬áááºááŸáá·áº P2P ááœááºáááºáá»á¬ážááᯠááá¯ááºááŒá®ážáá»á¬ážá
áœá¬ááœáẠá§áááá¬á¡áá»á¬ážá¡ááŒá¬ážááœáẠááŒáá·áºáá±áá¬ážáá±á¬ ááá¯ááŸá±á¬ááºááŸá¯/vm á¡á
á¯á¡áá±ážááᯠáááºáá®ážáááºá¡ááœáẠá¡ááŒá±áá¶á¡ááŒá
Ạáááºáá°ááá¯ááá¯ááºážááá¯ááŸá±á¬ááºááŸá¯á
áá
áºáá»á¬áž/KVM á¡áá»á¬ážá¡ááŒá¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠááŒáá¯ážá
á¬ážáá«áááºá
source: www.habr.com