Кіріспе

Компьютерлік қателерді түзету әдісі

Деректерді тазалау – бұл қателерді түзету әдісі, ол аяққы міндетті пайдаланып, негізгі жадыны немесе сақтағышты мерзімді түрде қателерге тексеруге және оларды әртүрлі тексеру сомалары немесе деректердің көшірмелері түріндегі артық деректерді қолдану арқылы түзетуге мүмкіндік береді. Деректерді тазалау жеке түзетілетін қателердің жиналу мүмкіндігін азайтады, соның салдарынан түзетілмейтін қателердің тәуекелдерін төмендетеді. Деректердің тұтастығы компьютерлік операциялық жүйелерде, компьютерлік сақтау және деректерді беру жүйелерінде деректерді жазу, оқу, сақтау, беру немесе өңдеу кезінде маңызды мәселе болып табылады. Дегенмен, қазіргі қолданыстағы файлдық жүйелердің көпшілігі деректердің бұзылуына қарсы жеткілікті қорғауды қамтамасыз етпейді. Бұл мәселені шешу үшін деректерді тазалау деректердегі барлық сәйкессіздіктерді жүйелі түрде тексеруді және, жалпы алғанда, аппараттық немесе бағдарламалық құралдардың істен шығуын алдын алады. Бұл "тазалау" мүмкіндігі әдетте жадта, дискілік массивтерде, файлдық жүйелерде немесе FPGA-ларда қателерді анықтау және түзету механизмі ретінде кездеседі.

RAID

Деректерді тазалау кезінде RAID контроллері RAID массивіндегі барлық қатты дискілерді мерзімді түрде оқи алады және қолданбалар оларға қол жеткізбей тұрып, ақаулы блоктар бар-жоғын тексереді. Бұл біттік деңгейдегі қателерге байланысты деректердің бұзылуына және деректердің жоғалуына әкелетін ықтималдықты азайтады. Dell PowerEdge RAID орталарында "патрульдік оқу" деп аталатын мүмкіндік деректерді тазалауды және профилактикалық шараларды жүргізеді. OpenBSD жүйесінде bioctl(8) утилитасы жүйе әкімшісіне осы патрульдік оқуды /dev/bio псевдо құрылғысындағы BIOCPATROL ioctl арқылы басқаруға мүмкіндік береді; 2019 жылдан бастап бұл мүмкіндік LSI Logic және Dell контроллерлеріне арналған кейбір құрылғы драйверлерінде қолдау табады — бұл OpenBSD 5.8 (2015) нұсқасынан бастап mfi(4) және OpenBSD 6.4 (2018) нұсқасынан бастап mfii(4) драйверлерін қамтиды. FreeBSD және DragonFly BSD жүйелерінде патрульдік оқу RAID контроллеріне арналған арнайы утилита mfiutil(8) арқылы басқарылады, ол FreeBSD 8.0 (2009) және 7.3 (2010) нұсқаларынан бастап қолжетімді. FreeBSD-де жасалған осы іске асыру OpenBSD әзірлеушілеріне өздерінің жалпы bio(4) framework және bioctl утилитасына жеке контроллерлік утилита қажеттілігінсіз патрульдік оқуды қосу үшін пайда болды. 2008 жылы NetBSD жүйесінде OpenBSD-дің bio(4) framework-і бірізділікті тексеруді қолдау үшін кеңейтілді, ол /dev/bio псевдо құрылғысы үшін BIOCSETSTATE ioctl командасы арқылы іске асырылды, опциялар бастау және тоқтату (сәйкесінше BIOC SSCHECKSTART VOL және BIOC SSCHECKSTOP VOL) болды; 2019 жылдан бастап бұл тек бір драйвермен ғана — arcmsr(4) қолдау табады. Linux MD RAID, бағдарламалық RAID іске асыру ретінде, деректердің бірізділігін тексеру мүмкіндігін ұсынады және анықталған деректердің сәйкессіздіктерін автоматты түрде жөндеуді қамтамасыз етеді. Мұндай процедуралар әдетте апталық cron жұмысын орнату арқылы орындалады. Техникалық қызмет көрсету тексеру, жөндеу немесе бос жүріс операцияларын әрбір тексерілген MD құрылғысына жіберу арқылы жүзеге асырылады. Орындалған барлық операциялардың мәртебесі, сондай-ақ жалпы RAID мәртебесі әрқашан қолжетімді.

