Установка и настройка e2fsprogs
e2fsprogs - набор служебных утилит с открытым исходным кодом для работы с файловыми системами ext2, ext3 и ext4. Утилиты предназначены для проверки целостности файловых систем, поиска и исправления ошибок, изменения настроек, форматирования.
Рассмотрим вариант работы утилиты с фс ext 2/3/4 раздела накопителя. Если Вы часто перезагружаете роутер или выключили внезапно свет, при этом диск с разделами не был безопасно извлечен из системы, то при последующей загрузке интернет-центра, в логе можно увидел запись:
[W] Dec 15 02:27:50 ndm: kernel: EXT4-fs (sdb3): warning: maximal mount count reached, running e2fsck is recommended
Драйвер EXT4-fs сообщает, что раздел sdb3 достиг максимального количества монтирований \ подключений.
Проверяем максимальное количество монтирования раздела и сколько раз он уже был монтирован:
/ # tune2fs -l /dev/sdb3 | grep -E 'Mount|Maximum'
Mount count: 8
Maximum mount count: 30
В файловых системах ext2/3/4 имеется параметр 'max-mount-count' и если его превысить, в логе будем видеть варнинг. Т.к. в ndm нет встроенного 'e2fsck', система не может сделать проверку раздела.
Чтобы сбросить количество монтирований, убрать предупреждение при загрузке раздела, необходимо будет установить пакет с утилитами 'e2fsprogs':
/ # opkg info e2fsprogs
Package: e2fsprogs
Version: 1.44.3-1
Depends: libc, libssp, librt, libpthread, libuuid, libext2fs
Status: install user installed
Section: utils
Architecture: mipsel-3.4
MD5Sum: 9e04041f932f0f9a5de6b57711d60cd0
Size: 197487
Filename: e2fsprogs_1.44.3-1_mipsel-3.4.ipk
Conffiles:
/opt/etc/e2fsck.conf dece11e2b15f487d7d2bf9f96abe2eaaf9cd33f02d7b9725b9116023d7 786cac
Description: This package contains essential ext2 filesystem utilities which con sists of
e2fsck, mke2fs and most of the other core ext2 filesystem utilities.
Installed-Time: 1544833329
Внимание! Данный метод подходит для моделей ZyXEL Keenetic | Keenetic KN-**** с двумя USB или накопителями с двумя разделами ext2/3/4 и предустановленным Entware OPKG.
Версия из репозитория e2fsprogs 1.44.3-1:
http://bin.entware.net/mipselsf-k3.4/e2fsprogs_1.44.3-1_mipsel-3.4.ipk
Подготовка:
1. Создаем раздел EXT4 на жестком диске - Использование файловой системы EXT4 на USB-накопителях.
2. Установка и настройка Entware - в данной теме.
Обновление репозитория:
/ # opkg update
Downloading http://bin.entware.net/mipselsf-k3.4/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/entware
Downloading http://bin.entware.net/mipselsf-k3.4/keenetic/Packages.gz
Updated list of available packages in /opt/var/opkg-lists/keendev
Устанавливаем пакет e2fsprogs:
/ # opkg install e2fsprogs
Installing e2fsprogs (1.44.3-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/e2fsprogs_1.44.3-1_mipsel-3.4.i pk
Installing libuuid (2.32.1-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libuuid_2.32.1-1_mipsel-3.4.ipk
Installing libext2fs (1.44.3-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libext2fs_1.44.3-1_mipsel-3.4.i pk
Installing libblkid (2.32.1-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libblkid_2.32.1-1_mipsel-3.4.ip k
Installing libss (1.44.3-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libss_1.44.3-1_mipsel-3.4.ipk
Installing libcomerr (1.44.3-1) to root...
Downloading http://bin.entware.net/mipselsf-k3.4/libcomerr_1.44.3-1_mipsel-3.4.i pk
Configuring libuuid.
Configuring libblkid.
Configuring libcomerr.
Configuring libss.
Configuring libext2fs.
Configuring e2fsprogs.
Проверяем доступность утилиты e2fsck и ее опций:
/ # e2fsck -h
e2fsck: invalid option -- 'h'
Usage: e2fsck [-panyrcdfktvDFV] [-b superblock] [-B blocksize]
[-l|-L bad_blocks_file] [-C fd] [-j external_journal]
[-E extended-options] [-z undo_file] device
Emergency help:
-p Automatic repair (no questions)
-n Make no changes to the filesystem
-y Assume "yes" to all questions
-c Check for bad blocks and add them to the badblock list
-f Force checking even if filesystem is marked clean
-v Be verbose
-b superblock Use alternative superblock
-B blocksize Force blocksize when looking for superblock
-j external_journal Set location of the external journal
-l bad_blocks_file Add to badblocks list
-L bad_blocks_file Set badblocks list
-z undo_file Create an undo file
Проверяем монтирование разделов:
/ # mount | grep sd
/dev/sdc1 on /tmp/mnt/f7bf5f53-ff93-d401-30ae-5f53ff93d401 type ext4 (rw,relatime,data=ordered)
/dev/sdc1 on /opt type ext4 (rw,relatime,data=ordered)
/dev/sdb1 on /tmp/mnt/01D477A2F4778D70 type tntfs (rw,nosuid,noexec,noatime,uid=0,gid=1000,umask=02,allow_utime=0020,nls=utf8,min_prealloc_size=64k,max_prealloc_size=869092348,readahead=4M,perm,user_xattr,case_insensitive,fail_safe,hidden=show,dotfile=show,protected_system=ignore,errors=continue,mft_zone_multiplier=1)
/dev/sdb3 on /tmp/mnt/274659ce-3efd-0f7a-3de7-ab72ca4628b9 type ext4 (rw,nosuid,noexec,noatime,data=ordered)
/dev/sda1 on /tmp/mnt/01D44C003E14AB80 type tntfs (rw,nosuid,noexec,noatime,uid=0,gid=1000,umask=02,allow_utime=0020,nls=utf8,min_prealloc_size=64k,max_prealloc_size=117219324,readahead=4M,perm,user_xattr,case_insensitive,fail_safe,hidden=show,dotfile=show,protected_system=ignore,errors=continue,mft_zone_multiplier=1)
Судя по логу: [W] Dec 15 02:27:50 ndm: kernel: EXT4-fs (sdb3): warning: maximal mount count reached, running e2fsck is recommended - необходимо осуществить проверку раздела 'sdb3'.
Размонтируем нужный раздел:
/ # umount /dev/sdb3
Производим проверку раздела, выбираем ключ ' -y Assume "yes" to all questions':
/ # e2fsck -y /dev/sdb3
e2fsck 1.44.3 (10-July-2018)
EXT4: ignoring check interval, broken_system_clock set
EXT4: clean, 1142/13221888 files, 2499351/26420736 blocks
Вы можете выбрать и другие ключи, зависит от ситуации и проблемы.
Монтируем раздел обратно:
/ # mount /dev/sdb3 /tmp/mnt/274659ce-3efd-0f7a-3de7-ab72ca4628b9
Проверяем счетчик монтирования раздела:
/ # tune2fs -l /dev/sdb3 | grep -E 'Mount|Maximum'
Mount count: 1
Maximum mount count: 30
Как видим, значение сброшено.
Далее можете перезагрузить роутер, чтобы убедиться в отсутствие варнинга при загрузке.
Также варнинги можно проверить командой:
/ # dmesg | grep warning