NILFS2 /home үшін оқ өткізбейтін файлдық жүйе

NILFS2 /home үшін оқ өткізбейтін файлдық жүйе

Өздеріңіз білетіндей, егер қиындық туындауы мүмкін болса, ол міндетті түрде болады. Жақында маңызды файл кездейсоқ жойылған немесе мәтіндік редакторда мәтін кездейсоқ таңдалып, жойылған жағдайлар барлығында болған шығар.

Хостер немесе веб-сайт иесі болсаңыз, пайдаланушы тіркелгілерін немесе веб-сайтыңызды бұзуға тап болған шығарсыз. Мұндай жағдайларда хронологияны қалпына келтіру, кіру әдісін және шабуылдаушы пайдаланатын осалдықты табу маңызды.

NILFS2 файлдық жүйесі осындай мәселелерді шешуге өте ыңғайлы.

Ол Linux ядросында 2.6.30 нұсқасынан бері бар.

Бұл файлдық жүйенің ерекшелігі, ол нұсқаларды басқару жүйесіне ұқсайды: сіз әрқашан жүйенің күйін кері қайтарып, біраз уақыт бұрын қандай болғанын көре аласыз.

Бұл функцияны қамтамасыз ету үшін Cron сценарийлерін конфигурациялау, суретке түсіру және т.б. қажет емес. NILFS2 файлдық жүйесі мұны өздігінен жасайды. Ол ешқашан ескі деректерді қайта жазбайды және жеткілікті бос орын болса, әрқашан дискінің жаңа аймақтарына жазады. Көшіру – жазу принципіне толық сәйкес.

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

История

NILFS2 /home үшін оқ өткізбейтін файлдық жүйеNILFS2 тереңдігінде әзірленді Nippon Telegraph and Telephone Corporation, шын мәнінде, мемлекеттік (оның бақылау пакетіне ие) және Жапониядағы ең ірі телекоммуникациялық компания. Нақтырақ айтқанда, жетекшілік ететін CyberSpace зертханаларында Рюсуке Кониши.

Оның нақты не үшін жасалғаны белгісіз, дегенмен «уақыт машинасы» функционалдығы бар мұндай FS барлау қызметтері бүкіл суретті қайта ойнату үшін зерттегісі келетін деректерді сақтау үшін өте қолайлы деп болжауға болады. SMS, электрондық пошта және т.

NILFS2 сонымен қатар ішкі қауіпсіздік қызметтері үшін әлеуетті өте құнды құрал болып табылады, өйткені ол пошта дерекқорындағы барлық жойылған хаттарды қалпына келтіруге мүмкіндік береді, кейіннен файлдарды жою немесе өзгерту арқылы оларды жасыруға тырысуы мүмкін қызметкерлердің кептелістерін көрсетеді.

Барлық хат алмасу тарихын қалай бақылауға болады?Linux серверлерінде (және бұл жерде ішкі қауіпсіздік мақсаттары үшін NILFS2 орнатылуы керек), электрондық пошта хабарларын сақтау үшін электрондық поштаны сақтаудың файлдық әдісі жиі пайдаланылады. Пішім деп аталатын Maildir. Қоюға жеткілікті Курьерлік пошта сервері және Maildir бағдарламасында пошта сақтау орнын теңшеңіз. Басқа формат mbox жеке хабарламаларға оңай талдауға болатын үлкен мәтіндік файл.

Егер пошта сервері дерекқорды пайдаланса, онда NILFS2 дерекқорды өзгертудің нақты уақытын және осы сәттердің кез келгенінде дерекқорды қалпына келтіру мүмкіндігін қалпына келтіруге мүмкіндік береді. Содан кейін сол уақытта не болғанын көру үшін дерекқор құралдарын пайдалану керек ...