БТРФ

Linux үшін көшіру-жазу (CoW) файлдық жүйесі ретінде Btrfs қателерді оқшаулау, деректердің бұзылуын анықтау және түзету, сондай-ақ файлдық жүйені тазалау мүмкіндіктерін ұсынады. Файлдық жүйе блокты оқығанда тексеру сомасының қайшылығын анықтаса, ол алдымен ішкі көшірмелеу немесе RAID техникалары қолданылса, басқа құрылғыдан осы блоктың сау көшірмесін алуға (немесе жасауға) тырысады. Btrfs файлдық жүйенің толық тексеруін фондық режимде іске қосылатын файлдық жүйені тазалау тапсырмасын іске қосу арқылы бастай алады. Тазалау тапсырмасы файлдық жүйенің тұтастығын тексеріп, кездесетін нашар блоктарды автоматты түрде анықтап, жөндеуге тырысады.

ZFS

ZFS файлдық жүйесі мен логикалық томды басқарушыны біріктіреді, оның ерекшеліктері деректердің бұзылу түрлерін тексеру, үздірсіз тұтастығын бақылау және автоматты түзетуді қамтиды. Sun Microsystems компаниясы ZFS-ті бастапқыдан-ақ деректердің тұтастығына баса назар аудара отырып, дискілердегі деректерді дискілік микрокод қателіктері және көлеңке жазулар сияқты мәселелерден қорғау үшін жасаған. ZFS деректердің шіруі және басқа да проблемалардың салдарынан туындаған үнсіз деректердің бұзылуын тексеру және түзетуге арналған Scrub деп аталатын түзету құралын ұсынады.

Жады

Қазіргі компьютерлік жад чиптерінің жоғары интеграциялық тығыздығының салдарынан, жеке жад жасушаларының құрылымы ғарыштық сәулелерге және/немесе альфа бөлшектерінің шығарылуына сезімтал болу үшін жеткілікті түрде кіші болды. Осы құбылыстардың нәтижесінде туындайтын қателер жұмсақ қателер деп аталады. Бұл DRAM және SRAM негізіндегі жадтар үшін мәселе тудыруы мүмкін. Жадты тазалау (scrubbing) компьютерлік оперативті жадыдағы бит қателерін анықтап, түзетуді ЭЦК жады, деректердің қосымша көшірмелері немесе басқа қателерді түзету кодтарын қолдану арқылы жүзеге асырады.

FPGA

Скруббинг – FPGA-ны қайта бағдарламалауға қолданылатын техника. Ол конфигурациялық бит ағынындағы қателерді іздеудің қажеттілігін жоққа шығарып, қателердің жинақталуын болдырмау үшін мерзімді түрде қолданылады, бұл дизайнды жеңілдетеді. Скруббингке қатысты FPGA-ны жай ғана қайта бағдарламалаудан бастап, ішінара қайта конфигурациялауға дейін әртүрлі тәсілдерді қолдануға болады. Скруббингтің ең қарапайым тәсілі – FPGA-ны белгілі бір мерзімдік интервалмен (әдетте есептелген бұзылу жылдамдығының 1/10 бөлігі) толығымен қайта бағдарламалау. Дегенмен, FPGA қайта бағдарламалау кезінде, микросекундтар мен миллисекундтарға дейін жұмыс істемейді. Мұндай үзіліске төзбейтін жағдайларда ішінара қайта конфигурациялау мүмкіндігі бар. Бұл техника FPGA жұмыс істеп тұрғанда қайта бағдарламалауға мүмкіндік береді.