O le a le mea e tutusa ai LVM ma Matryoshka?

Taimi agalelei o le aso.
Ou te manaʻo e faʻasoa i le alalafaga loʻu poto masani i le fausiaina o se faiga e teu ai faʻamaumauga mo KVM e faʻaaoga ai le md RAID + LVM.

O le polokalame o le a aofia ai:

  • Fausia md RAID 1 mai le NVMe SSD.
  • Faʻapipiʻiina md RAID 6 mai SATA SSD ma taʻavale masani.
  • Fa'ailoga o le TRIM/DISCARD fa'agaioiga ile SSD RAID 1/6.
  • Fausia se fa'apipi'i md RAID 1/6 i luga o se seti masani o tisiki.
  • Faʻapipiʻiina le faiga ile NVMe RAID 1 pe a leai se lagolago NVMe ile BIOS.
  • Faʻaaogaina le LVM cache ma le LVM manifinifi.
  • Fa'aaogā ata o le BTRFS ma lafo/maua mo fa'amaumauga.
  • Fa'aaogaina o ata manifinifi LVM ma thin_delta mo fa'amaumauga BTRFS.

Afai e te fiafia, fa'amolemole va'ai pusi.

Faamatalaga

E leai se matafaioi a le tusitala mo taunuuga o le faʻaaogaina poʻo le le faʻaaogaina o mea / faʻataʻitaʻiga / code / fautuaga / faʻamatalaga mai lenei tusiga. E ala i le faitauina poʻo le faʻaogaina o lenei mea i soʻo se auala, e te tauaveina le matafaioi mo taunuuga uma o nei gaioiga. O aʻafiaga e mafai ona aofia ai:

  • NVMe SSDs falai falai.
  • Ua fa'aaogaina atoa le pu'eina o puna'oa ma le toilalo o ta'avale SSD.
  • Fa'ato'a leiloa uma fa'amatalaga i ta'avale uma, e aofia ai kopi fa'asao.
  • Fa'aletonu masini komepiuta.
  • Ma'imau taimi, neura ma tupe.
  • So'o se isi a'afiaga e le o ta'ua i luga.

Omea

Sa avanoa:

Motherboard mai le 2013 ma le Z87 chipset, fa'auma ma Intel Core i7 / Haswell.

  • Processor 4 cores, 8 filo
  • 32 GB DDR3 RAM
  • 1 x 16 po'o le 2 x 8 PCIe 3.0
  • 1 x 4 + 1 x 1 PCIe 2.0
  • 6 x 6 GBps SATA 3 so'oga

SAS adapter LSI SAS9211-8I emo ile IT / HBA mode. Ua suia ma le loto i ai le firmware e mafai e le RAID i le HBA firmware i:

  1. E mafai ona e tia'i i fafo lenei mea fa'apipi'i i so'o se taimi ma sui i so'o se isi mea e te tau i ai.
  2. TRIM/Discard galue masani i tisiki, ona... i le RAID firmware o nei poloaiga e le lagolagoina uma, ma o le HBA, i se tulaga lautele, e le popole po o le a le poloaiga e tuʻuina atu i luga o le pasi.

Pusa malo - 8 vaega o le HGST Travelstar 7K1000 ma le gafatia o le 1 TB i le 2.5 foliga faʻapitoa, e pei o komepiuta komepiuta. O nei taʻavale sa i ai muamua ile RAID 6 array. O le a latou faʻaaogaina foi i le faiga fou. E teu ai fa'amaumauga fa'apitonu'u.

Fa'aopoopoina:

6 fasi SATA SSD faʻataʻitaʻiga Samsung 860 QVO 2TB. O nei SSDs e manaʻomia se voluma tele, o le i ai o se SLC cache, faʻamaoni, ma se tau maualalo na manaʻomia. Sa mana'omia le lagolago mo le lafoai/zero, lea e siaki e le laina ile dmesg:

kernel: ata1.00: Enabling discard_zeroes_data

2 vaega o le NVMe SSD faʻataʻitaʻiga Samsung SSD 970 EVO 500GB.

Mo nei SSDs, faitau vave / tusitusi saoasaoa ma punaoa gafatia mo ou manaʻoga e taua. Radiator mo i latou. E tatau lava. E matua'i. A leai, falai i latou seia oʻo i le malulu i le taimi muamua o le RAID synchronization.

StarTech PEX8M2E2 fetuutuunai mo 2 x NVMe SSD faʻapipiʻi i le PCIe 3.0 8x slot. O lenei, toe, ua naʻo se HBA, ae mo NVMe. E ese mai i mea taugofie i le mea e le manaʻomia ai le PCIe bifurcation lagolago mai le motherboard ona o le i ai o se sui PCIe ua fausia. O le a aoga e oʻo lava i le faiga sili ona leva ma PCIe, e tusa lava pe o se x1 PCIe 1.0 slot. E masani lava, i le saoasaoa talafeagai. E leai ni RAID iina. E leai se BIOS fausia i luga o le laupapa. O lea la, o lau polokalama o le a le aʻoaʻoina faʻapitoa e taʻavale i le NVMe, sili atu le NVMe RAID faʻafetai i lenei masini.

O lenei vaega na mafua ona o le i ai naʻo le tasi le 8x PCIe 3.0 i totonu o le polokalama, ma, afai e iai 2 avanoa avanoa, e mafai ona faigofie ona suia i le lua penny PEX4M2E1 poʻo analogues, lea e mafai ona faʻatau i soʻo se mea i le tau o le 600. rubles.

Le teenaina o ituaiga uma o meafaigaluega poʻo le fausia-i totonu chipset / BIOS RAIDs na faia ma le loto i ai, ina ia mafai ai ona sui atoatoa le faiga atoa, sei vagana ai le SSD / HDD lava latou, aʻo taofi uma faʻamatalaga. Le mea lelei, ina ia mafai ona e faʻasaoina e oʻo lava i le faʻapipiʻiina o le faʻaogaina o masini pe a faʻagasolo i mea fou fou / eseʻese. O le mea autu o loʻo i ai SATA ma PCIe ports. E pei o se CD ola po'o se ta'avale flash bootable, na'o le vave tele ma fai si tele.

HumuA leai, e te iloa le mea e tupu - o nisi taimi e te manaʻomia faʻanatinati e ave le laina atoa ma oe e ave. Ae ou te le manao e leiloa faamatalaga. Ina ia faia lenei mea, o faʻasalalauga uma o loʻo taʻua o loʻo i luga o faʻataʻitaʻiga i le 5.25 faga o le tulaga masani.

Ia, ma, ioe, mo le faʻataʻitaʻiga i auala eseese o SSD caching i Linux.

O osofa'iga o meafaigaluega e le manaia. Ia ki. E aoga pe leai. Ma faatasi ai ma mdadm e iai lava filifiliga.

Polokalame

I le taimi muamua, na faʻapipiʻi Debian 8 Jessie i luga o meafaigaluega, lea e latalata ile EOL. RAID 6 na faʻapotopotoina mai HDD o loʻo taʻua i luga faʻatasi ma LVM. Na faʻatautaia masini masini i kvm/libvirt.