Алайда бірдеңе дұрыс болмады. Жапон үкіметі барлығын бақылау туралы шешімін өзгертті (Яровая принципі), немесе дәстүрлі HDD дискілеріндегі NILFS2 өнімділігі төмен болды және NILFS2 GPL лицензиясы бойынша шығарылды және Linux ядросына өте тез кірді, өйткені жоғары білікті жапон тілінде жазылған кодқа қатысты ерекше шағымдар болған жоқ, Linux ядросының әзірлеушілерінде ол жоқ.

NILFS2 қандай?

Қолдану тұрғысынан: нұсқаны басқару жүйесінде SVN. Әрбір FS бақылау нүктесі кез келген өзгеріс болған кезде пайдаланушының хабарынсыз автоматты түрде орындалатын міндеттеме болып табылады: жою, файлдың мазмұнын өзгерту немесе кіру құқықтарын өзгерту. Әрбір міндетте сызықты түрде өсетін сан болады.

Программист көзқарасы бойынша: дөңгелек буфер. Файлдық жүйе өзгерістерді жинақтайды және оларды шамамен 8 Мбайтқа тең бөлікке жазады (2000 * 4096, мұнда 2000 - блоктағы элементтер саны және 4096 - жад бетінің өлшемі). Бүкіл диск осындай бөліктерге бөлінген. Жазу ретімен жалғасады. Бос орын таусылғанда, ең ескі суреттер жойылады және бөліктер қайта жазылады.

Негізгі NILFS2 тәттілері

  • Нұсқа жасау!!!
  • Ақаулықтан кейін файлдық жүйені қалпына келтіру процедурасы қарапайым: жүктеу кезінде дұрыс бақылау сомасы бар соңғы бөлік ізделеді және оған суперблок орнатылады. Бұл дереу орындалатын операция.
  • Жазу әрқашан сызықты түрде жүретіндіктен, онда:
    • баяу кездейсоқ жазулары бар SSD дискісінде жұмыс істегенде жақсы нәтижелер көрсете алады.
    • NILFS2 SSD ресурсын сақтайды, өйткені жазуды көбейту факторы дерлік жоқ.
      Дәлірек айтқанда, 2-ден аспайды.Шындығында, бүкіл дискіні циклдік қайта жазу кезінде NILFS2 өзгермейтін деректерді жаңа бөліктерге (бөліктерге) тасымалдайды.

      Егер дискіде өзгермейтін деректердің 10% болса, онда біз 10 толық қайта жазу арқылы жазуды 1% арттырамыз. Дискіні 50 рет толық қайта жазу үшін құрылғының 50% толықтығында 1% ұлғайту.

      Жазудың максималды ұтысы 2. Барлығы ретімен жазылғанын ескерсек, бұл өте төмен. Жалпы, жазу анимациясы 4096 байт секторы бар кәдімгі фрагменттелген файлдық жүйеге қарағанда аз болады. (Ой шабыттандырды түсініктеме).

  • NILFS2 FS қашықтағы репликацияны жүзеге асырудың ықтимал жеңілдігі

/үйге арналған NILFS2

Unix тәрізді операциялық жүйелерде, әдетте, пайдаланушы деректері сақталатын /home қалтасы бар. Әртүрлі бағдарламалар пайдаланушыға арналған параметрлерін осы қалтада сақтайды.

Ал пайдаланушылар болмаса, кім жиі қателеседі? Сондықтан, олар айтқандай, Құдайдың өзі NILFS2-ді /үйде пайдалануды бұйырды.

Сонымен қатар, SSD дискілерін кеңінен қолдану арқылы біз енді CoW файлдық жүйелерін пайдаланған кезде ауыр кемшіліктер туралы алаңдамаймыз.

Иә, біз ZFS және BTRFS-те FS суретін қалағанымыздай жиі жасай аламыз, бірақ жоғалған файлды өзгерту суреттер арасында аяқталу қаупі әрқашан бар. Ал суреттерді әлі де басқару керек: ескілерін жою керек. NILFS2-де мұның бәрі автоматты түрде, сөзбе-сөз бірнеше секунд сайын болады.

