ä»æ¥ã¯ã
md RAID + LVM ã䜿çšã㊠KVM çšã®ããŒã¿ ã¹ãã¬ãŒãž ã·ã¹ãã ãæ§ç¯ããå®éã®çµéšãã³ãã¥ããã£ãšå
±æããããšæããŸãã
ããã°ã©ã ã«ã¯ä»¥äžãå«ãŸããŸã:
- NVMe SSD ãã md RAID 1 ãæ§ç¯ããŸãã
- SATA SSD ãšéåžžã®ãã©ã€ããã md RAID 6 ãçµã¿ç«ãŠãŸãã
- SSD RAID 1/6 ã§ã® TRIM/DISCARD æäœã®æ©èœã
- å ±éã®ãã£ã¹ã¯ ã»ããäžã«ããŒãå¯èœãª md RAID 1/6 ã¢ã¬ã€ãäœæããŸãã
- BIOS 㧠NVMe ããµããŒããããŠããªãå Žåã«ãNVMe RAID 1 ã«ã·ã¹ãã ãã€ã³ã¹ããŒã«ããã
- LVM ãã£ãã·ã¥ãš LVM ã·ã³ã®äœ¿çšã
- BTRFS ã¹ãããã·ã§ããã䜿çšããããã¯ã¢ããã®ããã«éåä¿¡ããŸãã
- BTRFS ã¹ã¿ã€ã«ã®ããã¯ã¢ããã« LVM ã·ã³ ã¹ãããã·ã§ãããš Thin_delta ã䜿çšããŸãã
èå³ã®ããæ¹ã¯ç«ãã芧ãã ããã
ÐаÑвлеМОе
èè ã¯ããã®èšäºã®è³æ/äŸ/ã³ãŒã/ãã³ã/ããŒã¿ã䜿çšããå ŽåãŸãã¯äœ¿çšããªãã£ãå Žåã®çµæã«ã€ããŠãäžåã®è²¬ä»»ãè² ããŸããã äœããã®åœ¢ã§ãã®è³æãèªãã ã䜿çšãããããããšã«ãããã客æ§ã¯ãããã®è¡çºã«ãããã¹ãŠã®çµæã«å¯ŸããŠè²¬ä»»ãè² ãããšã«ãªããŸãã èãããã圱é¿ã¯æ¬¡ã®ãšããã§ãã
- ãµã¯ãµã¯ããNVMe SSDã
- é²ç»ãªãœãŒã¹ãå®å šã«äœ¿ãæãããSSD ãã©ã€ããæ éããŸããã
- ããã¯ã¢ãã ã³ããŒãå«ãããã¹ãŠã®ãã©ã€ãäžã®ãã¹ãŠã®ããŒã¿ãå®å šã«å€±ãããŸãã
- ã³ã³ãã¥ãŒã¿ãŒã®ããŒããŠã§ã¢ã®æ éã
- æéãç¥çµããéã®ç¡é§ã
- äžèšã«èšèŒãããŠããªããã®ä»ã®çµæã
é
å©çšå¯èœãªãã®ã¯æ¬¡ã®ãšããã§ãã
Z2013ãããã»ãããæèŒããIntel Core i87 / HaswellãæèŒãã7幎é ã®ãã¶ãŒããŒãã
- ããã»ããµãŒ 4 ã³ã¢ã8 ã¹ã¬ãã
- 32 GB DDR3 RAM
- 1 x 16 ãŸã㯠2 x 8 PCIe 3.0
- 1Ã4 + 1Ã1 PCIe 2.0
- 6 x 6 GBps SATA 3 ã³ãã¯ã¿
SAS ã¢ããã¿ãŒ LSI SAS9211-8I ã IT / HBA ã¢ãŒãã«ãã©ãã·ã¥ãããŸããã RAID 察å¿ãã¡ãŒã ãŠã§ã¢ã¯ã次ã®ç®çã§æå³çã« HBA ãã¡ãŒã ãŠã§ã¢ã«çœ®ãæããããŠããŸãã
- ãã®ã¢ããã¿ãŒã¯ãã€ã§ãæšãŠãŠãä»ã®ã¢ããã¿ãŒãšäº€æã§ããŸãã
- TRIM/Discard ã¯ãã£ã¹ã¯äžã§æ£åžžã«æ©èœããŸããããªããªã... RAID ãã¡ãŒã ãŠã§ã¢ã§ã¯ããããã®ã³ãã³ãã¯ãŸã£ãããµããŒããããŠããããHBA ã¯äžè¬ã«ããã¹äžã§ã©ã®ãããªã³ãã³ããéä¿¡ãããããæ°ã«ããŸããã
ããŒããã©ã€ã - ã©ãããããçšãšåæ§ã8 ãã©ãŒã ãã¡ã¯ã¿ãŒã§ 7 TB ã®å®¹éãæ〠HGST Travelstar 1000K1 ã 2.5 å°ã ãããã®ãã©ã€ãã¯ã以å㯠RAID 6 ã¢ã¬ã€å ã«ãããŸããã ãããã¯æ°ããã·ã¹ãã ã§ã䜿çšãããäºå®ã§ãã ããŒã«ã«ããã¯ã¢ãããä¿åããããã
ããã«æ¬¡ã®ããã«è¿œå ãããŸããã
SATA SSD ã¢ãã« Samsung 6 QVO 860TB 2 åã ãããã® SSD ã¯å€§å®¹éãå¿ èŠãšããSLC ãã£ãã·ã¥ã®ååšãä¿¡é Œæ§ãäœäŸ¡æ Œãæ±ããããŠããŸããã Discard/zero ã®ãµããŒããå¿ èŠã§ããããã㯠dmesg ã®è¡ã§ãã§ãã¯ãããŸãã
kernel: ata1.00: Enabling discard_zeroes_data
NVMe SSDã¢ãã« Samsung SSD 2 EVO 970GB 500æã
ãããã® SSD ã§ã¯ãããŒãºã«åãããã©ã³ãã èªã¿åã/æžã蟌ã¿é床ãšãªãœãŒã¹å®¹éãéèŠã§ãã 圌ãã®ããã®ã©ãžãšãŒã¿ãŒã å¿ ç¶çã«ã 絶察ã«ã ãã以å€ã®å Žåã¯ãæåã® RAID åæäžã«ã«ãªã«ãªã«ãªããŸã§æããŠãã ããã
PCIe 8 2x ã¹ãããã«åãä»ãããã 2 x NVMe SSD çšã® StarTech PEX2M3.0E8 ã¢ããã¿ã ãããåãªã HBA ã§ãããNVMe çšã§ãã å èµ PCIe ã¹ã€ããã®ååšã«ããããã¶ãŒããŒãããã® PCIe åå²ãµããŒããå¿ èŠãšããªããšããç¹ã§ãå®äŸ¡ãªã¢ããã¿ãŒãšã¯ç°ãªããŸãã x1 PCIe 1.0 ã¹ãããã§ãã£ãŠããPCIe ãåããæãå€ãã·ã¹ãã ã§ãåäœããŸãã åœç¶ãé©åãªé床ã§ã ããã«ã¯ RAID ã¯ãããŸããã ããŒãã«ã¯ BIOS ãçµã¿èŸŒãŸããŠããŸããã ãããã£ãŠãã·ã¹ãã ã¯éæ³ã®ããã« NVMe ã§èµ·åããããšãåŠç¿ããããšã¯ãªãããŸããŠããã®ããã€ã¹ã®ããã㧠NVMe RAID ãåŠç¿ããããšã¯ãããŸããã
ãã®ã³ã³ããŒãã³ãã¯ãã·ã¹ãã å ã«ç©ºã 8x PCIe 3.0 ã 2 ã€ã ãååšããããã§ããã空ãã¹ãããã 4 ã€ããå Žåã¯ã2 ãããŒã® PEX1M600EXNUMX ãŸãã¯é¡äŒŒå (XNUMX ãã«ã§ã©ãã§ãè³Œå ¥ã§ãã) ã§ç°¡åã«çœ®ãæããããšãã§ããŸããã«ãŒãã«ã
ãã¹ãŠã®ããŒã¿ãä¿æããªãããSSD/HDD èªäœãé€ãã·ã¹ãã å šäœãå®å šã«äº€æã§ããããã«ããããã«ãããããçš®é¡ã®ããŒããŠã§ã¢ãŸãã¯å èµãããã»ãã/BIOS RAID ã®æåŠãæå³çã«è¡ãããŸããã çæ³çã«ã¯ããŸã£ããæ°ãã/å¥ã®ããŒããŠã§ã¢ã«ç§»è¡ãããšãã«ãã€ã³ã¹ããŒã«ãããŠãããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãããä¿åã§ããããã«ããŸãã äž»ãªããšã¯ãSATAãšPCIeããŒããããããšã§ãã ããã¯ã©ã€ã CD ãŸãã¯ããŒãå¯èœãªãã©ãã·ã¥ ãã©ã€ãã®ãããªãã®ã§ãããéåžžã«é«éã§å°ãããã°ãã®ã¿ã§ãã
ЮЌПÑããããªããšãäœãèµ·ãããããããŸããå Žåã«ãã£ãŠã¯ãã¢ã¬ã€å šäœãç·æ¥ã«æã¡åž°ãå¿ èŠãããå ŽåããããŸãã ã§ãããŒã¿ã¯å€±ããããªããã§ãã ãããè¡ãã«ã¯ãåè¿°ã®ãã¹ãŠã®ã¡ãã£ã¢ãæšæºã±ãŒã¹ã® 5.25 ãã€ã®ã¹ã©ã€ãäžã«é 眮ãããŠãããšäŸ¿å©ã§ãã
ãã¡ãããLinux 㧠SSD ãã£ãã·ã¥ã®ããŸããŸãªæ¹æ³ãå®éšããããã§ããããŸãã
ããŒããŠã§ã¢ã¬ã€ãã¯éå±ã ã ããããªã³ã ããã¯æ©èœããããæ©èœããªããã®ã©ã¡ããã§ãã ãããŠãmdadm ã«ã¯åžžã«ãªãã·ã§ã³ããããŸãã
æããã
以åã¯ãEOL ã«è¿ã Debian 8 Jessie ãããŒããŠã§ã¢ã«ã€ã³ã¹ããŒã«ãããŠããŸããã RAID 6 ã¯ãLVM ãšãã¢ã«ãªã£ãäžèšã® HDD ããçµã¿ç«ãŠãããŸããã kvm/libvirt ã§ä»®æ³ãã·ã³ãå®è¡ããŸããã
ãªããªãèè ã¯ãããŒã¿ãã«èµ·åå¯èœãª SATA/NVMe ãã©ãã·ã¥ ãã©ã€ãã®äœæã«ãããŠé©åãªçµéšãæã£ãŠããŸãããŸããéåžžã®é©åãªãã³ãã¬ãŒããå£ããªãããã«ããããã«ãUbuntu 18.04 ãã¿ãŒã²ãã ã·ã¹ãã ãšããŠéžæããŸãããããã¯ããã§ã«ååã«å®å®ããŠããŸããããŸã 3 幎ã®äœ¿çšæéããããŸããä»åŸã®ãµããŒãã
åè¿°ã®ã·ã¹ãã ã«ã¯ãããã«äœ¿ããå¿ èŠãªããŒããŠã§ã¢ ãã©ã€ããŒããã¹ãŠå«ãŸããŠããŸãã ãµãŒãããŒãã£ã®ãœãããŠã§ã¢ããã©ã€ããŒã¯å¿ èŠãããŸããã
ã€ã³ã¹ããŒã«ã®æºå
ã·ã¹ãã ãã€ã³ã¹ããŒã«ããã«ã¯ãUbuntu ãã¹ã¯ããã ã€ã¡ãŒãžãå¿ èŠã§ãã ãµãŒã㌠ã·ã¹ãã ã«ã¯ããçš®ã®åŒ·åãªã€ã³ã¹ããŒã©ãŒããããUEFI ã·ã¹ãã ããŒãã£ã·ã§ã³ããã£ã¹ã¯ã® XNUMX ã€ã«æŒã蟌ãã§ãç¡å¹ã«ã§ããªãé床ã®ç¬ç«æ§ã瀺ãããã¹ãŠã®çŸãããå°ç¡ãã«ããŸãã ãããã£ãŠãUEFI ã¢ãŒãã§ã®ã¿ã€ã³ã¹ããŒã«ãããŸãã ãªãã·ã§ã³ã¯æäŸããŸããã
ç§ãã¡ã¯ããã«æºè¶³ããŠããŸããã
ãªãã§ããïŒæ®å¿µãªãããUEFI ããŒãã¯ããŒã ãœãããŠã§ã¢ RAID ãšã®äºææ§ãéåžžã«æªãã§ãã 誰ã UEFI ESP ããŒãã£ã·ã§ã³ã®äºçŽãæäŸããŸããã ESP ããŒãã£ã·ã§ã³ã USB ããŒãã®ãã©ãã·ã¥ ãã©ã€ãã«é 眮ããããšãææ¡ãããªã³ã©ã€ã³ã®ã¬ã·ãããããŸãããããã¯å€±æç¹ã§ãã UEFI BIOS ããã®ããŒãã£ã·ã§ã³ãèªèããã®ã劚ããªããã¡ã¿ããŒã¿ ããŒãžã§ã³ 1 ã®ãœãããŠã§ã¢ mdadm RAID 0.9 ã䜿çšããã¬ã·ãããããŸãããããã¯ãBIOS ãŸãã¯å¥ã®ããŒããŠã§ã¢ OS ã ESP ã«äœããæžã蟌ã¿ããããä»ã®ããŒããŠã§ã¢ãšåæããã®ãå¿ãã幞ããªç¬éãŸã§åç¶ããŸããé¡ã
ããã«ãUEFI ããŒã㯠NVRAM ã«äŸåããŠãããNVRAM ã¯ãã£ã¹ã¯ãšäžç·ã«æ°ããã·ã¹ãã ã«ç§»åãããŸããã ãã¶ãŒããŒãã®äžéšã§ãã
ãããã£ãŠãæ°ããè»èŒªãåçºæããããšã¯ãããŸããã ç§ãã¡ã¯ãã§ã«ãUEFI äºæã·ã¹ãã äžã§ CSM ãšããèªãé«ãååãå ãããã¬ã¬ã·ãŒ/BIOS ããŒããšåŒã°ãããæ¢è£œã®å®çžŸã®ããç¥ç¶çšèªè»¢è»ãæã£ãŠããŸãã æ£ããåãåºããŠã泚油ããã¿ã€ã€ã«ç©ºæ°ãå ¥ããŠã湿ãããåžã§æããŸãã
Ubuntuã®ãã¹ã¯ãããããŒãžã§ã³ãã¬ã¬ã·ãŒããŒãããŒããŒã§ã¯æ£ããã€ã³ã¹ããŒã«ã§ããŸãããã圌ããèšãããã«ãããã«ã¯å°ãªããšããªãã·ã§ã³ããããŸãã
ããã§ãããŒããŠã§ã¢ãåéããUbuntu Live ããŒãå¯èœãã©ãã·ã¥ ãã©ã€ãããã·ã¹ãã ãããŒãããŸãã ããã±ãŒãžãããŠã³ããŒãããå¿ èŠããããããé©åã«æ©èœãããããã¯ãŒã¯ãã»ããã¢ããããŸãã ãããæ©èœããªãå Žåã¯ãå¿ èŠãªããã±ãŒãžãäºåã«ãã©ãã·ã¥ ãã©ã€ãã«ããŒãã§ããŸãã
ãã¹ã¯ãããç°å¢ã«ç§»åããã¿ãŒããã« ãšãã¥ã¬ãŒã¿ãŒãèµ·åããŠã次ã®æé ãå®è¡ããŸãã
#sudo bash
ã©ããã£ãŠâŠïŒäžã®è¡ã¯ãsudo ã«é¢ããããªã¯ãŒã®æšæºçãªããªã¬ãŒã§ãã CbПãã倧ããªãã£ã³ã¹ãå°æ¥ããПãã倧ããªè²¬ä»»ã åé¡ã¯ãããèªåèªèº«ã§åŒãåãããããã©ããã§ãã å€ãã®äººã¯ããã®ããã« sudo ã䜿çšããã®ã¯å°ãªããšã泚æãå¿
èŠã ãšèããŠããŸãã ãããïŒ
#apt-get install mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc
ãªã ZFS ã§ã¯ãªãã®ã§ãããã...?ç§ãã¡ãã³ã³ãã¥ãŒã¿ãŒã«ãœãããŠã§ã¢ãã€ã³ã¹ããŒã«ãããšããç§ãã¡ã¯åºæ¬çã«ããã®ãœãããŠã§ã¢ã®éçºè
ã«ããŒããŠã§ã¢ã貞ããŠé転ããŠãããããšã«ãªããŸãã
ãã®ãœãããŠã§ã¢ã«ããŒã¿ã®å®å
šæ§ãä¿¡é Œãããšããç§ãã¡ã¯ãã®ããŒã¿ã埩å
ããè²»çšãšåé¡ã®ããŒã³ãçµãããšã«ãªããŸãããããã¯ãã€ãè¿æžããªããã°ãªããŸããã
ãã®èŠ³ç¹ããèŠããšãZFS ã¯ãã§ã©ãŒãªã§ãããmdadm+lvm ã¯èªè»¢è»ã«äŒŒãŠããŸãã
䞻芳çã«ã¯ãèè ã¯ãã§ã©ãŒãªã§ã¯ãªããèŠç¥ãã¬å人ã«ã¯ã¬ãžããã§èªè»¢è»ã貞ãããšã奜ã¿ãŸãã ããã§ã¯ããã®åé¡ã®äŸ¡æ Œã¯é«ããããŸããã æš©å©ãªã©å¿ èŠãããŸããã 亀éã«ãŒã«ãããç°¡åã§ãã é§è»å Žã¯ç¡æã§ãã ã¯ãã¹ã«ã³ããªãŒèœåãåäžããŸãã èªè»¢è»ã¯ãã€ã§ãèãåãä»ããããšãã§ããèªåã®æã§èªè»¢è»ãä¿®çããããšãã§ããŸãã
ã§ã¯ãªãBTRFS...?ãªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãèµ·åããã«ã¯ãã¬ã¬ã·ãŒ/BIOS GRUB ã§ããã«ãµããŒããããåæã«ã©ã€ã ã¹ãããã·ã§ããããµããŒããããã¡ã€ã« ã·ã¹ãã ãå¿ èŠã§ãã ããã /boot ããŒãã£ã·ã§ã³ã«äœ¿çšããŸãã ããã«ãäœæè ã¯ãã® FS ã / (ã«ãŒã) ã«äœ¿çšããããšã奜ã¿ãŸãããä»ã®ãœãããŠã§ã¢ã®å Žå㯠LVM äžã«åå¥ã®ããŒãã£ã·ã§ã³ãäœæããå¿ èŠãªãã£ã¬ã¯ããªã«ããŠã³ãã§ããããšã«ãçæããŠãã ããã
ãã® FS ã«ã¯ä»®æ³ãã·ã³ãããŒã¿ããŒã¹ã®ã€ã¡ãŒãžã¯ä¿åãããŸããã
ãã® FS ã¯ãã·ã¹ãã ã®é»æºããªãã«ããããšãªãã·ã¹ãã ã®ã¹ãããã·ã§ãããäœæããéä¿¡/åä¿¡ã䜿çšããŠãããã®ã¹ãããã·ã§ãããããã¯ã¢ãã ãã£ã¹ã¯ã«è»¢éããããã«ã®ã¿äœ¿çšãããŸãã
ããã«ãèè ã¯éåžžãæå°éã®ãœãããŠã§ã¢ãããŒããŠã§ã¢äžã«çŽæ¥ä¿æããGPU ã PCI-USB ãã¹ã ã³ã³ãããŒã©ãŒã IOMMU çµç±ã§ KVM ã«è»¢éãããªã©ã®æ段ã䜿çšããŠãä»ã®ãã¹ãŠã®ãœãããŠã§ã¢ãä»®æ³ãã·ã³ã§å®è¡ããããšã奜ã¿ãŸãã
ããŒããŠã§ã¢äžã«æ®ãã®ã¯ãããŒã¿ ã¹ãã¬ãŒãžãä»®æ³åãããã¯ã¢ããã ãã§ãã
ZFS ãããä¿¡é Œããå Žåã¯ãååãšããŠãæå®ãããã¢ããªã±ãŒã·ã§ã³ã«ã€ããŠã¯äº€æå¯èœã§ãã
ãã ããèè ã¯ãZFSãBRTFSãããã³ LVM ãåããŠããçµã¿èŸŒã¿ã®ãã©ãŒãªã³ã°/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
ãã£ã¹ã¯ã¬ã€ã¢ãŠã
NVMe SSD
ããããç§ãã¡ã¯ãããããããªãæ¹æ³ã§ãããŒã¯ããŸããã ããã§ããBIOS ã¯ãããã®ãã©ã€ããèªèããŸããã ãããã£ãŠãå®å šã«ãœãããŠã§ã¢ RAID ã«ç§»è¡ããããšã«ãªããŸãã ããã«ã»ã¯ã·ã§ã³ãäœæããããšããããŸããã ãèŠç¯ããŸãã¯ãååãã«åŸãããå Žåã¯ãHDD ãªã©ã®å€§ããªããŒãã£ã·ã§ã³ã XNUMX ã€äœæããŸãã
SATA HDD
ããã§ç¹å¥ãªããšãèãåºãå¿ èŠã¯ãããŸããã ãã¹ãŠã«å¯Ÿã㊠XNUMX ã€ã®ã»ã¯ã·ã§ã³ãäœæããŸãã BIOS ã¯ãããã®ãã£ã¹ã¯ãèªèããããããèµ·åããããšããå ŽåããããããããŒãã£ã·ã§ã³ãäœæããŸãã åŸã§ãããã®ãã£ã¹ã¯ã« GRUB ãã€ã³ã¹ããŒã«ããŠãã·ã¹ãã ãçªç¶ãããå®è¡ã§ããããã«ããŸãã
#cat >hdd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sdg
unit: sectors
/dev/sdg1 : start= 2048, size= 1953523120, type=fd, bootable
EOF
#sfdisk /dev/sdg < hdd.part
#sfdisk /dev/sdh < hdd.part
#sfdisk /dev/sdi < hdd.part
#sfdisk /dev/sdj < hdd.part
#sfdisk /dev/sdk < hdd.part
#sfdisk /dev/sdl < hdd.part
#sfdisk /dev/sdm < hdd.part
#sfdisk /dev/sdn < hdd.part
SATA SSD
ãããç§ãã¡ã«ãšã£ãŠèå³æ·±ããšããã§ãã
ãŸãããã©ã€ãã®ãµã€ãºã¯ 2 TB ã§ãã ãã㯠MBR ã®èš±å®¹ç¯å²å ã§ãããããã䜿çšããŸãã å¿ èŠã«å¿ã㊠GPT ã«çœ®ãæããããšãã§ããŸãã GPT ãã£ã¹ã¯ã«ã¯äºææ§ã¬ã€ã€ãŒããããMBR äºæã·ã¹ãã ã¯æåã® 4 ã€ã®ããŒãã£ã·ã§ã³ãæåã® 2 ãã©ãã€ãå ã«ããå Žåã«ãããèªèã§ããŸãã éèŠãªããšã¯ããããã®ãã£ã¹ã¯äžã®ããŒã ããŒãã£ã·ã§ã³ãš bios_grub ããŒãã£ã·ã§ã³ãå é ã«ããå¿ èŠãããããšã§ãã ããã«ãããGPT ã¬ã¬ã·ãŒ/BIOS ãã©ã€ãããèµ·åããããšãã§ããŸãã
ããããããã¯ç§ãã¡ã®å Žåã§ã¯ãããŸããã
ããã§ã¯ 1 ã€ã®ã»ã¯ã·ã§ã³ãäœæããŸãã æåã®ãµã€ãºã¯ 1 GB ã§ãRAID XNUMX /ããŒãã«äœ¿çšãããŸãã
6 ã€ç®ã¯ RAID XNUMX ã«äœ¿çšããããã©ã€ãã®ç«¯ã«ããå°ããªæªå²ãåœãŠé åãé€ããŠãæ®ãã®ç©ºãé åããã¹ãŠå æããŸãã
ãã®ããŒã¯ã®ãªãé åã¯äœã§ãã?ãããã¯ãŒã¯äžã®æ å ±æºã«ãããšãåœç€Ÿã® SATA SSD ã«ã¯ã6 ïœ 78 GB ã®ãµã€ãºã®åçã«æ¡åŒµå¯èœãª SLC ãã£ãã·ã¥ãæèŒãããŠããŸãã ãã©ã€ãã®ããŒã¿ã·ãŒãã«ãããã®ã¬ãã€ãããšãã®ããã€ããã®éãã«ããã6 ã®ã¬ãã€ãããç¡æãã§ååŸã§ããŸãã æ®ãã® 72 GB ã¯æªäœ¿çšã®ã¹ããŒã¹ããå²ãåœãŠãããŸãã
ããã§ã¯ãSLC ãã£ãã·ã¥ãããããã®ã¹ããŒã¹ã 4 ããã MLC ã¢ãŒãã§å æãããŠããããšã«æ³šæããŠãã ããã ããã¯äºå®äžã4 GB ã®ç©ºãé åããšã« 1 GB ã® SLC ãã£ãã·ã¥ããååŸã§ããªãããšãæå³ããŸãã
72 ã®ã¬ãã€ãã 4 ã§ä¹ç®ãããšã288 ã®ã¬ãã€ãã«ãªããŸãã ããã¯ããã©ã€ãã SLC ãã£ãã·ã¥ãæ倧éã«æŽ»çšã§ããããã«ããããã«ããŒã¯ã¢ãŠãããªã空ãé åã§ãã
ãããã£ãŠãåèš 312 å°ã®ãã©ã€ãããæ倧 2 GB ã® SLC ãã£ãã·ã¥ãå¹æçã«ååŸããããšã«ãªããŸãã ãã¹ãŠã®ãã©ã€ãã®ãã¡ XNUMX å°ã¯åé·æ§ã確ä¿ããããã« RAID ã§äœ¿çšãããŸãã
ãã®éã®ãã£ãã·ã¥ã«ãããå®éã«ã¯æžã蟌ã¿ããã£ãã·ã¥ã«è¡ããªãç¶æ³ã«ééããããšã¯ã»ãšãã©ãªããªããŸãã ããã¯ãQLC ã¡ã¢ãªã®æãæ®å¿µãªæ¬ ç¹ãã€ãŸããã£ãã·ã¥ããã€ãã¹ããŠããŒã¿ãæžã蟌ããšãã®æžã蟌ã¿é床ãéåžžã«é ãããšãéåžžã«ããŸãè£ããŸãã è² è·ãããã«åœãŠã¯ãŸããªãå Žåã¯ãããŒã¿ã·ãŒãã® TBW ãèæ ®ããŠããã®ãããªè² è·ã®äžã§ SSD ãã©ã®ãããæç¶ããããããèããããšããå§ãããŸãã
#cat >ssd.part << EOF
label: dos
label-id: 0x00000000
device: /dev/sda
unit: sectors
/dev/sda1 : start= 2048, size= 2097152, type=fd, bootable
/dev/sda2 : start= 2099200, size= 3300950016, type=fd
EOF
#sfdisk /dev/sda < ssd.part
#sfdisk /dev/sdb < ssd.part
#sfdisk /dev/sdc < ssd.part
#sfdisk /dev/sdd < ssd.part
#sfdisk /dev/sde < ssd.part
#sfdisk /dev/sdf < ssd.part
é åã®äœæ
ãŸãããã·ã³ã®ååãå€æŽããå¿ èŠããããŸãã ãããå¿ èŠãªã®ã¯ããã¹ãåã mdadm å ã®ã©ããã«ããé ååã®äžéšã§ãããã©ããã«åœ±é¿ãäžããããã§ãã ãã¡ãããé åã®ååã¯åŸã§å€æŽã§ããŸãããããã¯äžèŠãªæé ã§ãã
#mcedit /etc/hostname
#mcedit /etc/hosts
#hostname
vdesk0
NVMe SSD
#mdadm --create --verbose --assume-clean /dev/md0 --level=1 --raid-devices=2 /dev/nvme[0-1]n1
ãªã - ã¯ãªãŒã³ã ãšä»®å®ããã®ã§ãã...?é åã®åæåãé¿ããããã ãã㯠RAID ã¬ãã« 1 ãš 6 ã®äž¡æ¹ã§æå¹ã§ãã æ°ããé åã®å Žåã¯ãåæåãªãã§ãã¹ãŠãæ©èœããŸãã ããã«ãSSD ã¢ã¬ã€ã®äœææã«åæåãããšãTBW ãªãœãŒã¹ãç¡é§ã«ãªããŸãã çµã¿ç«ãŠããã SSD ã¢ã¬ã€ã«å¯ŸããŠå¯èœãªéã TRIM/DISCARD ã䜿çšããŠãåæåãããŸãã
SSD ã¢ã¬ã€ã®å ŽåãRAID 1 DISCARD ã¯ããã«ãµããŒããããŸãã
SSD RAID 6 DISCARD ã¢ã¬ã€ã®å Žåã¯ãã«ãŒãã« ã¢ãžã¥ãŒã« ãã©ã¡ãŒã¿ã§æå¹ã«ããå¿ èŠããããŸãã
ããã¯ããã®ã·ã¹ãã ã®ã¬ãã« 4/5/6 ã¢ã¬ã€ã§äœ¿çšãããŠãããã¹ãŠã® SSD ããdiscard_zeroes_data ãæå¹ã«ãµããŒãããŠããå Žåã«ã®ã¿å®è¡ããå¿ èŠããããŸãã ãã®æ©èœããµããŒããããŠãããšã«ãŒãã«ã«éç¥ããå¥åŠãªãã©ã€ãã«ééããããšããããŸãããå®éã«ã¯ãµããŒããããŠããªãããæ©èœãåžžã«åäœãããšã¯éããŸããã çŸæç¹ã§ã¯ããµããŒãã¯ã»ãŒã©ãã§ãå©çšã§ããŸãããå€ããã©ã€ãããã¡ãŒã ãŠã§ã¢ã«ã¯ãšã©ãŒãçºçããŠããŸãã ãã®ãããRAID 6 ã§ã¯ DISCARD ãµããŒãã¯ããã©ã«ãã§ç¡å¹ã«ãªã£ãŠããŸãã
次ã®ã³ãã³ãã¯ãã¢ã¬ã€ãããŒããã§ãåæåãããããšã«ãããNVMe ãã©ã€ãäžã®ãã¹ãŠã®ããŒã¿ãç Žå£ããããšã«æ³šæããŠãã ããã
#blkdiscard /dev/md0
äœãåé¡ãçºçããå Žåã¯ãã¹ããããæå®ããŠã¿ãŠãã ããã
#blkdiscard --step 65536 /dev/md0
SATA SSD
#mdadm --create --verbose --assume-clean /dev/md1 --level=1 --raid-devices=6 /dev/sd[a-f]1
#blkdiscard /dev/md1
#mdadm --create --verbose --assume-clean /dev/md2 --chunk-size=512 --level=6 --raid-devices=6 /dev/sd[a-f]2
ãªããããªã«å€§ããã®ãâŠïŒãã£ã³ã¯ ãµã€ãºãå¢ãããšããã£ã³ã¯ ãµã€ãºãŸã§ã®ãããã¯ã§ã®ã©ã³ãã èªã¿åãã®é床ã«ãã©ã¹ã®å¹æããããŸãã ããã¯ãé©åãªãµã€ãºä»¥äžã® 99 ã€ã®æäœãåäžã®ããã€ã¹äžã§å®å šã«å®äºã§ããããã«çºçããŸãã ãããã£ãŠããã¹ãŠã®ããã€ã¹ããã® IOPS ãåèšãããŸãã çµ±èšã«ãããšãIO ã® 512% 㯠XNUMXK ãè¶ ããŸããã
æžã蟌ã¿ãããã® RAID 6 IOPS åžžã« XNUMX ã€ã®ãã©ã€ãã® IOPS 以äžã§ãã ã©ã³ãã èªã¿åãã®å ŽåãIOPS ã XNUMX å°ã®ãã©ã€ãã® IOPS ãããæ°å倧ãããªãå¯èœæ§ããããããã§ã¯ããã㯠ãµã€ãºãéèŠã«ãªããŸãã
èè
ã¯ãèšèšäž RAID 6 ã§èŠæãªãã©ã¡ãŒã¿ãæé©åããããšããæå³ãç解ããŠãããã代ããã« RAID 6 ãåŸæãšãããã©ã¡ãŒã¿ãæé©åããŠããŸãã
NVMe ãã£ãã·ã¥ãšã·ã³ããããžã§ãã³ã°ã®ããªãã¯ã§ãRAID 6 ã®è²§åŒ±ãªã©ã³ãã æžã蟌ã¿ãè£ããŸãã
RAID 6 ã® DISCARD ããŸã æå¹ã«ããŠããªããããçŸæç¹ã§ã¯ãã®ã¢ã¬ã€ããåæåãããŸããã ããã¯ãOS ãã€ã³ã¹ããŒã«ããåŸã§è¡ããŸãã
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
é床ãé«ããããã«ãã«ãŒã ãã¡ã€ã« ã·ã¹ãã ã NVMe RAID 1 (/dev/md0) ã«é
眮ããŸãã
ãã ããã¹ã¯ãããã¡ã¿ããŒã¿ãLVM ãã£ãã·ã¥ããã³ LVM ã·ã³ ã¡ã¿ããŒã¿ãªã©ã®ä»ã®ããŒãºã«ã¯ãã®é«éã¢ã¬ã€ãäŸç¶ãšããŠå¿
èŠãšãªãããããã®ã¢ã¬ã€äžã« LVM VG ãäœæããŸãã
#pvcreate /dev/md0
#vgcreate root /dev/md0
ã«ãŒã ãã¡ã€ã« ã·ã¹ãã ã®ããŒãã£ã·ã§ã³ãäœæããŸãããã
#lvcreate -L 128G --name root root
RAMã®ãµã€ãºã«å¿ããŠã¹ã¯ããçšã®ããŒãã£ã·ã§ã³ãäœæããŸãããã
#lvcreate -L 32G --name swap root
OSã®ã€ã³ã¹ããŒã«
åèšãããšãã·ã¹ãã ã®ã€ã³ã¹ããŒã«ã«å¿ èŠãªãã®ããã¹ãŠæã£ãŠããŸãã
Ubuntu Live ç°å¢ããã·ã¹ãã ã€ã³ã¹ããŒã« ãŠã£ã¶ãŒããèµ·åããŸãã éåžžã®ã€ã³ã¹ããŒã«ã ã€ã³ã¹ããŒã«ãããã£ã¹ã¯ãéžæãã段éã§ã®ã¿ã以äžãæå®ããå¿ èŠããããŸãã
- /dev/md1ã - ããŠã³ããã€ã³ã /bootãFS - BTRFS
- /dev/root/root (å¥å /dev/mapper/root-root)ã - ããŠã³ã ãã€ã³ã / (ã«ãŒã)ãFS - BTRFS
- /dev/root/swap (å¥å /dev/mapper/root-swap) - ã¹ã¯ãã ããŒãã£ã·ã§ã³ãšããŠäœ¿çšããŸã
- ããŒãããŒããŒã /dev/sda ã«ã€ã³ã¹ããŒã«ããŸã
ã«ãŒã ãã¡ã€ã« ã·ã¹ãã ãšã㊠BTRFS ãéžæãããšãã€ã³ã¹ããŒã©ãŒã¯ / (ã«ãŒã) ãè¡šãã@ããš /home ãè¡šãã@homeããšããååã® XNUMX ã€ã® BTRFS ããªã¥ãŒã ãèªåçã«äœæããŸãã
ã€ã³ã¹ããŒã«ãéå§ããŸããã...
ã€ã³ã¹ããŒã«ã¯çµäºããããŒãããŒããŒã®ã€ã³ã¹ããŒã«äžã«ãšã©ãŒãçºçããããšã瀺ãã¢ãŒãã« ãã€ã¢ãã° ããã¯ã¹ã衚瀺ãããŸãã æ®å¿µãªãããæšæºçãªæ¹æ³ã§ã¯ãã®ãã€ã¢ãã°ãçµäºããŠã€ã³ã¹ããŒã«ãç¶è¡ããããšã¯ã§ããŸããã ã·ã¹ãã ãããã°ã¢ãŠãããŠå床ãã°ã€ã³ãããšãæçµçã«ã¯ã¯ãªãŒã³ãª Ubuntu Live ãã¹ã¯ãããã衚瀺ãããŸãã ã¿ãŒããã«ãéããããäžåºŠæ¬¡ã®ããã«ããŸãã
#sudo bash
ã€ã³ã¹ããŒã«ãç¶è¡ããã«ã¯ãchroot ç°å¢ãäœæããŸãã
#mkdir /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@ /dev/mapper/root-root /mnt/chroot
#mount -o defaults,space_cache,noatime,nodiratime,discard,subvol=@home /dev/mapper/root-root /mnt/chroot/home
#mount -o defaults,space_cache,noatime,nodiratime,discard /dev/md1 /mnt/chroot/boot
#mount --bind /proc /mnt/chroot/proc
#mount --bind /sys /mnt/chroot/sys
#mount --bind /dev /mnt/chroot/dev
chroot ã§ãããã¯ãŒã¯ãšãã¹ãåãèšå®ããŸãããã
#cat /etc/hostname >/mnt/chroot/etc/hostname
#cat /etc/hosts >/mnt/chroot/etc/hosts
#cat /etc/resolv.conf >/mnt/chroot/etc/resolv.conf
chroot ç°å¢ã«å
¥ã£ãŠã¿ãŸãããã
#chroot /mnt/chroot
ãŸããããã±ãŒãžãé
éããŸãã
apt-get install --reinstall mdadm lvm2 thin-provisioning-tools btrfs-tools util-linux lsscsi nvme-cli mc debsums hdparm
ã·ã¹ãã ã®ã€ã³ã¹ããŒã«ãäžå®å šãªããã«èª€ã£ãŠã€ã³ã¹ããŒã«ããããã¹ãŠã®ããã±ãŒãžã確èªããŠä¿®æ£ããŠã¿ãŸãããã
#CORRUPTED_PACKAGES=$(debsums -s 2>&1 | awk '{print $6}' | uniq)
#apt-get install --reinstall $CORRUPTED_PACKAGES
äœããããŸããããªãå Žåã¯ãæåã« /etc/apt/sources.list ãç·šéããå¿
èŠããããããããŸããã
TRIM/DISCARD ãæå¹ã«ããããã« RAID 6 ã¢ãžã¥ãŒã«ã®ãã©ã¡ãŒã¿ã調æŽããŸãããã
#cat >/etc/modprobe.d/raid456.conf << EOF
options raid456 devices_handle_discard_safely=1
EOF
é
åãå°ã調æŽããŠã¿ãŸãããã
#cat >/etc/udev/rules.d/60-md.rules << EOF
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/stripe_cache_size", ATTR{md/stripe_cache_size}="32768"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_min", ATTR{md/sync_speed_min}="48000"
SUBSYSTEM=="block", KERNEL=="md*", ACTION=="change", TEST=="md/sync_speed_max", ATTR{md/sync_speed_max}="300000"
EOF
#cat >/etc/udev/rules.d/62-hdparm.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/hdparm -B 254 /dev/%k"
EOF
#cat >/etc/udev/rules.d/63-blockdev.rules << EOF
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", RUN+="/sbin/blockdev --setra 1024 /dev/%k"
SUBSYSTEM=="block", ACTION=="add|change", KERNEL=="md*", RUN+="/sbin/blockdev --setra 0 /dev/%k"
EOF
ãããäœã ã£ã..ïŒä»¥äžãå®è¡ããäžé£ã® udev ã«ãŒã«ãäœæããŸããã
- RAID 2020 ã®ããã㯠ãã£ãã·ã¥ ãµã€ãºã 6 幎ã«é©åãªå€ã«èšå®ããŸããããã©ã«ãå€ã¯ãLinux ã®äœæ以æ¥å€æŽãããŠããªãããã§ãé·ãéé©åã§ã¯ãããŸããã§ããã
- ã¢ã¬ã€ã®ãã§ãã¯/åæã®éãæå°éã® IO ãäºçŽããŸãã ããã¯ãã¢ã¬ã€ãè² è·ã®äžã§æ°žé ã®åæç¶æ ã«é¥ãã®ãé²ãããã§ãã
- ã¢ã¬ã€ã®ãã§ãã¯/åæäžã®æ倧 IO ãå¶éããŸãã ããã¯ãSSD RAID ã®åæ/ãã§ãã¯ã«ãã£ãŠãã©ã€ãããã³ã¯ããªãããã«ããããã«å¿ èŠã§ãã ããã¯ç¹ã« NVMe ã«åœãŠã¯ãŸããŸãã (ã©ãžãšãŒã¿ãŒã®ããšãèŠããŠããŸãã?åè«ã§ã¯ãããŸããã)
- APM ãä»ããŠãã£ã¹ã¯ãã¹ãã³ãã«å転 (HDD) ãåæ¢ããããšãçŠæ¢ãããã£ã¹ã¯ ã³ã³ãããŒã©ãŒã®ã¹ãªãŒã ã¿ã€ã ã¢ãŠãã 7 æéã«èšå®ããŸãã ãã©ã€ã㧠APM ãå¯èœãªå Žåã¯ãAPM ãå®å šã«ç¡å¹ã«ããããšãã§ããŸã (-B 255)ã ããã©ã«ãå€ã§ã¯ããã©ã€ã㯠XNUMX ç§åŸã«åæ¢ããŸãã ãã®åŸãOS ã¯ãã£ã¹ã¯ ãã£ãã·ã¥ããªã»ããããããšãããã£ã¹ã¯ãåã³å転ãããã¹ãŠãæåããããçŽãã«ãªããŸãã ãã£ã¹ã¯ã«ã¯ã¹ãã³ãã«ã®æ倧å転æ°ãå¶éãããŠããŸãã ãã®ãããªåçŽãªããã©ã«ã ãµã€ã¯ã«ã§ã¯ãæ°å¹Žã§ãã£ã¹ã¯ãç°¡åã«å£ããŠããŸãå¯èœæ§ããããŸãã ãã¹ãŠã®ãã£ã¹ã¯ããã®åé¡ã«æ©ãŸãããããã§ã¯ãããŸããããç§ãã¡ã®ãã£ã¹ã¯ã¯ãã©ãããããããã£ã¹ã¯ã§ãããé©åãªããã©ã«ãèšå®ããããRAID ããã MAID ã®ããã«èŠããŸãã
- ãã£ã¹ã¯ (å転) 1 ã¡ã¬ãã€ãã«å èªã¿ãã€ã³ã¹ããŒã« - 6 ã€ã®é£ç¶ãããã¯/ãã£ã³ã¯ RAID XNUMX
- ã¢ã¬ã€èªäœã®å èªã¿ãç¡å¹ã«ããŸãã
/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 ã§æ€çŽ¢ããŸãã é
åã®ååã¯çè«çã«ã¯å€æŽãããå¯èœæ§ããããŸãã
æ®ãã®ã»ã¯ã·ã§ã³ã¯ã/dev/mapper/vg-lv è¡šèšã® LVM åã§æ€çŽ¢ããŸãã ãããã¯ããŒãã£ã·ã§ã³ãéåžžã«äžæã«èå¥ããŸãã
LVM ã«ã¯ UUID ã䜿çšããŸããã LVM ããªã¥ãŒã ãšãã®ã¹ãããã·ã§ããã® UUID ã¯åãã§ãã£ãŠãããŸããŸããã/dev/mapper/root-root.. ã XNUMX åããŠã³ãããŸãã?ã¯ãã ãã®éãã BTRFSã®ç¹åŸŽã ãã®ãã¡ã€ã« ã·ã¹ãã ã¯ãç°ãªããµãããªã¥ãŒã ã䜿çšããŠè€æ°åããŠã³ãã§ããŸãã
ãããšåãæ©èœã®ãããã¢ã¯ãã£ã㪠BTRFS ããªã¥ãŒã ã® LVM ã¹ãããã·ã§ãããäœæããªãããšããå§ãããŸãã åèµ·åãããšé©ããããããŸããã
mdadm æ§æãåçæããŸãããã
#/usr/share/mdadm/mkconf | sed 's/#DEVICE/DEVICE/g' >/etc/mdadm/mdadm.conf
LVM èšå®ã調æŽããŸãããã
#cat >>/etc/lvm/lvmlocal.conf << EOF
activation {
thin_pool_autoextend_threshold=90
thin_pool_autoextend_percent=5
}
allocation {
cache_pool_max_chunks=2097152
}
devices {
global_filter=["r|^/dev/.*_corig$|","r|^/dev/.*_cdata$|","r|^/dev/.*_cmeta$|","r|^/dev/.*gpv$|","r|^/dev/images/.*$|","r|^/dev/mapper/images.*$|","r|^/dev/backup/.*$|","r|^/dev/mapper/backup.*$|"]
issue_discards=1
}
EOF
ãããäœã ã£ã..ïŒå æã¹ããŒã¹ã® 90%ãããªã¥ãŒã ã® 5% ã«éãããšãLVM ã·ã³ ããŒã«ã®èªåæ¡åŒµãå¯èœã«ãªããŸããã
LVM ãã£ãã·ã¥ã®ãã£ãã·ã¥ ãããã¯ã®æ倧æ°ãå¢å ããŸããã
LVM ã以äžã® LVM ããªã¥ãŒã (PV) ãæ€çŽ¢ã§ããªãããã«ããŸããã
- LVM ãã£ãã·ã¥ (cdata) ãå«ãããã€ã¹
- LVM ãã£ãã·ã¥ã䜿çšããŠãã£ãã·ã¥ãããããã€ã¹ã¯ããã£ãã·ã¥ããã€ãã¹ããŸã ( _ã³ãªã°ïŒã ãã®å Žåããã£ãã·ã¥ãããããã€ã¹èªäœã¯åŒãç¶ããã£ãã·ã¥ãéããŠã¹ãã£ã³ãããŸãïŒåã«ïŒã
- LVM ãã£ãã·ã¥ ã¡ã¿ããŒã¿ (cmeta) ãå«ãããã€ã¹
- VG å ã®ã€ã¡ãŒãžãšããååã®ãã¹ãŠã®ããã€ã¹ã ããã§ã¯ä»®æ³ãã·ã³ã®ãã£ã¹ã¯ ã€ã¡ãŒãžã䜿çšããŸããããã¹ãäžã® LVM ãã²ã¹ã OS ã«å±ããããªã¥ãŒã ãã¢ã¯ãã£ãåããå¿ èŠã¯ãããŸããã
- VG å ã®ããã¯ã¢ãããšããååã®ãã¹ãŠã®ããã€ã¹ã ããã§ã¯ãä»®æ³ãã·ã³ ã€ã¡ãŒãžã®ããã¯ã¢ãã ã³ããŒãäœæããŸãã
- ååããgpvãã§çµãããã¹ãŠã®ããã€ã¹ (ã²ã¹ãç©çããªã¥ãŒã )
LVM VG ã®ç©ºãé åã解æŸãããšãã« DISCARD ãµããŒããæå¹ã«ããŸããã æ°ãã€ããŠã ããã«ãããSSD äžã® 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 ãã©ã€ããŸã㯠SSD ããèµ·åã§ããå¿ èŠããããŸãã
ãªã os-prober ãè¿œå ããã®ã§ãããã?é床ã®ç¬ç«æ§ãšéã³å¿ã®ããæã®ããã«ã
RAID ã® XNUMX ã€ãå£åç¶æ ã«ããå Žåãæ£ããåäœããŸããã ãã®ããŒããŠã§ã¢äžã§å®è¡ãããŠããä»®æ³ãã·ã³ã§äœ¿çšãããŠããããŒãã£ã·ã§ã³äžã® OS ãæ€çŽ¢ããããšããŸãã
å¿ èŠãªå Žåã¯ãã®ãŸãŸã«ããŠãããŠãæ§ããŸããããäžèšã®ãã¹ãŠã«çæããŠãã ããã ããããæãåãé€ãããã®ã¬ã·ãããªã³ã©ã€ã³ã§æ¢ãããšããå§ãããŸãã
ããã§åæã€ã³ã¹ããŒã«ãå®äºããŸããã æ°ããã€ã³ã¹ããŒã«ãã OS ã§åèµ·åããŸãã ããŒã¿ãã« Live CD/USB ãå¿ããã«åãå€ããŠãã ããã
#exit
#reboot
ããããã® SATA SSD ãããŒã ããã€ã¹ãšããŠéžæããŸãã
SATA SSD äžã® LVM
ãã®æç¹ã§ããã§ã«æ°ãã OS ãèµ·åãããããã¯ãŒã¯ãš apt ãèšå®ããã¿ãŒããã« ãšãã¥ã¬ãŒã¿ãŒãéããŠæ¬¡ã®ã³ãã³ããå®è¡ããŠããŸãã
#sudo bash
ç¶ããŸãã
SATA SSD ããã¢ã¬ã€ããåæåãããŸãã
#blkdiscard /dev/md2
ããŸããããªãå Žåã¯ã次ã®ããšãè©ŠããŠãã ããã
#blkdiscard --step 65536 /dev/md2
SATA SSD äžã« LVM VG ãäœæããŸãã
#pvcreate /dev/md2
#vgcreate data /dev/md2
ãªãå¥ã® VG ã...?å®éãroot ãšããååã® VG ããã§ã«ãããŸãã ãã¹ãŠã XNUMX ã€ã® VG ã«è¿œå ããŠã¿ãŸããã?
VG å ã«è€æ°ã® PV ãããå ŽåãVG ãæ£ããã¢ã¯ãã£ãåãããããã«ã¯ããã¹ãŠã® PV ãååšãã (ãªã³ã©ã€ã³) å¿ èŠããããŸãã äŸå€ã¯ LVM RAID ã§ãããããã¯æå³çã«äœ¿çšããŸããã
RAID 6 ã¢ã¬ã€ã®ããããã§é害 (èªã¿åãããŒã¿ã®æ倱) ãçºçããå Žåããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãéåžžã©ããèµ·åããåé¡ã解決ããæ©äŒãäžããããããšãæ¬åœã«æãŸããã®ã§ãã
ãããè¡ãããã«ãæœè±¡åã®æåã®ã¬ãã«ã§ãåã¿ã€ãã®ç©çãã¡ãã£ã¢ããåå¥ã® VG ã«åé¢ããŸãã
ç§åŠçã«èšãã°ãç°ãªã RAID ã¢ã¬ã€ã¯ç°ãªããä¿¡é Œæ§ãã¡ã€ã³ãã«å±ããŸãã XNUMX ã€ã® VG ã«ããããè©°ã蟌ãã§ãããã«å ±éã®é害ç¹ãäœæãã¹ãã§ã¯ãããŸããã
ãããŒããŠã§ã¢ãã¬ãã«ã§ã® LVM ã®ååšã«ãããããŸããŸãªæ¹æ³ã§çµã¿åãããããšã«ãããããŸããŸãª RAID ã¢ã¬ã€ã®æçãä»»æã«åãåºãããšãã§ããŸãã ããšãã°ãå®è¡ããŸã åæã« bcache + LVM Thinãbcache + BTRFSãLVM ãã£ãã·ã¥ + LVM Thinããã£ãã·ã¥ãåããè€é㪠ZFS æ§æããŸãã¯ãã®ä»ã®å°çã®ãããªçµã¿åããããã¹ãŠè©ŠããŠæ¯èŒããŸãã
ãããŒããŠã§ã¢ãã¬ãã«ã§ã¯ãå€ãè¯ããã·ãã¯ãLVM ããªã¥ãŒã 以å€ã¯äœ¿çšããŸããã ãã®èŠåã®äŸå€ã¯ãããã¯ã¢ãã ããŒãã£ã·ã§ã³ã§ããå ŽåããããŸãã
ãã®æç¹ã§ãå€ãã®èªè ã¯ãã§ã«å ¥ãå人圢ã«ã€ããŠäœããçãå§ããŠãããšæããŸãã
SATA HDD äžã® LVM
#pvcreate /dev/md3
#vgcreate backup /dev/md3
ãŸãæ°ããVGâŠïŒããŒã¿ã®ããã¯ã¢ããã«äœ¿çšãããã£ã¹ã¯ ã¢ã¬ã€ã«é害ãçºçããå Žåã§ããããã¯ã¢ãã以å€ã®ããŒã¿ãžã®ã¢ã¯ã»ã¹ãéåžžã©ããç¶æããªããããªãã¬ãŒãã£ã³ã° ã·ã¹ãã ãæ£åžžã«åäœãç¶ããããšãæ¬åœã«æãã§ããŸãã ãããã£ãŠãVG ã¢ã¯ãã£ããŒã·ã§ã³ã®åé¡ãåé¿ããããã«ãå¥ã® VG ãäœæããŸãã
LVMãã£ãã·ã¥ã®èšå®
NVMe RAID 1 äžã« LV ãäœæããŠããã£ãã·ã¥ ããã€ã¹ãšããŠäœ¿çšããŸãããã
#lvcreate -L 70871154688B --name cache root
ãªãã§ãããªã«å°ãªããã ããâŠïŒå®éãåœç€Ÿã® NVMe SSD ã«ã¯ SLC ãã£ãã·ã¥ãæèŒãããŠããŸãã 4 ããã MLC ã§å æããã空ãã¹ããŒã¹ã«ããã18 ã®ã¬ãã€ãã®ãããªãŒãã¹ããŒã¹ãš 3 ã®ã¬ãã€ãã®ãã€ããã㯠ã¹ããŒã¹ãçºçããŸãã ãã®ãã£ãã·ã¥ã䜿ãæãããããšãNVMe SSD ã¯ãã£ãã·ã¥ä»ãã® SATA SSD ãããããã»ã©é«éã§ã¯ãªããªããŸãã å®éã«ã¯ããã®ãããªçç±ãããLVM ãã£ãã·ã¥ ããŒãã£ã·ã§ã³ã NVMe ãã©ã€ãã® SLC ãã£ãã·ã¥ã®ãµã€ãºã® 32 åãã倧ããããããšã¯æå³ããããŸããã 䜿çšãã NVMe ãã©ã€ãã«ã€ããŠã¯ã64 ïœ XNUMX GB ã®ãã£ãã·ã¥ãäœæããã®ã劥åœã§ãããšèè ã¯èããŠããŸãã
64 GB ã®ãã£ãã·ã¥ããã£ãã·ã¥ ã¡ã¿ããŒã¿ãããã³ã¡ã¿ããŒã¿ ããã¯ã¢ãããç·šæããã«ã¯ãæå®ãããããŒãã£ã·ã§ã³ ãµã€ãºãå¿ èŠã§ãã
ããã«ãããŒã㣠ã·ã¹ãã ã®ã·ã£ããããŠã³åŸãLVM ã¯ãã£ãã·ã¥å šäœãããŒãã£ãšããŠããŒã¯ããå床åæããããšã«æ³šæããŠãã ããã ããã«ãã·ã¹ãã ãå床ãªããŒãããããŸã§ããã®ããã€ã¹ã§ lvchange ã䜿çšããããã³ã«ãããç¹°ãè¿ãããŸãã ãããã£ãŠãé©åãªã¹ã¯ãªããã䜿çšããŠãã£ãã·ã¥ãããã«åäœæããããšããå§ãããŸãã
SATA RAID 6 äžã« LV ãäœæããŠããã£ãã·ã¥ãããããã€ã¹ãšããŠäœ¿çšããŸãããã
#lvcreate -L 3298543271936B --name cache data
ãªã XNUMX ãã©ãã€ããããªãã®ã§ãã?ãã®ãããå¿ èŠã«å¿ããŠãä»ã®ããŒãºã« SATA SSD RAID 6 ã䜿çšã§ããŸãã ãã£ãã·ã¥ãããã¹ããŒã¹ã®ãµã€ãºã¯ãã·ã¹ãã ãåæ¢ããããšãªãããã®å Žã§åçã«å¢å ã§ããŸãã ãããè¡ãã«ã¯ããã£ãã·ã¥ãäžæçã«åæ¢ããŠå床æå¹ã«ããå¿ èŠããããŸãããããšãã° bcache ã«å¯Ÿãã LVM ãã£ãã·ã¥ã®éç«ã£ãå©ç¹ã¯ããããå®è¡äžã«å®è¡ã§ããããšã§ãã
ãã£ãã·ã¥çšã®æ°ãã VG ãäœæããŸãããã
#pvcreate /dev/root/cache
#pvcreate /dev/data/cache
#vgcreate cache /dev/root/cache /dev/data/cache
ãã£ãã·ã¥ãããããã€ã¹äžã« LV ãäœæããŸãããã
#lvcreate -L 3298539077632B --name cachedata cache /dev/data/cache
ããã§ã¯ã/dev/data/cache äžã®ãã¹ãŠã®ç©ºãã¹ããŒã¹ãå³åº§ã«äœ¿çšããä»ã®ãã¹ãŠã®å¿ èŠãªããŒãã£ã·ã§ã³ã /dev/root/cache äžã«å³åº§ã«äœæãããããã«ããŸããã ééã£ãå Žæã«äœããäœæããå Žåã¯ãpvmove ã䜿çšããŠç§»åã§ããŸãã
ãã£ãã·ã¥ãäœæããŠæå¹ã«ããŠã¿ãŸãããã
#lvcreate -y -L 64G -n cache cache /dev/root/cache
#lvcreate -y -L 1G -n cachemeta cache /dev/root/cache
#lvconvert -y --type cache-pool --cachemode writeback --chunksize 64k --poolmetadata cache/cachemeta cache/cache
#lvconvert -y --type cache --cachepool cache/cache cache/cachedata
ãªããã®ãããªãã£ã³ã¯ãµã€ãº...?å®éã®å®éšãéããŠãèè
ã¯ãLVM ãã£ãã·ã¥ ãããã¯ã®ãµã€ãºã LVM ã·ã³ ãããã¯ã®ãµã€ãºãšäžèŽããå Žåã«æè¯ã®çµæãåŸãããããšãçºèŠããããšãã§ããŸããã ããã«ããµã€ãºãå°ããã»ã©ãæ§æã®ã©ã³ãã èšé²ã§ã®ããã©ãŒãã³ã¹ãåäžããŸãã
64k ã¯ãLVM Thin ã«èš±å¯ãããæå°ããã㯠ãµã€ãºã§ãã
ã©ã€ãããã¯ã«ã¯æ³šæããŠãã ãã...!ã¯ãã ãã®ã¿ã€ãã®ãã£ãã·ã¥ã§ã¯ããã£ãã·ã¥ãããããã€ã¹ãžã®æžã蟌ã¿åæã延æãããŸãã ã€ãŸãããã£ãã·ã¥ã倱ããããšããã£ãã·ã¥ãããããã€ã¹äžã®ããŒã¿ã倱ãããå¯èœæ§ããããŸãã ãã®ãªã¹ã¯ãè£ãããã«ãNVMe RAID 1 以å€ã«ã©ã®ãããªå¯Ÿçãè¬ããããšãã§ãããã«ã€ããŠã¯ãåŸã»ã©èª¬æããŸãã
ãã®ãã£ãã·ã¥ ã¿ã€ãã¯ãRAID 6 ã®è²§åŒ±ãªã©ã³ãã æžã蟌ã¿ããã©ãŒãã³ã¹ãè£ãããã«æå³çã«éžæãããŸããã
äœãåŸããããã確èªããŠã¿ãŸããã:
#lvs -a -o lv_name,lv_size,devices --units B cache
LV LSize Devices
[cache] 68719476736B cache_cdata(0)
[cache_cdata] 68719476736B /dev/root/cache(0)
[cache_cmeta] 1073741824B /dev/root/cache(16384)
cachedata 3298539077632B cachedata_corig(0)
[cachedata_corig] 3298539077632B /dev/data/cache(0)
[lvol0_pmspare] 1073741824B /dev/root/cache(16640)
[cachedata_corig] ã®ã¿ã /dev/data/cache ã«é
眮ããå¿
èŠããããŸãã äœãåé¡ãããå Žåã¯ãpvmove ã䜿çšããŠãã ããã
å¿ èŠã«å¿ããŠãXNUMX ã€ã®ã³ãã³ãã§ãã£ãã·ã¥ãç¡å¹ã«ããããšãã§ããŸãã
#lvconvert -y --uncache cache/cachedata
ããã¯ãªã³ã©ã€ã³ã§è¡ãããŸãã LVM ã¯åçŽã«ãã£ãã·ã¥ããã£ã¹ã¯ã«åæããŠåé€ããcachedata_corig ã®ååã cachedata ã«æ»ããŸãã
LVM ã·ã³ã®ã»ããã¢ãã
LVM ã·ã³ ã¡ã¿ããŒã¿ã«å¿ èŠãªã¹ããŒã¹ã倧ãŸãã«èŠç©ãã£ãŠã¿ãŸãããã
#thin_metadata_size --block-size=64k --pool-size=6terabytes --max-thins=100000 -u bytes
thin_metadata_size - 3385794560 bytes estimated metadata area size for "--block-size=64kibibytes --pool-size=6terabytes --max-thins=100000"
4 ã®ã¬ãã€ãã«åãäžã: 4294967296B
LVM PV ã¡ã¿ããŒã¿ã®å Žåã4194304 ãæã㊠8594128896B ãè¿œå ããŸã: XNUMXB
NVMe RAID 1 äžã«å¥ã®ããŒãã£ã·ã§ã³ãäœæããŠãLVM ã·ã³ ã¡ã¿ããŒã¿ãšãã®ããã¯ã¢ãã ã³ããŒãããã«é
眮ããŸãããã
#lvcreate -L 8594128896B --name images root
äœã®ããã«..ïŒããã§ãLVM ã·ã³ ã¡ã¿ããŒã¿ã NVMe ã«ãã£ãã·ã¥ãããŠé«éã«åäœããã®ã«ããªã LVM ã·ã³ ã¡ã¿ããŒã¿ãå¥ã«é 眮ããå¿ èŠãããã®ãââãšããçåãçãããããããŸããã
ããã§ã¯é床ãéèŠã§ãããããã¯äž»ãªçç±ããã¯çšé ãã§ãã åé¡ã¯ããã£ãã·ã¥ãé害ç¹ã«ãªããšããããšã§ãã äœããèµ·ãã£ãå¯èœæ§ããããLVM ã·ã³ ã¡ã¿ããŒã¿ããã£ãã·ã¥ãããŠããå Žåããã¹ãŠãå®å šã«å€±ãããŸãã å®å šãªã¡ã¿ããŒã¿ããªããã°ãã·ã³ ããªã¥ãŒã ãçµã¿ç«ãŠãããšã¯ã»ãŒäžå¯èœã«ãªããŸãã
ã¡ã¿ããŒã¿ãå¥ã®éãã£ãã·ã¥ã®é«éããªã¥ãŒã ã«ç§»åããããšã§ããã£ãã·ã¥ã®æ倱ãç Žæãçºçããå Žåã§ãã¡ã¿ããŒã¿ã®å®å šæ§ãä¿èšŒãããŸãã ãã®å Žåããã£ãã·ã¥æ倱ã«ãã£ãŠåŒãèµ·ãããããã¹ãŠã®æå·ã¯ã·ã³ ããªã¥ãŒã å ã§å±æçã«çºçãããããå埩æé ãå€§å¹ ã«ç°¡çŽ åãããŸãã é«ã確çã§ããããã®æå·ã¯ FS ãã°ã䜿çšããŠåŸ©å ãããŸãã
ããã«ãã·ã³ ããªã¥ãŒã ã®ã¹ãããã·ã§ããã以åã«äœæãããŠããããã®åŸãã£ãã·ã¥ãå°ãªããšã XNUMX åå®å šã«åæãããŠããå ŽåãLVM ã·ã³ã®å éšèšèšã«ããããã£ãã·ã¥ã倱ãããå Žåã§ãã¹ãããã·ã§ããã®æŽåæ§ãä¿èšŒãããŸãã ã
ã·ã³ããããžã§ãã³ã°ãæ åœããæ°ãã VG ãäœæããŸãããã
#pvcreate /dev/root/images
#pvcreate /dev/cache/cachedata
#vgcreate images /dev/root/images /dev/cache/cachedata
ããŒã«ãäœæããŸãããã
#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
ãªã -Z yãã®ã¢ãŒãã®å®éã®ç®ç (ã¹ããŒã¹ãåé
åãããšãã«ãããä»®æ³ãã·ã³ããã®ããŒã¿ãå¥ã®ä»®æ³ãã·ã³ã«æŒæŽ©ããã®ãé²ãããš) ã«å ããŠããŒãåã¯ã64k æªæºã®ãããã¯ã§ã®ã©ã³ãã æžã蟌ã¿ã®é床ãäžããããã«ããã«äœ¿çšãããŸãã ã·ã³ ããªã¥ãŒã ã®ä»¥åã«å²ãåœãŠãããŠããªãé åãžã® 64K æªæºã®æžã蟌ã¿ã¯ããã£ãã·ã¥å
㧠64K ã®ãšããžã«æããããŸãã ããã«ããããã£ãã·ã¥ãããããã€ã¹ããã€ãã¹ãããã£ãã·ã¥ãéããŠæäœãå®å
šã«å®è¡ã§ããããã«ãªããŸãã
LV ã察å¿ãã PV ã«ç§»åããŸãããã
#pvmove -n images/thin-pool_tdata /dev/root/images /dev/cache/cachedata
#pvmove -n images/lvol0_pmspare /dev/cache/cachedata /dev/root/images
#pvmove -n images/thin-pool_tmeta /dev/cache/cachedata /dev/root/images
å°åæïŒ
#lvs -a -o lv_name,lv_size,devices --units B images
LV LSize Devices
[lvol0_pmspare] 4294967296B /dev/root/images(0)
thin-pool 274877906944B thin-pool_tdata(0)
[thin-pool_tdata] 274877906944B /dev/cache/cachedata(0)
[thin-pool_tmeta] 4294967296B /dev/root/images(1024)
ãã¹ãçšã®ã·ã³ ããªã¥ãŒã ãäœæããŸãããã
#lvcreate -V 64G --thin-pool thin-pool --name test images
ãã¹ããšç£èŠçšã®ããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã
#apt-get install sysstat fio
ããã¯ãã¹ãã¬ãŒãžæ§æã®åäœããªã¢ã«ã¿ã€ã ã§èŠ³å¯ããæ¹æ³ã§ãã
#watch 'lvs --rows --reportformat basic --quiet -ocache_dirty_blocks,cache_settings cache/cachedata && (lvdisplay cache/cachedata | grep Cache) && (sar -p -d 2 1 | grep -E "sd|nvme|DEV|md1|md2|md3|md0" | grep -v Average | sort)'
æ§æããã¹ãããæ¹æ³ã¯æ¬¡ã®ãšããã§ãã
#fio --loops=1 --size=64G --runtime=4 --filename=/dev/images/test --stonewall --ioengine=libaio --direct=1
--name=4kQD32read --bs=4k --iodepth=32 --rw=randread
--name=8kQD32read --bs=8k --iodepth=32 --rw=randread
--name=16kQD32read --bs=16k --iodepth=32 --rw=randread
--name=32KQD32read --bs=32k --iodepth=32 --rw=randread
--name=64KQD32read --bs=64k --iodepth=32 --rw=randread
--name=128KQD32read --bs=128k --iodepth=32 --rw=randread
--name=256KQD32read --bs=256k --iodepth=32 --rw=randread
--name=512KQD32read --bs=512k --iodepth=32 --rw=randread
--name=4Kread --bs=4k --rw=read
--name=8Kread --bs=8k --rw=read
--name=16Kread --bs=16k --rw=read
--name=32Kread --bs=32k --rw=read
--name=64Kread --bs=64k --rw=read
--name=128Kread --bs=128k --rw=read
--name=256Kread --bs=256k --rw=read
--name=512Kread --bs=512k --rw=read
--name=Seqread --bs=1m --rw=read
--name=Longread --bs=8m --rw=read
--name=Longwrite --bs=8m --rw=write
--name=Seqwrite --bs=1m --rw=write
--name=512Kwrite --bs=512k --rw=write
--name=256write --bs=256k --rw=write
--name=128write --bs=128k --rw=write
--name=64write --bs=64k --rw=write
--name=32write --bs=32k --rw=write
--name=16write --bs=16k --rw=write
--name=8write --bs=8k --rw=write
--name=4write --bs=4k --rw=write
--name=512KQD32write --bs=512k --iodepth=32 --rw=randwrite
--name=256KQD32write --bs=256k --iodepth=32 --rw=randwrite
--name=128KQD32write --bs=128k --iodepth=32 --rw=randwrite
--name=64KQD32write --bs=64k --iodepth=32 --rw=randwrite
--name=32KQD32write --bs=32k --iodepth=32 --rw=randwrite
--name=16KQD32write --bs=16k --iodepth=32 --rw=randwrite
--name=8KQD32write --bs=8k --iodepth=32 --rw=randwrite
--name=4kQD32write --bs=4k --iodepth=32 --rw=randwrite
| grep -E 'read|write|test' | grep -v ioengine
æ°ãã€ããŠïŒ ãªãœãŒã¹ïŒãã®ã³ãŒã㯠36 ã®ç°ãªããã¹ããå®è¡ããããããã®ãã¹ãã 4 ç§éå®è¡ããŸãã ãã¹ãã®ååã¯èšé²çšã§ãã NVMe ã§ã¯ 4 ç§ã§å€§éã®é²ç»ãå¯èœã§ãã æ¯ç§æ倧 3 ã®ã¬ãã€ãã ãããã£ãŠãæžã蟌ã¿ãã¹ããå®è¡ãããã³ã«ãæ倧 216 GB ã® SSD ãªãœãŒã¹ãæ¶è²»ãããå¯èœæ§ããããŸãã
èªã¿æžããæ··åšããŠããŸããïŒã¯ãã èªã¿åããã¹ããšæžã蟌ã¿ãã¹ããå¥ã ã«å®è¡ããã®ãåççã§ãã ããã«ã以åã«è¡ãããæžã蟌ã¿ãèªã¿åãã«åœ±é¿ããªãããã«ããã¹ãŠã®ãã£ãã·ã¥ãåæãããŠããããšã確èªããããšã¯çã«ããªã£ãŠããŸãã
çµæã¯ãæåã®èµ·åæãšãã®åŸã®èµ·åæã«ãã£ãã·ã¥ãšã·ã³ ããªã¥ãŒã ããã£ã±ãã«ãªãã«ã€ããŠå€§ããç°ãªããŸãããŸããã·ã¹ãã ãæåŸã®èµ·åæã«ãã£ã±ãã«ãªã£ããã£ãã·ã¥ãåæã§ãããã©ããã«ãã£ãŠãç°ãªããŸãã
ãšããããã¹ãããã·ã§ãããäœæããã°ããã®ããã§ã«ãã£ã±ãã«ãªã£ãŠããã·ã³ ããªã¥ãŒã ã®é床ã枬å®ããããšããå§ãããŸãã èè ã¯ãæåã®ã¹ãããã·ã§ãããäœæããçŽåŸãç¹ã«ãã£ãã·ã¥ããŸã å®å šã«ãã£ã±ãã«ãªã£ãŠããªããšãã«ãã©ã³ãã æžã蟌ã¿ãã©ã®ããã«æ¥æ¿ã«å éãããã芳å¯ããæ©äŒããããŸããã ããã¯ãã³ããŒãªã³ã©ã€ãæžã蟌ã¿ã»ãã³ãã£ã¯ã¹ããã£ãã·ã¥ãšã·ã³ ããªã¥ãŒã ãããã¯ã®é 眮ãããã³ RAID 6 ãžã®ã©ã³ãã æžã蟌ã¿ã RAID 6 ããã®ã©ã³ãã èªã¿åããšãã®åŸã®ãã£ãã·ã¥ãžã®æžã蟌ã¿ã«å€ãããšããäºå®ã«ããçºçããŸãã ãã®æ§æã§ã¯ãRAID 6 ããã®ã©ã³ãã èªã¿åãã¯æžã蟌ã¿ãããæ倧 6 å (ã¢ã¬ã€å ã® SATA SSD ã®æ°) é«éã§ãã ãªããªãCoW ã®ãããã¯ã¯ã·ã³ ããŒã«ããé çªã«å²ãåœãŠãããèšé²ãã»ãšãã©ã®å Žåé 次ã«ãªããŸãã
ãããã®æ©èœã¯äž¡æ¹ãšãæå©ã«äœ¿çšã§ããŸãã
ãäžè²«æ§ã®ãããã¹ãããã·ã§ããããã£ãã·ã¥ãã
ãã£ãã·ã¥ã®æå·/æ倱ãçºçããå Žåã®ããŒã¿æ倱ã®ãªã¹ã¯ã軜æžããããã«ãèè ã¯ããã®å Žåã«ã¹ãããã·ã§ãããããŒããŒã·ã§ã³ããŠæŽåæ§ãä¿èšŒããæ¹æ³ãå°å ¥ããããšãææ¡ããŠããŸãã
ãŸããã·ã³ ããªã¥ãŒã ã®ã¡ã¿ããŒã¿ã¯ãã£ãã·ã¥ãããŠããªãããã€ã¹äžã«ååšãããããã¡ã¿ããŒã¿ã®äžè²«æ§ãä¿ãããæ倱ã®å¯èœæ§ã¯ããŒã¿ ãããã¯å ã§åé¢ãããŸãã
次ã®ã¹ãããã·ã§ãã ããŒããŒã·ã§ã³ ãµã€ã¯ã«ã«ããããã£ãã·ã¥æ倱ãçºçããå Žåã«ã¹ãããã·ã§ããå ã®ããŒã¿ã®æŽåæ§ãä¿èšŒãããŸãã
- <name> ãšããååã®ã·ã³ ããªã¥ãŒã ããšã«ã<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% ã®æžã蟌ã¿è² è·ãäžåãããšãã§ããŸããã åœç€Ÿã® NVMe SSD 㯠100% ã®æžã蟌ã¿è² è·ã«ããããããšããªãœãŒã¹ãå®å šã«äœ¿ãæãããŠããŸããŸãã 3-4æ¥ã SATA SSD 㯠XNUMX åãã寿åœããããŸããã ãããã£ãŠãè² è·ã®å€§éšåãèªã¿åãã«åœãŠãããæ¯èŒççæéã®éåžžã«é«ãã¢ã¯ãã£ããã£ãšæžã蟌ã¿ã®å¹³åè² è·ã®äœãã®ããŒã¹ããçºçãããšä»®å®ããŸãã - ãŒãããã£ãã (ãŸãã¯ãŒããäœæ) ãããããã«ã<name>.cached ã®ååã <name>.committed ã«å€æŽããŸãã å€ã <name>.committed ã¯åé€ãããŸãã
- ãªãã·ã§ã³ã§ããã£ãã·ã¥ã 100% ãã£ã±ãã®å Žåã¯ãã¹ã¯ãªããã«ãã£ãŠãã£ãã·ã¥ãåäœæãããã£ãã·ã¥ãã¯ãªã¢ã§ããŸãã ãã£ãã·ã¥ãåå空ã®å Žåãã·ã¹ãã ã¯æžã蟌ã¿æã«ã¯ããã«é«éã«åäœããŸãã
- 移è¡ãããå€ããŒãã«èšå®ããŸãã
#lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata
ããã«ããããã£ãã·ã¥ãã¡ã€ã³ ã¡ãã£ã¢ãšäžæçã«åæã§ããªããªããŸãã - ããªãå€ãã®å€æŽããã£ãã·ã¥ã«èç©ããããŸã§åŸ
æ©ããŸã
#lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}'
ãŸãã¯ã¿ã€ããŒããªãã«ãªããŸãã - ããäžåºŠç¹°ãè¿ããŸãã
移è¡ãããå€ãé£ããã®ã¯ãªãã§ãã...?å®éã«ã¯ããã©ã³ãã ãé²é³ã¯å®å šã«ã©ã³ãã ã§ã¯ãªããšããããšã§ãã ãµã€ãºã 4 ãããã€ãã®ã»ã¯ã¿ãŒã«äœããæžã蟌ãã å Žåã次ã®æ°å以å ã«ãåãã»ã¯ã¿ãŒãŸãã¯é£æ¥ãã (+- 32K) ã»ã¯ã¿ãŒã® XNUMX ã€ã«ã¬ã³ãŒããäœæãããå¯èœæ§ãé«ããªããŸãã
移è¡ãããå€ããŒãã«èšå®ããããšã§ãSATA SSD ã§ã®æžã蟌ã¿åæã延æããããã€ãã®å€æŽããã£ãã·ã¥å ã® 64 ã€ã® XNUMXK ãããã¯ã«éçŽããŸãã ããã«ãããSATA SSD ã®ãªãœãŒã¹ãå€§å¹ ã«ç¯çŽãããŸãã
ã³ãŒãã¯ã©ãã«ãããŸãã?æ®å¿µãªãããèè 㯠100% ç¬åŠã§ãGoogleãäž»å°ã®éçºãå®è·µããŠãããããbash ã¹ã¯ãªããã®éçºèœåãäžååã§ãããšèããŠããããã®ãããèªåã®æããçã¿åºãããã²ã©ãã³ãŒãã¯èª°ã«ã䜿çšãããã¹ãã§ã¯ãªããšèããŠããŸãããã以å€ã
ãã®åéã®å°é家ã§ããã°ãå¿ èŠã«å¿ããŠäžèšã®ããžãã¯ããã¹ãŠç¬ç«ããŠè¡šçŸã§ããããããèè ãè©Šã¿ãããã«ãã·ã¹ãã åããããµãŒãã¹ãšããŠçŸããèšèšããããšãã§ãããšæããŸãã
ãã®ãããªã·ã³ãã«ãªã¹ãããã·ã§ãã ããŒããŒã·ã§ã³ ã¹ããŒã ã«ãããXNUMX ã€ã®ã¹ãããã·ã§ãããåžžã« SATA SSD äžã§å®å šã«åæãããããšãã§ããã ãã§ãªããthin_delta ãŠãŒãã£ãªãã£ã䜿çšããŠãäœæåŸã«ã©ã®ãããã¯ãå€æŽãããããèŠã€ããŠãæå·ãå±æçã«ç¹å®ããããšãã§ããŸããã¡ã€ã³ ããªã¥ãŒã ãåé€ããããªã«ããªãå€§å¹ ã«ç°¡çŽ åãããŸãã
libvirt/KVM ã§ã® TRIM/DISCARD
ãªããªãããŒã¿ ã¹ãã¬ãŒãžã¯ libvirt ãå®è¡ãã KVM ã«äœ¿çšãããããã空ãé åãå æããã ãã§ãªããäžèŠã«ãªã£ããã®ã解æŸããããã« VM ã«æããããšããå§ãããŸãã
ããã¯ãä»®æ³ãã£ã¹ã¯äžã§ TRIM/DISCARD ãµããŒãããšãã¥ã¬ãŒãããããšã«ãã£ãŠè¡ãããŸãã ãããè¡ãã«ã¯ãã³ã³ãããŒã©ãŒã®ã¿ã€ãã virtio-scsi ã«å€æŽããxml ãç·šéããå¿ èŠããããŸãã
#virsh edit vmname
<disk type='block' device='disk'>
<driver name='qemu' type='raw' cache='writethrough' io='threads' discard='unmap'/>
<source dev='/dev/images/vmname'/>
<backingStore/>
<target dev='sda' bus='scsi'/>
<alias name='scsi0-0-0-0'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='scsi' index='0' model='virtio-scsi'>
<alias name='scsi0'/>
<address type='pci' domain='0x0000' bus='0x04' slot='0x00' function='0x0'/>
</controller>
ã²ã¹ã OS ããã®ãã®ãã㪠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 "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 ã«ã³ããŒããããã®ç°¡åãªã³ãã³ãã®ã»ãããå«ãŸããŠããŸãã
æåã®èµ·åã¯æ¯èŒçæéããããããšããããŸãããªããªã... æåã¯ãã¹ãŠã®ããŒã¿ãã³ããŒãããŸãã ãã以éã®èµ·åã¯éåžžã«é«éã«ãªããŸãããªããªã... å€æŽã®ã¿ãã³ããŒãããŸãã
cron ã«è¿œå ããå¥ã®ã¹ã¯ãªãã:
ããå°ãããã·ã¥ã³ãŒããè¿œå #cat >/root/btrfs-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
BACKUP_SCRIPT="$SCRIPT_DIR/btrfs-backup.sh"
RETENTION="-60 day"
$BACKUP_SCRIPT backup root/@
$BACKUP_SCRIPT removeall root/@ "$RETENTION"
$BACKUP_SCRIPT backup root/@home
$BACKUP_SCRIPT removeall root/@home "$RETENTION"
$BACKUP_SCRIPT backup boot/
$BACKUP_SCRIPT removeall boot/ "$RETENTION"
EOF
ããã¯äœãããããã®ãã®ã..ïŒãªã¹ãããã BTRFS ããªã¥ãŒã ã®å¢åã¹ãããã·ã§ãããããã¯ã¢ãã FS äžã«äœæããåæããŸãã ãã®åŸã60 æ¥åã«äœæããããã¹ãŠã®åçãåé€ãããŸãã èµ·ååŸããªã¹ããããããªã¥ãŒã ã®æ¥ä»ä»ãã¹ãããã·ã§ããã /backup/btrfs/back/remote/ ãµããã£ã¬ã¯ããªã«è¡šç€ºãããŸãã
ã³ãŒãã«å®è¡æš©éãäžããŸãããã
#chmod +x /root/btrfs-backup/cron-daily.sh
#chmod +x /root/btrfs-backup/btrfs-backup.sh
ããã確èªã㊠cron ã«å
¥ããŠã¿ãŸãããã
#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
#cat /var/log/syslog | grep btrfs-backup
#crontab -e
0 2 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/btrfs-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t btrfs-backup
LVMã·ã³ããã¯ã¢ãã
ããã¯ã¢ãã ããã€ã¹äžã«ã·ã³ ããŒã«ãäœæããŸãããã
#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T backup/thin-pool
ddrescue ãã€ã³ã¹ããŒã«ããŸãããããªããªã... ã¹ã¯ãªããã¯ãã®ããŒã«ã䜿çšããŸãã
#apt-get install gddrescue
ã¹ã¯ãªããçšã®ãã£ã¬ã¯ããªãäœæããŸãããã
#mkdir /root/lvm-thin-backup
ã¹ã¯ãªãããã³ããŒããŸãããã
å
éšã§ã¯ããããã®ããã·ã¥ã...#cat >/root/lvm-thin-backup/lvm-thin-backup.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
LOCK_FILE="/dev/shm/$SCRIPT_NAME.lock"
DATE_PREFIX='%Y-%m-%d'
DATE_FORMAT=$DATE_PREFIX'-%H-%M-%S'
DATE_REGEX='[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]-[0-9][0-9]'
BASE_SUFFIX=".base"
PEND_SUFFIX=".pend"
SNAP_SUFFIX=".snap"
BACKUPS="backup"
BACKUPS_POOL="thin-pool"
export LVM_SUPPRESS_FD_WARNINGS=1
function terminate ()
{
echo "$1" >&2
exit 1
}
function wait_lock()
{
flock 98
}
function wait_lock_or_terminate()
{
echo "Wating for lock..."
wait_lock || terminate "Failed to get lock. Exiting..."
echo "Got lock..."
}
function suffix()
{
FORMATTED_DATE=$(date +"$DATE_FORMAT")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}
function filter()
{
FORMATTED_DATE=$(date --date="$1" +"$DATE_PREFIX")
echo "$SNAP_SUFFIX.$FORMATTED_DATE"
}
function read_thin_id {
lvs --rows --reportformat basic --quiet -othin_id "$1/$2" | awk '{print $2}'
}
function read_pool_lv {
lvs --rows --reportformat basic --quiet -opool_lv "$1/$2" | awk '{print $2}'
}
function read_lv_dm_path {
lvs --rows --reportformat basic --quiet -olv_dm_path "$1/$2" | awk '{print $2}'
}
function read_lv_active {
lvs --rows --reportformat basic --quiet -olv_active "$1/$2" | awk '{print $2}'
}
function read_lv_chunk_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -ochunk_size "$1/$2" | awk '{print $2}'
}
function read_lv_size {
lvs --rows --reportformat basic --quiet --units b --nosuffix -olv_size "$1/$2" | awk '{print $2}'
}
function activate_volume {
lvchange -ay -Ky "$1/$2"
}
function deactivate_volume {
lvchange -an "$1/$2"
}
function read_thin_metadata_snap {
dmsetup status "$1" | awk '{print $7}'
}
function thindiff()
{
DIFF_VG="$1"
DIFF_SOURCE="$2"
DIFF_TARGET="$3"
DIFF_SOURCE_POOL=$(read_pool_lv $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_POOL=$(read_pool_lv $DIFF_VG $DIFF_TARGET)
if [ "$DIFF_SOURCE_POOL" == "" ]
then
(>&2 echo "Source LV is not thin.")
exit 1
fi
if [ "$DIFF_TARGET_POOL" == "" ]
then
(>&2 echo "Target LV is not thin.")
exit 1
fi
if [ "$DIFF_SOURCE_POOL" != "$DIFF_TARGET_POOL" ]
then
(>&2 echo "Source and target LVs belong to different thin pools.")
exit 1
fi
DIFF_POOL_PATH=$(read_lv_dm_path $DIFF_VG $DIFF_SOURCE_POOL)
DIFF_SOURCE_ID=$(read_thin_id $DIFF_VG $DIFF_SOURCE)
DIFF_TARGET_ID=$(read_thin_id $DIFF_VG $DIFF_TARGET)
DIFF_POOL_PATH_TPOOL="$DIFF_POOL_PATH-tpool"
DIFF_POOL_PATH_TMETA="$DIFF_POOL_PATH"_tmeta
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)
if [ "$DIFF_POOL_METADATA_SNAP" != "-" ]
then
(>&2 echo "Thin pool metadata snapshot already exist. Assuming stale one. Will release metadata snapshot in 5 seconds.")
sleep 5
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
fi
dmsetup message $DIFF_POOL_PATH_TPOOL 0 reserve_metadata_snap
DIFF_POOL_METADATA_SNAP=$(read_thin_metadata_snap $DIFF_POOL_PATH_TPOOL)
if [ "$DIFF_POOL_METADATA_SNAP" == "-" ]
then
(>&2 echo "Failed to create thin pool metadata snapshot.")
exit 1
fi
#We keep output in variable because metadata snapshot need to be released early.
DIFF_DATA=$(thin_delta -m$DIFF_POOL_METADATA_SNAP --snap1 $DIFF_SOURCE_ID --snap2 $DIFF_TARGET_ID $DIFF_POOL_PATH_TMETA)
dmsetup message $DIFF_POOL_PATH_TPOOL 0 release_metadata_snap
echo $"$DIFF_DATA" | grep -E 'different|left_only|right_only' | sed 's/</"/g' | sed 's/ /"/g' | awk -F'"' '{print $6 "t" $8 "t" $11}' | sed 's/different/copy/g' | sed 's/left_only/copy/g' | sed 's/right_only/discard/g'
}
function thinsync()
{
SYNC_VG="$1"
SYNC_PEND="$2"
SYNC_BASE="$3"
SYNC_TARGET="$4"
SYNC_PEND_POOL=$(read_pool_lv $SYNC_VG $SYNC_PEND)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SYNC_VG $SYNC_PEND_POOL)
SYNC_PEND_PATH=$(read_lv_dm_path $SYNC_VG $SYNC_PEND)
activate_volume $SYNC_VG $SYNC_PEND
while read -r SYNC_ACTION SYNC_OFFSET SYNC_LENGTH ; do
SYNC_OFFSET_BYTES=$((SYNC_OFFSET * SYNC_BLOCK_SIZE))
SYNC_LENGTH_BYTES=$((SYNC_LENGTH * SYNC_BLOCK_SIZE))
if [ "$SYNC_ACTION" == "copy" ]
then
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SYNC_PEND_PATH" "$SYNC_TARGET"
fi
if [ "$SYNC_ACTION" == "discard" ]
then
blkdiscard -o $SYNC_OFFSET_BYTES -l $SYNC_LENGTH_BYTES "$SYNC_TARGET"
fi
done < <(thindiff "$SYNC_VG" "$SYNC_PEND" "$SYNC_BASE")
}
function discard_volume()
{
DISCARD_VG="$1"
DISCARD_LV="$2"
DISCARD_LV_PATH=$(read_lv_dm_path "$DISCARD_VG" "$DISCARD_LV")
if [ "$DISCARD_LV_PATH" != "" ]
then
echo "$DISCARD_LV_PATH found"
else
echo "$DISCARD_LV not found in $DISCARD_VG"
exit 1
fi
DISCARD_LV_POOL=$(read_pool_lv $DISCARD_VG $DISCARD_LV)
DISCARD_LV_SIZE=$(read_lv_size "$DISCARD_VG" "$DISCARD_LV")
lvremove -y --quiet "$DISCARD_LV_PATH" || exit 1
lvcreate --thin-pool "$DISCARD_LV_POOL" -V "$DISCARD_LV_SIZE"B --name "$DISCARD_LV" "$DISCARD_VG" || exit 1
}
function backup()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
SOURCE_PEND_LV="$SOURCE_LV$PEND_SUFFIX"
TARGET_PEND_LV="$TARGET_LV$PEND_SUFFIX"
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "Source base not found creating snapshot of $SOURCE_VG/$SOURCE_LV to $SOURCE_VG/$SOURCE_BASE_LV"
lvcreate --quiet --snapshot --name "$SOURCE_BASE_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo "Discarding $SOURCE_BASE_LV_PATH as we need to bootstrap."
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
sync
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found out of sync with source... removing..."
lvremove -y --quiet $TARGET_BASE_LV_PATH || exit 1
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
sync
fi
fi
SOURCE_BASE_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_VG/$TARGET_LV not found. Creating empty volume."
lvcreate --thin-pool "$BACKUPS_POOL" -V "$SOURCE_BASE_SIZE"B --name "$TARGET_BASE_LV" "$TARGET_VG" || exit 1
echo "Have to rebootstrap. Discarding source at $SOURCE_BASE_LV_PATH"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SOURCE_BASE_CHUNK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
discard_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
TARGET_BASE_POOL=$(read_pool_lv $TARGET_VG $TARGET_BASE_LV)
TARGET_BASE_CHUNK_SIZE=$(read_lv_chunk_size $TARGET_VG $TARGET_BASE_POOL)
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
echo "Discarding target at $TARGET_BASE_LV_PATH"
discard_volume "$TARGET_VG" "$TARGET_BASE_LV"
sync
fi
if [ "$SOURCE_PEND_LV_PATH" != "" ]
then
echo "$SOURCE_PEND_LV_PATH found removing..."
lvremove -y --quiet "$SOURCE_PEND_LV_PATH" || exit 1
sync
fi
lvcreate --quiet --snapshot --name "$SOURCE_PEND_LV" "$SOURCE_VG/$SOURCE_LV" || exit 1
SOURCE_PEND_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_PEND_LV")
sync
if [ "$TARGET_PEND_LV_PATH" != "" ]
then
echo "$TARGET_PEND_LV_PATH found removing..."
lvremove -y --quiet $TARGET_PEND_LV_PATH
sync
fi
lvcreate --quiet --snapshot --name "$TARGET_PEND_LV" "$TARGET_VG/$TARGET_BASE_LV" || exit 1
TARGET_PEND_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_PEND_LV")
SOURCE_PEND_LV_SIZE=$(read_lv_size "$SOURCE_VG" "$SOURCE_PEND_LV")
lvresize -L "$SOURCE_PEND_LV_SIZE"B "$TARGET_PEND_LV_PATH"
activate_volume "$TARGET_VG" "$TARGET_PEND_LV"
echo "Synching $SOURCE_PEND_LV_PATH to $TARGET_PEND_LV_PATH"
thinsync "$SOURCE_VG" "$SOURCE_PEND_LV" "$SOURCE_BASE_LV" "$TARGET_PEND_LV_PATH" || exit 1
sync
TARGET_DATE_SUFFIX=$(suffix)
lvcreate --quiet --snapshot --name "$TARGET_LV$TARGET_DATE_SUFFIX" "$TARGET_VG/$TARGET_PEND_LV" || exit 1
sync
lvremove --quiet -y "$SOURCE_BASE_LV_PATH" || exit 1
sync
lvremove --quiet -y "$TARGET_BASE_LV_PATH" || exit 1
sync
lvrename -y "$SOURCE_VG/$SOURCE_PEND_LV" "$SOURCE_BASE_LV" || exit 1
lvrename -y "$TARGET_VG/$TARGET_PEND_LV" "$TARGET_BASE_LV" || exit 1
sync
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function verify()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
echo Comparing "$SOURCE_BASE_LV_PATH" with "$TARGET_BASE_LV_PATH"
cmp "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function resync()
{
SOURCE_VG="$1"
SOURCE_LV="$2"
TARGET_VG="$BACKUPS"
TARGET_LV="$SOURCE_VG-$SOURCE_LV"
SOURCE_BASE_LV="$SOURCE_LV$BASE_SUFFIX"
TARGET_BASE_LV="$TARGET_LV$BASE_SUFFIX"
TARGET_BASE_LV_PATH=$(read_lv_dm_path "$TARGET_VG" "$TARGET_BASE_LV")
SOURCE_BASE_LV_PATH=$(read_lv_dm_path "$SOURCE_VG" "$SOURCE_BASE_LV")
if [ "$SOURCE_BASE_LV_PATH" != "" ]
then
echo "$SOURCE_BASE_LV_PATH found"
else
echo "$SOURCE_BASE_LV_PATH not found"
exit 1
fi
if [ "$TARGET_BASE_LV_PATH" != "" ]
then
echo "$TARGET_BASE_LV_PATH found"
else
echo "$TARGET_BASE_LV_PATH not found"
exit 1
fi
activate_volume "$TARGET_VG" "$TARGET_BASE_LV"
activate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
SOURCE_BASE_POOL=$(read_pool_lv $SOURCE_VG $SOURCE_BASE_LV)
SYNC_BLOCK_SIZE=$(read_lv_chunk_size $SOURCE_VG $SOURCE_BASE_POOL)
echo Syncronizing "$SOURCE_BASE_LV_PATH" to "$TARGET_BASE_LV_PATH"
CMP_OFFSET=0
while [[ "$CMP_OFFSET" != "" ]] ; do
CMP_MISMATCH=$(cmp -i "$CMP_OFFSET" "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH" | grep differ | awk '{print $5}' | sed 's/,//g' )
if [[ "$CMP_MISMATCH" != "" ]] ; then
CMP_OFFSET=$(( CMP_MISMATCH + CMP_OFFSET ))
SYNC_OFFSET_BYTES=$(( ( CMP_OFFSET / SYNC_BLOCK_SIZE ) * SYNC_BLOCK_SIZE ))
SYNC_LENGTH_BYTES=$(( SYNC_BLOCK_SIZE ))
echo "Synching $SYNC_LENGTH_BYTES bytes at $SYNC_OFFSET_BYTES from $SOURCE_BASE_LV_PATH to $TARGET_BASE_LV_PATH"
ddrescue --quiet --force --input-position=$SYNC_OFFSET_BYTES --output-position=$SYNC_OFFSET_BYTES --size=$SYNC_LENGTH_BYTES "$SOURCE_BASE_LV_PATH" "$TARGET_BASE_LV_PATH"
else
CMP_OFFSET=""
fi
done
echo Done...
deactivate_volume "$TARGET_VG" "$TARGET_BASE_LV"
deactivate_volume "$SOURCE_VG" "$SOURCE_BASE_LV"
}
function list()
{
LIST_SOURCE_VG="$1"
LIST_SOURCE_LV="$2"
LIST_TARGET_VG="$BACKUPS"
LIST_TARGET_LV="$LIST_SOURCE_VG-$LIST_SOURCE_LV"
LIST_TARGET_BASE_LV="$LIST_TARGET_LV$SNAP_SUFFIX"
lvs -olv_name | grep "$LIST_TARGET_BASE_LV.$DATE_REGEX"
}
function remove()
{
REMOVE_TARGET_VG="$BACKUPS"
REMOVE_TARGET_LV="$1"
lvremove -y "$REMOVE_TARGET_VG/$REMOVE_TARGET_LV"
sync
}
function removeall()
{
DATE_OFFSET="$3"
FILTER="$(filter "$DATE_OFFSET")"
while read -r SNAPSHOT ; do
remove "$SNAPSHOT"
done < <(list "$1" "$2" | grep "$FILTER")
}
(
COMMAND="$1"
shift
case "$COMMAND" in
"--help")
echo "Help"
;;
"suffix")
suffix
;;
"filter")
filter "$1"
;;
"backup")
wait_lock_or_terminate
backup "$1" "$2"
;;
"list")
list "$1" "$2"
;;
"thindiff")
thindiff "$1" "$2" "$3"
;;
"thinsync")
thinsync "$1" "$2" "$3" "$4"
;;
"verify")
wait_lock_or_terminate
verify "$1" "$2"
;;
"resync")
wait_lock_or_terminate
resync "$1" "$2"
;;
"remove")
wait_lock_or_terminate
remove "$1"
;;
"removeall")
wait_lock_or_terminate
removeall "$1" "$2" "$3"
;;
*)
echo "None.."
;;
esac
) 98>$LOCK_FILE
EOF
ããã¯äœãããããã®ãã®ã...ïŒã·ã³ ã¹ãããã·ã§ãããæäœããthin_delta çµç±ã§åä¿¡ãã XNUMX ã€ã®ã·ã³ ã¹ãããã·ã§ããã®å·®åããddrescue ãš blkdiscard ã䜿çšããŠå¥ã®ããã㯠ããã€ã¹ã«åæããããã®ã³ãã³ã ã»ãããå«ãŸããŠããŸãã
cron ã«è¿œå ããå¥ã®ã¹ã¯ãªãã:
ããå°ãããã·ã¥#cat >/root/lvm-thin-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
SCRIPT_FILE="$(realpath $0)"
SCRIPT_DIR="$(dirname $SCRIPT_FILE)"
SCRIPT_NAME="$(basename -s .sh $SCRIPT_FILE)"
BACKUP_SCRIPT="$SCRIPT_DIR/lvm-thin-backup.sh"
RETENTION="-60 days"
$BACKUP_SCRIPT backup images linux-dev
$BACKUP_SCRIPT backup images win8
$BACKUP_SCRIPT backup images win8-data
#etc
$BACKUP_SCRIPT removeall images linux-dev "$RETENTION"
$BACKUP_SCRIPT removeall images win8 "$RETENTION"
$BACKUP_SCRIPT removeall images win8-data "$RETENTION"
#etc
EOF
ããã¯äœãããããã®ãã®ã...ïŒåã®ã¹ã¯ãªããã䜿çšããŠããªã¹ããããã·ã³ ããªã¥ãŒã ã®ããã¯ã¢ãããäœæããã³åæããŸãã ã¹ã¯ãªããã¯ããªã¹ããããããªã¥ãŒã ã®éã¢ã¯ãã£ããªã¹ãããã·ã§ãããæ®ããŸããããã¯ãæåŸã®åæ以éã®å€æŽã远跡ããããã«å¿ èŠã§ãã
ãã®ã¹ã¯ãªãããç·šéããŠãããã¯ã¢ãã ã³ããŒãäœæããã·ã³ ããªã¥ãŒã ã®ãªã¹ããæå®ããå¿ èŠããããŸãã æå®ãããååã¯èª¬æã®ã¿ãç®çãšããŠããŸãã å¿ èŠã«å¿ããŠããã¹ãŠã®ããªã¥ãŒã ãåæããã¹ã¯ãªãããäœæã§ããŸãã
æš©å©ãäžããŸããã:
#chmod +x /root/lvm-thin-backup/cron-daily.sh
#chmod +x /root/lvm-thin-backup/lvm-thin-backup.sh
ããã確èªã㊠cron ã«å ¥ããŠã¿ãŸãããã
#/usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
#cat /var/log/syslog | grep lvm-thin-backup
#crontab -e
0 3 * * * /usr/bin/nice -n 19 /usr/bin/ionice -c 3 /root/lvm-thin-backup/cron-daily.sh 2>&1 | /usr/bin/logger -t lvm-thin-backup
æåã®èµ·åã¯é·ããªãã§ãããããªããªã... ã·ã³ ããªã¥ãŒã ã¯ã䜿çšãããŠãããã¹ãŠã®é åãã³ããŒããããšã«ãã£ãŠå®å
šã«åæãããŸãã LVM ã·ã³ ã¡ã¿ããŒã¿ã®ãããã§ãã©ã®ãããã¯ãå®éã«äœ¿çšãããŠããããããããããå®éã«äœ¿çšãããŠããã·ã³ ããªã¥ãŒã ãããã¯ã®ã¿ãã³ããŒãããŸãã
åŸç¶ã®å®è¡ã§ã¯ãLVM ã·ã³ ã¡ã¿ããŒã¿ãä»ããå€æŽè¿œè·¡ã®ãããã§ãããŒã¿ã段éçã«ã³ããŒãããŸãã
äœãèµ·ããã®ãèŠãŠã¿ãŸãããïŒ
#time /root/btrfs-backup/cron-daily.sh
real 0m2,967s
user 0m0,225s
sys 0m0,353s
#time /root/lvm-thin-backup/cron-daily.sh
real 1m2,710s
user 0m12,721s
sys 0m6,671s
#ls -al /backup/btrfs/back/remote/*
/backup/btrfs/back/remote/boot:
total 0
drwxr-xr-x 1 root root 1260 ÐŒÐ°Ñ 26 09:11 .
drwxr-xr-x 1 root root 16 ÐŒÐ°Ñ 6 09:30 ..
drwxr-xr-x 1 root root 322 ÐŒÐ°Ñ 26 02:00 .@base
drwxr-xr-x 1 root root 516 ÐŒÐ°Ñ 6 09:39 [email protected]
drwxr-xr-x 1 root root 516 ÐŒÐ°Ñ 6 09:39 [email protected]
...
/backup/btrfs/back/remote/root:
total 0
drwxr-xr-x 1 root root 2820 ÐŒÐ°Ñ 26 09:11 .
drwxr-xr-x 1 root root 16 ÐŒÐ°Ñ 6 09:30 ..
drwxr-xr-x 1 root root 240 ÐŒÐ°Ñ 26 09:11 @.@base
drwxr-xr-x 1 root root 22 ÐŒÐ°Ñ 26 09:11 @home.@base
drwxr-xr-x 1 root root 22 ÐŒÐ°Ñ 6 09:39 @[email protected]
drwxr-xr-x 1 root root 22 ÐŒÐ°Ñ 6 09:39 @[email protected]
...
drwxr-xr-x 1 root root 240 ÐŒÐ°Ñ 6 09:39 @[email protected]
drwxr-xr-x 1 root root 240 ÐŒÐ°Ñ 6 09:39 @[email protected]
...
#lvs -olv_name,lv_size images && lvs -olv_name,lv_size backup
LV LSize
linux-dev 128,00g
linux-dev.base 128,00g
thin-pool 1,38t
win8 128,00g
win8-data 2,00t
win8-data.base 2,00t
win8.base 128,00g
LV LSize
backup 256,00g
images-linux-dev.base 128,00g
images-linux-dev.snap.2020-03-08-10-09-11 128,00g
images-linux-dev.snap.2020-03-08-10-09-25 128,00g
...
images-win8-data.base 2,00t
images-win8-data.snap.2020-03-16-14-11-55 2,00t
images-win8-data.snap.2020-03-16-14-19-50 2,00t
...
images-win8.base 128,00g
images-win8.snap.2020-03-17-04-51-46 128,00g
images-win8.snap.2020-03-18-03-02-49 128,00g
...
thin-pool <2,09t
ããã¯å ¥ãå人圢ãšäœã®é¢ä¿ãããã®ã§ããããïŒ
LVM LV è«çããªã¥ãŒã ãä»ã® VG ã® LVM PV ç©çããªã¥ãŒã ã«ãªãå¯èœæ§ãããããšãèãããšãããããå¯èœã§ãã LVM ã¯ãå ¥ãå人圢ã®ããã«ååž°çã«å®è¡ã§ããŸãã ããã«ãããLVM ã«æ¥µããŠé«ãæè»æ§ãäžããããŸãã
PS
次ã®èšäºã§ã¯ãããŒã ãã¹ã¯ããããããŒã ã€ã³ã¿ãŒããããP2P ãããã¯ãŒã¯ã䜿çšããŠãè€æ°ã®å€§éžã«åé·æ§ãåããå°çåæ£ã¹ãã¬ãŒãž/VM ã¯ã©ã¹ã¿ãŒãäœæããããã®åºç€ãšããŠãããã€ãã®åæ§ã®ã¢ãã€ã« ã¹ãã¬ãŒãž ã·ã¹ãã /KVM ã䜿çšããŠã¿ãŸãã
åºæïŒ habr.com