Aua O loʻo i ai i le tusitala le poto masani i le fatuina o taʻavale SATA / NVMe feaveaʻi feaveaʻi, ma e le gata i lea, ina ia aua neʻi motusia le faʻataʻitaʻiga masani masani, o le Ubuntu 18.04 na filifilia e avea ma faʻatonuga, lea ua uma ona faʻamautuina, ae o loʻo i ai pea le 3 tausaga. lagolago i le lumana'i.

O le faiga o loʻo taʻua o loʻo i ai uma avetaavale masini matou te manaʻomia mai le pusa. Matou te le manaʻomia soʻo se isi polokalame poʻo ni avetaavale.

Sauni mo faapipiiina

Ina ia faʻapipiʻi le polokalama matou te manaʻomia le Ubuntu Desktop Image. O loʻo i ai i le 'auʻaunaga se ituaiga faʻapipiʻi malosi, lea e faʻaalia ai le tutoʻatasi tele e le mafai ona faʻaletonu e ala i le tuʻuina atu o le UEFI system partition i luga o se tasi o disks, faʻaleagaina uma le matagofie. E tusa ai, e faʻapipiʻiina naʻo le UEFI mode. E le ofoina mai ni filifiliga.

Matou te le fiafia i lenei mea.

Aisea?Ae paga lea, o le UEFI boot e matua le fetaui ma le RAID software boot, aua... E leai se tasi na te ofoina mai ia i matou ni fa'aagaga mo le vaeluaga o le UEFI ESP. O loʻo i ai faʻamatalaga i luga ole laiga e fautuaina ai le tuʻuina o le ESP vaeluaga i luga o se kiliva uila i totonu o le USB port, ae o se tulaga le manuia. O loʻo i ai fua faʻaoga e faʻaaoga ai le polokalama mdadm RAID 1 faʻatasi ai ma metadata version 0.9 e le taofia ai le UEFI BIOS mai le vaʻaia o lenei vaeluaga, ae o loʻo ola lenei seia oʻo i le taimi fiafia pe a tusia e le BIOS poʻo se isi masini OS se mea i le ESP ma galo ai e faʻafetaui i isi. fa'ata.

E le gata i lea, o le UEFI boot e faʻalagolago i le NVRAM, lea o le a le alu faʻatasi ma disks i le faiga fou, aua o se vaega o le motherboard.

O lea la, matou te le toe fa'afouina se uili fou. Ua uma ona iai sa matou pasika a tamamatua ua uma ona fai, ua leva ona ta'ua o le Legacy/BIOS boot, o lo'o i ai le igoa fa'amaualuga o le CSM i faiga fa'aoga UEFI. Na'o le ave'ese mai le fata, fa'alu'u, pamu pa'u ma solo i se ie susu.

E le mafai foʻi ona faʻapipiʻi lelei le laupepa o le Ubuntu ma le Legacy bootloader, ae o iinei, e pei ona latou fai mai ai, o loʻo i ai filifiliga.

Ma o lea, matou te aoina meafaigaluega ma utaina le polokalama mai le Ubuntu Live bootable flash drive. Matou te manaʻomia le laʻuina o afifi, o lea matou te setiina le fesoʻotaʻiga e aoga mo oe. Afai e le aoga, e mafai ona e utaina afifi manaʻomia i luga o le flash drive i le taimi muamua.

Matou te o atu i totonu o le Desktop environment, faʻalauiloa le emulator terminal, ma matou o ese:

#sudo bash

E faapefea…?O le laina o loʻo i luga o le faʻailoga faʻapitoa mo holiwars e uiga i sudo. C eоoo mai avanoa sili atu maоtiute sili atu. O le fesili pe e mafai ona e ave ia oe lava. E toʻatele tagata e manatu o le faʻaaogaina o sudo i lenei auala e le faʻaeteete. Peitai:

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

Aisea e le ZFS...?A matou fa'apipi'i polokalame i luga o la matou komipiuta, matou te tu'uina atu a matou meafaigaluega i le au atia'e o lenei polokalama e ave ai le ta'avale.
A matou faʻatuatuaina lenei polokalama faʻatasi ma le saogalemu o a matou faʻamatalaga, matou te faia se nonogatupe e tutusa ma le tau o le toe faʻaleleia o nei faʻamaumauga, lea e tatau ona matou totogiina i se aso.

Mai lenei manatu, o le ZFS o le Ferrari, ma le mdadm+lvm e pei o se uila.

O le mea moni, e manaʻo le tusitala e nono atu se uila i luga o aitalafu i tagata e le iloa nai lo Ferrari. O iina, e le maualuga le tau o le mataupu. Leai se mana'omia mo aia tatau. Faigofie nai lo tulafono tau taavale. E leai se totogi e paka ai. E sili atu le agava'a fa'asalalau. E mafai ona e faʻapipiʻi vae i se uila, ma e mafai ona e faʻaleleia se uila i ou lava lima.

Aisea la BTRFS...?Ina ia faʻapipiʻi le faiga faʻaoga, matou te manaʻomia se faila faila e lagolagoina i le Legacy / BIOS GRUB mai le pusa, ma i le taimi lava e tasi e lagolagoina ai ata ola. O le a matou faʻaaogaina mo le / boot partition. E le gata i lea, e manaʻo le tusitala e faʻaaoga lenei FS mo / (aʻa), aua nei galo e maitauina mo soʻo se isi polokalama e mafai ona e faia ni vaega eseese i luga o le LVM ma faʻapipiʻi i totonu o lisi talafeagai.

Matou te le teuina ni ata o masini komepiuta poʻo faʻamaumauga i luga o lenei FS.
O lenei FS o le a na'o le fa'aogaina e fatu ai ata o le faiga e aunoa ma le tapeina ona fa'aliliuina lea o nei ata i se tisiki fa'apolopolo e fa'aaoga ai le lafo/talia.

E le gata i lea, e masani lava ona manaʻo le tusitala e tuʻu saʻo le laʻititi o polokalama faakomepiuta i luga o masini ma faʻatautaia isi polokalama uma i masini masini e faʻaaoga ai mea e pei o le tuʻuina atu o GPU ma PCI-USB Host controllers ile KVM e ala ile IOMMU.

Pau lava mea o totoe i luga o meafaigaluega o le teuina o faʻamaumauga, virtualization ma faʻamaumauga.

Afai e sili atu lou faʻalagolago i le ZFS, o lona uiga, i le mataupu faavae, mo le faʻamatalaga faʻapitoa e mafai ona fesuiaʻi.

Ae ui i lea, e le amanaʻia ma le loto i ai e le tusitala le faʻataʻitaʻiga / RAID ma le toe faʻaogaina o foliga o loʻo iai ZFS, BRTFS ma LVM.

I le avea ai o se finauga faaopoopo, o le BTRFS o loʻo i ai le malosi e faʻaliliu ai tusitusiga faʻafuaseʻi i ni faʻasologa, lea e iai se aafiaga sili ona lelei i le saoasaoa o le faʻamaopoopoina o snapshots / backups i luga o le HDD.

Se'i toe su'esu'e masini uma:

#udevadm control --reload-rules && udevadm trigger

Sei o tatou tilotilo solo:

#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