Мен lvcreate арқылы логикалық көлемді жасадым (nvme көлем тобында, жұқа бассейнде). Мен оны lvm көлемінде жасауды ұсынамын, себебі оны кейінірек оңай кеңейтуге болады. Нұсқаның лайықты тереңдігі үшін NILFS50 көмегімен 2% бос дискілік кеңістікті ұсынамын.

lvcreate -V10G -T nvme/thin -n home

және оны NILFS2 форматында пішімдеді:

mkfs.nilfs2 -L nvme_home /dev/nvme/home

mkfs.nilfs2 (nilfs-utils 2.1.5)
Start writing file system initial data to the device
      Blocksize:4096  Device:/dev/nvme/home1  Device Size:10737418240
File system initialization succeeded !!

Осыдан кейін ағымдағы /үйден барлық деректерді көшіру керек.

Мен мұны компьютерді жүктегеннен кейін, түбірлік пайдаланушы ретінде тіркелгіме кірмес бұрын жасадым. Егер мен пайдаланушы ретінде кіретін болсам, кейбір бағдарламалар пайдаланушының /home/user қалтасындағы ұяшықтар мен файлдарды ашады, бұл таза көшірмені қиындатады. Өздеріңіз білетіндей, түбірлік пайдаланушыға арналған бастапқы қалта әдетте /root жолында орналасады, сондықтан /home бөлімінде ешбір файл ашылмайды.

mkdir /mnt/newhome
mount -t nilfs2 /dev/nvme/home /mnt/newhome
cp -a /home/. /mnt/newhome

Соңғы жолды қараңыз мақала.

Содан кейін /home файлдық жүйесі орнатылған /etc/fstab файлын өңдейміз

/dev/disk/by-label/nvme_home /home nilfs2    noatime 0 0

Опция noatime әр файлға қатынасу кезінде уақыт өзгермеуі үшін өнімділікті жақсарту қажет. Әрі қарай біз қайта жүктейміз.

NILFS2-дегі кескіндердің түрлері.

Жоюға иммунитеті жоқ кәдімгі сурет бақылау нүктесі немесе қалпына келтіру нүктесі деп аталады.
Автоматты түрде жоюдан қорғалған сурет сурет, содан кейін жай сурет деп аталады.

Бақылау нүктелерін қарау lscp пәрмені арқылы орындалады

lscp -s суреттерін көру

Біз кез келген уақытта сурет пен бақылау нүктелерін өзіміз жасай аламыз:

mkcp [-s] устройство

Біз деректерді қалпына келтіреміз.

NILFS негізгі FS тармағымен жұмыс істеумен қатар қалағанымызша ескі суреттерді орнатуға мүмкіндік береді. Бірақ тек оқу режимінде.

Барлығы осылай реттелген. NILFS2 жасайтын тұрақты бақылау нүктелері кез келген уақытта автоматты түрде жойылуы мүмкін (дискідегі орын таусылғанда немесе nilfs_cleanerd ережелеріне сәйкес), сондықтан орнату алдында бақылау нүктесін суретке түрлендіру немесе орысша айтқанда суретке түсіру керек.

chcp ss номер_чекпоинта

Осыдан кейін суретті орнатуға болады, мысалы, келесідей:

mount -t nilfs2 -r -o cp=номер_чекпоинта /dev/nvme/home /mnt/nilfs/номер_чекпоинта

Осыдан кейін қалпына келтірілген файлдарды суреттен /home-ге көшіреміз.
Болашақта автоматты қоқыс жинағыш ескірген деректерді жоя алатындай етіп суреттен жойылмайтын жалаушаны алып тастаймыз:

chcp cp номер_чекпоинта

NILFS2 утилиталары

Бірақ бұл мәселе. Иә, әрине, біз файлдық жүйені жасай аламыз, оның өлшемін желіде өзгерте аламыз, сынақ нүктелерінің тізімін көре аламыз, оларды жасай аламыз және жоя аламыз. Nilfs2-utils пакеті ең аз джентльмен жиынтығын қамтамасыз етеді.

