Проверьте информацию статической файловой системы, определенную в файле fstab, после применения изменений, чтобы убедиться, что ваша система загрузится без проблем.
Это особенно важно в удаленных местах или машинах, где вы не можете легко выполнить экстренные операции.
Отображение статической информации о файловой системе, определенной в файле fstab.
# /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). # # # / was on /dev/vda1 during installation UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 / ext4 errors=remount-ro 0 1 # swap was on /dev/vda5 during installation UUID=33d7420a-1ab7-4872-8944-369c37354d1b none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
Проверьте содержимое файла /etc/fstab.
/media/cdrom0 [W] udf,iso9660 seems unsupported by the current kernel [W] cannot detect on-disk filesystem type 0 parse errors, 0 errors, 2 warnings
Проверьте содержимое файла /etc/fstab и выведите подробный вывод.
$ sudo findmnt --verify --verbose
/ [ ] target exists [ ] FS options: errors=remount-ro [ ] UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 translated to /dev/vda1 [ ] source /dev/vda1 exists [ ] FS type is ext4 none [ ] UUID=33d7420a-1ab7-4872-8944-369c37354d1b translated to /dev/vda5 [ ] source /dev/vda5 exists [ ] FS type is swap /media/cdrom0 [ ] target exists [ ] userspace options: user,noauto [ ] source /dev/sr0 exists [W] udf,iso9660 seems unsupported by the current kernel [W] cannot detect on-disk filesystem type 0 parse errors, 0 errors, 2 warnings
Проверьте статическую информацию о типе файловой системы ext4, определенную в конкретном файле (таблица смонтированных файловых систем).
$ sudo findmnt --verify --tab-file /etc/mtab --type ext4
/ [W] recommended root FS passno is 1 (current is 0) 0 parse errors, 0 errors, 1 warning
Пример статического файла с информацией о файловой системе, который намеренно содержит несколько ошибок.
# /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). # # # / was on /dev/vda1 during installation UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 / ext3 errors=remount-ro UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 /opt xt4 errors=remount-ro 0 # swap was on /dev/vda5 during installation UUID=33d7420a-1ab7-4872-8944-369c37354d1b none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0
Проверьте это несовместимое и ошибочное содержимое файла.
/ [E] ext3 does not match with on-disk ext4 [W] recommended root FS passno is 1 (current is 0) /opt [W] xt4 seems unsupported by the current kernel [E] xt4 does not match with on-disk ext4 /media/cdrom0 [W] udf,iso9660 seems unsupported by the current kernel [W] cannot detect on-disk filesystem type 0 parse errors, 2 errors, 4 warnings
Код вывода укажет, что произошла ошибка.
1
Отобразите подробный вывод, чтобы изучить его дальше.
$ sudo findmnt --verify --tab-file /etc/fstab --verbose
/ [ ] target exists [ ] FS options: errors=remount-ro [ ] UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 translated to /dev/vda1 [ ] source /dev/vda1 exists [E] ext3 does not match with on-disk ext4 [W] recommended root FS passno is 1 (current is 0) /opt [ ] target exists [ ] FS options: errors=remount-ro [ ] UUID=9d749b55-a024-4d89-b1c0-950bd38b98d8 translated to /dev/vda1 [ ] source /dev/vda1 exists [W] xt4 seems unsupported by the current kernel [E] xt4 does not match with on-disk ext4 none [ ] UUID=33d7420a-1ab7-4872-8944-369c37354d1b translated to /dev/vda5 [ ] source /dev/vda5 exists [ ] FS type is swap /media/cdrom0 [ ] target exists [ ] userspace options: user,noauto [ ] source /dev/sr0 exists [W] udf,iso9660 seems unsupported by the current kernel [W] cannot detect on-disk filesystem type 0 parse errors, 2 errors, 4 warnings
You may also like
Leave a Comment
I modified /etc/fstab
.
I verified the new devices and I can mount them with the mount
command.
How may I validate the modifications made to /etc/fstab
?
asked Aug 25, 2010 at 2:51
You can simple run: mount -a
-a
Mount all filesystems (of the given types) mentioned in fstab.
This command will mount all (not-yet-mounted) filesystems mentioned in fstab and is used in system script startup during booting.
answered Aug 25, 2010 at 2:57
PrixPrix
4,7733 gold badges23 silver badges25 bronze badges
4
The mount command take an --fake
or -f
for short. The following command should do what you need:
mount -fav
The following is in the documentation for -f
option:
Causes everything to be done except for the actual system call; if it’s not obvious, this «fakes» mounting the filesystem. This option is useful in conjunction with the -v flag to determine what the mount command is trying to do.
(Note this is Linux — check before using elsewhere: FreeBSD uses -f
for ‘force’ — exactly the opposite meaning.)
Paul
2,8346 gold badges25 silver badges35 bronze badges
answered May 19, 2013 at 6:22
trondatronda
1,28110 silver badges13 bronze badges
6
sudo findmnt --verify --verbose
is the best way I’ve found
answered Aug 4, 2019 at 21:36
rockwotjrockwotj
1,0717 silver badges3 bronze badges
3
Note that if you add a swap file to your fstab, mount -a
won’t turn it on: you’ll want to run swapon -a
.
answered Mar 4, 2019 at 19:08
Ian HunterIan Hunter
2173 silver badges11 bronze badges
I found this /problem/ but the solution didn’t meet my requirements.
When rebooting with any invalid entries in the /etc/fstab, such as missing file systems that fsck cannot check; the system will fail to boot. That can be much more difficult to deal with if you have a headless box.
This is my solution to checking /etc/fstab to avoid this boot problem:
# cat /usr/local/bin/check-fstab-uuid-entries.sh
#!/usr/bin/env bash
for x in $(grep ^UUID /etc/fstab|cut -d -f 1|cut -d = -f 2)
do
if [ ! -h /dev/disk/by-uuid/$x ];then
echo $(grep $x /etc/fstab) ..... not found
fi
done
answered Apr 5, 2016 at 13:43
2
TBH even fake mounting doesn’t safely validate the fstab for bad fs type entries.
you can have entries that have correct uuid’s, directories etc but if you specify a noexistant FS type this will halt your boot next time.
[root@grumpy ~]# grep backup /etc/fstab UUID=5ed48e5e-7251-4d49-a273-195cf0432a89 /mnt/backup noatime,nodiratime,xfs defaults,nodev,nosuid 0 0 [root@grump ~]# [root@grumpy ~]# mount -fav | grep backup /mnt/backup : successfully mounted [root@grumpy ~]#
answered Aug 2, 2019 at 10:41
mount -a is safe method to check /etc/fstab otherwise wrong entry could break the system
It is also advised to keep a backup copy of original /etc/fstab file. it could be copied to home directory of root
answered Nov 28, 2016 at 7:36
I open another term or tab and run: tail -f /var/log/kern.log
Sometimes errors show there that don’t show when mounting.
answered Nov 8, 2020 at 21:59
I updated from saucy to trusy.
After that, using sudo
segfaulted:
fkalter@London ~> sudo whoami
[sudo] password for fkalter:
YubiKey for `fkalter':
[1] 16961 segmentation fault (core dumped) sudo whoami
So when i tried running strace to get some more info, this showed up in the output:
sudo: effective uid is not 0, is"..., 140sudo: effective uid is not 0, is /usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?
My /etc/fstab
at this time is this:
# /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>
proc /proc proc nodev,noexec,nosuid 0 0
UUID=1afaad96-8aa3-4283-95a4-20510e5b3fbb / ext4 rw,async,exec,nouser,suid,errors=remount-ro 0 1
#UUID=1afaad96-8aa3-4283-95a4-20510e5b3fbb / ext4 defaults 0 1
UUID=46605028-51e4-4676-b621-2d8fbab185d5 /boot ext4 defaults 0 2
UUID=8f6af894-fc4a-4a81-b1f7-20c42ef35fe0 /home ext4 defaults 0 2
To check how my root filesystem was mounted i ran mount
without arguments:
fkalter@London ~> mount
/dev/sda6 on / type ext4 (rw)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,relatime,cpuset)
cgroup on /sys/fs/cgroup/cpu type cgroup (rw,relatime,cpu,release_agent=/run/cgmanager/agents/cgm-release-agent.cpu)
cgroup on /sys/fs/cgroup/cpuacct type cgroup (rw,relatime,cpuacct,release_agent=/run/cgmanager/agents/cgm-release-agent.cpuacct)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,relatime,memory,release_agent=/run/cgmanager/agents/cgm-release-agent.memory)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,relatime,devices,release_agent=/run/cgmanager/agents/cgm-release-agent.devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,relatime,freezer,release_agent=/run/cgmanager/agents/cgm-release-agent.freezer)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,relatime,blkio,release_agent=/run/cgmanager/agents/cgm-release-agent.blkio)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,relatime,perf_event,release_agent=/run/cgmanager/agents/cgm-release-agent.perf_event)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb)
/dev/sdf1 on /mnt/secret type ext4 (rw)
/dev/sda1 on /boot type ext4 (rw)
/dev/sda5 on /home type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
/home/fkalter/.Private on /home/fkalter type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=153b19c1d2ccc61f,ecryptfs_fnek_sig=03fd342dfcc3e207)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=fkalter)
The first row shows that the only options are rw (read/write). No suid, or any other options i specified in fstab.
To see what happens during the boot process here is the output of dmesg.
fkalter@London ~> dmesg | grep mount
[ 4.445090] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null)
[ 7.767086] EXT4-fs (sda6): re-mounted. Opts: (null)
[ 7.833123] EXT4-fs (sdf1): mounted filesystem with ordered data mode. Opts: (null)
[ 7.842508] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null)
[ 7.855840] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null)
Which also shows no mount options if i intrepid this correctly.
I suspect there is something wrong with my fstab file (permissions, typo, etc).
When googling, the only answer seems to be sudo mount -a
.
Finally my question is this. How can I check this without sudo?
В моей статье «Проверка файловой системы на ошибки с помощью fsck на Linux» я расскажу как можно проверить файловую систему на вашей ОС в Linux.
Некоторым системам необходим пароль root чтобы запустить fsck или других аналогичных утилит, когда не могут загрузить полностью ОС. В этом случае –стоит выполнить проверку диска загрузившись в single-user mode , либо – загрузившись с другого диска.
Fsck расшифровывается как «файловая система Проверка целостности» (file system consistency check). На большинстве систем, Fsck запускается во время загрузки, если определенные условия.
Сам Fsck команда взаимодействует с соответствующей файловой системой конкретных FSCK команд, созданной авторами файловой системы. Независимо от типа вашей файловой системы, Fsck как правило, имеет три режима работы:
- Проверка на наличие ошибок и подсказывает пользователю интерактивное решение, как решить индивидуальные проблемы;
- Проверка на наличие ошибок и постарается автоматически исправить все ошибки;
- Проверка на наличие ошибок без возможности восстановить их, но тогда выдаст ошибки на стандартный вывод.
Код выхода возвращается FSCK это уникальный номер, представляющего собой сумму следующих значений состояния:
0 — Без ошибок (No errors ).
1 — Исправлены ошибки файловой системы(Filesystem errors corrected).
2 — Система должна быть перезагружена (System should be rebooted).
4 — Ошибки файловой системы оставили без изменений (Filesystem errors left uncorrected).
8 — Эксплуатационная ошибка (Operational error).
16 — Ошибки при использовании или синтаксические ошибки (Usage or syntax error).
32 — Fsck отменен по запросу пользователя (Fsck canceled by user request).
128 — Ошибка общей библиотеки (Shared-library error).
Код выхода возвращается, когда несколько файловых систем которая проверяется побитовое ИЛИ (OR) для каждой файловой системы, которая проверяется.
В действительности, Fsck — это просто фронт-энд для различных проверочных утилит для файловых систем (fsck.fstype), которые доступны на Linux.
Файловая система для конкретных проверок ищет сначала в /sbin, а затем в /etc/fs и /etc/, и, наконец в директориях, перечисленных в переменной PATH (среда переменного кружения).
Прочитайте мануал для конкретных страниц проверки, например, чтобы узнать больше о конкретных проверок для ext3 FSCK, выполните:
$ man fsck.ext3
Опции FSCK.
Основные Опции.
-l
Блокировка целого дискового устройства эксклюзивным flock. Этот параметр может быть использован только с одного устройства (это означает, что -A и -l являются взаимоисключающими). Эта опция рекомендуется, когда несколько экземпляров FSCK выполняются в то же время. Параметр игнорируется, когда используется для нескольких устройств или для невращающихся дисков. Fsck не блокируется базовые устройства при выполнении проверки сложенных устройств (например, MD или DM); эта функция еще не реализована.
-s
Сериализация FSCK операций. Это отличная идея, если вы проверяете несколько файловых систем в интерактивном режиме. (Примечание. E2fsck работает в интерактивном режиме по умолчанию. Чтобы запустить e2fsck в не-интерактивном режиме, необходимо указать -p или -a, если вы хотите чтобы все ошибки исправлялись автоматически используйте опцию -n если вы не делаете.)
-t
Задает тип (ы) файловой системы которые должны быть проверены. Когда флаг -A, используется только файловые системы, которые соответствуют fslist проверяются. Fslist параметр разделенный запятыми список файловых систем и опционов спецификаторов. Если ни один из файловых систем в fslist не начинается с оператора отрицания (OR или !), то только те, которые перечислены файловые системы будут проверены.
Опции спецификаторы могут быть включены раздельными запятыми в fslist. Они должны иметь формат opts=fs-option. Если спецификатор присутствует, то только файловые системы, которые содержат FS-option в их опциях монтирования области /etc/fstab будут проверены. Если спецификатор используется с отрицанием, то только те файловые системы, которые не имеют FS-option в их опции монтирования области /etc/fstab будут проверены.
Например, если OPTS = ро появляется в fslist, то только файловые системы, перечисленные в/etc/fstab с возможностью ро будут проверены.
Как правило, тип файловой системы выводится с помощью функции поиска для filesys в файле /etc/fstab и используя соответствующую запись. Если тип не может быть выведен, и есть только одна файловая система в качестве аргумента для опции -t, Fsck будет использовать указанный тип файловой системы. Если этот тип не доступен, то тип по умолчанию файловая система (в настоящее время ext2) не используется.
-A
Поиск в файле /etc/fstab и программа попытаться проверить все файловые системы за один проход. Эта опция обычно используется из файла инициализации /etc/rc, вместо нескольких команд для проверки единой файловой системы.
Корневая файловая система будет сначала проверяется, если опция -P не указана (смотрите ниже). После этого файловые системы будут проверяться в порядке, установленном в поле fs_passno (в шестом)в файле /etc/fstab. Файловые системы со значением fs_passno 0 пропускаются и не проверяются вообще. Файловые системы со значением fs_passno больше нуля будут проверены в порядке, файловых систем ( Наименьшее число в fs_passno проверяется в первую очередь).
Если существует несколько файловых систем с одинаковым числом, Fsck будет пытаться проверить их параллельно, хотя это позволит избежать запуска нескольких проверок файловой системы на одном физическом диске.
Fsck не проверяет сложенные устройств (рейды, DM-склеп …) параллельно с любым другим устройством. Смотрите ниже для установки FSCK_FORCE_ALL_PARALLEL для файловой системы используется определения зависимостей между устройствами.
Таким образом, очень распространенная конфигурация в файле /etc/fstab для установки корневой файловой системы имеет значение fs_passno из 1 и установить все другие файловые системы имеют значение fs_passno 2. Это позволит запустить проверку Fsck для автоматического запуска файловой системы параллельно.
Системные администраторы могут не использовать эту конфигурацию, если они должны избежать многочисленных проверок файловой системы которые работают параллельно по некоторым причинам.
Fsck обычно не проверяет, действительно ли существует устройство перед вызовом зависящих от файловой системы проверки. Следовательно, не существующие устройства могут привести систему в режим ремонта файловой системы во время загрузки, если файловая система будет выполнять конкретные проверки и они будет возвращать фатальную ошибку.
/etc/fstab опцию монтирования nofail могут быть использованы, чтобы пропустить в Fsck несуществующие устройства. Fsck также пропускает несуществующие устройства, которые имеют особый тип файловой системы автоматически.
-C [fd]
Показать завершения / индикаторы выполнения для этих проверок файловых систем (в настоящее время только для ext2 и ext3), которые поддерживают их. Fsck будет управлять проверкой файловой системы так, что только один из них будет отображать индикатор выполнения. С графическим интерфейсом пользователя можно указать дескриптор файла fd, в этом случае информация о ходе выполнения будет отправлена в дескриптор файла.
-M
Не проверять смонтированные файловые системы и вернуть код завершения 0, для смонтированных файловых систем.
-N
Ничего не делать, просто показывает, что должно быть сделано.
-P
Когда опция -A устанавливается, то fsck проверяет корневую файловую систему параллельно с другими файловыми системами. Это не очень безопасно, чтобы делать так, т.к если корневая файловая система находится под e2fsck, то исполняемый файл может быть поврежден!
Эта опция в основном предназначены для тех администраторов, которые не хотят перераспределить корневую файловую систему, чтобы быть маленькой и компактной (на самом деле правильное решение).
-R
При проверке всех файловых систем с флагом -A, пропускать корневую файловую систему. (Это полезно в случае когда корневая файловая система уже смонтирована для чтения и записи.)
-T
Не показывать название при запуске.
-V
Подробный вывод, в том числе всех команд конкретной файловой системы , которые выполняются.
Специальные параметры для файловой системы.
Параметры, которые не понимают FSCK передаются в файловой системе конкретной проверкой. Эти опции не должны принимать аргументы, т.к нет никакого способа для Fsck, чтобы иметь возможность должным образом угадать, какие параметры имеют аргументы, а какие нет.
Параметры и аргументы, которые следуют — рассматриваются как файловая система конкретных вариантов, которые будут переданы в файловой системе конкретной проверки.
Пожалуйста, обратите внимание, что Fsck не предназначен для передачи сколь угодно сложных вариантов файловой системы, конкретных проверок. Если вы делаете что-то сложное, пожалуйста, просто выполните конкретную проверку напрямую для файловой системы.
Хотя не гарантируется, что следующие параметры поддерживаются большинством файловых систем:
-a
Автоматическое восстановление файловой системы без каких-либо вопросов (используйте эту опцию с осторожностью). Обратите внимание, что e2fsck поддерживает -a только для обратной совместимости. Эта опция отображается на e2fsck-х с опцией -p, которая является безопасной в использовании, в отличие от опции -a.
-n
Для некоторых файловых систем конкретных проверок, опция -n вызовет fs-specific FSCK и тем самым данная опция говорит о отказе от попыток исправить все проблемы, но просто сообщать о таких проблемах в стандартный вывод.
В частности, fsck.reiserfs не будет сообщать любые повреждения при использовании этих варианта.
fsck.minix браузер не поддерживает параметр -n вообще.
-r
Интерактивный ремонт файловой системы (спросит подтверждение).
Примечание: Как правило, плохая идея использовать эту опцию, если несколько FSCK в настоящее время работают параллельно. Также обратите внимание, что это поведение для E2fsck по умолчанию; он поддерживает эту опцию только для причин обратной совместимости.
-y
Для некоторых файловых систем конкретная проверка, -у — этот вариант вызовет fs-specific Fsck которая всегда пытаться автоматически исправить все обнаруженные и поврежденное в файловой системы. Иногда эксперт может быть в состоянии сделать лучше запустить FSCK вручную. Обратите внимание, что не все файловые системы конкретных проверок поддерживают этот вариант. В частности, fsck.minix и fsck.cramfs не поддерживают опцию -y.
Для удобства – настроим сеть:
# ifconfig eth0 inet 77.120.106.** netmask 255.255.255.0 # route add default gw 77.120.106.1 eth0
В ОС — Linux уже имеется утилита FSCK («Проверка системных файлов») для проверки файловой системы.
Синтаксис выглядит следующим образом, есть необходимость проверить и при необходимости отремонтировать одну или несколько файловых систем Linux:
# fsck Fs-Name-Here # fsck /dev/xyz # fsck /home # fsck.ext3 /dev/hdc1 # fsck.ext2 /dev/flash/device/name
Fs-Name-Here -может быть одним из следующих:
Имя устройства — (e.g. /dev/hda1, /dev/sda2, /dev/md0, /dev/vg1/volume_1).
Точка монтирования — (e.g. /var, /home).
Метка ext2 — (e.g. LABEL=home ).
UUID спецификатор — (e.g. UUID=8536abf2-44c3-5a90-34b3-bfc23456f6bd).
Готовые примеры.
Во-первых, файловая система должна быть демонтирована. Вы не можете восстановить его, пока он работает, но для начала перейдем в init 1:
# init 1
Выполняем проверку, чтобы узнать какие диски и какие разделы у меня имеются:
# fdisk -l
Далее, выполним проверку чтобы узнать тип файловой системы:
# file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext4 filesystem data (needs journal recovery) (extents) (huge files)
Далее, демонтировать файловую систему, например, если это /home (/dev/sda3) файловая система введите команду:
# umount /home
Или
# umount /dev/sda1
Можно вывести, что можно выполнить для данной ФС:
# fsck -N /dev/sda1
fsck from util-linux-ng 2.17.2 [/sbin/fsck.ext4 (1) -- /boot] fsck.ext4 /dev/sda1
Например, запустим проверку целостности ФС с исправлением всех ошибок в автоматическом режиме:
# fsck.ext4 -y /dev/sda1
e2fsck 1.41.12 (17-May-2010) /dev/sda1 is mounted. e2fsck: Cannot continue, aborting.
У меня данный раздел примонтирован, нужно его отмонтировать и выполнить заново данную команду:
# umount /dev/sda1
Отмонтировали, теперь выполняем проверку:
# fsck.ext4 -y /dev/sda1
Вот что получили:
e2fsck 1.41.12 (17-May-2010) /dev/sda1: clean, 64/128016 files, 148908/512000 blocks
Наконец, запустите FSCK на разделе, введите следующую команду:
# fsck /dev/sda3
Однако не забудьте указать тип файловой системы, используя опцию -t. Fsck по умолчанию предполагает, файловую систему ext2:
# fsck -t ext3 /dev/sda3
Или для ext3:
# fsck.ext3 /dev/sda3
Или для ext4:
# fsck.ext4 /dev/sda5
Если вы не знаете, какай тип файловой системы у вас, то выполните команду которая будет отображать тип монтирования файловой системы:
$ mount
Если какие-либо файлы восстановлены, то они размещаются в /home/lost+found, FSCK команды.
Переходим (используем) на multiuser mode, выполнив:
# init 3
Автоисправление файловая системы при обнаружении ошибок
В ходе проверки файловой системы, если ошибки обнаружены, вы можете получить «FSCK», чтобы отремонтировать в автоматическом режиме вашу файловую систему, нужно к команде добавить флаг «-a». Например:
$ fsck -a /dev/sda1
Аналогично, используя флаг «-y» можете получить такую же работу:
# fsck -y /dev/sda1
Проверка всех файловых систем за один проход
Если есть несколько файловых систем на вашем ПК, то можно проверить все, выполнив команду fsck с флагом «-А». Пример:
# fsck -A
Что он будет делать, чтобы захватить все записи файловой системы с /etc/fstab и сканировать их на наличие ошибок. Вы можете использовать его вместе с «-R» и флагом «-y», чтобы предотвратить его сканирования файловую систему root и исправить все ошибки, если оно имеется:
# fsck -AR -y
Исключение проверки на смонтированной файловой системе
Как упоминалось ранее, Fsck не может быть запущен на смонтированной файловой системе. Если вы используете флаг -A для проверки всех файловых систем, и некоторые из них установлены, вы можете повредить эти файловые системы.Способ преодолеть это использовать флаг «-M», чтобы предотвратить его от проверки в установленной системы.
Например, выполнив команду
# fsck -M /dev/sdc1
ничего не возвращает и код возврата 0 (означает «нет ошибки»). Сканирования не было сделано вообще, так как все файловые системы монтируются. По этому, нужно отмонтировать данный раздел и выполнить команду заново.
Определение типа файловой системы
Есть моменты, когда вы просто хотите проверить файловую систему определенного типа, скажем, ext2. Вы можете воспользоваться флагом -t, чтобы указать тип файловой системы, чтобы проверить. Например, команда
$ fsck -t ext4 /dev/sdc1
будет сканировать внешний жесткий диск, только если он находится в формате ext4. Кроме того, вы можете комбинировать с флагом «-A» для сканирования всех файловых систем определенного типа:
$ fsck -A -t ext4 -y
Force fsck запуск каждый раз при загрузке
По умолчанию, в Ubuntu будет работать FSCK после каждых 30 bootups, но если вы хотите, чтобы система выполняла «FSCK» каждый раз когда она загружается, то все что вам нужно сделать, это создать пустой файл «звонок» «forcefsck» и поместите его в корневую папку. Это уведомит ОС, о там чтобы она выполнила «FSCK» и начала проверять файловую систему каждый раз во время загрузки:
$ sudo touch /forcefsck
Чтобы изменить частоту проверки, вы можете использовать команды «tune2fs». Следующая команда дает указание системе запустить «FSCK» после каждых 30 загрузок:
# tune2fs -c 30 /dev/sdaX
Или можно использовать опцию «-f» :
# fsck /dev/sda1 -f
Избегать ремонта, но сообщать о проблемах на стандартный вывод с помощью опции -n
Можно печатать все обнаруженные проблемы в стандартный вывод без ремонта в файловой системе, используя FSCK с опцией «-n»:
# fsck -n /dev/sda1
Использование FSCK с графическим интерфейсом
Для Debian/Ubuntu/Mint можно установить программу:
$ sudo apt-get install gparted
На этом, моя статья «Проверка файловой системы на ошибки с помощью fsck на Linux» подошла к завершению.
fsck
(проверка файловой системы) — это утилита командной строки, которая позволяет выполнять проверки согласованности и интерактивное исправление в одной или нескольких файловых системах Linux. Он использует программы, специфичные для типа файловой системы, которую он проверяет.
Вы можете использовать fsck
команду для восстановления поврежденных файловых систем в ситуациях, когда система не загружается или раздел не может быть смонтирован.
Как пользоваться fsck
Команда fsck
принимает следующую общую форму:
fsck [OPTIONS] [FILESYSTEM]
Только root или пользователи с sudo
привилегиями могут очистить буфер.
Если FILESYSTEM
в качестве аргумента указано no , fsck
проверяются устройства, указанные в fstab
файле.
Никогда не запускайте fsck
на смонтированных разделах, так как это может повредить файловую систему. Прежде чем пытаться проверить или восстановить файловые системы, всегда делайте unmount
это сначала.
Команда fsck
является оберткой для различных контроллеров файловой системы Linux ( fsck.*
) и принимает различные параметры в зависимости от типа файловой системы.
Проверьте справочные страницы для получения дополнительной информации о конкретном контролере. Например, чтобы просмотреть доступные параметры fsck.ext4
, введите:
man fsck.ext4
Восстановление поврежденной файловой системы
Простейший вариант использования fsck
команды — восстановить поврежденную файловую систему ext3 или ext4 без полномочий root.
-
Если вы не знаете имя устройства, использовать
fdisk
,df
или любой другой инструмент , чтобы найти его. -
Размонтировать устройство:
sudo umount /dev/sdc1
-
Запустите
fsck
для восстановления файловой системы:sudo fsck -p /dev/sdc1
-p
Опция указываетfsck
автоматически исправить все проблемы , которые могут быть надежно закреплены без вмешательства пользователя. -
После восстановления файловой системы смонтируйте раздел:
sudo mount /dev/sdc1
Восстановление корневой файловой системы
fsck
не может проверить корневую файловую систему на работающей машине, потому что она не может быть размонтирована.
Если вы хотите проверить или восстановить корневую файловую систему, у вас есть несколько вариантов в вашем распоряжении. Вы можете настроить fsck
запуск при загрузке, загрузить систему в режиме восстановления или использовать live CD.
Для запуска fsck
в режиме восстановления:
- Войдите в меню загрузки и выберите «Дополнительные параметры»
- Выберите режим восстановления и затем «fsck».
- Когда будет предложено перемонтировать корневую файловую систему, выберите «Да».
- После этого возобновите нормальную загрузку.
Чтобы запустить fsck
из живого дистрибутива:
-
Загрузите дистрибутив в режиме реального времени.
-
Используйте
fdisk
или,parted
чтобы найти имя корневого раздела. -
Откройте терминал и запустите:
sudo fsck -p /dev/sda1
-
После этого перезагрузите дистрибутив и загрузите вашу систему.
Проверьте файловые системы при загрузке
В большинстве дистрибутивов Linux fsck
запускается во время загрузки, если файловая система помечена как грязная или после определенного количества загрузок или времени.
Чтобы увидеть текущий счетчик монтирования, проверить номер частоты, интервал проверки и время последней проверки для определенного раздела, используйте tune2fs
инструмент:
sudo tune2fs -l /dev/sdc1 | grep -i 'last checked|mount count'
Mount count: 292
Maximum mount count: -1
Last checked: Tue Jul 24 11:10:07 2018
Check interval: 0 (<none>)
- «Максимальное количество монтирований» — это количество монтирований, после которых будет проверяться файловая система. Значение
0
или-1
означает, чтоfsck
никогда не будет работать. - «Интервал проверки» — это максимальное время между двумя проверками файловой системы.
Если, например, вы хотите запускать fsck
после каждых 25 загрузок (монтирования), введите:
sudo tune2fs -c 25 /dev/sdc1
Вы также можете установить максимальное время между двумя проверками. Например, чтобы установить один месяц, вы должны выполнить:
sudo tune2fs -i 1m /dev/sdc1
Чтобы заставить fsck
работать во время загрузки на дистрибутивах SystemD, передайте следующие параметры загрузки ядра:
fsck.mode=force
fsck.repair=yes
В старых дистрибутивах fsck
будет работать при загрузке, если /forcefsck
файл присутствует:
sudo touch /forcefsck
fstab
Параметры
fstab
fstab
это файл конфигурации, который сообщает системе, как и где монтировать разделы.
/etc/fstab
Файл содержит список записей в следующем виде:
/etc/fstab
# [File System] [Mount Point] [File System Type] [Options] [Dump] [PASS]
/dev/sda1 / ext4 defaults 0 1
/dev/sda2 /home ext4 defaults 0 2
server:/dir /media/nfs nfs defaults 0 0
Последний, шестой столбец ( [PASS]
) — это параметр, который контролирует порядок, в котором проверки файловой системы выполняются во время перезагрузки.
0
— Не проверяй.1
— Файловые системы должны проверяться первыми и по одному за раз.2
— Все остальные файловые системы, которые проверяются позже и, возможно, параллельно.
Корневая файловая система должна иметь значение 1
, а все остальные файловые системы, которые вы хотите проверить, должны иметь значение 2
.
Вывод
fsck
является инструментом командной строки для проверки и при необходимости восстановления файловых систем Linux
Чтобы узнать больше о fsck
команде, посетите страницу руководства fsck или введите man fsck
свой терминал.
Состояние перевода: На этой странице представлен перевод статьи fsck. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.
fsck (file system check) — утилита для проверки и восстановления файловых систем Linux. Проверка файловых систем разных физических дисков выполняется параллельно, что позволяет значительно её ускорить (см. fsck(8)).
Процесс загрузки Arch включает в себя процедуру fsck, поэтому проверка файловых систем на всех носителях выполняется автоматически при каждой загрузке. По этой причине обычно нет необходимости выполнять её через командную строку.
Проверка при загрузке
Механизм
Существует два возможных варианта:
- mkinitcpio предоставляет хук
fsck
для проверки корневой файловой системы перед монтированием. Корневой раздел должен быть смонтирован на запись и чтение (параметр ядраrw
) [1]. - systemd проверяет все файловые системы, которым задано значение fsck больше 0 (либо параметром fstab, либо в пользовательском файле юнита). Корневая файловая система изначально должна быть смонтирована только на чтение (параметр ядра
ro
), и лишь позже перемонтирована на чтение-запись в fstab. Имейте в виду, что опция монтированияdefaults
подразумеваетrw
.
Рекомендуется по умолчанию использовать первый вариант. Если вы устанавливали систему в соответствии с руководством, то использоваться будет именно он. Если вы хотите вместо этого использовать вариант 2, то удалите хук fsck
из mkinitcpio.conf
и задайте параметр ядра ro
. Кроме того, параметром ядра fsck.mode=skip
можно полностью отключить fsck для обоих вариантов.
Принудительная проверка
Если вы используете base
-хук mkinitcpio, то можно принудительно выполнять fsck во время загрузки, задав параметр ядра fsck.mode=force
. Проверена будет каждая файловая система на машине.
В качестве альтернативы можно воспользоваться службой systemd systemd-fsck@.service(8), которая проверит все настроенные файловые системы, которые не были проверены в initramfs. Тем не менее, проверка корневой файловой системы этим способом может стать причиной задержки в время загрузки, поскольку файловая система будет перемонтироваться.
Примечание: Если вы используете другие дистрибутивы GNU/Linux, то учтите, что старые методы проверки вроде файлов forcefsck
для каждой файловой системы или команды shutdown
с флагом -F
будут работать только с SysVinit и ранними версиями Upstart; работать с systemd они не будут. Решение, предложенное выше, является единственным рабочим для Arch Linux.
Советы и рекомандации
Восстановление повреждённых блоков
Следующая команда позволяет восстановить повреждённые участки файловых систем ext2/ext3/ext4 и FAT:
Важно: Разрешение на восстановление запрошено не будет. Подразумевается, что вы уже ответили «Да», запустив команду на выполнение.
# fsck -a
Интерактивное восстановление повреждённых блоков
Полезно в том случае, если файлы на загрузочном разделе были изменены, а журнал не обновился соответствующим образом. В этом случае размонтируйте загрузочный раздел и выполните:
# fsck -r диск
Изменение частоты проверки
Примечание: Команды tune2fs и dumpe2fs работают только с файловыми системами ext2/ext3/ext4.
По умолчанию fsck проверяет файловую систему каждые 30 загрузок (вычисляется отдельно для каждого раздела). Чтобы изменить частотку проверок, выполните:
# tune2fs -c 20 /dev/sda1
Здесь 20
— число загрузок между проверками. Если задать значение 1
, то проверка будет выполняться при каждой загрузке, а значение 0
отключит сканирование.
Текущую частоту проверок и опции монтирования конкретного раздела можно узнать командой:
# dumpe2fs -h /dev/sda1 | grep -i 'mount count'
Параметры fstab
fstab — файл системных настроек, который используется для передачи ядру Linux информации о том, какие разделы (файловые системы) монтировать и в какие точки дерева файловой системы.
Записи в /etc/fstab
выглядят примерно следующим образом.
/dev/sda1 / ext4 defaults 0 1 /dev/sda2 /other ext4 defaults 0 2 /dev/sda3 /win ntfs-3g defaults 0 0
Шестое поле каждой строки (выделено) — опция fsck:
0
— не проверять.1
— файловая система (раздел), которая должна быть проверена первой; для корневого раздела (/
) должно использоваться именно это значение.2
— прочие файловые системы, которые должны быть проверены.
Решение проблем
Не запускается fsck для отдельного раздела /usr
- Убедитесь, что используются соответствующие хуки в
/etc/mkinitcpio.conf
, а также что вы не забыли пересоздать initramfs после последнего редактирования этого файла. - Проверьте fstab! Только корневому разделу должен быть задан параметр
1
в последнем поле, все остальные разделы должны иметь либо2
, либо0
. Также проверьте файл на наличие иных опечаток.
ext2fs: no external journal
Иногда (например, из-за внезапного отключения питания) файловые системы ext(3/4) могут повредиться так сильно, что восстановить их обычным способом не удастся. Как правило, при этом fsck выводит сообщение о том, что не удалось найти журнал (no external journal). В этом случае выполните команды ниже.
Отмонтируйте раздел от соответствующего каталога:
# umount каталог
Запишите на раздел новый журнал:
# tune2fs -j /dev/раздел
Запустите fsck, чтобы восстановить раздел:
# fsck -p /dev/раздел
Я модифицировал /etc/fstab
.
Я проверил новые устройства и могу смонтировать их с помощью mount
команды.
Как я могу проверить сделанные изменения /etc/fstab
?
Ответы:
Вы можете просто запустить: mount -a
-a монтировать все файловые системы (указанных типов), упомянутые в fstab.
Эта команда смонтирует все (еще не смонтированные) файловые системы, упомянутые в fstab, и используется при запуске системного скрипта во время загрузки.
Команда mount принимает --fake
или -f
для краткости. Следующая команда должна делать то, что вам нужно:
mount -fav
Следующее находится в документации для -f
варианта:
Causes everything to be done except for the actual system call; if it's not obvious, this ``fakes'' mounting the filesystem. This option is useful in conjunction with the -v flag to determine what the mount command is trying to do.
(Обратите внимание, что это Linux — проверьте перед использованием в другом месте: FreeBSD использует -f
для ‘force’ — совершенно противоположное значение.)
sudo findmnt --verify --verbose
это лучший способ, который я нашел
Я нашел это / проблему /, но решение не соответствовало моим требованиям.
При перезагрузке с любыми недопустимыми записями в / etc / fstab, такими как отсутствующие файловые системы, которые fsck не может проверить; система не сможет загрузиться. Это может быть гораздо сложнее, если у вас есть безголовый ящик.
Это мое решение для проверки / etc / fstab, чтобы избежать этой проблемы с загрузкой:
# cat /usr/local/bin/check-fstab-uuid-entries.sh
#!/usr/bin/env bash
for x in $(grep ^UUID /etc/fstab|cut -d -f 1|cut -d = -f 2)
do
if [ ! -h /dev/disk/by-uuid/$x ];then
echo $(grep $x /etc/fstab) ..... not found
fi
done
mount -a — это безопасный метод проверки / etc / fstab, в противном случае неправильный ввод может сломать систему
Также рекомендуется сохранить резервную копию оригинального файла / etc / fstab. это может быть скопировано в домашний каталог root
Обратите внимание, что если вы добавите файл подкачки в свой fstab, mount -a
он не будет включен : вы захотите запустить swapon -a
.
TBH, даже фальшивый монтаж, не может безопасно проверить fstab для плохих записей типа fs.
у вас могут быть записи с правильными uuid, каталогами и т. д., но если вы укажете несуществующий тип FS, это остановит загрузку в следующий раз.
[root @ grumpy ~] # grep backup / etc / fstab UUID = 5ed48e5e-7251-4d49-a273-195cf0432a89 / mnt / резервное копирование, nodiratime, xfs по умолчанию, nodev, nosuid 0 0 [root @ grump ~] # [root @ grumpy ~] # mount -fav | резервное копирование grep / mnt / backup: успешно смонтирован [root @ grumpy ~] #