Fa'atonu tisiki

NVMe SSD

Ae tatou te le faailogaina i latou i soo se auala. E tutusa uma lava, e le o vaʻaia e le matou BIOS nei taʻavale. O lea la, latou te alu atoa i le RAID polokalama. Matou te le faia foi ni vaega iina. Afai e te manaʻo e mulimuli i le "canon" poʻo le "autu", fai se tasi vaeluaga tele, pei o se HDD.

SATA HDD

E leai se mana'oga e fa'atupu se mea fa'apitoa iinei. Matou te faia se vaega se tasi mo mea uma. O le a matou faia se vaeluaga aua e vaʻaia e le BIOS nei tisiketi ma e ono taumafai foi e faʻamalo mai ia i latou. Matou te faʻapipiʻiina foi le GRUB i luga o nei tisiki mulimuli ane ina ia faʻafuaseʻi ona faia e le polokalama lenei mea.

#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

O le mea lea e manaia ai mea mo i tatou.

Muamua, o matou taʻavale e 2 TB le tele. O loʻo i totonu o le avanoa e talia mo MBR, o le mea lea o le a matou faʻaaogaina. Afai e manaʻomia, e mafai ona sui i le GPT. O tisiki GPT e iai se fa'aoga fetaui e mafai ai e le MBR-compatible system ona va'ai i vaega muamua e 4 pe afai o lo'o i totonu ole 2 terabytes muamua. O le mea autu o le vaeluaga o le seevae ma le bios_grub vaeluaga i luga o nei tisiki e tatau ona i ai i le amataga. Ole mea lea e mafai ai ona e fa'aulu mai le GPT Legacy/BIOS ta'avale.

Ae e le o le tatou tulaga lea.

O iinei o le a tatou faia ai ni vaega se lua. O le muamua o le a 1 GB le tele ma faʻaaogaina mo RAID 1 / boot.

O le lona lua o le a faʻaaogaina mo le RAID 6 ma o le a faʻaaogaina uma avanoa avanoa sei vagana ai se vaega itiiti e leʻi tuʻuina atu i le pito o le taʻavale.

O le a lenei vaega e le o faailogaina?E tusa ai ma faʻamatalaga i luga o le fesoʻotaʻiga, o loʻo i luga o le matou SATA SSDs se faʻaoga SLC faʻalauteleina e amata mai i le 6 i le 78 gigabytes. Matou te maua le 6 gigabytes "mo le leai o se totogi" ona o le eseesega i le va o le "gigabytes" ma le "gibibytes" i le pepa faʻamatalaga o le taavale. O le 72 gigabytes o totoe o loʻo tuʻuina mai avanoa e le faʻaaogaina.

O iinei e tatau ona maitauina o loʻo i ai se matou SLC cache, ma o le avanoa o loʻo nofoia i le 4 bit MLC mode. O lona uiga mo i tatou, mo ta'i 4 gigabytes o avanoa avanoa tatou te maua na'o le 1 gigabyte ole SLC cache.

Faatele le 72 gigabytes i le 4 ma maua le 288 gigabytes. Ole avanoa avanoa lea tatou te le fa'ailogaina ina ia mafai ai e ta'avale ona fa'aoga atoatoa le SLC cache.

O le mea lea, o le a tatou oʻo atu i le 312 gigabytes o le SLC cache mai le aofaʻi o taʻavale e ono. Mai taʻavale uma, 2 o le a faʻaaogaina i le RAID mo le toe faʻaaogaina.

O lenei aofaʻi o le cache o le a faʻatagaina ai i tatou e seasea i le olaga moni ona feagai ma se tulaga e le alu ai se tusi i le cache. O lenei mea e sili ona lelei le tauia mo le faʻanoanoa sili ona leaga o le QLC manatua - o le matua maualalo le saoasaoa tusitusi pe a tusia faʻamaumauga e aunoa ma le cache. Afai e le fetaui au avega i lenei mea, ona ou fautuaina lea e te mafaufau malosi pe o le a le umi e tumau ai lau SSD i lalo o sea avega, ma amanaʻia le TBW mai le pepa faʻamatalaga.

#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

Fausia Arrays

Muamua, e tatau ona tatou toe faaigoa le masini. E manaʻomia lenei mea ona o le igoa talimalo o se vaega o le igoa faʻasologa i se mea i totonu o mdadm ma aafia ai se mea i se mea. Ioe, o arrays e mafai ona toe faʻaigoaina mulimuli ane, ae o se laasaga e le manaʻomia.

#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

Aisea -faapea-mama...?Ina ia aloese mai le amataina o arrays. Mo le RAID laʻasaga 1 ma le 6 e aoga lenei. E mafai ona galue mea uma e aunoa ma le amataina pe afai o se laina fou. E le gata i lea, o le amataina o le SSD array i luga o le foafoaga o se faʻaumatia o punaoa TBW. Matou te faʻaaogaina TRIM/DISCARD pe a mafai i luga ole SSD faʻapipiʻi faʻapipiʻi e "amataina" i latou.

Mo SSD arrays, RAID 1 DISCARD o loʻo lagolagoina mai le pusa.

Mo SSD RAID 6 DISCARD arrays, e tatau ona e faʻaogaina i le kernel module parameters.

E tatau ona faia lenei mea pe afai o SSD uma o loʻo faʻaaogaina i laʻasaga 4/5/6 i totonu o lenei faiga o loʻo i ai le lagolago galue mo discard_zeroes_data. O nisi taimi e te sau ai i taʻavale ese e taʻu atu ai i le fatu o loʻo lagolagoina lenei galuega, ae o le mea moni e le o iai, pe o le galuega e le galue i taimi uma. I le taimi nei, o loʻo avanoa le lagolago i soo se mea, ae ui i lea, o loʻo i ai taʻavale tuai ma firmware ma mea sese. Mo lea mafua'aga, ua fa'aletonu le lagolago a DISCARD ona o le fa'aletonu mo RAID 6.

Faʻalogo, o le faʻatonuga o loʻo mulimuli mai o le a faʻaumatia uma faʻamatalaga i luga o le NVMe drive e ala i le "amataina" le laina ma le "zeros".

#blkdiscard /dev/md0

Afai e iai se mea e faaletonu, taumafai e faʻamaonia se laasaga.

#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

Aisea ua tele ai...?O le fa'ateleina o le pusi e iai sona aafiaga lelei i le saoasaoa o le faitau fa'afuase'i i poloka e o'o atu i le lapopo'a e aofia ai. E tupu lenei mea ona e mafai ona fa'amae'a atoa i se masini e tasi le fa'agaioiga talafeagai pe la'ititi. O le mea lea, o le IOPS mai masini uma ua aoteleina. E tusa ai ma fuainumera, 99% o le IO e le sili atu i le 512K.

RAID 6 IOPS i le tusitusi i taimi uma itiiti ifo pe tutusa ma le IOPS o le tasi taavale. Afai, e pei o se faitauga faʻafuaseʻi, IOPS e mafai ona tele taimi e sili atu nai lo le tasi taʻavale, ma o iinei o le poloka poloka e taua tele.
E le o vaʻaia e le tusitala le tulaga i le taumafai e faʻamalieina se parakalafa e leaga ile RAID 6 e ala i le mamanu ae sili atu le lelei ile RAID 6.
O le a matou totogia le leaga o le tusitusi faʻafuaseʻi o le RAID 6 faʻatasi ai ma se NVMe cache ma togafiti faʻapitoa.