NTT қаржыландыруды қысқартқандықтан, файлдарды өзгерту тарихын көрсетуге немесе суреттер арасында айырмашылық жасауға мүмкіндік беретін жылдам төмен деңгейлі утилиталар жоқ.

Менің n2u утилитасым

Осы вакуумды толтыру үшін мен жаздым n2u утилитаңыз, ол белгілі бір файлға/каталогқа өзгертулер тарихын көрсете алады:

n2u log filename

Шығару келесідей нәрсе:

          CHECKPOINT        DATE     TIME     TYPE          SIZE  MODE
             1787552  2019-11-24 22:08:00    first          7079    cp
             1792659  2019-11-25 23:09:05  changed          7081    cp

Ол таңдалған іске асыру әдісі үшін өте жылдам жұмыс істейді: ол екі бөлік әдісін қолданатын файлдар арасындағы айырмашылықтарды іздейді, файлды/каталогты әртүрлі суреттерде жылдам орнату және салыстыру.

Пернені пайдаланып бақылау нүктелерінің ауқымын орнатуға болады -cp CP1:CP2 немесе -cp {YEAR-MM-DD}:{YEAR-MM-DD}.

Сондай-ақ белгілі бір файл немесе каталог үшін бақылау нүктелері арасындағы айырмашылықты көруге болады:

n2u diff -r cp1:cp2 filename

Сіз өзгертулердің бүкіл хронологиясын көрсете аласыз: белгілі бір файлдың/каталогтың бақылау нүктелері арасындағы барлық айырмашылықтар:

n2u blame [-r cp1:cp2] filename

Бұл пәрмендегі күн аралығына да қолдау көрсетіледі.

Әзірлеушілерге айқай

Хабреде көптеген мамандар бар. NILFS2 аяқтаңыз. Репликацияны жасаңыз, түзетулер, қайта сілтеме және басқа да жақсылықтар арасындағы төмен деңгейлі жылдам айырмашылық!

сілтемелер

NILFS ресми сайты.

Репозиторийлер:
NILFS2.
NILFS2 утилиталары мен модульдері.

Ақпараттық бюллетеньдер:
NILFS2 әзірлеушілеріне арналған электрондық пошта ақпараттық бюллетень. linux-nilfs жазылымына арналған идентификатор.
Ақпараттық бюллетень мұрағаты.

nilfs_cleanerd орнату нұсқаулығы.
EXT4, Btrfs, XFS және NILFS2 өнімділік сынақтарын салыстыру.

Спасибо:

  • NILFS2 әзірлеушілері: Рюсуке Кониши, Коджи Сато, Нарухико Камимура, Сейджи Кихара, Йошидзи Амагай, Хисаши Хифуми және Сатоши Мориаи. Басқа да негізгі үлес қосқандар: Андреас Ронер, Дэн МакГи, Дэвид Арендт, Дэвид Смид, дексен деВрис, Дмитрий Смирнов, Эрик Сандин, Джиро СЕКИБА, Маттео Фриго, Хитоши Митаке, Такаши Ивай, Вячеслав Дубейко.
  • Керемет фильмдер сериясы үшін Amblin Entertainment және Universal Pictures. «Болашаққа оралу». Посттың бірінші суреті «Болашаққа оралу 3» фильмінен алынды.
  • Компаниялар RUVDS қолдау және Habré блогында жариялау мүмкіндігі үшін.

PS Байқаған қателерді жеке хабарламада жіберіңіз. Мен бұл үшін кармамды арттырамын.

Виртуалды машинаға тапсырыс беру арқылы NILFS2-мен тәжірибе жасауға болады RUVDS төмендегі купонмен. Барлық жаңа клиенттер үшін 3 күндік тегін сынақ мерзімі бар.

NILFS2 /home үшін оқ өткізбейтін файлдық жүйе

Ақпарат көзі: www.habr.com

пікір қалдыру