RAID 10 ni nini na kwa nini VPS hutumia NVMe?
Jifunze jinsi RAID 10 inavyolinda data yako kwenye VPS. Tunafafanua uwezo wa RAID 1, 5, 6 na 10, gharama za ukarabati, jinsi ya kusoma /proc/mdstat na kwa nini RAID si chelezo.
RAID 10 ni nini, na kwa nini watoa huduma wa VPS huitumia
RAID 10 ni mpangilio wa hifadhi ambao watoa huduma wengi wa VPS hutumia chini ya diski za NVMe (non-volatile memory express) zilizowekwa kwenye mazingira ya virtual. Inanakili kila diski kwenye diski nyingine (mirroring), kisha inasambaza data kwenye jozi hizo zilizokopiwa (striping). Diski moja inaweza kufa bila mfumo kusimama, na ukarabati wake ni kunakili data moja kwa moja kutoka kwa diski iliyobaki badala ya kufanya hesabu upya inayohitaji kusoma kila diski nyingine kwenye seti hiyo.
RAID inamaanisha redundant array of independent disks. Ina kazi moja: kuifanya mashine iendelee kutoa huduma wakati diski imekufa au inabadilishwa. Kazi hiyo ni upatikanaji (availability), na upatikanaji si usalama wa data.
RAID inanakili uandishi wako. rm -rf /srv ni kitendo cha kuandika. Nusu zote mbili za mirror hufuta saraka (directory) katika milisekunde ileile, na mfumo wa RAID bado utaripoti kuwa uko katika hali nzuri baada ya hapo.
Hifadhi sentensi hiyo. Sehemu iliyobaki ya ukurasa huu inaelezea kile ambacho kila ngazi ya RAID inaweza kuhimili na gharama yake katika kila uandishi. Sehemu za mwisho zina amri za kusoma hali ya array kwenye mashine unayomiliki, na aina ya hitilafu ambayo RAID haijawahi kuizuia.
Viwango ambavyo mnunuzi wa hosting hukutana navyo: 1, 5, 6 na 10
Ukurasa wa mpango hutaja namba na kuishia hapo. Namba hiyo hujibu maswali mawili: ni diski ngapi zinaweza kufa, na kila uandishi (write) unagharimu nini.
RAID 1 ni kioo (mirror). Diski mbili huhifadhi block zinazofanana. Kila uandishi huenda kwenye zote mbili. Diski yoyote inaweza kutoa data ya kusoma (read). Diski moja inaweza kufeli bila kupoteza data, na nusu ya uwezo wa diski (raw capacity) ndiyo inayoweza kutumika. Hakuna parity ya kuhesabu, kwa hivyo njia ya uandishi ni fupi.
RAID 5 ni striping yenye block moja ya parity kwa kila stripe. Ukiwa na diski n, unapata uwezo wa diski n-1, na array hustahimili kufeli kwa diski moja tu. Parity haikai kwenye diski moja maalum. Inazunguka kwenye diski zote, kwa hivyo kila diski hubeba data na parity.
RAID 6 huongeza block ya pili ya parity, iliyo huru, kwa kila stripe, kwa kawaida inayoitwa P na Q. Hustahimili diski mbili kufeli kwa wakati mmoja. Hilo ni muhimu zaidi kuliko inavyosikika, kwa sababu kufeli kwa pili mara nyingi hutokea wakati wa ukarabati wa kufeli kwa kwanza.
RAID 10 ni stripe ya vioo. Diski huwekwa kwenye vioo kwa jozi, na data husambazwa kwenye jozi hizo. Uwezo unaoweza kutumika ni nusu ya jumla ya diski, sawa na RAID 1, pamoja na uwezo wa kufanya kazi kwa sambamba (parallelism) wa striping.
Utaona pia imeandikwa RAID 1+0, ambayo ndiyo maelezo ya kweli: kioo kwanza, kisha stripe kwenye vioo hivyo. RAID 0+1 ni mpangilio mwingine, stripe kwanza kisha kioo kwenye zile stripe mbili. Hii ni mbaya zaidi, kwa sababu diski moja ikifeli, stripe nzima huacha kufanya kazi na ukarabati hulazimika kunakili upande mwingine mzima.
Linux ni kesi maalum inayostahili kujulikana. raid10 ya kernel ni mfumo mmoja badala ya tabaka mbili zilizopangwa, kwa hivyo huendesha kwenye idadi isiyo ya kawaida ya diski na ina miundo (near, far, offset) ambayo usanidi wa ndani (nested setup) hauwezi kuonyesha. Ndiyo maana mstari wa hali (status line) kwenye mashine ya Linux husema 2 near-copies badala ya kutaja array mbili.
The data behind this chart
[
{
"label": "RAID 1 (four mirrored pairs)",
"usable_tb": 4,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 4
},
{
"label": "RAID 5",
"usable_tb": 7,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 1
},
{
"label": "RAID 6",
"usable_tb": 6,
"worst_case_drives_lost": 2,
"best_case_drives_lost": 2
},
{
"label": "RAID 10",
"usable_tb": 4,
"worst_case_drives_lost": 1,
"best_case_drives_lost": 4
}
]Diski nane za 1 TB hutoa 7 TB ya nafasi inayoweza kutumika chini ya RAID 5 na 4 TB chini ya RAID 10. Pengo hilo ni pesa halisi, na ndiyo sababu parity huendelea kupendekezwa. RAID 6 hustahimili 2 kufeli kwa muundo wowote ule. RAID 10 huhakikisha 1 pekee, kwa sababu kufeli kwa pili kwa hatari ni kile kinachotokea kwenye mwenza wa diski iliyokwisha kufa. Hustahimili hadi 4 wakati hakuna kufeli viwili vinavyoshiriki jozi moja, jambo ambalo ni bahati badala ya sifa ya usanifu.
Gharama ya kila ngazi kwa kila uandishi
Uandishi kwenye mirror ni uandishi mara mbili, unaotumwa kwa wakati mmoja kwa wanachama wote wawili. Uandishi kwenye parity stripe unahitaji kazi zaidi, kwa sababu parity block ya stripe hiyo inakuwa si sahihi na lazima ihesabiwe upya.
Kidhibiti (controller) hakiwezi kuhesabu parity upya kutoka kwa block mpya pekee. Kinahitaji block ya data ya zamani na block ya parity ya zamani kwanza. Kwa hivyo, uandishi mmoja mdogo wa nasibu (random write) kwenye RAID 5 unakuwa read, read, write, write. RAID 6 ina syndrome ya pili ya kudumisha, kwa hivyo uandishi uleule unakuwa read, read, read, write, write, write.
The data behind this chart
[
{
"label": "RAID 1 (2 drives)",
"write_ops_per_host_write": 2,
"drives_read_to_rebuild": 1
},
{
"label": "RAID 5 (8 drives)",
"write_ops_per_host_write": 4,
"drives_read_to_rebuild": 7
},
{
"label": "RAID 6 (8 drives)",
"write_ops_per_host_write": 6,
"drives_read_to_rebuild": 7
},
{
"label": "RAID 10 (8 drives)",
"write_ops_per_host_write": 2,
"drives_read_to_rebuild": 1
}
]Uandishi mdogo wa nasibu unagharimu 6 operesheni za kifaa kwenye RAID 6 na 2 kwenye RAID 10. Hesabu hizi hupunguza ukubwa wa tofauti ya latency. Uandishi wa mirror mbili hutoka kwa sambamba, kwa hivyo mgeni (guest) husubiri ule wa polepole zaidi kati ya miwili hiyo. Njia ya parity ina read ambayo lazima ikamilike kabla ya parity mpya kuweza kuhesabiwa, kwa hivyo mgeni husubiri read na kisha write, moja baada ya nyingine. Kwenye host yenye shughuli nyingi, read hiyo hupangwa nyuma ya I/O ya kila mtu mwingine.
Kuna ubaguzi muhimu. Uandishi mkubwa wa kutosha kujaza stripe nzima hauhitaji data ya zamani, kwa sababu kila block kwenye stripe inabadilishwa. Parity huhesabiwa kutoka kwa kile kilichopo tayari kwenye kumbukumbu, na gharama hupungua hadi uandishi mmoja wa ziada. Hii ndiyo sababu RAID 5 inaonekana sawa katika benchmark ya mfululizo (sequential) na hufanya kazi vibaya chini ya mzigo mchanganyiko wa uandishi mdogo kutoka kwa wapangaji wengi. Jaribu muundo unaouendesha kihalisi: kupima disk ya VPS ipasavyo inamaanisha I/O ya nasibu katika queue depth ya kweli, si dd moja kubwa.
Kwa nini ujenzi upya ni sehemu hatari
Ujenzi upya wa parity lazima ujenge upya diski iliyopotea kwa kutumia kila kitu kingine, kwa hivyo inasoma 7 diski zilizosalia kuanzia block ya kwanza hadi ya mwisho. Ujenzi upya wa RAID 10 unasoma 1: mshirika wa kioo (mirror partner) wa diski iliyokufa, na hakuna kingine.
Gharama mbili hutokana na hilo. Ya kwanza ni muda, kwa sababu ujenzi upya unadhibitiwa na diski iliyosalia inayofanya kazi polepole zaidi na hesabu za parity juu yake. Ya pili ni mzigo. Kila diski katika seti ya parity inakuwa na shughuli nyingi kwa muda wote huo, kwa hivyo kila mgeni (guest) kwenye node hiyo huona latency ya juu hadi ujenzi ukamilike. Kwenye RAID 10, jozi moja tu inakuwa na shughuli nyingi na jozi nyingine hufanya kazi kwa kasi yao ya kawaida.
Kuna hatari ya usahihi katika muda huo huo. RAID 5 array yenye diski moja iliyokufa haina redundancy iliyobaki, kwa hivyo sekta isiyoweza kusomeka popote kwenye diski iliyosalia sasa haiwezi kurejeshwa. Ujenzi upya ndio operesheni pekee inayosoma kila sekta, ikiwa ni pamoja na zile ambazo hakuna mtu aliyegusa kwa mwaka mzima. Takwimu za datasheet zilizochapishwa huweka diski ngumu ya mtumiaji karibu na hitilafu moja ya kusoma isiyoweza kurejeshwa kwa kila 10^14 bits zilizosomwa, na diski ya enterprise NVMe kwa moja kwa kila 10^17 au bora zaidi. Hizo ni vipimo vya wauzaji badala ya vipimo halisi, lakini uwiano huo unaelezea kwa nini onyo la zamani kwamba ujenzi upya wa RAID 5 utafeli liliandikwa kuhusu diski kubwa zinazozunguka, na kwa nini ni dhaifu zaidi kwenye NVMe. Hoja ya mzigo inatumika kwenye medium yoyote.
Tafuta hitilafu zilizojificha kabla ya ujenzi upya kufanya hivyo, kwa kufanya scrubbing. Debian na Ubuntu husafirisha scrub ya mara kwa mara kwa ajili ya md arrays, na utaratibu hutofautiana kati ya releases, kwa hivyo angalia ni ipi unayo kisha uanzishe mchakato kwa mkono.
systemctl list-timers --all | grep -i mdcheck
ls -l /etc/cron.d/mdadm
echo check | sudo tee /sys/block/md0/md/sync_action
cat /sys/block/md0/md/mismatch_cntsync_action inarudi kwenye idle wakati mchakato unapomalizika, na mismatch_cnt inapaswa kusoma 0. Nambari iliyo juu ya sifuri kwenye mirror inamaanisha nusu mbili hazikubaliani na kernel haiwezi kusema ni ipi iliyo sahihi, kwa sababu hakuna nakala inayobeba checksum. Baadhi ya kutokubaliana ni madhara, na swap partitions ndizo chanzo cha kawaida: kernel inaweza kuandika ukurasa unaobadilika chini yake. Hesabu inayoongezeka kwenye data array ni ishara ya diski inayopaswa kubadilishwa.
Kwa nini watoa huduma wa VPS husanifisha RAID 10 kwa ajili ya NVMe
Nodi ya hypervisor haiendeshi mzigo mmoja wa kazi. Inaendesha wageni kadhaa wasiohusiana, na I/O yao hufika ikiwa imechanganyikana kama mtiririko wa uandishi mdogo bila ukaribu wowote kati yao. Huo ndio muundo kamili ambapo mzunguko wa parity read-modify-write hugharimu zaidi, na ndio muundo ambao nodi iliyoshirikiwa inao siku nzima.
Ongeza tabia ya ujenzi upya (rebuild) na chaguo hili hujifanya lenyewe. Diski iliyofeli kwenye nodi ya parity hupunguza kasi ya kila mgeni kwenye seva kwa saa nyingi. Diski iliyofeli kwenye nodi ya RAID 10 hupunguza kasi ya jozi moja tu, na nakala huendeshwa kwa mfululizo kwa kasi ya diski. Watoa huduma wanauza latency isiyopanda ghafla, kwa hivyo wananunua hilo kwa uwezo: nusu ya NVMe ghafi huenda kwenye kioo (mirror).
Ukubwa wa diski husukuma njia hiyo hiyo. Diski zinapozidi kuwa kubwa, muda wa ujenzi upya huwa mrefu zaidi, na kwenye parity, muda huo ndio kila kitu huwa polepole na hakuna kinacholindwa. Hiyo ndiyo sababu ile ile ya utekelezaji wa ZFS kwa ajili ya virtualization kutumia mabwawa ya mirrored vdevs badala ya raidz pana: resilver ya kioo hunakili tu vitalu vinavyotumika, kwenye jozi moja.
Hakuna kati ya haya yanayofanya RAID 10 kuwa sahihi kila mahali. Lengo la chelezo (backup) huandikwa katika mfululizo mrefu na kusomwa mara chache, kwa hivyo RAID 6 ni dili bora hapo. Inastahimili kufeli mara mbili na kurejesha sehemu kubwa ya uwezo. Mzigo wa kazi ndio huamua, si namba. Kwa mpango unaochagua leo, kati (medium) kwa kawaida ni muhimu zaidi kuliko mpangilio ulio juu yake, na kuruka kutoka SATA SSD kwenda NVMe ni kubwa kuliko tofauti yoyote ya RAID kwenye yoyote kati yao.
Jinsi ya kusoma /proc/mdstat
Tekeleza amri hizi kwenye mashine ambapo unamiliki array: seva iliyojitolea, kompyuta ya nyumbani, au VPS yenye volumes mbili ulizounganisha mwenyewe. Soma matokeo yako mwenyewe. Vizuizi vilivyo hapa chini ni mifano, iliyoandikwa ili uweze kulinganisha na umbo la kile unachopata.
cat /proc/mdstat
sudo mdadm --detail /dev/md0
lsblk -o NAME,SIZE,TYPE,MOUNTPOINTSRAID 10 yenye diski nne iliyo katika hali nzuri hutoa matokeo yanayokaribia hivi.
Personalities : [raid1] [raid10]
md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2] nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/4] [UUUU]
bitmap: 0/30 pages [0KB], 65536KB chunk
unused devices: <none>Kila sehemu ya matokeo hayo ina taarifa.
Personalitieshuorodhesha moduli za md ambazo kernel inayofanya kazi imepakia.raid10inayoonekana hapo inamaanisha kuwa msimbo unapatikana, na si kingine.md0 : active raid10ni kifaa cha array, hali yake, na kiwango chake.- Majina yanayofuata baada ya hapo ni wanachama. Namba iliyo kwenye mabano ya mraba ni index ya kifaa katika metadata ya array, si nafasi yake kwenye mstari na si mara zote ni slot yake.
- Baada ya kubadilisha diski, mwanachama mpya kwa kawaida huweka index ya juu kuliko slot inayojazwa, kwa hivyo
nvme4n1p3[4]inaweza kuwa kwenye slot 2.mdadm --detailhuchapisha slot halisi kwenye safu yake yaRaidDevice, kwa hivyo itumie wakati tofauti hiyo ni muhimu. (F)baada ya mwanachama inamaanisha kuwa ina hitilafu.(S)inamaanisha spare: ipo, haifanyi kazi, inasubiri kitu kiharibike.3906764800 blocks super 1.2ni ukubwa unaoweza kutumika katika vizuizi vya 1 KiB, kisha umbizo la metadata.512K chunks 2 near-copiesni ukubwa wa stripe chunk na mpangilio wa RAID 10, ambao hapa huweka nakala mbili za kila kizuizi karibu na nyingine.[4/4]ni idadi ya wanachama ambao array inatarajia, kisha idadi iliyosawazishwa kwa sasa.[UUUU]ni herufi moja kwa kila slot, kwa mpangilio wa slot.Uni slot inayofanya kazi na iliyosawazishwa._ni slot ambayo hakuna kitu kinachofanya kazi ndani yake.bitmap:ni write intent bitmap. Inarekodi maeneo yaliyokuwa yakiandikiwa, ili mwanachama anayepotea na kurudi asawazishe maeneo hayo badala ya diski nzima.
Maana ya [4/3] na [UU_U] wakati kitu kimeharibika
Array iliyoharibika inaonekana hivi.
md0 : active raid10 nvme3n1p3[3] nvme2n1p3[2](F) nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]Soma mabano hayo mawili pamoja. [4/3] inasema moja kati ya slot nne haichangii. [UU_U] inasema ni ipi, kwa sababu underscore ni herufi ya tatu na slot zimepewa namba kuanzia sifuri, kwa hivyo slot 2 imeshuka. Bendera ya (F) hutaja kifaa hicho tu wakati diski iliyoharibika bado imeunganishwa. Iondoe kwenye mashine na jina hilo litatoweka kwenye mstari, huku underscore ikibaki.
Array inaendelea kutoa huduma wakati wote huu, na kwenye RAID 10 mara nyingi hufanya kazi kwa kasi kamili, ndiyo maana hakuna anayegundua kwa kuhisi. Lazima kitu kikuambie.
grep -i mailaddr /etc/mdadm/mdadm.conf
sudo mdadm --monitor --scan --oneshot --test
systemctl list-units --all | grep -i mdKifurushi cha mdadm husakinisha monitor daemon inayosoma MAILADDR kutoka /etc/mdadm/mdadm.conf, na jina la unit limebadilika kati ya matoleo, kwa hivyo ilipate kwa amri ya mwisho badala ya kukisia. Utekelezaji wa --test hutuma ujumbe mmoja kwa kila array mara moja. Kikasha kisicho na kitu baada ya hapo inamaanisha njia ya barua imevunjika, kwa hivyo ujumbe unaoujali ungekuwa umepotea kwa njia hiyo hiyo.
Wakati uingizwaji unapojijenga upya, mstari wa maendeleo huonekana chini ya array.
md0 : active raid10 nvme4n1p3[4] nvme3n1p3[3] nvme1n1p3[1] nvme0n1p3[0]
3906764800 blocks super 1.2 512K chunks 2 near-copies [4/3] [UU_U]
[==>..................] recovery = 12.4% (242012928/1953382400) finish=63.1min speed=452000K/secrecovery ni ujenzi upya kwenye diski mbadala. resync ni hatua ya kwanza ya uthibitisho wa uthabiti kwenye array iliyoundwa hivi karibuni. check ni scrub uliyoiwasha hapo juu. Jozi iliyo kwenye mabano ni maendeleo katika vizuizi vya 1 KiB dhidi ya jumla ya kila kifaa, na finish ni makadirio ya kernel kwa kasi ya sasa. Kasi hiyo imewekewa ukomo na /proc/sys/dev/raid/speed_limit_min na speed_limit_max, na vikomo hivyo vipo ili ujenzi upya usinyime rasilimali za I/O za uzalishaji.
mdadm --detail kamili wakati wa ujenzi upya
/dev/md0:
Version : 1.2
Creation Time : Tue Mar 10 09:14:22 2026
Raid Level : raid10
Array Size : 3906764800 (3.64 TiB 4.00 TB)
Used Dev Size : 1953382400 (1.82 TiB 2.00 TB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Wed Aug 5 11:02:41 2026
State : clean, degraded, recovering
Active Devices : 3
Working Devices : 4
Failed Devices : 0
Spare Devices : 1
Layout : near=2
Chunk Size : 512K
Rebuild Status : 12% complete
Name : storage:0
Events : 4184
Number Major Minor RaidDevice State
0 259 3 0 active sync set-A /dev/nvme0n1p3
1 259 7 1 active sync set-B /dev/nvme1n1p3
4 259 11 2 spare rebuilding /dev/nvme4n1p3
3 259 15 3 active sync set-B /dev/nvme3n1p3Safu ya Number ni index ya metadata iliyochapishwa kwenye mabano katika /proc/mdstat. Safu ya RaidDevice ni slot, ambayo ni nafasi katika mfuatano wa [UU_U]. Zinatafautiana hapa kwa sababu kifaa 4 kilichukua nafasi ya diski iliyoshikilia slot 2. set-A na set-B hutaja nusu mbili za kila mirror, kwa hivyo mwanachama wa set-A na mwanachama wa set-B katika jozi moja inayoshikilia data sawa ni kitu ambacho lazima usikipoteze pamoja.
Kubadilisha diski kwenye array unayomiliki ni amri nne, na ya mwisho ni ukaguzi.
sudo mdadm --manage /dev/md0 --fail /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --remove /dev/nvme2n1p3
sudo mdadm --manage /dev/md0 --add /dev/nvme4n1p3
cat /proc/mdstatMstari wa urejeshaji unapaswa kuonekana ndani ya sekunde moja au mbili. Partition mbadala lazima iwe angalau kubwa kama Used Dev Size kutoka mdadm --detail, na partition ndogo hata kidogo hukataliwa na ujumbe wa aina ya not large enough to join array. Gawanya diski mpya ili ilingane na ya zamani kabla ya kuiongeza.
Mambo unayoweza na usiyoweza kuona ukiwa ndani ya VPS
Wageni wengi hawawezi kuona RAID ya mwenyeji (host), na hilo limepangwa kimakusudi. Hypervisor hukupa diski moja ya mtandaoni. Ikiwa diski hiyo imetengwa kutoka kwenye kundi la RAID 10 la diski za NVMe au imekaa kwenye diski moja, hiyo ni sifa ya mwenyeji, na haionekani ndani ya mgeni wako.
systemd-detect-virt
lsblk -d -o NAME,SIZE,ROTA,MODEL
cat /proc/mdstatsystemd-detect-virt huchapisha kvm kwenye mgeni wa KVM, aina ya container kama lxc kwenye container, na none kwenye bare metal. Kwenye mgeni wa KVM kwa kawaida huona vda au sda moja tu katika lsblk, na hakuna arrays katika /proc/mdstat, kwa sababu hakuna zozote ndani ya mgeni.
Kwenye VPS inayotegemea container, usomaji huo hauwezi kuaminika. Container hushiriki kernel ya mwenyeji na sehemu za /proc hazijawekewa namespacing, kwa hivyo unachokisoma hapo kinaweza kuelezea mwenyeji badala ya sehemu yako. Usichukulie chochote hapo kama ukweli kuhusu hifadhi yako. Uliza mtoa huduma kuhusu mpangilio huo, na upate jibu kwa maandishi ikiwa ni muhimu kwako.
Unachoweza kukagua ukiwa ndani ni tabia ya diski uliyopewa. Kukagua ikiwa diski yako ya VPS ni NVMe kweli inashughulikia amri zinazoripoti kitu cha kweli, na kile ambacho VPS ya SSD inajumuisha kihalisi inashughulikia kile ambacho lebo kwenye ukurasa wa mpango inadai.
Je, unapaswa kutumia RAID ndani ya VPS yako?
Kwa kawaida hapana, na sababu ni kikoa cha hitilafu (failure domains). Ukipachika diski mbili kwenye VPS moja na kuzifanya ziwe kioo (mirror) kwa kutumia mdadm, diski zote mbili zinaweza kuwa kwenye safu moja ya vifaa (physical array), kwenye nodi moja, na nyuma ya usambazaji wa umeme mmoja. Utaongeza gharama ya kila uandishi mara mbili kwa ajili ya redundancy ambayo tayari ulikuwa nayo, na bado utapoteza nakala zote mbili pindi hitilafu moja muhimu itakapotokea.
Inafaa kufanya hivyo pale mtoa huduma anapothibitisha kuwa diski hizo zipo kwenye vikoa tofauti vya hitilafu, au unapokuwa kwenye seva iliyojitolea (dedicated server) yenye diski unazoweza kuzielekeza. Vinginevyo, juhudi zako zitakuwa na tija zaidi kwa kutengeneza nakala zinazotoka nje ya mashine hiyo.
Mambo ambayo RAID haikukinga nayo
RAID inashughulikia tukio moja pekee: diski kuacha kufanya kazi ipasavyo. Kila kitu kilicho hapa chini ni uandishi halali, kwa hivyo array inautekeleza kwenye kila nakala na kujiripoti kuwa iko salama.
- Kufuta.
rm -rfkwenye saraka isiyo sahihi, au hati ya deploy yenye variable ambayo haijawekwa kwenye path. Array huona uandishi halali na kuufanya mara mbili. - Ransomware. Usimbaji fiche ni uandishi. Array iliyo salama huhifadhi toleo lililosimbwa kwenye pande zote mbili za mirror.
- Programu iliyoharibika. Hitilafu inayoandika data taka kwenye database yako huandika data hiyo hiyo taka kwenye diski ya ziada.
- Node nzima. Host inayofeli, au akaunti iliyosimamishwa kimakosa. Array inaweza kuwa katika hali kamilifu na wakati huo huo isiweze kufikiwa.
- Wewe mwenyewe, wiki moja baadaye. Faili uliyofuta siku ya Jumatatu imepotea kutoka kila diski siku ya Jumatatu. Nakala iliyochukuliwa kabla ya hapo ndiyo pekee inayoweza kuirejesha.
Snapshots kwenye hifadhi hiyo hiyo si suluhisho pia. Husaidia dhidi ya kufutwa, na hufa pamoja na array inayozihifadhi. Sifa inayofanya backup kuwa backup ni kwamba iko mahali pengine. Backup zilizosimbwa nje ya seva kwa kutumia restic ni nusu nyingine ya ukurasa huu: array hukusaidia kuendelea kutoa huduma kupitia diski iliyokufa, na restic hurejesha data yako wakati uharibifu ulikuwa ni uandishi ambao array iliridhia kuufanya.
FAQ
Does RAID 10 mean I do not need backups?
No. RAID 10 protects against a drive that stops working. It applies every valid write to both halves of a mirror, so a deletion or a ransomware run reaches the redundant drive in the same instant. The array reports itself clean afterwards, because from its point of view nothing failed. You still need copies that live off the machine, and you still need to restore one occasionally to prove they work.
Why do VPS providers choose RAID 10 over RAID 5 or RAID 6?
Two reasons, both about small random writes. A parity write needs the old data and the old parity read back before the new parity can be computed, so a small write costs 4 operations on RAID 5 and 6 on RAID 6, against 2 on a mirror. A parity rebuild then reads every surviving drive from end to end, which slows every guest on the node for hours, while a RAID 10 rebuild copies one drive to one drive and leaves the other pairs alone. Providers pay for that with capacity: half the raw NVMe.
What does [U_] or [UU_U] mean in /proc/mdstat?
Each character is one slot in the array, in slot order, with one character per slot. U means that slot holds a member which is up and in sync. _ means the slot has nothing working in it. [U_] on a two drive mirror means the second slot is down and there is no redundancy left. Read it together with the pair in front of it, where [4/3] says the array expects four members and has three. The slot order matches the RaidDevice column of mdadm --detail, not the order the device names appear on the line.
How many drives can a RAID 10 array lose?
One, in any pattern. Past that it depends where the failures land. Each mirror pair can lose one of its two members, so an eight drive array survives up to four failures if no two share a pair, and it dies at two failures if both hit the same pair. Plan around the guaranteed number, which is one, and treat anything beyond it as luck rather than protection.
Should I mirror two volumes inside my VPS with mdadm?
Usually no. Two volumes attached to one VPS often live on the same physical array on the same host, so mirroring them doubles the cost of every write and protects against nothing the host's own RAID did not already cover. It is worth doing only when the provider documents that the volumes sit in separate failure domains. Otherwise put that effort into backups that leave the machine.