Matou te leʻi faʻaogaina le DISCARD mo RAID 6. O lea matou te le "amataina" lenei faʻasologa mo le taimi nei. Matou te faia lenei mea mulimuli ane, pe a uma ona faʻapipiʻi le OS.

SATA HDD

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

LVM ile NVMe RAID

Mo le saoasaoa, matou te mananaʻo e tuʻu le faila faila i luga ole NVMe RAID 1 o le /dev/md0.
Ae ui i lea, o le a matou manaʻomia pea lenei faʻasologa vave mo isi manaʻoga, e pei o le swap, metadata ma le LVM-cache ma le LVM-thin metadata, o lea o le a matou fatuina ai se LVM VG i luga o lenei laina.

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

Sei o tatou faia se vaeluaga mo le faiga faila a'a.

#lvcreate -L 128G --name root root

Sei o tatou faia se vaeluaga mo le fesuiaiga e tusa ai ma le tele o le RAM.

#lvcreate -L 32G --name swap root

OS fa'apipi'i

I le aotelega, o loʻo ia i matou mea uma e manaʻomia e faʻapipiʻi ai le faiga.

Tatala le wizard faʻapipiʻi faiga mai le siosiomaga Ubuntu Live. Fa'apipi'i masani. Naʻo le tulaga o le filifilia o disks mo le faʻapipiʻiina, e tatau ona e faʻamaonia mea nei:

  • /dev/md1, - mount point / boot, FS - BTRFS
  • /dev/root/root (aka /dev/mapper/root-root), - mount point / (root), FS - BTRFS
  • /dev/root/swap (aka /dev/mapper/root-swap), - faʻaaoga e fai ma vaeluaga.
  • Faʻapipiʻi le bootloader ile /dev/sda

A e filifilia le BTRFS e fai ma faila faila, o le a otometi lava ona fatuina e le tagata faʻapipiʻi ni voluma BTRFS e lua e taʻua "@" mo / (aʻa), ma le "@home" mo / home.

Tatou amata le fa'apipi'i...

O le faʻapipiʻiina o le a faʻauʻu i se pusa faʻamatalaga faʻapitoa e faʻaalia ai se mea sese i le faʻapipiʻiina o le bootloader. Ae paga lea, o le a le mafai ona e alu ese mai lenei talanoaga e faʻaaoga ai auala masani ma faʻaauau le faʻapipiʻiina. Matou te o ese mai le polokalama ma toe ulufale i totonu, faʻaiʻu i luga o le Ubuntu Live desktop mama. Tatala le laina laina, ma toe fai:

#sudo bash

Fausia se siosiomaga chroot e faʻaauau ai le faʻapipiʻiina:

#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

Sei o tatou fetuutuunai le upega tafailagi ma le igoa talimalo ile chroot:

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

Tatou o atu i le siosiomaga chroot:

#chroot /mnt/chroot

Muamua, o le a matou tuʻuina atu afifi:

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

Se'i o tatou siaki ma fa'asa'o uma afifi na fa'apipi'i fa'aletonu ona o le le atoatoa o le fa'apipi'iina:

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

Afai e leai se mea, atonu e te manaʻomia le faʻasaʻo muamua /etc/apt/sources.list

Se'i o tatou fetu'una'i ta'iala mo le RAID 6 module ina ia mafai ai TRIM/DISCARD:

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

Se'i o tatou fa'avasega teisi a tatou fa'asologa:

#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

