ΠΠΎΠ±ΡΡ Π΄Π΅Π½.
ΠΡΠΊΠ°ΠΌ Π΄Π° ΡΠΏΠΎΠ΄Π΅Π»Ρ ΠΎΠΏΠΈΡ Ρ ΠΎΠ±ΡΠ½ΠΎΡΡΡΠ° ΠΎΡΠ½ΠΎΡΠ½ΠΎ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° KVM Ρ md RAID + LVM.
Π ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅:
- Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° md RAID 1 ΠΎΡ NVMe SSD.
- Π‘Π³Π»ΠΎΠ±ΡΠ²Π°Π½Π΅ Π½Π° md RAID 6 ΠΎΡ SATA SSD ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅.
- Π₯Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° TRIM/DISCARD Π² SSD RAID 1/6.
- Π‘ΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Ρ md RAID 1/6 ΠΌΠ°ΡΠΈΠ² Π½Π° ΠΎΠ±Ρ Π½Π°Π±ΠΎΡ ΠΎΡ Π΄ΠΈΡΠΊΠΎΠ²Π΅.
- ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π° NVMe RAID 1 ΠΏΡΠΈ Π»ΠΈΠΏΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° NVMe Π² BIOS.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LVM cache ΠΈ LVM thin.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° BTRFS ΡΠ½ΠΈΠΌΠΊΠΈ ΠΈ send/receive Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LVM thin ΡΠ½ΠΈΠΌΠΊΠΈ ΠΈ thin_delta Π·Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎ ΠΊΠΎΠΏΠΈΡΠ°Π½Π΅ Π² ΡΡΠΈΠ» BTRFS.
ΠΠΊΠΎ Π²Π΄ΡΡ
Π½ΠΎΠ²ΡΠ²Π°, ΠΌΠΎΠ»Ρ, ΠΏΠΎΠ΄ ΠΊΠ°Ρ.
ΠΠ΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ
ΠΠ²ΡΠΎΡΡΡ Π½Π΅ Π½ΠΎΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠ²Π° ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΡΠ° ΠΎΡ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΈΠ»ΠΈ Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»ΠΈ/ΠΏΡΠΈΠΌΠ΅ΡΠΈ/ΠΊΠΎΠ΄/ΡΡΠ²Π΅ΡΠΈ/Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ. Π§Π΅ΡΠ΅ΠΉΠΊΠΈ ΠΈΠ»ΠΈ ΠΏΠΎ ΠΊΠ°ΠΊΡΠ²ΡΠΎ ΠΈ Π΄Π° Π΅ Π½Π°ΡΠΈΠ½ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠΎΠ·ΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π», ΠΏΠΎΠ΅ΠΌΠ°ΡΠ΅ ΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡΡΠ° Π·Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΠΎΡ ΡΠ΅Π·ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ Π²ΠΊΠ»ΡΡΠ²Π°Ρ:
- ΠΠ·ΠΏΡΡΠΆΠ΅Π½ΠΈ Π΄ΠΎ Ρ ΡΡΠΏΠΊΠ°Π²ΠΎΡΡ NVMe SSD.
- ΠΠ°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΡΠ΅ΡΠΏΠ°Π½ ΡΠ΅ΡΡΡΡ Π½Π° Π·Π°ΠΏΠΈΡ ΠΈ ΠΎΡΠΊΠ°Π· Π½Π° SSD ΡΡΡΡΠΎΠΉΡΡΠ²Π°.
- ΠΡΠ»Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ.
- ΠΠ΅Π²Π°Π»ΠΈΠ΄Π½ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΡΠ½ΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅.
- ΠΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½ΠΎ Π²ΡΠ΅ΠΌΠ΅, Π½Π΅ΡΠ²ΠΈ ΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°.
- ΠΡΠΈΡΠΊΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ° ΠΈΠ·Π±ΡΠΎΠ΅Π½ΠΈ ΠΏΠΎ-Π³ΠΎΡΠ΅.
ΠΠ΅Π»ΡΠ·ΠΎ
ΠΠΌΠ°ΡΠ΅ Π½Π°Π»ΠΈΡΠ½ΠΎ:
ΠΡΠ½ΠΎΠ²Π½Π° ΠΏΠ»Π°ΡΠΊΠ° ΠΎΡ Π½ΡΠΊΡΠ΄Π΅ ΠΏΡΠ΅Π· 2013 Π³. Π½Π° ΡΠΈΠΏΡΠ΅Ρ Z87 Ρ Intel Core i7 / Haswell.
- ΠΡΠΎΡΠ΅ΡΠΎΡ Ρ 4 ΡΠ΄ΡΠ°, 8 ΠΏΠΎΡΠΎΠΊΠ°
- 32 ΠΠΈΠ³Π°Π±Π°ΠΉΡΠ° 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 ΡΡΡΠΌΡΠ΅ΡΠ° ΡΠ΅Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΈΠ·ΡΡΠ»ΠΎ, Π° HBA Π² ΠΊΡΠ°ΠΉΠ½Π° ΡΠΌΠ΅ΡΠΊΠ° Π½ΡΠΌΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π°Ρ ΠΏΠΎ ΡΠΈΠ½Π°.
Π₯Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ β 8 Π±ΡΠΎΡ HGST Travelstar 7K1000 Ρ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅Ρ 1 TB Π² 2.5 ΡΠΎΡΠΌ-ΡΠ°ΠΊΡΠΎΡ, ΠΊΠ°ΠΊΡΠΎ Π·Π° Π»Π°ΠΏΡΠΎΠΏΠΈ. Π’Π΅Π·ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΏΡΠ΅Π΄ΠΈ Π±ΡΡ Π° Π² RAID 6 ΠΌΠ°ΡΠΈΠ². Π Π½ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΡΡΠΎ ΡΠ΅ Π½Π°ΠΌΠ΅ΡΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠ° ΡΡΡ ΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π±ΡΡ Π° Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ:
6 Π±ΡΠΎΡ SATA SSD ΠΌΠΎΠ΄Π΅Π» Samsung 860 QVO 2TB. ΠΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ ΡΠ΅ Π³ΠΎΠ»ΡΠΌ ΠΊΠ°ΠΏΠ°ΡΠΈΡΠ΅Ρ ΠΎΡ ΡΠ΅Π·ΠΈ SSD, Π½Π°Π»ΠΈΡΠΈΠ΅ Π½Π° SLC ΠΊΠ΅Ρ, ΠΆΠ΅Π»Π°ΡΠ΅Π»Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ, ΠΈ ΡΠ°Π·ΡΠΌΠ½Π° ΡΠ΅Π½Π°. ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° discard/zero Π±Π΅ΡΠ΅ Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π°, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π° Ρ ΡΠ΅Π΄ Π² dmesg:
ΡΠ΄ΡΠΎ: ata1.00: ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° 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 bifurcation ΠΎΡ Π΄ΡΠ½Π½Π°ΡΠ° ΠΏΠ»Π°ΡΠΊΠ° Π·Π°ΡΠ°Π΄ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΡΠ΅Π» PCIe. Π©Π΅ ΡΠ°Π±ΠΎΡΠΈ Π΄ΠΎΡΠΈ Π² Π½Π°ΠΉ-ΡΡΠ°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΡΠ΄Π΅ΡΠΎ ΠΈΠΌΠ° PCIe, Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠΎΠ²Π° Π΅ x1 PCIe 1.0 ΡΠ»ΠΎΡ. Π Π°Π·Π±ΠΈΡΠ° ΡΠ΅, ΡΡΡ ΡΡΠΎΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΠΊΠΎΡΠΎΡΡ. ΠΡΠΌΠ° RAID ΡΠ°ΠΌ. ΠΡΠΌΠ° Π²Π³ΡΠ°Π΄Π΅Π½ BIOS Π½Π° Π±ΠΎΡΠ΄Π°. Π’Π°ΠΊΠ° ΡΠ΅, Π²Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΌΠ°Π³ΠΈΡΠ΅ΡΠΊΠΈ Π½ΡΠΌΠ° Π΄Π° Π½Π°ΡΡΠΈ Π΄Π° ΡΠ΅ Π·Π°ΡΠ΅ΠΆΠ΄Π° ΠΎΡ NVMe, ΠΊΠ°ΠΌΠΎ Π»ΠΈ Π΄Π° ΠΏΡΠ°Π²ΠΈ NVMe RAID Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠΎΠ²Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
Π’ΠΎΠ·ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±Π΅ΡΠ΅ ΠΎΠ±ΡΡΠ»ΠΎΠ²Π΅Π½ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΠΎΡ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΌΠΎ Π΅Π΄ΠΈΠ½ ΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ 8x PCIe 3.0 Π² ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°, ΠΈ, ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° 2 ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈ ΡΠ»ΠΎΡΠ°, Π»Π΅ΡΠ½ΠΎ ΡΠ΅ Π·Π°ΠΌΠ΅Π½Ρ Ρ Π΄Π²Π° Π΅Π²ΡΠΈΠ½ΠΈ PEX4M2E1 ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ·ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΊΡΠΏΡΡ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅ Π½Π° ΡΠ΅Π½Π° ΠΎΡ 600 ΡΡΠ±Π»ΠΈ.
ΠΡΠΊΠ°Π·ΡΡ ΠΎΡ Π²ΡΡΠΊΠ°ΠΊΠ²ΠΈ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈ ΠΈΠ»ΠΈ Π²Π³ΡΠ°Π΄Π΅Π½ΠΈ Π² ΡΠΈΠΏΡΠ΅Ρ/Bios RAID-ΠΈ Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΎΡΡΠ·Π½Π°ΡΠΎ Ρ ΡΠ΅Π»ΡΠ° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°ΠΏΡΠ»Π½ΠΎ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌ ΡΡΠ»Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΌΠΈΡΠ΅ SSD/HDD, ΠΊΠ°ΡΠΎ Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ. Π ΠΈΠ΄Π΅Π°Π»Π½ΠΈΡ ΡΠ»ΡΡΠ°ΠΉ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π΄ΠΎΡΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π°ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ²ΡΠ΅ΠΌ Π½ΠΎΠ²ΠΎ/Π΄ΡΡΠ³ΠΎ ΠΆΠ΅Π»ΡΠ·ΠΎ. ΠΡΠ½ΠΎΠ²Π½ΠΎΡΠΎ Π΅ Π΄Π° ΠΈΠΌΠ° SATA ΠΈ PCIe ΠΏΠΎΡΡΠΎΠ²Π΅. Π’ΠΎΠ²Π° Π΅ ΠΊΠ°ΡΠΎ live CD ΠΈΠ»ΠΈ Π±ΡΡΡΠ΅ΠΌΠ° ΡΠ»Π°ΡΠΊΠ°, ΡΠ°ΠΌΠΎ ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·Π° ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΎΠ±Π΅ΠΌΠ½Π°.
Π₯ΡΠΌΠΎΡΠΠ½Π°Π΅ΡΠ΅ ΠΊΠ°ΠΊ Π΅, β ΠΏΠΎΠ½ΡΠΊΠΎΠ³Π° Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΏΠ΅ΡΠ½ΠΎ Π΄Π° Π²Π·Π΅ΠΌΠ΅ΡΠ΅ ΡΡΠ»ΠΎΡΠΎ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ Π½Π° ΠΈΠ·Π½ΠΎΡ. Π Π½Π΅ ΠΈΡΠΊΠ°ΡΠ΅ Π΄Π° Π³ΡΠ±ΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ. ΠΠ°ΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° Π²ΡΠΈΡΠΊΠΈ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈ Π½ΠΎΡΠΈΡΠ΅Π»ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ΅ ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π°Ρ ΠΏΠΎ ΡΠΈΠ½ΠΈ Π² ΠΎΡΡΠ΅ΠΊ 5.25 ΠΎΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ΅Π½ ΠΊΠΎΡΠΏΡΡ.
Π, ΡΠ°Π·Π±ΠΈΡΠ° ΡΠ΅, Π·Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π½Π° SSD ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅ Π² Linux.
Π₯Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΈΡΠ΅ ΡΠ΅ΠΉΠ΄ΠΎΠ²Π΅ ΡΠ° ΡΠΊΡΡΠ½ΠΈ. ΠΠΊΠ»ΡΡΠ²Π°Ρ. ΠΠ»ΠΈ ΡΠ°Π±ΠΎΡΠΈ, ΠΈΠ»ΠΈ Π½Π΅. Π Ρ mdadm Π²ΠΈΠ½Π°Π³ΠΈ ΠΈΠΌΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΈ.
Π‘ΠΎΡΡ
ΠΠΎ-ΡΠ°Π½ΠΎ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ° Π±Π΅ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ Debian 8 Jessie, ΠΊΠΎΠΉΡΠΎ Π΅ Π±Π»ΠΈΠ·ΡΠΊ Π΄ΠΎ EOL. ΠΠ΅ΡΠ΅ ΡΡΠ±ΡΠ°Π½ RAID 6 ΠΎΡ ΠΏΠΎ-Π³ΠΎΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠΈΡΠ΅ HDD Π² ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Ρ LVM. ΠΠ° Π½Π΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅Ρ Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ Π² kvm/libvirt.
Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π°Π²ΡΠΎΡΡΡ ΠΈΠΌΠ° ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΠΎΠΏΠΈΡ Π² ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠΈ SATA/NVMe ΡΠ»Π°ΡΠΊΠΈ ΠΈ Π½Π΅ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π½Π°ΡΡΡΠ°Π²Π°ΠΌΠ΅ ΠΏΠΎΠ·Π½Π°ΡΠΈΡ apt ΡΠ°Π±Π»ΠΎΠ½, Π·Π° ΡΠ΅Π»Π΅Π²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π±ΡΡ Π° ΠΈΠ·Π±ΡΠ°Π½ΠΈ Ubuntu 18.04, ΠΊΠΎΡΡΠΎ Π²Π΅ΡΠ΅ Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΡΡΠ°Π±ΠΈΠ»Π½Π°, Π½ΠΎ Π²ΡΠ΅ ΠΎΡΠ΅ ΠΈΠΌΠ° 3 Π³ΠΎΠ΄ΠΈΠ½ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π² ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π°.
Π ΡΠΏΠΎΠΌΠ΅Π½Π°ΡΠ°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΈ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π·Π° Ρ Π°ΡΠ΄ΡΠ΅Ρ ΠΎΡ ΠΊΡΡΠΈΡΡΠ°. ΠΠΈΠΊΠ°ΠΊΡΠ² Π²ΡΠ½ΡΠ΅Π½ ΡΠΎΡΡΡΠ΅Ρ ΠΈ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½ΡΠΌΠ° Π΄Π° Π½ΠΈ ΡΡΡΠ±Π²Π°Ρ.
ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ
ΠΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Ubuntu Desktop. Π‘Π΅ΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈΡΠ΅ΠΆΠ°Π²Π° ΡΠ΄ΡΠ΅Π½ ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΎΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΡΠΎΡΠ²ΡΠ²Π° ΠΈΠ·Π»ΠΈΡΠ½Π° Π½Π΅ΠΆΠ΅Π»Π°Π½Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎΡΡ, Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΌΡΠΊΠ²Π°ΠΉΠΊΠΈ UEFI ΡΠΈΡΡΠ΅ΠΌΠ΅Π½ Π΄ΡΠ» Π½Π° Π΅Π΄ΠΈΠ½ ΠΎΡ Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅, ΡΠ°Π·Π²Π°Π»ΡΠΉΠΊΠΈ ΡΡΠ»Π°ΡΠ° ΠΊΡΠ°ΡΠΎΡΠ°. Π‘ΡΠΎΡΠ²Π΅ΡΠ½ΠΎ, ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡΡΠ° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠΈ ΡΠ°ΠΌΠΎ Π² UEFI ΡΠ΅ΠΆΠΈΠΌ. ΠΡΠΌΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π’ΠΎΠ²Π° Π½Π΅ Π½ΠΈ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΡΠ²Π°.
ΠΠ°ΡΠΎ?ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, UEFI Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ»Π°Π±ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ RAID, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΎΠΏΡΠΈΠΈ Π·Π° UEFI ESP Π΄ΡΠ»Π° Π½Π΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ. Π ΠΌΡΠ΅ΠΆΠ°ΡΠ° ΠΈΠΌΠ° ΡΠ΅ΡΠ΅ΠΏΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π΄Π° ΡΠ΅ ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈ ESP Π΄ΡΠ» Π½Π° ΡΠ»Π°ΡΠΊΠ° Π² USB ΠΏΠΎΡΡΠ°, Π½ΠΎ ΡΠΎΠ²Π° Π΅ ΡΠΎΡΠΊΠ° Π½Π° ΠΎΡΠΊΠ°Π·. ΠΠΌΠ° ΡΠ΅ΡΠ΅ΠΏΡΠΈ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΠΎΡΡΡΠ΅ΡΠ΅Π½ mdadm RAID 1 Ρ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π²Π΅ΡΡΠΈΡ 0.9, ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΠΏΡΠ΅ΡΠ°Ρ Π½Π° UEFI BIOS Π΄Π° Π²ΠΈΠΆΠ΄Π° ΡΠΎΠ·ΠΈ Π΄ΡΠ», Π½ΠΎ ΡΠΎΠ²Π° ΠΈΠ·Π΄ΡΡΠΆΠ° Π΄ΠΎ ΡΠ°ΡΡΠ»ΠΈΠ²ΠΈΡ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΊΠΎΠ³Π°ΡΠΎ BIOS ΠΈΠ»ΠΈ Π΄ΡΡΠ³Π° ΠΠ‘ Π½Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ° Π·Π°ΠΏΠΈΡΠ΅ Π½Π΅ΡΠΎ Π² ESP, Π·Π°Π±ΡΠ°Π²ΡΠΉΠΊΠΈ Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° Π½Π° Π΄ΡΡΠ³ΠΈΡΠ΅ ΠΎΠ³Π»Π΅Π΄Π°Π»Π°.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, UEFI Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ NVRAM, ΠΊΠΎΡΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π΅ Π·Π°Π΅Π΄Π½ΠΎ Ρ Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ Π² Π½ΠΎΠ²Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ ΡΠ°ΡΡ ΠΎΡ Π΄ΡΠ½Π½Π°ΡΠ° ΠΏΠ»Π°ΡΠΊΠ°.
Π’Π°ΠΊΠ° ΡΠ΅, Π½ΡΠΌΠ° Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ Π½ΠΎΠ² Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄. ΠΠ΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ Π³ΠΎΡΠΎΠ², ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ Ρ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π΄Π΅Π΄ΠΎΠ²ΡΠΊΠΈ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄, ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π΄Π½Π΅Ρ ΠΊΠ°ΡΠΎ Legacy/BIOS boot, Π½ΠΎΡΠ΅Ρ Π³ΠΎΡΠ΄ΠΎΡΠΎ ΠΈΠΌΠ΅ CSM Π½Π° UEFI-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΡΠΎΡΡΠΎ ΡΠ΅ Π³ΠΎ ΠΈΠ·Π²Π°Π΄ΠΈΠΌ ΠΎΡ ΡΠ°ΡΡΠ°, ΡΠΌΠ°ΠΆΠ΅ΠΌ, Π½Π°Π΄Π΄ΡΠ΅ΠΌ ΠΊΠΎΠ»Π΅Π»Π°ΡΠ° ΠΈ ΠΈΠ·Π±ΡΡΡΠ΅ΠΌ Ρ Π²Π»Π°ΠΆΠ΅Π½ ΠΏΠ°ΡΡΠ°Π».
Desktop Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Ubuntu ΡΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ° Π½ΠΎΡΠΌΠ°Π»Π½ΠΎ Ρ Legacy Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠ°, Π½ΠΎ ΡΡΠΊ, ΠΊΠ°ΠΊΡΠΎ ΡΠ΅ ΠΊΠ°Π·Π²Π°, ΠΏΠΎΠ½Π΅ ΠΈΠΌΠ° ΠΎΠΏΡΠΈΠΈ.
Π’Π°ΠΊΠ° ΡΠ΅, ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ° ΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΠΌΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΎΡ Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠ°ΡΠ° ΡΠ»Π°ΡΠΊΠ° Ubuntu Live. Π©Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΠΈΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, ΠΊΠ°ΠΊΠ²Π°ΡΠΎ ΠΈ Π΄Π° Π΅ ΡΠ°Π±ΠΎΡΠ΅ΡΠ°. ΠΠΊΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠ°ΡΠ΅Π½ΠΈ Π½Π° ΡΠ»Π°ΡΠΊΠ°ΡΠ°.
ΠΠ»ΠΈΠ·Π°ΠΌΠ΅ Π² Desktop ΡΡΠ΅Π΄Π°ΡΠ°, ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π΅ΠΌΡΠ»ΡΡΠΎΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ, Π΄Π° Π·Π°ΠΏΠΎΡΠ²Π°ΠΌΠ΅:
#sudo bash
ΠΠ°ΠΊβ¦?ΠΠΎΡΠ½ΠΈΡΡ ΡΠ΅Π΄ Π΅ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅Π½ ΡΡΠΈΠ³Π΅Ρ Π·Π° Ρ
ΠΎΠ»ΠΈΠ²Π°ΡΠΈ ΠΎΡΠ½ΠΎΡΠ½ΠΎ sudo. Π‘ Π±ΠΎΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΠ΄Π²Π° ΠΈ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌΠ°ΠΎΠΎΡΠ³ΠΎΠ²ΠΎΡΠ½ΠΎΡΡ. ΠΡΠΏΡΠΎΡΡΡ Π΅ Π΄Π°Π»ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Ρ ΠΏΠΎΠ΅ΠΌΠ΅ΡΠ΅. ΠΠ½ΠΎΠ³ΠΎ Ρ
ΠΎΡΠ° ΡΠΌΡΡΠ°Ρ, ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° sudo ΠΏΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π΅ ΠΏΠΎΠ½Π΅ Π½Π΅ΡΠ°Π·ΡΠΌΠ½ΠΎ. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°:

#apt-get install mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc
ΠΠ°ΡΠΎ Π½Π΅ ZFSβ¦?ΠΠΎΠ³Π°ΡΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΡΠΎΡΡΡΠ΅Ρ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° ΡΠΈ, ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²ΠΎ Π½Π°Π΅ΠΌΠ°ΠΌΠ΅ ΠΆΠ΅Π»Π΅Π·Π°ΡΠ° ΡΠΈ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΎΡΡΡΠ΅Ρ.
ΠΠΎΠ³Π°ΡΠΎ ΡΠ΅ Π΄ΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΎΡΡΡΠ΅Ρ Π·Π° ΡΡΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π½Π°ΡΠΈΡΠ΅ Π΄Π°Π½Π½ΠΈ, ΠΏΠΎΠ΅ΠΌΠ°ΠΌΠ΅ ΠΊΡΠ΅Π΄ΠΈΡ, ΡΠ°Π²Π΅Π½ Π½Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΡΠ° Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉΡΠΎ Π΅Π΄ΠΈΠ½ Π΄Π΅Π½ ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠ»Π°ΡΠΈΠΌ.
ΠΡ ΡΠ°Π·ΠΈ Π³Π»Π΅Π΄Π½Π° ΡΠΎΡΠΊΠ° ZFS Π΅ Π€Π΅ΡΠ°ΡΠΈ, Π° mdadm+lvm ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π°ΠΏΠΎΠ΄ΠΎΠ±ΡΠ²Π° Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄.
Π‘ΡΠ±Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π°Π²ΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ° Π΄Π° Π½Π°Π΅ΠΌΠ° Π½Π° Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈ Π»ΠΈΡΠ° Π²Π·Π΅ΡΠΈΡ Π½Π° ΠΊΡΠ΅Π΄ΠΈΡ Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄, Π²ΠΌΠ΅ΡΡΠΎ Π€Π΅ΡΠ°ΡΠΈ. Π ΡΠ΅Π½Π°ΡΠ° Π½Π΅ Π΅ Π²ΠΈΡΠΎΠΊΠ°. ΠΡΠΌΠ° Π½ΡΠΆΠ΄Π° ΠΎΡ ΠΏΡΠ°Π²Π°. ΠΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π·Π° Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΡΠ° ΠΏΠΎ-ΠΏΡΠΎΡΡΠΈ. ΠΠ°ΡΠΊΠΈΠ½Π³ΡΡ Π΅ Π±Π΅Π·ΠΏΠ»Π°ΡΠ΅Π½. ΠΡΠΎΡ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ°. ΠΠΈΠ½Π°Π³ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΊΡΠ°ΠΊΠ° Π½Π° Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄Π°, Π° ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΠ΅ ΡΠ°ΠΌΠΈ.
ΠΠ°ΡΠΎ ΡΠΎΠ³Π°Π²Π° BTRFSβ¦?ΠΠ° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°, ΡΠ΅ Π½ΠΈ Π΅ Π½ΡΠΆΠ½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π° ΠΎΡ Legacy/BIOS GRUB ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ ΠΈ Π΅Π΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Ρ ΡΠΎΠ²Π°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°ΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° ΠΆΠΈΠ²ΠΎ. Π©Π΅ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π·Π° /boot Π΄ΡΠ»Π°. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π°Π²ΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° / (ΠΊΠΎΡΠ΅Π½), Π±Π΅Π· Π΄Π° Π·Π°Π±ΡΠ°Π²Ρ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ Π΄ΡΡΠ³ ΡΠΎΡΡΡΠ΅Ρ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π°Ρ ΠΎΡΠ΄Π΅Π»Π½ΠΈ Π΄ΡΠ»ΠΎΠ²Π΅ Π½Π° LVM ΠΈ Π΄Π° ΡΠ΅ ΠΌΠΎΠ½ΡΠΈΡΠ°Ρ Π² Π½ΡΠΆΠ½ΠΈΡΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ.
ΠΠΈΡΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, Π½ΠΈΡΠΎ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Π½ΡΠΌΠ° Π΄Π° ΡΡΡ
ΡΠ°Π½ΡΠ²Π°ΠΌΠ΅ Π½Π° ΡΠ°Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ°.
Π’Π°Π·ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠΈΠ³Π½ΠΎΠ²Π΅Π½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π±Π΅Π· Π½Π΅ΠΉΠ½ΠΎΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅, ΠΏΠΎΡΠ»Π΅Π΄Π²Π°Π½ΠΎ ΠΎΡ ΠΏΡΠ΅Ρ
Π²ΡΡΠ»ΡΠ½Π΅ Π½Π° ΡΠ΅Π·ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π΅Π½ Π΄ΠΈΡΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° send/receive.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°Π²ΡΠΎΡΡΡ ΠΈΠ·ΠΎΠ±ΡΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ° Π΄Π° Π΄ΡΡΠΆΠΈ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠΎΡΡΡΠ΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π½Π° ΠΆΠ΅Π»Π΅Π·ΠΎΡΠΎ ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΠ΅Π»ΠΈΡ ΠΎΡΡΠ°Π½Π°Π» ΡΠΎΡΡΡΠ΅Ρ Π²ΡΠ² Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ ΡΠ°ΠΊΠΈΠ²Π° Π½Π΅ΡΠ° ΠΊΠ°ΡΠΎ ΠΏΡΠ΅Π½Π°ΡΠΎΡΠ²Π°Π½Π΅ Π½Π° 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] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sda
[1:0:0:0] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sdb
[2:0:0:0] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sdc
[3:0:0:0] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sdd
[4:0:0:0] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sde
[5:0:0:0] Π΄ΠΈΡΠΊ ATA Samsung SSD 860 2B6Q /dev/sdf
[6:0:0:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3J0 /dev/sdg
[6:0:1:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3J0 /dev/sdh
[6:0:2:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3J0 /dev/sdi
[6:0:3:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3B0 /dev/sdj
[6:0:4:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3B0 /dev/sdk
[6:0:5:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3B0 /dev/sdl
[6:0:6:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3J0 /dev/sdm
[6:0:7:0] Π΄ΠΈΡΠΊ ATA HGST HTS721010A9 A3J0 /dev/sdn
ΠΡΠ·Π΅Π» SN ΠΠΎΠ΄Π΅Π» ΠΠΌΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π€ΠΎΡΠΌΠ°Ρ ΠΠ΅ΡΡΠΈΡ Π½Π° FW
---------------- -------------------- ---------------------------------------- --------- -------------------------- ---------------- --------
/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 HDD
Π’ΡΠΊ Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΡΠ²Π°ΠΌΠ΅ ΠΊΠΎΠ»Π΅Π»ΠΎΡΠΎ. Π©Π΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΅Π΄ΠΈΠ½ Π΄ΡΠ» Π·Π° Π²ΡΠΈΡΠΊΠΈ. ΠΡΠ»ΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½, Π·Π°ΡΠΎΡΠΎ BIOS ΡΠ°Π·ΠΏΠΎΠ·Π½Π°Π²Π° ΡΠ΅Π·ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ ΠΈ Π΄ΠΎΡΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΠΏΠΈΡΠ° Π΄Π° Π·Π°ΡΠ΅Π΄ΠΈ ΠΎΡ ΡΡΡ . ΠΠΎ-ΠΊΡΡΠ½ΠΎ Π΄ΠΎΡΠΈ ΡΠ΅ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ GRUB Π½Π° ΡΠ΅Π·ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΄Π° ΡΡΠΏΠ΅Π΅.
#cat >hdd.part << EOF
Π΅ΡΠΈΠΊΠ΅Ρ: Π΄ΡΠ»ΠΎΠ²Π΅
ΠΈΠ΄-Π΅ΡΠΈΠΊΠ΅Ρ: 0x00000000
ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ: /dev/sdg
Π΅Π΄ΠΈΠ½ΠΈΡΠ°: ΡΠ΅ΠΊΡΠΎΡΠΈ
/dev/sdg1 : start= 2048, size= 1953523120, type=fd, bootable
EOF
#sfdisk /dev/sdg < hdd.part
#sfdisk /dev/sdh < hdd.part
#sfdisk /dev/sdi < hdd.part
#sfdisk /dev/sdj < hdd.part
#sfdisk /dev/sdk < hdd.part
#sfdisk /dev/sdl < hdd.part
#sfdisk /dev/sdm < hdd.part
#sfdisk /dev/sdn < hdd.part
SATA SSD
Π’ΡΠΊ ΠΈΠΌΠ°ΠΌΠ΅ Π½Π°ΠΉ-ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΡΠΎ.
ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° ΡΠ° Ρ ΡΠ°Π·ΠΌΠ΅Ρ 2 TB. Π’ΠΎΠ²Π° Π΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎΡΠΎ Π·Π° MBR, ΠΊΠΎΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈ Ρ GPT. GPT Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ ΠΈΠΌΠ°Ρ ΡΠ»ΠΎΠΉ Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π° MBR-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ Π΄Π° Π²ΠΈΠΆΠ΄Π°Ρ ΠΏΡΡΠ²ΠΈΡΠ΅ 4 Π΄ΡΠ»Π°, Π°ΠΊΠΎ ΡΠ΅ ΡΠ° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ Π½Π° ΠΏΡΡΠ²ΠΈΡΠ΅ 2 ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ°. ΠΠ°ΠΆΠ½ΠΎ Π΅ ΡΠ°ΠΌΠΎ, Π·Π°ΡΠ΅ΠΆΠ΄Π°ΡΠΈΡΡ Π΄ΡΠ» ΠΈ Π΄ΡΠ»ΡΡ bios_grub Π½Π° ΡΠ΅Π·ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ Π΄Π° Π±ΡΠ΄Π°Ρ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ. Π’ΠΎΠ²Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄ΠΎΡΠΈ Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΏΠΎ Legacy/BIOS ΠΎΡ GPT Π΄ΠΈΡΠΊΠΎΠ²Π΅.
ΠΠΎ, ΡΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΡΠΈΡΡ ΡΠ»ΡΡΠ°ΠΉ.
Π’ΡΠΊ ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π΄Π²Π° Π΄ΡΠ»Π°. ΠΡΡΠ²ΠΈΡΡ ΡΠ΅ Π±ΡΠ΄Π΅ Ρ ΡΠ°Π·ΠΌΠ΅Ρ 1 GB ΠΈ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° RAID 1 /boot.
ΠΡΠΎΡΠΈΡΡ ΡΠ΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° RAID 6 ΠΈ ΡΠ΅ Π·Π°Π΅ΠΌΠ° Π²ΡΠΈΡΠΊΠΎΡΠΎ ΠΎΡΡΠ°Π½Π°Π»ΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Ρ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°Π»ΠΊΠ° Π½Π΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΠ±Π»Π°ΡΡ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ.
ΠΠ°ΠΊΠ²ΠΎ Π΅ ΡΠ°Π·ΠΈ Π½Π΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΎΠ±Π»Π°ΡΡ?Π‘ΠΏΠΎΡΠ΅Π΄ ΠΈΠ·ΡΠΎΡΠ½ΠΈΡΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ, Π½Π°ΡΠΈΡΠ΅ SATA SSD ΠΈΠΌΠ°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ°Π·ΡΠΈΡΡΠ΅ΠΌ SLC ΠΊΠ΅Ρ Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΡ 6 Π΄ΠΎ 78 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°. 6 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ βΠ±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΎβ Π·Π°ΡΠ°Π΄ΠΈ ΡΠ°Π·Π»ΠΈΠΊΠ°ΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ βΠ³ΠΈΠ³Π°Π±Π°ΠΉΡΠΈβ ΠΈ βΠ³ΠΈΠ±ΠΈΠ±Π°ΠΉΡΠΈβ Π² ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠ°ΡΠ° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎΡΠΎ. ΠΡΡΠ°Π½Π°Π»ΠΈΡΠ΅ 72 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ.
Π’ΡΠΊ Π΅ Π²Π°ΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΎΡΠ±Π΅Π»Π΅ΠΆΠΈ, ΡΠ΅ ΠΊΠ΅ΡΡΡ Π½ΠΈ Π΅ SLC, Π° ΠΌΡΡΡΠΎΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΠ΅ΠΆΠΈΠΌ 4 bit MLC. ΠΠΎΠ΅ΡΠΎ Π·Π° Π½Π°Ρ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π²Π°, ΡΠ΅ Π·Π° Π²ΡΠ΅ΠΊΠΈ 4 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ ΡΠ°ΠΌΠΎ 1 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ SLC ΠΊΠ΅Ρ.
Π£ΠΌΠ½ΠΎΠΆΠ°Π²Π°ΠΌΠ΅ 72 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΠΏΠΎ 4 ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°ΠΌΠ΅ 288 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°. Π’ΠΎΠ²Π° Π΅ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΊΠΎΠ΅ΡΠΎ Π½ΡΠΌΠ° Π΄Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠΌΠ΅, Π·Π° Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠΌ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π½Π° ΠΏΡΠ»Π½ΠΎ SLC ΠΊΠ΅ΡΠ°.
ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½, Π½ΠΈΠ΅ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠΌ Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄ΠΎ 312 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° SLC ΠΊΠ΅Ρ, ΠΎΠ±ΡΠΎ ΠΎΡ ΡΠ΅ΡΡΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΡ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, 2 ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² RAID Π·Π° ΠΈΠ·Π»ΠΈΡΡΠΊ.
Π’Π°ΠΊΠΎΠ²Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ΅Ρ ΡΠ΅ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ ΡΡΠ΄ΠΊΠΎ Π² ΡΠ΅Π°Π»Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π΄Π° ΡΡΠ΅ΡΠ°ΠΌΠ΅ ΡΠΈΡΡΠ°ΡΠΈΡ, Π² ΠΊΠΎΡΡΠΎ Π·Π°ΠΏΠΈΡΡΡ Π½Π΅ Π²Π»ΠΈΠ·Π° Π² ΠΊΠ΅ΡΠ°. Π’ΠΎΠ²Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π΄ΠΎΠ±ΡΠ΅ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ° Π½Π°ΠΉ-ΠΏΠ΅ΡΠ°Π»Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° QLC ΠΏΠ°ΠΌΠ΅ΡΡΠ° - ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½ΠΈΡΠΊΠ°ΡΠ° ΡΠΊΠΎΡΠΎΡΡ Π½Π° Π·Π°ΠΏΠΈΡ, ΠΊΠΎΠ³Π°ΡΠΎ Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ ΠΈΠ·Π²ΡΠ½ ΠΊΠ΅ΡΠ°. ΠΠΊΠΎ Π²Π°ΡΠΈΡΠ΅ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½ΠΈΡ Π½Π΅ ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²Π°Ρ Π½Π° ΡΠΎΠ²Π°, ΡΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π΄Π° ΡΠ΅ Π·Π°ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΡΠ΅ΡΠΈΠΎΠ·Π½ΠΎ ΠΊΠΎΠ»ΠΊΠΎ Π΄ΡΠ»Π³ΠΎ ΡΠ΅ ΡΠ»ΡΠΆΠ°Ρ Π²Π°ΡΠΈΡΠ΅ SSD ΠΏΠΎΠ΄ ΡΠ°ΠΊΠΎΠ²Π° Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅, Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° TBW ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅.
#cat >ssd.part << EOF
Π΅ΡΠΈΠΊΠ΅Ρ: Π΄ΡΠ»ΠΎΠ²Π΅
ΠΈΠ΄-Π΅ΡΠΈΠΊΠ΅Ρ: 0x00000000
ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ: /dev/sda
Π΅Π΄ΠΈΠ½ΠΈΡΠ°: ΡΠ΅ΠΊΡΠΎΡΠΈ
/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
ΠΠ°ΡΠΎ -assume-cleanβ¦?ΠΠ° Π΄Π° Π½Π΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅ ΠΌΠ°ΡΠΈΠ²ΠΈΡΠ΅. ΠΠ° Π΄Π²Π°ΡΠ° Π½ΠΈΠ²Π° RAID 1 ΠΈ 6, ΡΠΎΠ²Π° Π΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌΠΎ. ΠΡΠΈΡΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΈ Π±Π΅Π· ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, Π°ΠΊΠΎ Π΅ Π½ΠΎΠ² ΠΌΠ°ΡΠΈΠ². ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° SSD ΠΌΠ°ΡΠΈΠ² ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π±Π΅Π·ΡΠΌΠΈΡΠ»Π΅Π½Π° Π·Π° ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΡΡΡΡΠ° TBW. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ TRIM/DISCARD, ΠΊΡΠ΄Π΅ΡΠΎ Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π° ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΈΡΠ΅ SSD ΠΌΠ°ΡΠΈΠ²ΠΈ, Π·Π° Π΄Π° Π³ΠΈ 'ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅'.
ΠΡΠΈ SSD RAID 1 DISCARD Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΡΠ°ΠΌΠΎΡΠΎ Π½Π°ΡΠ°Π»ΠΎ.
ΠΡΠΈ SSD RAID 6, DISCARD ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ Π½Π° ΡΠ΄ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ».
Π’ΠΎΠ²Π° ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π²ΡΠΈΡΠΊΠΈΡΠ΅ SSD, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π² ΠΌΠ°ΡΠΈΠ²ΠΈΡΠ΅ Π½Π° Π½ΠΈΠ²Π° 4/5/6 Π² ΡΠ°Π·ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΈΠΌΠ°Ρ ΡΠ°Π±ΠΎΡΠ΅ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° discard_zeroes_data. ΠΠΎΠ½ΡΠΊΠΎΠ³Π° ΡΡΠ΅ΡΠ°ΠΌΠ΅ ΡΡΡΠ°Π½Π½ΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΠΈΡΠΎ ΡΡΠΎΠ±ΡΠ°Π²Π°Ρ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ, Π½ΠΎ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ Ρ ΠΈΠΌΠ°Ρ ΠΈΠ»ΠΈ ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΡΠ°Π±ΠΎΡΠΈ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ. Π ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π°Π²ΡΡΠΊΡΠ΄Π΅, Π½ΠΎ ΡΡΠ°ΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ Π³ΡΠ΅ΡΠ½ΠΈ ΡΡΡΠΌΡΠ΅ΡΠΈ Π²ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ ΡΡΠ΅ΡΠ°Ρ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π°, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° DISCARD ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½Π° Π·Π° RAID 6.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ»Π΅Π΄Π½Π°ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΡΠ½ΠΈΡΠΎΠΆΠΈ Π²ΡΠΈΡΠΊΠΈ Π΄Π°Π½Π½ΠΈ Π½Π° NVMe ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΡΠ°, 'ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΠΊΠΈ' ΠΌΠ°ΡΠΈΠ²Π° 'Ρ Π½ΡΠ»ΠΈ'.
#blkdiscard /dev/md0
ΠΠΊΠΎ Π½Π΅ΡΠΎ ΡΠ΅ ΠΎΠ±ΡΡΠΊΠ°, ΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΡΡΠΏΠΊΠ°.
#blkdiscard --step 65536 /dev/md0
SATA SSD
#mdadm --create --verbose --assume-clean /dev/md1 --level=1 --raid-devices=6 /dev/sd[a-f]1
#blkdiscard /dev/md1
#mdadm --create --verbose --assume-clean /dev/md2 --chunk-size=512 --level=6 --raid-devices=6 /dev/sd[a-f]2
ΠΠ°ΡΠΎ ΡΠ°ΠΊΡΠ² Π³ΠΎΠ»ΡΠΌβ¦?Π£Π²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ΡΠΎ Π½Π° chunk-size ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π½ΠΎ Π²Π»ΠΈΡΠ΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Ρ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ chunk-size. Π’ΠΎΠ²Π° ΡΠ΅ Π΄ΡΠ»ΠΆΠΈ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π΅Π΄Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΠΎΡ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΈΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΠ»ΠΈ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½Π° Π½Π° Π΅Π΄Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, IOPS ΠΎΡ Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅ ΡΡΠΌΠΈΡΠ°. Π‘ΠΏΠΎΡΠ΅Π΄ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°ΡΠ°, 99% ΠΎΡ IO Π½Π΅ Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°Ρ 512K.
ΠΡΠΈ RAID 6 IOPS Π½Π° Π·Π°ΠΏΠΈΡΡ Π²ΠΈΠ½Π°Π³ΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π½ΠΎ IOPS Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΡΡΠ΅Π½ΠΈΠΈ IOPS ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Ρ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, ΠΈ Π·Π΄Π΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ° ΠΈΠΌΠ΅Π΅Ρ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
ΠΠ²ΡΠΎΡ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ ΡΠΌΡΡΠ»Π° Π² ΠΏΠΎΠΏΡΡΠΊΠ°Ρ
ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ»ΠΎΡ
Ρ RAID 6 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΈ Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΡΠΎ, Π² ΡΠ΅ΠΌ RAID 6 ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ Ρ
ΠΎΡΠΎΡΠΎ.
ΠΠ»ΠΎΡ
ΡΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΡ Π·Π°ΠΏΠΈΡΡ RAID 6 ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΡΡΠ΅ΠΌ Π½Π° NVMe ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ°ΠΌΠΈ Ρ thin-provisioning.
ΠΡ ΠΏΠΎΠΊΠ° Π½Π΅ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ DISCARD Π΄Π»Ρ RAID 6. ΠΠΎΡΡΠΎΠΌΡ Β«ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡΒ» ΡΡΠΎΡ ΠΌΠ°ΡΡΠΈΠ² ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅ΠΌ. Π‘Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎ ΠΏΠΎΠ·ΠΆΠ΅, β ΠΏΠΎΡΠ»Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΠ‘.
SATA HDD
#mdadm --create --verbose --assume-clean /dev/md3 --chunk-size=512 --level=6 --raid-devices=8 /dev/sd[g-n]1
LVM Π½Π° NVMe RAID
ΠΠ»Ρ ΡΠΊΠΎΡΠΎΡΡΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π° NVMe RAID 1, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ
ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ Π°Π΄ΡΠ΅ΡΡ /dev/md0.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΡΡΠΎΡ Π±ΡΡΡΡΡΠΉ ΠΌΠ°ΡΡΠΈΠ² Π½Π°ΠΌ Π΅ΡΠ΅ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ
Π½ΡΠΆΠ΄, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ swap, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΊΡΡ LVM-cache, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΡΠ΅ LVM-thin, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ LVM VG Π½Π° ΡΡΠΎΠΌ ΠΌΠ°ΡΡΠΈΠ²Π΅.
#pvcreate /dev/md0
#vgcreate root /dev/md0
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π·Π΄Π΅Π» Π΄Π»Ρ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
#lvcreate -L 128G --name root root
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠ°Π·Π΄Π΅Π» Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ, ΡΠ°Π²Π½ΡΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
#lvcreate -L 32G --name swap root
ΠΠ½ΡΡΠ°Π»Π°ΡΠΈΡ Π½Π° ΠΠ‘
ΠΡΠ°ΠΊ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΌΠ°ΡΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ· ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ Ubuntu Live. ΠΠ±ΡΡΠ½Π°Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ°. Π’ΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠ±ΠΎΡΠ° Π΄ΠΈΡΠΊΠΎΠ² Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
- /dev/md1, β ΡΠΎΡΠΊΠ° ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ /boot, Π€Π‘ β BTRFS
- /dev/root/root (a.k.a /dev/mapper/root-root), β ΡΠΎΡΠΊΠ° ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ / (ΠΊΠΎΡΠ΅Π½Ρ), Π€Π‘ β BTRFS
- /dev/root/swap (a.k.a /dev/mapper/root-swap), β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΠ°Π·Π΄Π΅Π» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ Π½Π° /dev/sda
ΠΡΠΈ Π²ΡΠ±ΠΎΡΠ΅ BTRFS Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΡΡΠ°Π½ΠΎΠ²ΡΠΈΠΊ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²Π° BTRFS-ΡΠΎΠΌΠ° Ρ ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ "@" Π΄Π»Ρ / (ΠΊΠΎΡΠ½Ρ) ΠΈ "@home" Π΄Π»Ρ /home.
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡβ¦
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΌ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΡΠΌ ΠΎΠΊΠ½ΠΎΠΌ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠ°. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π²ΡΠΉΡΠΈ ΠΈΠ· ΡΡΠΎΠ³ΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ. ΠΡΡ ΠΎΠ΄ΠΈΠΌ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠ½ΠΎΠ²Π° Π»ΠΎΠ³ΠΈΠ½ΠΈΠΌΡΡ, ΠΏΠΎΠΏΠ°Π΄Π°Ρ Π² ΡΠΈΡΡΡΠΉ ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ» Ubuntu Live. ΠΡΠΊΡΡΠ²Π°Π΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ ΡΠ½ΠΎΠ²Π°:
#sudo bash
Π‘ΠΎΠ·Π΄Π°Π΅ΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ chroot, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ:
#mkdir /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@ /dev/mapper/root-root /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@home /dev/mapper/root-root /mnt/chroot/home
#mount -o defaults,space_cache,noatime,nodiratime,discard /dev/md1 /mnt/chroot/boot
#mount --bind /proc /mnt/chroot/proc
#mount --bind /sys /mnt/chroot/sys
#mount --bind /dev /mnt/chroot/dev
ΠΠ°ΡΡΡΠΎΠΈΠΌ ΡΠ΅ΡΡ ΠΈ hostname Π² 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 6 Π½Π° 2020 Π³ΠΎΠ΄. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΏΠΎΡ ΠΎΠΆΠ΅, Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ»ΠΎΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΡΠ½ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Linux ΠΈ ΡΠΆΠ΅ Π΄Π°Π²Π½ΠΎ Π½Π΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ.
- Π Π΅Π·Π΅ΡΠ²ΠΈΡΡΠΉΡΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ IO Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ/ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ Π½Π΅ Π·Π°ΡΡΡΠ΅Π²Π°Π»ΠΈ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ΄ Π½Π°Π³ΡΡΠ·ΠΊΠΎΠΉ.
- ΠΠ³ΡΠ°Π½ΠΈΡΡΡΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌ IO Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ/ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ². ΠΡΠΎ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΏΠ΅ΡΠ΅Π³ΡΠ΅Π²Π° Π²Π°ΡΠΈΡ Π½Π°ΠΊΠΎΠΏΠΈΡΠ΅Π»Π΅ΠΉ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ/ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ SSD RAID. ΠΡΠΎΠ±Π΅Π½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ NVMe. (ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅ ΠΏΡΠΎ ΡΠ°Π΄ΠΈΠ°ΡΠΎΡΡ? Π― Π½Π΅ ΡΡΡΠΈΠ».)
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΠ΅ Π΄ΠΈΡΠΊΠ°ΠΌ ΡΠ΅ΡΠ΅Π· APM ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΡΠΏΠΈΠ½Π΄Π΅Π»Ρ (HDD) ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΡΠ°ΠΉΠΌΠ°ΡΡ Π΄Π»Ρ ΡΠ½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠΎΠ² Π΄ΠΈΡΠΊΠΎΠ² Π½Π° 7 ΡΠ°ΡΠΎΠ². ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ APM, Π΅ΡΠ»ΠΈ Π²Π°ΡΠΈ Π΄ΠΈΡΠΊΠΈ ΡΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ (-B 255). ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄ΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΏΡΡΡ ΡΠ΅ΠΊΡΠ½Π΄. ΠΠ°ΡΠ΅ΠΌ ΠΠ‘ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ ΡΠ±ΡΠΎΡΠΈΡΡ Π΄ΠΈΡΠΊΠΎΠ²ΡΠΉ ΠΊΡΡ, ΠΈ Π΄ΠΈΡΠΊΠΈ ΡΠ½ΠΎΠ²Π° ΡΠ°ΡΠΊΡΡΡΡΡΡΡ, ΠΈ ΡΠ°ΠΊ ΠΏΠΎ ΠΊΡΡΠ³Ρ. Π£ Π΄ΠΈΡΠΊΠΎΠ² ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΠΊΡΡΡΠΈΠ²Π°Π½ΠΈΠΉ ΡΠΏΠΈΠ½Π΄Π΅Π»Ρ. Π’Π°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠΊΠ» ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠ±ΠΈΡΡ Π²Π°ΡΠΈ Π΄ΠΈΡΠΊΠΈ Π·Π° ΠΏΠ°ΡΡ Π»Π΅Ρ. ΠΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π½Π΅ Π²ΡΠ΅Ρ Π΄ΠΈΡΠΊΠΎΠ², Π½ΠΎ Π½Π°ΡΠΈ Β«Π½ΠΎΡΡΠ±ΡΡΠ½ΡΠ΅Β» Π½Π΅ΡΠΎΠΌΠ½Π΅Π½Π½ΠΎ ΠΏΠΎΡΡΡΠ°Π΄Π°ΡΡ ΠΈΠ·-Π·Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΈΠ· RAID ΠΊΡΠΈΠ²ΠΎΠ΅ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ mini-MAID.
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ readahead Π½Π° Π²ΡΠ°ΡΠ°ΡΡΠΈΡ ΡΡ Π΄ΠΈΡΠΊΠ°Ρ Π² 1 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ β Π΄Π²Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠ°/chunk RAID 6.
- ΠΠ°ΠΏΡΠ΅ΡΠΈΡΠ΅ readahead Π½Π° ΡΠ°ΠΌΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ .
ΠΠΎΠ΄ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠ΅ΠΌ /etc/fstab:
#cat >/etc/fstab << EOF
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
# file-system mount-point type options dump pass
/dev/mapper/root-root / btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@ 0 1
UUID=$(blkid -o value -s UUID /dev/md1) /boot btrfs defaults,space_cache,noatime,nodiratime,discard 0 2
/dev/mapper/root-root /home btrfs defaults,space_cache,noatime,nodiratime,discard,subvol=@home 0 2
/dev/mapper/root-swap none swap sw 0 0
EOF
ΠΠΎΡΠ΅ΠΌΡ ΡΠ°ΠΊ..?Π Π°Π·Π΄Π΅Π» /boot ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ UUID, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ.
ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΠΈΡΠΊΠ°ΡΡ ΠΏΠΎ LVM ΠΈΠΌΠ΅Π½Π°ΠΌ Π² Π½ΠΎΡΠ°ΡΠΈΠΈ /dev/mapper/vg-lv, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡ ΡΠ°Π·Π΄Π΅Π»Ρ.
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ UUID Π΄Π»Ρ LVM, ΡΠ°ΠΊ ΠΊΠ°ΠΊ UUID Ρ LVM ΡΠΎΠΌΠΎΠ² ΠΈ ΠΈΡ ΡΠ½Π°ΠΏΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ.ΠΠ²Π°ΠΆΠ΄Ρ ΠΌΠΎΠ½ΡΠΈΡΡΠ΅ΠΌ /dev/mapper/root-root..?ΠΠ°. ΠΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊ. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ BTRFS. ΠΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Ρ ΡΠ°Π·Π½ΡΠΌΠΈ subvol.
Π ΡΠ²ΡΠ·ΠΈ Ρ ΡΡΠΎΠΉ ΠΆΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ 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 thin ΠΏΡΠ»ΠΎΠ²Π΅ ΠΏΡΠΈ Π΄ΠΎΡΡΠΈΠ³Π°Π½Π΅ Π½Π° 90% Π·Π°Π΅ΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Ρ 5% ΠΎΡ ΠΎΠ±Π΅ΠΌΠ°.
Π£Π²Π΅Π»ΠΈΡΠΈΡ ΠΌΠ΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»Π½ΠΎΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ΅Ρ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π° LVM cache.
ΠΠ°Π±ΡΠ°Π½ΠΈΡ ΠΌΠ΅ Π½Π° LVM Π΄Π° ΡΡΡΡΠΈ LVM ΡΠΎΠΌΠΎΠ²Π΅ (PV) Π½Π°:
- ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ LVM cache (cdata)
- ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° LVM cache Π±Π΅Π· ΠΊΠ΅ΡΠ° (<lv_name>_corig). ΠΡΠ΅ ΠΏΠ°ΠΊ, ΡΠ°ΠΌΠΎΡΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΊΠ°Π½ΠΈΡΠ°Π½ΠΎ ΠΏΡΠ΅Π· ΠΊΠ΅ΡΠ° (ΠΏΡΠΎΡΡΠΎ <lv_name>).
- ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠΈ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ LVM cache (cmeta)
- Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² VG Ρ ΠΈΠΌΠ΅ images. Π’ΡΠΊ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π° Π΄ΠΈΡΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ ΠΈ Π½Π΅ ΠΈΡΠΊΠ°ΠΌΠ΅ LVM Π½Π° Ρ ΠΎΡΡΠ° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΠΎΠΌΠΎΠ²Π΅, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈ Π½Π° Π³ΠΎΡΡ OS.
- Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π² VG Ρ ΠΈΠΌΠ΅ backup. Π’ΡΠΊ ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΈ ΠΊΠΎΠΏΠΈΡ Π½Π° ΠΎΠ±ΡΠ°Π·ΠΈ Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ.
- Π²ΡΠΈΡΠΊΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°, ΡΠΈΠΈΡΠΎ ΠΈΠΌΠ΅Π½Π° Π·Π°Π²ΡΡΡΠ²Π°Ρ Π½Π° Β«gpvΒ» (guest physical volume)
ΠΠΊΡΠΈΠ²ΠΈΡΠ°Ρ ΠΌΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° DISCARD ΠΏΡΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° LVM VG. ΠΡΠ΄Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΈ. Π’ΠΎΠ²Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° LV Π½Π° SSD Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π΄ΡΠ»Π³ΠΎ. ΠΡΠΎΠ±Π΅Π½ΠΎ ΡΠΎΠ²Π° ΡΠ΅ ΠΎΡΠ½Π°ΡΡ Π·Π° SSD RAID 6. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, ΠΏΠΎ ΠΏΠ»Π°Π½ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ thin provisioning, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠΎΠ²Π° Π½Π΅ Π±ΠΈ Π½ΠΈ ΠΏΠΎΠΏΡΠ΅ΡΠΈΠ»ΠΎ.
ΠΠΊΡΡΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΉΡΠ΅ ΠΎΠ±ΡΠ°Π·Π° Π½Π° initramfs:
#update-initramfs -u -k all
ΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΠΉΡΠ΅ grub:
#apt-get install grub-pc
#apt-get purge os-prober
#dpkg-reconfigure grub-pc
ΠΠ°ΠΊΠ²ΠΈ Π΄ΠΈΡΠΊΠΎΠ²Π΅ Π΄Π° ΠΈΠ·Π±Π΅ΡΠ΅ΠΌ?ΠΡΠΈΡΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ° sd*. Π‘ΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΡΡΠ±Π²Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈ ΠΎΡ Π²ΡΠ΅ΠΊΠΈ ΡΠ°Π±ΠΎΡΠ΅Ρ SATA Π΄ΠΈΡΠΊ ΠΈΠ»ΠΈ SSD.
ΠΠ°ΡΠΎ ΡΠΏΠΈΡΠ°ΠΌΠ΅ os-prober..?ΠΠ°ΡΠ°Π΄ΠΈ ΠΏΡΠ΅ΠΊΠ°Π»Π΅Π½Π° ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΎΡΡ ΠΈ ΡΠ°Π»ΠΎΠ²Π»ΠΈΠ²ΠΈ ΡΡΡΠ΅.
ΠΠ΅ ΡΠ°Π±ΠΎΡΠΈ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ, Π°ΠΊΠΎ Π΅Π΄ΠΈΠ½ ΠΎΡ RAID-ΠΎΠ²Π΅ΡΠ΅ Π΅ Π² Π΄Π΅Π³ΡΠ°Π΄ΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅. ΠΠΏΠΈΡΠ²Π° ΡΠ΅ Π΄Π° ΡΡΡΡΠΈ ΠΠ‘ Π½Π° Π΄ΡΠ»ΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΌΠ°ΡΠΈΠ½ΠΈ, ΡΠ°Π±ΠΎΡΠ΅ΡΠΈ Π½Π° ΡΠΎΠ²Π° ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅.
ΠΠΊΠΎ Π²ΠΈ Π΅ Π½ΡΠΆΠ΅Π½, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³ΠΎ ΠΎΡΡΠ°Π²ΠΈΡΠ΅, Π½ΠΎ ΠΈΠΌΠ°ΠΉΡΠ΅ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ-Π³ΠΎΡΠ΅. ΠΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π²ΠΈ Π΄Π° ΠΏΠΎΡΡΡΡΠΈΡΠ΅ ΡΠ΅ΡΠ΅ΠΏΡΠΈ Π·Π° ΠΈΠ·Π±Π°Π²ΡΠ½Π΅ ΠΎΡ ΡΠ°Π»ΠΎΠ²Π»ΠΈΠ²ΠΈΡΠ΅ ΡΡΡΠ΅ Π² ΠΌΡΠ΅ΠΆΠ°ΡΠ°.
Π’ΡΠΊ ΠΏΡΠΈΠΊΠ»ΡΡΠΈΡ ΠΌΠ΅ Π½Π°ΡΠ°Π»Π½Π°ΡΠ° ΠΈΠ½ΡΡΠ°Π»Π°ΡΠΈΡ. ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΡΠ΅ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π² ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½ΠΈΡ ΠΠ‘. ΠΠ΅ Π·Π°Π±ΡΠ°Π²ΡΠΉΡΠ΅ Π΄Π° ΠΈΠ·Π²Π°Π΄ΠΈΡΠ΅ Π·Π°Π³ΡΡΠ·ΡΡΠ½ΠΈΡ Live CD/USB.
#exit
#reboot
ΠΠ° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π·Π° Π·Π°ΡΠ΅ΠΆΠ΄Π°Π½Π΅ ΠΈΠ·Π±ΠΈΡΠ°ΠΌΠ΅ ΠΊΠΎΠΉΡΠΎ ΠΈ Π΄Π° Π΅ ΠΎΡ SATA SSD.
LVM Π½Π° SATA SSD
ΠΡΠΌ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ ΡΠ΅ Π·Π°ΡΠ΅Π΄ΠΈΠ»ΠΈ Π² Π½ΠΎΠ²Π°ΡΠ° ΠΠ‘, Π½Π°ΡΡΡΠΎΠΈΠ»ΠΈ ΡΠΌΠ΅ ΠΌΡΠ΅ΠΆΠ°ΡΠ°, apt, ΠΎΡΠ²ΠΎΡΠΈΠ»ΠΈ Π΅ΠΌΡΠ»Π°ΡΠΎΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π» ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°Π»ΠΈ:
#sudo bash
ΠΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ.
Β«ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°ΠΌΠ΅Β» ΠΌΠ°ΡΠΈΠ² ΠΎΡ SATA SSD:
#blkdiscard /dev/md2
ΠΠΊΠΎ Π½Π΅ ΠΏΡΠΎΡΠ°Π±ΠΎΡΠΈ, ΠΏΡΠΎΠ±Π²Π°ΠΉΡΠ΅:
#blkdiscard --step 65536 /dev/md2
Π‘ΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ LVM VG Π½Π° SATA SSD:
#pvcreate /dev/md2
#vgcreate data /dev/md2
ΠΠ°ΡΠΎ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ VG..?ΠΡΡΡΠ½ΠΎΡΡ, Π²Π΅ΡΠ΅ ΠΈΠΌΠ°ΠΌΠ΅ VG Ρ ΠΈΠΌΠ΅ root. ΠΠ°ΡΠΎ Π΄Π° Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π²ΡΠΈΡΠΊΠΎ Π² Π΅Π΄ΠΈΠ½ VG?
ΠΠΊΠΎ Π² 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-bit MLC. Π‘Π»Π΅Π΄ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΎΠ·ΠΈ ΠΊΠ΅Ρ NVMe SSD ΡΠ΅ ΡΡΠ°Π½Π°Ρ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΈ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ SATA SSD Ρ ΠΊΠ΅Ρ. ΠΡΡΡΠ½ΠΎΡΡ, ΠΏΠΎ ΡΠ°Π·ΠΈ ΠΏΡΠΈΡΠΈΠ½Π° Π½ΡΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΠΏΡΠ°Π²ΠΈΠΌ LVM ΠΊΠ΅Ρ Π΄ΡΠ»Π° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΠΎ-Π³ΠΎΠ»ΡΠΌ ΠΎΡ Π΄Π²Π° ΠΏΡΡΠΈ ΠΎΠ±Π΅ΠΌΠ° Π½Π° SLC ΠΊΠ΅ΡΠ° Π½Π° NVMe Π½ΠΎΡΠΈΡΠ΅Π»Ρ. ΠΠ° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ NVMe Π½ΠΎΡΠΈΡΠ΅Π»ΠΈ Π°Π²ΡΠΎΡΡΡ ΡΠΌΡΡΠ°, ΡΠ΅ Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ ΠΊΠ΅Ρ ΠΎΡ 32-64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°.
ΠΠΎΡΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π΄ΡΠ»Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° 64 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΠΊΠ΅Ρ, ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΠΊΠ΅ΡΠ° ΠΈ ΡΠ΅Π·Π΅ΡΠ²Π½Π° ΠΊΠΎΠΏΠΈΡ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅.
ΠΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠΏΠΎΠΌΠ΅Π½Π°, ΡΠ΅ ΡΠ»Π΅Π΄ Π½Π΅ΠΎΡΠ°ΠΊΠ²Π°Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° LVM ΡΠ΅ ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΠ΅Π»ΠΈΡ ΠΊΠ΅Ρ ΠΊΠ°ΡΠΎ ΠΌΡΡΡΠ΅Π½ ΠΈ ΡΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΎΡΠ½ΠΎΠ²ΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, ΡΠΎΠ²Π° ΡΠ΅ ΡΠ΅ ΠΏΠΎΠ²ΡΠ°ΡΡ ΠΏΡΠΈ Π²ΡΡΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° lvchange Π½Π° ΡΠΎΠ²Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ Π΄ΠΎ Π½ΠΎΠ²ΠΎ ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ°ΡΠΎΠ²Π°, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ·Π΄Π°Π΄Π΅ ΠΊΠ΅ΡΠ° Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ ΡΠΊΡΠΈΠΏΡ.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ LV Π½Π° SATA RAID 6, Π·Π° Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΠΊΠ°ΡΠΎ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
#lvcreate -L 3298543271936B --name cache data
ΠΠ°ΡΠΎ ΡΠ°ΠΌΠΎ ΡΡΠΈ ΡΠ΅ΡΠ°Π±Π°ΠΉΡΠ°..?ΠΠ° Π΄Π° ΠΌΠΎΠΆΠ΅, ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ, SATA SSD RAID 6 Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° Π΄ΡΡΠ³ΠΈ Π½ΡΠΆΠ΄ΠΈ. Π Π°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ, Π±Π΅Π· Π΄Π° ΡΠ΅ ΡΠΏΠΈΡΠ° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ°. ΠΠ° ΡΠ΅Π»ΡΠ° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠΏΡΠ΅ΠΌ ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΏΡΡΠ½Π΅ΠΌ ΠΊΠ΅ΡΠ°, Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»Π½ΠΎΡΠΎ ΠΏΡΠ΅Π΄ΠΈΠΌΡΡΠ²ΠΎ Π½Π° LVM-cache ΠΏΡΠ΅Π΄, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, bcache, Π΅, ΡΠ΅ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π½Π° Π»Π΅ΡΡΡΠΎ.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½ΠΎΠ²Π° VG Π·Π° ΠΊΠ΅ΡΠΈΡΠ°Π½Π΅.
#pvcreate /dev/root/cache
#pvcreate /dev/data/cache
#vgcreate cache /dev/root/cache /dev/data/cache
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ LV Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
#lvcreate -L 3298539077632B --name cachedata cache /dev/data/cache
Π’ΡΠΊ Π²Π΅Π΄Π½Π°Π³Π° Π·Π°Π΅Ρ ΠΌΠ΅ ΡΡΠ»ΠΎΡΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΌΡΡΡΠΎ Π½Π° /dev/data/cache, ΡΠ°ΠΊΠ° ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΎΡΡΠ°Π½Π°Π»ΠΈ Π½ΡΠΆΠ½ΠΈ Π΄ΡΠ»ΠΎΠ²Π΅ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π°Ρ Π²Π΅Π΄Π½Π°Π³Π° Π½Π° /dev/root/cache. ΠΠΊΠΎ Π½Π΅ΡΠΎ Π΅ ΡΡΠ·Π΄Π°Π΄Π΅Π½ΠΎ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ, ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈ Ρ pvmove.
ΠΠ΅ΠΊΠ° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΠΈ Π²ΠΊΠ»ΡΡΠΈΠΌ ΠΊΠ΅Ρ:
#lvcreate -y -L 64G -n cache cache /dev/root/cache
#lvcreate -y -L 1G -n cachemeta cache /dev/root/cache
#lvconvert -y --type cache-pool --cachemode writeback --chunksize 64k --poolmetadata cache/cachemeta cache/cache
#lvconvert -y --type cache --cachepool cache/cache cache/cachedata
ΠΠ°ΡΠΎ ΡΠ°ΠΊΡΠ² chunksize..?Π§ΡΠ΅Π· ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ Π°Π²ΡΠΎΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΈ, ΡΠ΅ Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΡΠ΅ ΠΏΠΎΡΡΠΈΠ³Π°Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° Π±Π»ΠΎΠΊΠ° LVM ΠΊΠ΅Ρ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π±Π»ΠΎΠΊΠ° LVM thin. Π ΡΡΡΠΎΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΊΠΎΠ»ΠΊΠΎΡΠΎ ΠΏΠΎ-ΠΌΠ°Π»ΡΠΊ Π΅ ΡΠ°Π·ΠΌΠ΅ΡΡΡ, ΡΠΎΠ»ΠΊΠΎΠ²Π° ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Ρ ΠΏΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½Π° Π·Π°ΠΏΠΈΡ.
64k Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° Π±Π»ΠΎΠΊΠ°, Π΄ΠΎΠΏΡΡΡΠΈΠΌ Π·Π° LVM thin.
ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ writeback..!ΠΠ°. Π’ΠΎΠ·ΠΈ ΡΠΈΠΏ ΠΊΠ΅Ρ ΠΎΡΠ»Π°Π³Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ° Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΡΠ°ΠΊΡΠ°, ΡΠ΅ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΊΠ΅ΡΠ°, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ Π·Π°Π³ΡΠ±ΡΡ Π΄Π°Π½Π½ΠΈ Π½Π° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ. ΠΠΎ-ΠΊΡΡΠ½ΠΎ Π°Π²ΡΠΎΡΡΡ ΡΠ΅ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ ΠΊΠ°ΠΊΠ²ΠΈ ΠΌΠ΅ΡΠΊΠΈ, ΠΎΡΠ²Π΅Π½ NVMe RAID 1, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΡΠΈΠ΅ΠΌΠ°Ρ Π·Π° ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΎΠ·ΠΈ ΡΠΈΡΠΊ.
Π’ΠΎΠ·ΠΈ ΡΠΈΠΏ ΠΊΠ΅Ρ Π΅ ΠΈΠ·Π±ΡΠ°Π½ ΡΠ΅Π»Π΅Π½Π°ΡΠΎΡΠ΅Π½ΠΎ, Π·Π° Π΄Π° ΠΊΠΎΠΌΠΏΠ΅Π½ΡΠΈΡΠ° Π½ΠΈΡΠΊΠ°ΡΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° RAID 6 ΠΏΡΠΈ ΡΠ»ΡΡΠ°ΠΉΠ½Π° Π·Π°ΠΏΠΈΡ.
ΠΠ΅ΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠΌΠ΅ ΠΏΠΎΡΡΠΈΠ³Π½Π°Π»ΠΈ:
#lvs -a -o lv_name,lv_size,devices --units B cache
Π£ΡΡΡΠΎΠΉΡΡΠ²Π° LV LSize
[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)
ΠΠ° /dev/data/cache ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ΅ Π½Π°ΠΌΠΈΡΠ° ΡΠ°ΠΌΠΎ [cachedata_corig]. ΠΠΊΠΎ Π½Π΅ΡΠΎ Π½Π΅ Π΅ Π½Π°ΡΠ΅Π΄, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ pvmove.
ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠ΅ΡΠ° ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ Ρ Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°:
#lvconvert -y --uncache cache/cachedata
Π’ΠΎΠ²Π° ΡΠ΅ ΠΏΡΠ°Π²ΠΈ on-line. LVM ΠΏΡΠΎΡΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΊΠ΅ΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ°, ΠΈΠ·ΡΡΠΈΠ²Π° Π³ΠΎ ΠΈ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π° cachedata_corig ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Π½Π° cachedata.
ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° LVM thin
ΠΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΎΡΠ΅Π½ΠΈΠΌ ΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΡΠ΅ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° LVM thin:
#thin_metadata_size --block-size=64k --pool-size=6terabytes --max-thins=100000 -u bytes
thin_metadata_size - 3385794560 Π±Π°ΠΉΡΠ° ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π·Π° "--block-size=64kibibytes --pool-size=6terabytes --max-thins=100000"
ΠΠ°ΠΊΡΡΠ³Π»ΡΠΌΠ΅ Π΄ΠΎ 4 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ°: 4294967296B
Π£ΠΌΠ½ΠΎΠΆΠΈΠΌ Π½Π° Π΄Π²Π΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ 4194304B Π·Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈ Π½Π° LVM PV: 8594128896B
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ ΠΎΡΠ΄Π΅Π»Π΅Π½ Π΄ΡΠ» Π½Π° NVMe RAID 1, Π·Π° Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ LVM thin ΠΈ ΡΠ΅Ρ
Π½ΠΈΡ ΡΠ΅Π·Π΅ΡΠ²Π΅Π½ ΠΊΠΎΠΏΠΈΠ΅:
#lvcreate -L 8594128896B --name images root
ΠΠ°ΡΠΎ..?Π’ΡΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΠ·Π½ΠΈΠΊΠ½Π΅ Π²ΡΠΏΡΠΎΡΡΡ, Π·Π°ΡΠΎ Π΄Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°ΠΌΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ LVM thin ΠΎΡΠ΄Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ ΡΠ΅ ΠΏΠ°ΠΊ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ Π½Π° NVMe ΠΈ ΡΠ΅ ΡΠ°Π±ΠΎΡΡΡ Π±ΡΡΠ·ΠΎ.
Π‘ΠΊΠΎΡΠΎΡΡΡΠ° ΡΡΠΊ Π΅ Π²Π°ΠΆΠ½Π°, Π½ΠΎ Π½Π΅ Π΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΠΏΡΠΈΡΠΈΠ½Π°. Π Π°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠ°ΠΌ, ΡΠ΅ ΠΊΠ΅ΡΡΡ Π΅ ΡΠΎΡΠΊΠ° Π½Π° ΠΎΡΠΊΠ°Π·. ΠΠ΅ΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΡΠ»ΡΡΠΈ Ρ Π½Π΅Π³ΠΎ ΠΈ, Π°ΠΊΠΎ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ LVM thin ΡΠ° ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΈ, ΡΠΎΠ²Π° ΡΠ΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠ»Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° Π²ΡΠΈΡΠΊΠΎ. ΠΠ΅Π· ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ½ΠΊΠΈΡΠ΅ ΡΠΎΠΌΠΎΠ²Π΅ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠ°ΡΠΎ ΠΏΡΠ΅ΠΌΠ΅ΡΡΠΈΠΌ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΠΎΡΠ΄Π΅Π»Π΅Π½ Π½Π΅ΠΊΠ΅ΡΠΈΡΠ°Π½, Π½ΠΎ Π±ΡΡΠ· ΡΠΎΠΌ, Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΠΌΠ΅ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π·Π°Π³ΡΠ±Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄Π° Π½Π° ΠΊΠ΅ΡΠ°. Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π²ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ Π·Π°Π³ΡΠ±Π°ΡΠ° Π½Π° ΠΊΠ΅ΡΠ°, ΡΠ΅ Π±ΡΠ΄Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΡΡΠ΅ Π² ΡΡΠ½ΠΊΠΈΡΠ΅ ΡΠΎΠΌΠΎΠ²Π΅, ΠΊΠΎΠ΅ΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΡΠ»Π΅ΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅. Π‘ Π³ΠΎΠ»ΡΠΌΠ° Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡ ΡΠ΅Π·ΠΈ ΠΏΠΎΠ²ΡΠ΅Π΄ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²Π΅Π½ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΆΡΡΠ½Π°Π»ΠΈΡΠ΅ Π½Π° Π€Π‘.
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π°ΠΊΠΎ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΌΠΎΠΌΠ΅Π½ΡΠ΅Π½ ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° ΡΡΠ½ΠΊΠΈΡ ΡΠΎΠΌ ΠΈ ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΠΊΠ΅ΡΡΡ Π΅ Π±ΠΈΠ» Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ ΠΏΠΎΠ½Π΅ Π²Π΅Π΄Π½ΡΠΆ, ΡΠΎ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° Π²ΡΡΡΠ΅ΡΠ½Π°ΡΠ° ΡΡΡΡΠΊΡΡΡΠ° Π½Π° LVM thin, ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° ΡΠ΅ Π±ΡΠ΄Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½Π° Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΊΠ΅ΡΠ°.
Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ²Π° VG, ΠΊΠΎΡΡΠΎ ΡΠ΅ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π·Π° thin-provisioning:
#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ΠΡΠ²Π΅Π½ Π·Π° ΠΊΠ°ΠΊΠ²ΠΎΡΠΎ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ ΡΠΎΠ·ΠΈ ΡΠ΅ΠΆΠΈΠΌ, β Π΄Π° Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ Π΅Π΄Π½Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π΄Π° ΠΈΠ·ΡΠ΅ΠΊΠ°Ρ Π² Π΄ΡΡΠ³Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΏΡΠΈ ΠΏΡΠ΅ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ, zeroing Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΈ ΠΎΡ 64k. ΠΡΡΠΊΠΎ Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ 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
[lvol0_pmspare] 4294967296B /dev/root/images(0)
ΡΡΠ½ΡΠΊ ΠΏΡΠ» 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 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. ΠΠΎΠ»ΠΎΠ²ΠΈΠ½Π°ΡΠ° ΠΎΡ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ ΡΠ° Π·Π° Π·Π°ΠΏΠΈΡ. ΠΠ° 4 ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° NVMe ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ. ΠΠΎ 3 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° Π² ΡΠ΅ΠΊΡΠ½Π΄Π°. Π’Π°ΠΊΠ° ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΡΠ΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° Π·Π°ΠΏΠΈΡ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΡΠΌΠΈΡΠ°ΡΠ΅ Π΄ΠΎ 216 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° ΠΎΡ SSD ΡΠ΅ΡΡΡΡΠ°.
Π§Π΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ Π·Π°Π΅Π΄Π½ΠΎ?ΠΠ°. Π’Π΅ΡΡΠΎΠ²Π΅ΡΠ΅ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΈ Π·Π°ΠΏΠΈΡ ΠΈΠΌΠ° ΡΠΌΠΈΡΡΠ» Π΄Π° ΡΠ΅ ΡΡΠ°ΡΡΠΈΡΠ°Ρ ΠΏΠΎΠΎΡΠ΄Π΅Π»Π½ΠΎ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π°, Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ ΡΠ²Π΅ΡΠΈΡΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ ΠΊΠ΅ΡΠΎΠ²Π΅ ΡΠ° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½ΠΈ, ΡΠ°ΠΊΠ° ΡΠ΅ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈΡΡ Π·Π°ΠΏΠΈΡ Π΄Π° Π½Π΅ Π²Π»ΠΈΡΠ΅ Π½Π° ΡΠ΅ΡΠ΅Π½Π΅ΡΠΎ.
Π Π΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΡΠ΅ Π²Π°ΡΠΈΡΠ°Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΏΡΠΈ ΠΏΡΡΠ²ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π·Π°ΠΏΡΠ»Π½Π΅Π½ΠΎΡΡΡΠ° Π½Π° ΠΊΠ΅ΡΠ° ΠΈ ΡΡΠ½ΠΊΠΈΡ ΡΠΎΠΌ, Π° ΡΡΡΠΎ ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ ΡΠΎΠ²Π° Π΄Π°Π»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° Π΅ ΡΡΠΏΡΠ»Π° Π΄Π° ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ° ΠΊΠ΅ΡΠΎΠ²Π΅ΡΠ΅, Π·Π°ΠΏΡΠ»Π½Π΅Π½ΠΈ ΠΏΡΠΈ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΠΏΡΠ΅ΠΏΠΎΡΡΡΠ²Π°ΠΌ Π΄Π° ΠΈΠ·ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° Π²Π΅ΡΠ΅ Π·Π°ΠΏΡΠ»Π½Π΅Π½ ΡΡΠ½ΡΠΊ ΡΠΎΠΌ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠΎΠΊΡ-ΡΠΎ Π΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½ ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ°. ΠΠ²ΡΠΎΡΡΡ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°, ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈΡΡ Π·Π°ΠΏΠΈΡ ΡΡΠ·ΠΊΠΎ ΡΠ΅ ΡΡΠΊΠΎΡΡΠ²Π° Π²Π΅Π΄Π½Π°Π³Π° ΡΠ»Π΅Π΄ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΡΠ²Π°ΡΠ° ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ°, ΠΎΡΠΎΠ±Π΅Π½ΠΎ ΠΊΠΎΠ³Π°ΡΠΎ ΠΊΠ΅ΡΡΡ Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π·Π°ΠΏΡΠ»Π½Π΅Π½. Π’ΠΎΠ²Π° ΡΠ΅ ΡΠ»ΡΡΠ²Π° Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ΅ΠΌΠ°Π½ΡΠΈΠΊΠ°ΡΠ° copy-on-write Π½Π° Π·Π°ΠΏΠΈΡΠ°, ΠΏΠΎΠ΄ΡΠ°Π²Π½ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΊΠ΅ΡΠ° ΠΈ ΡΡΠ½ΠΊΠΈΡ ΡΠΎΠΌ, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΈΡΡ Π·Π°ΠΏΠΈΡ Π½Π° RAID 6 ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Ρ RAID 6 ΡΠ»Π΅Π΄Π²Π°ΡΠ° Π·Π°ΠΏΠΈΡ Π² ΠΊΠ΅ΡΠ°. Π Π½Π°ΡΠ°ΡΠ° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΡΠΎ ΡΠ΅ΡΠ΅Π½Π΅ Ρ RAID 6 Π΅ Π΄ΠΎ 6 ΠΏΡΡΠΈ (Π±ΡΠΎΡΡ SATA SSD Π² ΠΌΠ°ΡΠΈΠ²Π°) ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΎΡ Π·Π°ΠΏΠΈΡΠ°. Π’ΡΠΉ ΠΊΠ°ΡΠΎ Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π·Π° CoW ΡΠ΅ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ ΠΎΡ ΡΡΠ½ΠΊΠΈΡ ΠΏΡΠ», Π·Π°ΠΏΠΈΡΡΡ, Π² Π³ΠΎΠ»ΡΠΌΠ° ΡΡΠ΅ΠΏΠ΅Π½, ΡΡΡΠΎ ΡΠ΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π΅Π½.
Π Π΄Π²Π΅ΡΠ΅ ΡΠ΅Π·ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ·Π³ΠΎΠ΄Π½ΠΎ.
ΠΠ΅Ρ-Β«ΠΊΠΎΡ Π΅ΡΠ΅Π½ΡΠ½ΠΈΒ» ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ
ΠΠ° Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΠΌ ΡΠΈΡΠΊΠ° ΠΎΡ Π·Π°Π³ΡΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΏΠΎΠ²ΡΠ΅Π΄Π°/Π·Π°Π³ΡΠ±Π° Π½Π° ΠΊΠ΅ΡΠ°, Π°Π²ΡΠΎΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π° Π΄Π° ΡΠ΅ Π²ΡΠ²Π΅Π΄Π΅ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° Π½Π° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ, Π³Π°ΡΠ°Π½ΡΠΈΡΠ°ΡΠ° ΡΡΡ Π½Π°ΡΠ° ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡ Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ.
ΠΠ° ΠΏΡΡΠ²ΠΎ ΠΌΡΡΡΠΎ, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΊΡΠ°, ΡΠ΅ ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° ΡΡΠ½ΠΊΠΈΡΠ΅ ΡΠΎΠΌΠΎΠ²Π΅ ΡΠ΅ Π½Π°ΠΌΠΈΡΠ°Ρ Π½Π° Π½Π΅ΠΊΠ΅ΡΠΈΡΠ°Π½ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΡΠ΅Π»ΠΎΡΡΠ½ΠΈ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈΡΠ΅ Π·Π°Π³ΡΠ±ΠΈ ΡΠ΅ Π±ΡΠ΄Π°Ρ ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΡ ΡΠΈΠΊΡΠ» Π½Π° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΡΠ΅Π»ΠΎΡΡΡΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡΠ΅ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ½ΠΈΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π·Π°Π³ΡΠ±Π° Π½Π° ΠΊΠ΅ΡΠ°:
- ΠΠ° Π²ΡΠ΅ΠΊΠΈ ΡΡΠ½ΡΠΊ ΡΠΎΠΌ Ρ ΠΈΠΌΠ΅ <ΠΈΠΌΡ> ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ½Π° ΡΠ½ΠΈΠΌΠΊΠ° Ρ ΠΈΠΌΠ΅ <ΠΈΠΌΡ>.cached
- ΠΠ΅ΠΊΠ° Π·Π°Π΄Π°Π΄Π΅ΠΌ migration threshold Π½Π° ΡΠ°Π·ΡΠΌΠ½ΠΎ Π²ΠΈΡΠΎΠΊΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ:
#lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata - Π ΡΠΈΠΊΡΠ»Π° ΠΏΡΠΎΠ²Π΅ΡΡΠ²Π°ΠΌΠ΅ Π±ΡΠΎΡ Π½Π° ΠΌΡΡΡΠ½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² ΠΊΠ΅ΡΠ°:
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'Π΄ΠΎΡΠΈΠ³Π½Π΅ΠΌ Π½ΡΠ»Π°. ΠΠΊΠΎ Π½ΡΠ»Π° Π½ΡΠΌΠ° ΡΠ²ΡΡΠ΄Π΅ Π΄ΡΠ»Π³ΠΎ, ΠΌΠΎΠΆΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π° ΡΠ΅ ΡΡΠ·Π΄Π°Π΄Π΅, ΠΊΠ°ΡΠΎ ΠΊΠ΅ΡΠ° ΡΠ΅ ΠΏΡΠ΅Π²Π΅Π΄Π΅ Π² ΡΠ΅ΠΆΠΈΠΌ writethrough. ΠΡΠΏΡΠ΅ΠΊΠΈ ΡΠΎΠ²Π°, Π²Π·Π΅ΠΌΠ°ΠΉΠΊΠΈ ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΊΠΎΡΠΎΡΡΠ½ΠΈΡΠ΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° Π½Π°ΡΠΈΡΠ΅ ΠΌΠ°ΡΠΈΠ²ΠΈ SATA ΠΈ NVMe SSD, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΡΠ΅Ρ Π½ΠΈΡ ΡΠ΅ΡΡΡΡ TBW, ΠΈΠ»ΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΠ»ΠΎΠ²ΠΈΡΠ΅ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π±ΡΡΠ·ΠΎ Π±Π΅Π· ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π½Π° ΠΊΠ΅ΡΠ°, ΠΈΠ»ΠΈ Π²Π°ΡΠ΅ΡΠΎ ΠΎΠ±ΠΎΡΡΠ΄Π²Π°Π½Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄ΠΈ ΡΠ΅Π»ΠΈΡ ΡΠΈ ΡΠ΅ΡΡΡΡ Π·Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ Π΄Π½ΠΈ. ΠΠΎΡΠ°Π΄ΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° ΡΠ΅ΡΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΠΏΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π½Π΅ Π΅ ΡΠΏΠΎΡΠΎΠ±Π½Π° Π΄Π° Π±ΡΠ΄Π΅ ΠΏΠΎΠ΄ 100% Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ° ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ. ΠΠ°ΡΠΈΡΠ΅ NVMe SSD ΠΏΡΠΈ 100% Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠΈΡΠ° Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΈΠ·ΡΠ°Π·Ρ ΠΎΠ΄Π²Π°Ρ ΡΠ΅ΡΡΡΡΠ° Π·Π° 3-4 Π΄Π½ΠΈ. SATA SSD ΡΠ΅ ΠΆΠΈΠ²Π΅ΡΡ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π²Π° ΠΏΡΡΠΈ ΠΏΠΎ-Π΄ΡΠ»Π³ΠΎ. ΠΠ°ΡΠΎΠ²Π°, ΡΠ΅ ΡΡΠΈΡΠ°ΠΌΠ΅, ΡΠ΅ ΠΎΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ°ΡΡ ΠΎΡ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅ΡΠΎ ΠΈΠ΄Π²Π° ΠΎΡ ΡΠ΅ΡΠ΅Π½Π΅, Π° ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ° ΠΈΠΌΠ°ΠΌΠ΅ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΡΠ°ΡΠΊΠΎΡΡΠΎΡΠ½ΠΈ ΠΈΠ·Π±Π»ΠΈΡΠΈ Π½Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΈΡΠΎΠΊΠ° Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡ Π² ΡΡΡΠ΅ΡΠ°Π½ΠΈΠ΅ Ρ Π½ΠΈΡΠΊΠΎ ΡΡΠ΅Π΄Π½ΠΎ Π½Π°ΡΠΎΠ²Π°ΡΠ²Π°Π½Π΅. - Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΡΠ»ΠΎΠ²ΠΈΠΌ (ΠΈΠ»ΠΈ Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ) Π½ΠΎΠ»ΠΈΡΠ° β ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΡΠ²Π°ΠΌΠ΅ <ΠΈΠΌΠ΅>.cached Π½Π° <ΠΈΠΌΠ΅>.committed. Π‘ΡΠ°ΡΠΎΡΠΎ <ΠΈΠΌΠ΅>.committed Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΈΠ·ΡΡΠΈΠ²Π°ΠΌΠ΅.
- ΠΠΏΡΠΈΠΎΠ½Π°Π»Π½ΠΎ, Π°ΠΊΠΎ ΠΊΠ΅ΡΠ° Π΅ Π·Π°ΠΏΡΠ»Π½Π΅Π½ Π½Π° 100%, ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΎΡΠ½ΠΎΠ²Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡ, ΡΠ°ΠΊΠ° ΡΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΈΠ·ΡΠΈΡΡΠ΅Π½. Π‘ ΠΏΠΎΠ»ΡΠΏΡΠ°Π·Π΅Π½ ΠΊΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ°ΡΠ° ΡΠ°Π±ΠΎΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡΡΠ·ΠΎ ΠΏΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° Π·Π°ΠΏΠΈΡΠ°.
- Π©Π΅ Π½Π°ΡΡΡΠΎΠΈΠΌ migration threshold Π½Π° Π½ΡΠ»Π°:
#lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedataΠ’ΠΎΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ Π·Π°Π±ΡΠ°Π½ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠ΅ΡΠ° Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π½ΠΎΡΠΈΡΠ΅Π». - Π§Π°ΠΊΠ°ΠΌΠ΅, Π΄ΠΎΠΊΠ°ΡΠΎ Π² ΠΊΠ΅ΡΠ° ΡΠ΅ Π½Π°ΡΡΡΠΏΠ°Ρ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'ΠΈΠ»ΠΈ Π΄Π° ΡΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΉΠΌΠ΅ΡΠ°. - ΠΠΎΠ²ΡΠ°ΡΡΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ.
ΠΠ°ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡΠ° Ρ migration thresholdβ¦?Π Π°Π±ΠΎΡΠ°ΡΠ° Π΅ ΡΠ°ΠΌ, ΡΠ΅ Π² ΡΠ΅Π°Π»Π½Π°ΡΠ° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ° βΡΠ»ΡΡΠ°ΠΉΠ½ΠΈΡΡβ Π·Π°ΠΏΠΈΡ Π²ΡΡΡΠ½ΠΎΡΡ Π½Π΅ Π΅ ΡΡΠ²ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅Π½. ΠΠΊΠΎ ΡΠΌΠ΅ Π·Π°ΠΏΠΈΡΠ°Π»ΠΈ Π½Π΅ΡΠΎ Π² ΡΠ΅ΠΊΡΠΎΡ Ρ ΡΠ°Π·ΠΌΠ΅Ρ 4 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡΠ°, Π³ΠΎΠ»ΡΠΌΠ° Π΅ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡΠ° Π² Π±Π»ΠΈΠ·ΠΊΠΈΡΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΌΠΈΠ½ΡΡΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈ Π·Π°ΠΏΠΈΡ Π² ΡΡΡΠΈΡ ΠΈΠ»ΠΈ Π΅Π΄ΠΈΠ½ ΠΎΡ ΡΡΡΠ΅Π΄Π½ΠΈΡΠ΅ (+- 32K) ΡΠ΅ΠΊΡΠΎΡΠΈ.
ΠΠ°ΡΠΎ Π·Π°Π΄Π°Π΄Π΅ΠΌ migration threshold Π½Π° Π½ΡΠ»Π°, ΠΎΡΠ»Π°Π³Π°ΠΌΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΠ° Π½Π° SATA SSD ΠΈ Π°Π³ΡΠ΅Π³Π°ΡΠΈΡΠ°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π½Π° Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ ΠΎΡ 64K Π² ΠΊΠ΅ΡΠ°. ΠΠΎ ΡΠΎΠ·ΠΈ Π½Π°ΡΠΈΠ½ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠΏΠ΅ΡΡΡΠ²Π°ΠΌΠ΅ ΡΠ΅ΡΡΡΡΠ° Π½Π° SATA SSD.
Π ΠΊΠΎΠ΄ΡΡ ΠΊΡΠ΄Π΅..?ΠΠ° ΡΡΠΆΠ°Π»Π΅Π½ΠΈΠ΅, Π°Π²ΡΠΎΡΡΡ ΡΡΠΈΡΠ° ΡΠ΅Π±Π΅ ΡΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ΅ΡΠ΅Π½ΡΠ΅Π½ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° bash ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π΅ Π½Π° 100% ΡΠ°ΠΌΠΎΡΠΊ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΠ²Π° βgoogleβ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠ°Π½ΠΎ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅, Π·Π°ΡΠΎΠ²Π° ΡΠΌΡΡΠ°, ΡΠ΅ ΠΎΠ½Π·ΠΈ ΡΠΆΠ°ΡΠ΅Π½ ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π»ΠΈΠ·Π° ΠΎΡ ΡΡΡΠ΅ΡΠ΅ ΠΌΡ, Π΅ ΠΏΠΎ-Π΄ΠΎΠ±ΡΠ΅ Π΄Π° Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ Π½ΠΈΠΊΠΎΠ³ΠΎ Π΄ΡΡΠ³.
ΠΠΈΡΠ»Ρ, ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈΠΎΠ½Π°Π»ΠΈΡΡΠΈΡΠ΅ Π² ΡΠ°Π·ΠΈ ΠΎΠ±Π»Π°ΡΡ ΡΡΡΠΎ ΠΌΠΎΠ³Π°Ρ ΡΠ°ΠΌΠΈ Π΄Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ ΡΡΠ»Π°ΡΠ° ΠΎΠΏΠΈΡΠ°Π½Π° ΠΏΠΎ-Π³ΠΎΡΠ΅ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡ ΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π΄Π°ΠΆΠ΅ Π΄Π° Ρ ΠΎΡΠΎΡΠΌΡΡ ΠΊΡΠ°ΡΠΈΠ²ΠΎ Π²ΡΠ² Π²ΠΈΠ΄ Π½Π° systemd ΡΠ΅ΡΠ²ΠΈΠ·, ΠΊΠ°ΠΊΡΠΎ Π°Π²ΡΠΎΡΡΡ ΠΎΠΏΠΈΡΠ° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈ.
Π’Π°Π·ΠΈ Π½Π΅ΡΡΠ»ΠΎΠΆΠ½Π΅Π½Π° ΡΡ Π΅ΠΌΠ° Π·Π° ΡΠΎΡΠ°ΡΠΈΡ Π½Π° ΡΠ½ΠΈΠΌΠΊΠΈ Π½ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΅Π΄Π½Π° Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠ°Π½Π° ΡΠ½ΠΈΠΌΠΊΠ° Π½Π° 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'/>
</disk>
<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
</controller>
ΠΠΎΠ΄ΠΎΠ±Π½ΠΈ DISCARD ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΎΡ Π³ΠΎΡΡΠΎΠ²ΠΈ ΠΠ‘ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠΎΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡ 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 "Π§Π°ΠΊΠ°ΠΌ Π·Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅..."
wait_lock || terminate "ΠΠ΅ΡΡΠΏΠ΅Ρ
ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΠ·Π»ΠΈΠ·Π°ΠΌ..."
echo "ΠΠΎΠ»ΡΡΠ΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅..."
}
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" ]
ΡΠΎΠ³Π°Π²Π°
echo "$SOURCE_BASE_PATH Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΎ"
else
echo "$SOURCE_BASE_PATH Π€Π°ΠΉΠ» Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½, ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΡΠ½ΠΈΠΌΠΎΠΊ $SOURCE_PATH Π² $SOURCE_BASE_PATH"
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ Snapshot -r $SOURCE_PATH $SOURCE_BASE_PATH
sync
if [ -d "$TARGET_BASE_PATH" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_BASE_PATH Π½Π°ΠΉΠ΄Π΅Π½, Π½Π΅ ΡΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½ Ρ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠΌ... ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅..."
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -c $TARGET_BASE_PATH
sync
ΡΠΈ
ΡΠΈ
if [ -d "$TARGET_BASE_PATH" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_BASE_PATH Π½Π°ΠΉΠ΄Π΅Π½"
else
echo "$TARGET_BASE_PATH Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π‘ΠΈΠ½Ρ
ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ Ρ $TARGET_BASE_DIR"
btrfs send $SOURCE_BASE_PATH | btrfs receive $TARGET_BASE_DIR
sync
ΡΠΈ
if [ -d "$SOURCE_PEND_PATH" ]
ΡΠΎΠ³Π°Π²Π°
echo "$SOURCE_PEND_PATH Π½Π°ΠΉΠ΄Π΅Π½, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅..."
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -c $SOURCE_PEND_PATH
sync
ΡΠΈ
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ Snapshot -r $SOURCE_PATH $SOURCE_PEND_PATH
sync
if [ -d "$TARGET_PEND_PATH" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_PEND_PATH Π½Π°ΠΉΠ΄Π΅Π½, ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅..."
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -c $TARGET_PEND_PATH
sync
ΡΠΈ
echo "ΠΡΠΏΡΠ°Π²ΠΊΠ° $SOURCE_PEND_PATH Π² $TARGET_PEND_PATH"
btrfs send -p $SOURCE_BASE_PATH $SOURCE_PEND_PATH | btrfs receive $TARGET_BASE_DIR
sync
TARGET_DATE_SUFFIX=$(suffix)
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ Snapshot -r $TARGET_PEND_PATH "$TARGET_PATH$TARGET_DATE_SUFFIX"
sync
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -c $SOURCE_BASE_PATH
sync
btrfs ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -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 ΠΏΠΎΠ΄ΡΠΎΠΌ ΡΠ΄Π°Π»ΠΈΡΡ -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 "ΠΠΎΠΌΠΎΡΡ"
;;
"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 "ΠΠΈΡΠ΅Π³ΠΎ.."
;;
esac
) 98>$LOCK_FILE
EOF
Π§ΡΠΎ Ρ ΠΎΡΡ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ..?Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π°Π±ΠΎΡ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ½ΠΈΠΌΠΊΠΎΠ² BTRFS ΠΈ ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΡΡ Π€Π‘ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ BTRFS send/recieve.
ΠΠ΅ΡΠ²ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΈΠΌ, Ρ.ΠΊ. Π² Π½Π°ΡΠ°Π»Π΅ Π±ΡΠ΄ΡΡ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Ρ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅. ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠΈΠ΅ Π·Π°ΠΏΡΡΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΌΠΈ, Ρ.ΠΊ. ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡΡΡ Π±ΡΠ΄ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.
ΠΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΡΠΊΡΠΈΠΏΡ ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡ Π½Π΅ΠΌ Π² 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 Π΄Π½."
$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
Π§ΡΠΎ ΠΎΠ½ΠΎ Π΄Π΅Π»Π°Π΅Ρ..?Π‘ΠΎΠ·Π΄Π°Π΅Ρ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΠ΅Ρ Π½Π° backup Π€Π‘ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ BTRFS-ΡΠΎΠΌΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ 60 Π΄Π½Π΅ΠΉ Π½Π°Π·Π°Π΄. ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° Π² ΠΏΠΎΠ΄ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°Ρ /backup/btrfs/back/remote/ ΠΏΠΎΡΠ²ΡΡΡΡ Π΄Π°ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ½ΠΈΠΌΠΊΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ ΡΠΎΠΌΠΎΠ².
ΠΠ°Π΄ΠΈΠΌ ΠΊΠΎΠ΄Ρ ΠΏΡΠ°Π²Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:
#chmod +x /root/btrfs-backup/cron-daily.sh
#chmod +x /root/btrfs-backup/btrfs-backup.sh
ΠΡΠΎΠ²Π΅ΡΠΈΠΌ ΠΈ Π·Π°ΠΏΠΈΡ
Π½Π΅ΠΌ Π² ΠΊΡΠΎΠ½:
#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
#cat /var/log/syslog | grep btrfs-backup
#crontab -e
0 2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
Π Π΅Π·Π΅ΡΠ²Π½ΠΎΠ΅ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ LVM thin
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΡΠΎΠ½ΠΊΠΈΠΉ ΠΏΡΠ» Π½Π° ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅:
#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
ΠΠΎΠΏΠΈΡΠ°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ΡΠ΅:
ΠΠ½ΠΎΠ³ΠΎ bash Π²ΡΡΡΠ΅...#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 "Π§Π°ΠΊΠ°ΠΌ Π·Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅..."
wait_lock || terminate "ΠΠ΅ΡΡΠΏΠ΅Ρ
ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΠ·Π»ΠΈΠ·Π°ΠΌ..."
echo "ΠΠΎΠ»ΡΡΠ΅Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅..."
}
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" == "" ]
ΡΠΎΠ³Π°Π²Π°
(>&2 echo "Source LV is not thin.")
exit 1
ΡΠΈ
if [ "$DIFF_TARGET_POOL" == "" ]
ΡΠΎΠ³Π°Π²Π°
(>&2 echo "Target LV is not thin.")
exit 1
ΡΠΈ
if [ "$DIFF_SOURCE_POOL" != "$DIFF_TARGET_POOL" ]
ΡΠΎΠ³Π°Π²Π°
(>&2 echo "Source and target LVs belong to different thin pools.")
exit 1
ΡΠΈ
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" != "-" ]
ΡΠΎΠ³Π°Π²Π°
(>&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
ΡΠΈ
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" == "-" ]
ΡΠΎΠ³Π°Π²Π°
(>&2 echo "Failed to create thin pool metadata snapshot.")
exit 1
ΡΠΈ
#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" ]
ΡΠΎΠ³Π°Π²Π°
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SYNC_PEND_PATH" "$SYNC_TARGET"
ΡΠΈ
if [ "$SYNC_ACTION" == "discard" ]
ΡΠΎΠ³Π°Π²Π°
blkdiscard -o $SYNC_OFFSET_BYTES -l $SYNC_LENGTH_BYTES "$SYNC_TARGET"
ΡΠΈ
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$DISCARD_LV_PATH found"
else
echo "$DISCARD_LV not found in $DISCARD_VG"
exit 1
ΡΠΈ
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
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
ΡΠΈ
ΡΠΈ
SOURCE_BASE_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$TARGET_BASE_LV_PATH" != "" ]
ΡΠΎΠ³Π°Π²Π°
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
ΡΠΈ
if [ "$SOURCE_PEND_LV_PATH" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$SOURCE_PEND_LV_PATH found removing..."
lvremove -y --quiet "$SOURCE_PEND_LV_PATH" || exit 1
sync
ΡΠΈ
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_PEND_LV_PATH found removing..."
lvremove -y --quiet $TARGET_PEND_LV_PATH
sync
ΡΠΈ
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
ΡΠΈ
if [ "$TARGET_BASE_LV_PATH" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
ΡΠΈ
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" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
ΡΠΈ
if [ "$TARGET_BASE_LV_PATH" != "" ]
ΡΠΎΠ³Π°Π²Π°
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
ΡΠΈ
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=""
ΡΠΈ
Π³ΠΎΡΠΎΠ²ΠΎ
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 "ΠΠΎΠΌΠΎΡΡ"
;;
"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 "ΠΠΈΡΠ΅Π³ΠΎ.."
;;
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 Π΄Π½ΠΈ"
$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 thin Π·Π½Π°Π΅ΠΌ ΠΊΠΎΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»Π½ΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Ρ ΡΠ°ΠΌΠΎ ΡΠ΅Π°Π»Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π½Π° ΡΡΠ½ΠΊΠΈΡΠ΅ ΡΠΎΠΌΠΎΠ²Π΅.
Π‘Π»Π΅Π΄Π²Π°ΡΠΈΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΡ ΡΠ΅ ΠΊΠΎΠΏΠΈΡΠ°Ρ Π΄Π°Π½Π½ΠΈ ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΏΡΠ΅Π· ΠΌΠ΅ΡΠ°Π΄Π°Π½Π½ΠΈΡΠ΅ Π½Π° LVM thin.
ΠΠ΅ΠΊΠ° Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈ:
#time /root/btrfs-backup/cron-daily.sh
ΡΠ΅Π°Π»Π½ΠΈ 0ΠΌ2,967Ρ
ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π» 0ΠΌ0,225Ρ
ΡΠΈΡΡΠ΅ΠΌΠ° 0ΠΌ0,353Ρ
#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 .@snap.2020-03-06-09-39-37
drwxr-xr-x 1 root root 516 ΠΌΠ°Ρ 6 09:39 .@snap.2020-03-06-09-39-57
...
/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 @home.@snap.2020-03-06-09-39-35
drwxr-xr-x 1 root root 22 ΠΌΠ°Ρ 6 09:39 @home.@snap.2020-03-06-09-39-57
...
drwxr-xr-x 1 root root 240 ΠΌΠ°Ρ 6 09:39 @.@snap.2020-03-06-09-39-26
drwxr-xr-x 1 root root 240 ΠΌΠ°Ρ 6 09:39 @.@snap.2020-03-06-09-39-56
...
#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 ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ.
P.S.
Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ°ΠΌΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ Π‘Π₯Π/KVM ΠΊΠ°ΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³Π΅ΠΎ-ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ storage/vm-ΠΊΠ»ΡΡΡΠ΅Ρ Ρ ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ½Π΅Π½ΡΠ° ΡΡΠ΅Π· Π΄ΠΎΠΌΠ°ΡΠ½ΠΈ Π΄Π΅ΡΠΊΡΠΎΠΏΠΈ, Π΄ΠΎΠΌΠ°ΡΠ΅Π½ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ ΠΈ P2P ΠΌΡΠ΅ΠΆΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