O le a le mea..?Ua matou faia se seti o tulafono udev o le a faia mea nei:

  • Seti le poloka poloka poloka mo RAID 2020 ia lava mo 6. O le tau faaletonu, e foliga mai, e leʻi suia talu mai le fausiaina o Linux, ma e leʻi lava mo se taimi umi.
  • Fa'asao se la'ititi ole IO mo le umi ole siaki/fa'amaopoopo. O le mea lea e puipuia ai au fa'asologa mai le pipii i se tulaga o le fa'amaopoopo fa'avavau i lalo o le uta.
  • Fa'atapula'a le maualuga o le IO i le taimi o siaki/fa'amaopoopo o fa'asologa. E mana'omia lenei mea ina ia le fa'afefeteina / siaki SSD RAIDs au ta'avale i se maʻa. E moni lava lenei mea mo NVMe. (Manatua e uiga i le radiator? Ou te le'i tausua.)
  • Fa'asa tisiki e taofi le fa'asolo o le spindle (HDD) e ala i le APM ma fa'atulaga le taimi e momoe ai mo fa'atonu tisiki i le 7 itula. E mafai ona e tape atoa le APM pe a mafai e au ta'avale ona fai (-B 255). Faatasi ai ma le tau faaletonu, o le a taofi le taʻavale pe a uma le lima sekone. Ona manaʻo lea o le OS e toe setiina le cache disk, o le a toe vili i luga tisiki, ma toe amata mea uma. O tisiketi e fa'atapula'a le aofa'i o ta'amilosaga ivi. O se ta'amilosaga fa'aletonu faigofie fa'apea e faigofie ona fa'aumatia au tisiki i ni nai tausaga. E le o faʻamaʻi uma e mafatia i lenei mea, ae o matou "laptop", faʻatasi ai ma tulaga faʻaletonu talafeagai, lea e foliga mai ai le RAID o se mini-MAID.
  • Fa'apipi'i le faitau i luma i tisiki (ta'amilo) 1 megabyte - lua poloka soso'o/poka RAID 6
  • Fa'agata le faitau i luma i luga o fa'asologa lava ia.

Tatou fa'asa'o /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

Aisea ua faapena ai..?O le a matou suʻeina le / boot partition e le UUID. E mafai ona suia le fa'aigoa fa'asologa.

O le a matou suʻeina vaega o loʻo totoe e igoa LVM i le /dev/mapper/vg-lv notation, aua latou fa'ailoaina vaeluaga fai si tulaga ese.

Matou te le faʻaogaina le UUID mo LVM ona O le UUID o voluma LVM ma latou ata e mafai ona tutusa.Mount /dev/mapper/root-root.. faalua?Ioe. E sa'o lava. Fa'aaliga ole BTRFS. O lenei faiga faila e mafai ona faʻapipiʻiina i ni nai taimi ma ni subvols eseese.

Ona o lenei lava foliga, ou te fautuaina e aua le faia ni ata LVM o voluma BTRFS malosi. Atonu e te maua se fa'ate'ia pe a e toe fa'afou.

Sei o tatou toe faʻafouina le mdadm config:

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

Sei o tatou fetuutuunai tulaga 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

O le a le mea..?Ua matou mafaia le faʻalauteleina otometi o vaituloto manifinifi LVM pe a oʻo i le 90% o le avanoa nofoia e le 5% o le voluma.

Ua matou fa'ateleina le numera maualuga o poloka fa'aoga mo le LVM cache.

Ua matou taofia LVM mai le su'eina o voluma LVM (PV) ile:

  • masini e iai le LVM cache (cdata)
  • masini faʻapipiʻi e faʻaaoga ai le LVM cache, faʻafefe le cache ( _corig). I lenei tulaga, o le masini faʻapipiʻi lava ia o le a suʻesuʻeina pea i le cache (naʻo ).
  • masini e iai LVM cache metadata (cmeta)
  • masini uma i le VG ma ata igoa. O iinei o le a matou maua ai ata tisiki o masini mataʻutia, ma matou te le manaʻo i le LVM i luga o le talimalo e faʻagaoioia voluma a le OS faʻafeiloaʻi.
  • masini uma i le VG ma le igoa faaleoleo. O iinei o le a tatou maua ai kopi faaleoleo o ata masini masini.
  • masini uma e fa'ai'u le igoa i le "gpv" (volo fa'aletino malo)

Ua matou fa'atagaina le lagolago a DISCARD pe a fa'asa'oloto avanoa avanoa ile LVM VG. Fa'aitete. O lenei mea o le a faʻaalu ai le taimi e tape ai LV i luga ole SSD. E faʻapitoa lenei mea ile SSD RAID 6. Ae ui i lea, e tusa ai ma le fuafuaga, o le a matou faʻaogaina le faʻaogaina o mea manifinifi, o lea e le faʻalavelaveina ai i matou.

Sei o tatou faafou le ata initramfs:

#update-initramfs -u -k all

Fa'apipi'i ma fa'atulaga le grub:

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

O fea tisiki e tatau ona e filifilia?O i latou uma o sd*. O le faiga e tatau ona mafai ona faʻamalo mai soʻo se taʻavale SATA poʻo SSD.

Aisea na latou faaopoopo ai os-prober..?Mo le soona tutoatasi ma lima taaalo.

E le aoga pe afai o se tasi o RAID o loʻo i se tulaga faʻaleagaina. E taumafai e suʻe le OS i luga o vaeluaga o loʻo faʻaogaina i masini masini e faʻaogaina i luga o lenei meafaigaluega.

Afai e te manaʻomia, e mafai ona e tuʻua, ae ia manatua mea uma o loʻo i luga. Ou te fautuaina le suʻeina o fua mo le faʻaumatia lima ulavavale i luga ole laiga.

Faatasi ai ma lenei mea ua matou maeʻa le faʻapipiʻiina muamua. Ua oʻo i le taimi e toe faʻafou ai i totonu ole OS fou faʻapipiʻi. Aua nei galo e aveese le bootable Live CD/USB.

#exit
#reboot

Filifili soʻo se SATA SSDs e fai ma masini faʻapipiʻi.

LVM ile SATA SSD

I le taimi nei, ua uma ona matou oso i totonu o le OS fou, faʻapipiʻi le fesoʻotaiga, apt, tatala le emulator terminal, ma tamoe:

#sudo bash

Tatou faaauau.

"Amataina" le laina mai le SATA SSD:

#blkdiscard /dev/md2

Afai e le aoga, ona taumafai lea:

#blkdiscard --step 65536 /dev/md2
Fausia LVM VG ile SATA SSD:

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

Aisea le isi VG..?O le mea moni, ua i ai se matou VG igoa aʻa. Aisea e le fa'aopoopo ai mea uma ile VG e tasi?

Afai e tele PV i totonu o se VG, o le VG e fa'agaoioia sa'o, e tatau ona iai uma PV (i luga ole laiga). O le tuusaunoaga o le LVM RAID, lea matou te le faʻaaogaina ma le loto i ai.

Matou te manaʻo moni lava afai e i ai se toilalo (faitau faʻamaumauga leiloa) i luga o soʻo se RAID 6 arrays, o le faiga faʻaogaina o le a taʻavale masani ma maua ai le avanoa e foia ai le faʻafitauli.

Ina ia faia lenei mea, i le tulaga muamua o le faʻaaogaina o le a tatou faʻamavaeina ituaiga taʻitasi o "faasalalauga" faaletino i se VG eseese.

Fa'asaienisi, 'ese'ese RAID arrays 'ese'ese "fa'atuatuaina domains". E le tatau ona e faia se isi mea masani masani o le toilalo mo i latou e ala i le faʻapipiʻiina i totonu o le tasi VG.

O le i ai o le LVM i le tulaga o le "meafaigaluega" o le a mafai ai ona tatou tipiina fasi vaega eseese RAID arrays e ala i le tuufaatasia i auala eseese. Mo se faʻataʻitaʻiga - tamoe i le taimi lava e tasi bcache + LVM manifinifi, bcache + BTRFS, LVM cache + LVM manifinifi, se lavelave ZFS configuration ma caches, po o so o se isi paluga seoli e taumafai e faatusatusa uma.

I le tulaga "meafaigaluega", matou te le faʻaaogaina se isi lava mea nai lo le lelei tuai "mafiafia" voluma LVM. O le tuusaunoaga i lenei tulafono atonu o le vaeluaga faaleoleo.

Ou te manatu i le taimi nei, e toʻatele le au faitau ua amata ona masalomia se mea e uiga i le pepe meataalo.

LVM ile SATA HDD

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

Toe VG fou..?Matou te manana'o moni lava afai e le manuia le fa'aputuga tisiki lea o le a matou fa'aogaina mo fa'amaumauga fa'amaumauga, o le a fa'aauau pea le galue masani a le matou faiga fa'aoga, a'o fa'aauau pea le avanoa i fa'amaumauga e le o fa'amaumauga e pei ona masani ai. O le mea lea, ina ia aloese mai faʻafitauli o le faʻaogaina o le VG, matou te fatuina se VG ese.

Fa'atulaga le LVM cache

Sei o tatou fatuina se LV i luga ole NVMe RAID 1 e faʻaaogaina e fai ma masini faʻapipiʻi.

#lvcreate -L 70871154688B --name cache root

Aisea ua itiiti ai...?O le mea moni o matou NVMe SSDs o loʻo i ai foi se SLC cache. 4 gigabytes o le "saoloto" ma le 18 gigabytes o le malosi ona o le avanoa avanoa o loʻo nofo i le 3-bit MLC. O le taimi lava e uma ai lenei cache, NVMe SSDs o le a le sili atu le vave nai lo le matou SATA SSD ma le faʻaoga. O le mea moni, mo lenei mafuaʻaga, e leai se uiga mo i tatou le faia o le vaeluaga o le LVM cache e sili atu le tele nai lo le faaluaina o le tele o le SLC cache o le NVMe drive. Mo le NVMe faʻaaogaina, e manatu le tusitala e talafeagai le faia o le 32-64 gigabytes o le cache.

Ole tele ole vaeluaga e mana'omia e fa'atulaga ai le 64 gigabytes ole cache, metadata cache, ma metadata backup.

E le gata i lea, ou te matauina a maeʻa le tapunia o le faiga eleelea, o le a faʻailogaina e le LVM le cache atoa e palapala ma o le a toe faʻaogaina. E le gata i lea, o le a toe faia lenei mea i taimi uma e faʻaaogaina ai le lvchange i luga o lenei masini seia toe faʻafouina le faiga. O le mea lea, ou te fautuaina vave le toe fatuina o le cache e faʻaaoga ai le tusitusiga talafeagai.

Sei o tatou fatuina se LV i luga ole SATA RAID 6 e faʻaaogaina e fai ma masini faʻapipiʻi.

#lvcreate -L 3298543271936B --name cache data

Aisea na o le tolu terabytes..?O lea, pe a manaʻomia, e mafai ona e faʻaogaina SATA SSD RAID 6 mo nisi manaʻoga. O le tele o le avanoa faʻapipiʻi e mafai ona faʻateleina ma le malosi, i luga o le lele, e aunoa ma le taofia o le faiga. Ina ia faia lenei mea, e tatau ona e taofi mo sina taimi ma toe faʻaogaina le cache, ae o le tulaga ese o le LVM-cache i luga, mo se faʻataʻitaʻiga, bcache e mafai ona faia i luga o le lele.

Se'i tatou faia se VG fou mo le fa'asaoina.

#pvcreate /dev/root/cache
#pvcreate /dev/data/cache
#vgcreate cache /dev/root/cache /dev/data/cache

Sei o tatou faia se LV i luga o le masini cache.

#lvcreate -L 3298539077632B --name cachedata cache /dev/data/cache

O iinei na matou ave ai loa le avanoa avanoa uma i luga o / dev / data / cache ina ia mafai ai ona faia uma isi vaega talafeagai i luga / dev / root / cache. Afai na e faia se mea i se nofoaga sese, e mafai ona e faʻaogaina e faʻaaoga ai le pvmove.

Se'i o tatou faia ma fa'aaga le cache:

#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

Aisea ua matua'i fa'apea ..?E ala i faʻataʻitaʻiga faʻapitoa, na mafai ai e le tusitala ona iloa o le taunuuga sili e maua pe afai o le tele o le poloka poloka LVM e fetaui ma le tele o le poloka manifinifi LVM. E le gata i lea, o le laʻititi o le lapopoa, o le sili atu lea o le faʻatulagaga e faʻatino i se faʻamaumauga faʻafuaseʻi.

64k ole lapo'a la'ititi la'ititi e fa'atagaina mo le LVM manifinifi.

Fa'aeteete e tusi i tua..!Ioe. O lenei ituaiga o cache e tolopoina ai le tusiaina o le synchronization i le masini natia. O lona uiga afai e leiloa le cache, e mafai ona e leiloa faʻamatalaga i luga o le masini faʻapipiʻi. Mulimuli ane, o le a taʻu atu e le tusitala ia te oe mea, faʻaopoopo i le NVMe RAID 1, e mafai ona ave e totogi ai lenei tulaga lamatia.

O lenei ituaiga cache na filifilia ma le loto i ai e totogi ai le leaga o le tusitusi faʻafuaseʻi o le RAID 6.

Sei o tatou siaki mea na tatou maua:

#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)

Na'o [cachedata_corig] e tatau ona tu i luga /dev/data/cache. Afai ei ai se mea e sese, ona faʻaaoga lea o le pvmove.

E mafai ona e tape le cache pe a manaʻomia i le tasi poloaiga:

#lvconvert -y --uncache cache/cachedata

E faia lea i luga ole laiga. LVM o le a na o le faʻaogaina o le cache i le disk, aveese, ma toe faʻaigoa cachedata_corig i tua cachedata.

Faʻatulagaina le LVM manifinifi

Se'i o tatou fa'atatauina le tele o avanoa tatou te mana'omia mo LVM manifini metadata:

#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"

Fa'ata'amilo i le 4 gigabytes: 4294967296B

Faatele i le lua ma faaopoopo le 4194304B mo LVM PV metadata: 8594128896B
Sei o tatou faia se vaeluaga eseese ile NVMe RAID 1 e tuʻu ai LVM manifini metadata ma a latou kopi faʻamaumauga i luga:

#lvcreate -L 8594128896B --name images root

Mo le a..?O iinei e ono tulaʻi mai ai le fesili: aisea e tuʻu ese ai le metadata manifinifi LVM pe afai o le a teuina pea i luga o le NVMe ma o le a galue vave.

E ui ina taua le saoasaoa iinei, e mamao mai le mafuaaga autu. O le mea o le cache o se tulaga o le toilalo. E i ai se mea e mafai ona tupu i ai, ma afai o le LVM manifini metadata o loʻo teuina, o le a mafua ai ona leiloa atoa mea uma. A aunoa ma metadata atoatoa, o le a toetoe lava a le mafai ona faʻapipiʻi voluma manifinifi.

E ala i le faʻanofoina o metadata i se isi mea e leʻi faʻapipiʻiina, ae vave, voluma, matou te faʻamautinoa le saogalemu o metadata pe a tupu le faʻaogaina o le cache poʻo le piʻopiʻo. I lenei tulaga, o mea leaga uma e mafua mai i le leiloa o le cache o le a faʻaogaina i totonu o voluma manifinifi, lea o le a faafaigofieina ai le toe faʻaleleia o le faʻatonuga o le tele. Faatasi ai ma se tulaga maualuga, o nei mea leaga o le a toe faʻaleleia e faʻaaoga ai ogalaau FS.

E le gata i lea, afai o se ata o se voluma manifinifi na ave muamua, ma a maeʻa ona faʻamaopoopoina atoa le cache ia le itiiti ifo ma le tasi, ona, ona o le mamanu totonu ole LVM manifinifi, o le a faʻamaonia le saʻo o le ata pe a leiloa le cache. .

Se'i o tatou faia se VG fou e nafa ma fa'ameamea manifinifi:

#pvcreate /dev/root/images
#pvcreate /dev/cache/cachedata
#vgcreate images /dev/root/images /dev/cache/cachedata

Tatou fai se vaitaele:

#lvcreate -L 274877906944B --poolmetadataspare y --poolmetadatasize 4294967296B --chunksize 64k -Z y -T images/thin-pool
Aisea -Z yI le faaopoopo atu i le mea moni o lenei faiga - e taofia ai faamatalaga mai le tasi masini komepiuta mai le tafe atu i se isi masini komepiuta pe a toe tufatufaina atu avanoa - zeroing e faʻaopoopoina faʻaoga e faʻateleina ai le saoasaoa o le tusitusi faʻafuaseʻi i poloka laʻititi nai lo le 64k. Soʻo se tusi e itiiti ifo i le 64k i se vaega e leʻi faʻavasegaina o le voluma manifinifi o le a avea ma 64K faʻaoga-tutusa i totonu o le cache. O lenei mea o le a faʻatagaina ai le taʻaloga e faʻatino atoa e ala i le faʻaoga, e ala i le faʻaogaina o le masini faʻaogaina.

Se'i o tatou si'i le LV i PV talafeagai:

#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

Sei o tatou siaki:

#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)

Sei o tatou faia se voluma manifinifi mo su'ega:

#lvcreate -V 64G --thin-pool thin-pool --name test images

O le a matou faʻapipiʻi afifi mo suʻega ma mataʻituina:

#apt-get install sysstat fio

O le auala lea e mafai ai ona e vaʻaia le amio a le matou faʻapipiʻi teuina i le taimi moni:

#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)'

O le auala lea e mafai ai ona matou suʻeina la matou faʻatulagaga:

#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

Fa'aeteete! Punaoa!O lenei code o le a faʻatautaia suʻega eseese e 36, taʻitasi taʻitasi mo le 4 sekone. O le afa o su'ega e mo le pueina. E mafai ona e pu'eina tele i luga ole NVMe ile 4 sekone. E oo atu ile 3 gigabytes ile sekone. O lea la, o su'ega tusitusi ta'itasi e mafai ona 'ai i le 216 gigabytes o SSD punaoa mai ia te oe.

Faitau ma tusitusi fefiloi?Ioe. E talafeagai le fa'agasolo ese'ese o su'ega faitau ma tusi. E le gata i lea, e talafeagai le faʻamautinoa o loʻo tuʻufaʻatasia uma le faʻaogaina ina ia le afaina ai le faitau i se tusitusiga na faia muamua.

O taunuuga o le a matua ese lava i le taimi o le faʻalauiloaina muamua ma mulimuli ane pe a faʻatumu le cache ma le leo manifinifi, ma faʻalagolago foi pe na mafai e le faiga ona faʻafetaui ia pusa na faʻatumu i le faʻalauiloaina mulimuli.

Faatasi ai ma isi mea, ou te fautuaina le fuaina o le saoasaoa i luga o se voluma manifinifi atoa lea na faatoa ave ai se ata. Na maua e le tusitala le avanoa e mataʻituina ai le faʻavavevaveina o tusitusiga faʻafuaseʻi i le maeʻa ai o le fatuina o le ata muamua, aemaise lava pe a le o atoatoa le cache. E tupu lenei mea ona o le kopi-i-tusi tusitusi semantics, alignment o le cache ma le manifinifi poloka poloka, ma le mea moni o se tusi faʻafuaseʻi i le RAID 6 liliu atu i se faitauga faʻafuaseʻi mai RAID 6 sosoo ai ma se tusi i le cache. I la matou faʻatulagaga, faitau faʻafuaseʻi mai le RAID 6 e oʻo atu i le 6 taimi (le numera o SATA SSD i le faʻasologa) vave nai lo le tusitusi. Aua poloka mo CoW o lo'o fa'avasega fa'asolosolo mai se vaita'ele manifinifi, ona fa'asolo lea o le pu'eina, mo le tele o vaega, e fa'asolosolo fo'i.

O nei mea uma e lua e mafai ona faʻaogaina mo lou manuia.

Fa'ato'a fa'apipi'i ata fa'atusa

Ina ia faʻaitiitia le lamatiaga o le leiloa o faʻamatalaga i le tulaga o le faʻaleagaina / leiloa o le cache, ua fuafua le tusitala e faʻalauiloa le faiga o le fesuiaʻiina o ata e faʻamautinoa ai lo latou faʻamaoni i lenei tulaga.

Muamua, talu ai o metadata voluma manifinifi o loʻo nofo i luga o se masini e leʻi faʻaogaina, o le metadata o le a tumau ma o le a mafai ona gau i totonu o poloka faʻamatalaga.

O le ta'amilosaga fa'ata'amilosaga o lo'o mulimuli mai e fa'amaonia ai le fa'amaoni o fa'amaumauga i totonu o fa'amaumauga i le tulaga o le leiloa o le cache:

  1. Mo voluma manifinifi ta'itasi ma le igoa <igoa>, fai se ata ma le igoa <name>.cached
  2. Se'i o tatou setiina le tapulaa o femalagaiga i se tau maualuga talafeagai: #lvchange --quiet --cachesettings "migration_threshold=16384" cache/cachedata
  3. I le matasele matou te siakiina le numera o poloka palapala i totonu o le cache: #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' seia tatou maua le zero. Afai e misi le zero mo se taimi umi, e mafai ona faia e ala i le suia le tumau o le cache i le writethrough mode. Ae ui i lea, i le amanaʻiaina o uiga saoasaoa o la matou SATA ma NVMe SSD arrays, faʻapea foʻi ma a latou punaoa TBW, o le a mafai ona e vave puʻeina le taimi e aunoa ma le suia o le faʻaogaina o le cache, pe o au meafaigaluega o le a faʻaumatia atoa lona punaoa i totonu. ni nai aso. Ona o le faʻatapulaʻaina o punaoa, o le faiga, i le mataupu faavae, e le mafai ona i lalo ole 100% tusitusi uta i taimi uma. O matou NVMe SSDs i lalo o le 100% tusitusi uta o le a faʻaumatia atoa le punaoa i totonu 3-4 aso. SATA SSDs e na'o le faaluaina le umi. O le mea lea, o le a tatou manatu o le tele o le uta e alu i le faitau, ma o loʻo i ai a tatou faʻalavelave pupuu o gaioiga sili ona maualuga faʻatasi ma se uta maualalo i le averesi mo le tusitusi.
  4. O le taimi lava na matou maua ai (pe faia) se zero, matou te toe faaigoa <name>.cached i <name>.committed. O le <name>.committed tuai ua tapeina.
  5. Ile filifiliga, afai o le cache e 100% tumu, e mafai ona toe faia e se tusitusiga, ma fa'amama ai. Faatasi ai ma le afa-gaogao cache, o le faiga e galue tele vave pe a tusitusi.
  6. Seti le tulaga o femalagaiga i le leai: #lvchange --quiet --cachesettings "migration_threshold=0" cache/cachedata O lenei mea o le a taofia mo sina taimi le cache mai le synchronizing i le autu autu.
  7. Matou te faʻatali seʻia oʻo i le tele o suiga e faʻaputu i totonu o le cache #lvs --rows --reportformat basic --quiet -ocache_dirty_blocks cache/cachedata | awk '{print $2}' pe o le a pe le taimi.
  8. Matou te toe fai atu.

Aisea e faigata ai le femalaga'iga...?O le mea e fa'apea i le fa'ata'ita'iga moni, o se fa'amaumauga "fa'afuase'i" e le'o fa'afuase'i lava. Afai na matou tusia se mea i se vaega o le 4 kilobytes le lapopoa, o loʻo i ai se avanoa maualuga i le isi lua minute o le a faia se faʻamaumauga i le tutusa poʻo se tasi o tuaoi (+- 32K) vaega.

E ala i le setiina o le femalagaiga i le zero, matou te tolopoina le tusitusi faʻatasi i luga o le SATA SSD ma faʻapipiʻi le tele o suiga i le tasi poloka 64K i totonu o le cache. O lenei mea e faʻasaoina lelei le punaoa o SATA SSD.

O fea le code..?O le mea e leaga ai, o le tusitala e manatu e le lava lona agavaa i le atinaʻeina o tusitusiga bash ona o ia o le 100% na aʻoaʻoina e ia lava ma faʻataʻitaʻi le atinaʻeina o le "google", o lea na ia talitonu ai o le tulafono leaga e sau mai ona lima e le tatau ona faʻaaogaina e se tasi. isi.

Ou te manatu o tagata tomai faapitoa i lenei matata o le a mafai ona tutoʻatasi faʻaalia uma manatu o loʻo faʻamatalaina i luga, pe a manaʻomia, ma, atonu, e oʻo lava i le matagofie o le mamanuina o se auaunaga systemd, e pei ona taumafai le tusitala e fai.

O sea faiga faigofie o le suiga o le snapshot o le a mafai ai e le gata ina ia i ai i taimi uma se ata e tasi e tuʻufaʻatasia atoatoa i le SATA SSD, ae o le a faʻatagaina foi i tatou, e faʻaaoga le thin_delta aoga, e suʻe ai poloka na suia ina ua uma ona faia, ma faʻapea ona faʻaleagaina i luga. o voluma autu, e matua faafaigofie ai le toe faaleleia .

TRIM/DISCARD i le libvirt/KVM

Aua o le a faʻaaogaina le teuina o faʻamatalaga mo le KVM o loʻo faʻagaioia le libvirt, ona lelei lea o le aʻoaʻoina oa tatou VM e le gata ina ave avanoa avanoa, ae faʻasaʻoloto foi mea e le o toe manaʻomia.

E faia lenei mea e ala i le faʻataʻitaʻiina o le TRIM/DISCARD lagolago i luga o masini komepiuta. Ina ia faia lenei mea, e tatau ona e suia le ituaiga pule i virtio-scsi ma faasaʻo le 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>

O ia DISCARDs mai OSes asiasi e sa'o le fa'agaioiina e le LVM, ma o poloka e fa'asa'oloto sa'o i totonu o le cache ma le vai manifinifi. I la matou tulaga, e tupu tele lenei mea i se faiga tuai, pe a tape le isi ata.

BTRFS Lagolago

Fa'aaoga tusitusiga ua saunia ma ogaoga fa'aeteete ma i lou lava tulaga lamatia. Na tusia e le tusitala lenei code lava ia ma faapitoa mo ia lava. Ou te mautinoa o le toʻatele o tagata faʻaoga Linux e iai meafaigaluega tutusa, ma e leai se manaʻoga e kopi a se isi tagata.

Tatou faia se voluma i luga o le masini faaleoleo:

#lvcreate -L 256G --name backup backup

Sei o tatou faʻatulagaina i le BTRFS:

#mkfs.btrfs /dev/backup/backup

Se'i o tatou faia ni pito mautu ma fa'apipi'i vaega a'a o le faiga faila:

#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

Se'i o tatou faia ni fa'amaumauga mo fa'amaumauga:

#mkdir /backup/btrfs/back/remote
#mkdir /backup/btrfs/back/remote/root
#mkdir /backup/btrfs/back/remote/boot

Sei o tatou faia se lisi mo tusitusiga faaleoleo:

#mkdir /root/btrfs-backup

Sei o tatou kopi le tusitusiga:

Tele fa'afefe bash code. Fa'aaoga i lou lava tulaga lamatia. Aua le tusia ni tusi ita i le tusitala...#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

O le a le mea e fai ..?O lo'o i ai se seti o fa'atonuga faigofie mo le fatuina o ata o le BTRFS ma kopiina i se isi FS e fa'aaoga ai le BTRFS lafo/maua.

Ole fa'alauiloa muamua e mafai ona umi, aua... I le amataga, o faʻamaumauga uma o le a kopiina. O isi fa'alauiloaga o le a vave tele, aua... E na'o suiga o le a kopiina.

O le isi tusitusiga o le a matou tuʻuina i le cron:

O nisi code bash#cat >/root/btrfs-backup/cron-daily.sh << EOF
#!/bin/bash
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

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

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

O le a le mea e fai..?Fausia ma fa'amaopoopo ata fa'aopoopo o voluma BTRFS o lo'o lisiina ile FS fa'apolopolo. A maeʻa lenei mea, e tape uma ata na faia i le 60 aso talu ai. A mae'a le fa'alauiloa, o ata fa'aonaponei o voluma o lo'o lisiina o le a fa'aalia i le /backup/btrfs/back/remote/ subdirectories.

Se'i o tatou tu'uina atu le aia tatau e fa'atino ai tulafono:

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

Sei o tatou siaki ma tuu i totonu o le 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 faaleoleo manifinifi

Tatou faia se vaitaele manifinifi i luga o le masini faaleoleo:

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

Tatou fa'apipi'i le ddrescue, aua... tusitusiga o le a faʻaogaina lenei meafaigaluega:

#apt-get install gddrescue

Sei o tatou faia se lisi mo tusitusiga:

#mkdir /root/lvm-thin-backup

Sei o tatou kopi tusitusiga:

E tele naua i totonu...#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

O le a le mea e fai...?O lo'o i ai se seti o fa'atonuga mo le fa'aogaina o ata manifinifi ma fa'afetaui le eseesega i le va o ata manifinifi se lua na maua mai le thin_delta i se isi poloka masini e fa'aaoga ai le ddrescue ma le blkdiscard.

O le isi tusitusiga o le a matou tuʻuina i le cron:

Si'i si'i si'i#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

O le a le mea e fai...?Fa'aoga le tusitusiga muamua e fai ma fa'amaopoopo fa'amaumauga o voluma manifinifi o lo'o lisiina. O le tusitusiga o le a tu'u ai ata e le o toaga o voluma o lo'o lisiina, lea e mana'omia e siaki ai suiga talu mai le fa'atasiga mulimuli.

O lenei tusitusiga e tatau ona faʻasaʻo, faʻamaonia le lisi o voluma manifinifi e tatau ona fai ai kopi faʻasaʻo. O igoa ua tu'uina atu e mo na'o fa'ata'ita'iga. Afai e te manaʻo ai, e mafai ona e tusia se tusitusiga e faʻafetaui uma voluma.

Sei o tatou tuuina atu aia tatau:

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

Sei o tatou siaki ma tuu i totonu o le 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

Ole fa'alauiloa muamua ole a umi, aua... voluma manifinifi o le a atoatoa synchronized e ala i le kopiina avanoa uma faaaogaina. Fa'afetai i le LVM thin metadata, matou te iloa po'o fea poloka o lo'o fa'aaogaina, o lea e na'o le fa'aaogaina o poloka manifinifi o le a kopiina.

O fa'asologa mulimuli ane o le a kopi fa'aopoopo fa'amaumauga fa'afetai i le suiga o le su'ega e ala i le LVM thin metadata.

Sei o tatou vaai po o le a le mea na tupu:

#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

O le a le mea e fai ma pepe meataalo?

E foliga mai, ona o le LVM LV voluma talafeagai e mafai ona LVM PV voluma faaletino mo isi VGs. LVM e mafai ona toe faʻafoʻi, pei o pepe meataalo. O lenei mea e tuʻuina atu ai le LVM sili ona fetuutuunai.

SALA

I le isi tusiga, o le a matou taumafai e faʻaoga le tele o faiga faʻapipiʻi feaveaʻi / KVM e fai ma faʻavae mo le fatuina o se faʻasalalauga faʻasalalau / vm faʻatasi ma le faʻaogaina i luga o le tele o konetineta e faʻaaoga ai komepiuta fale, le Initaneti ile fale ma fesoʻotaʻiga P2P.

puna: www.habr.com

Faaopoopo i ai se faamatalaga