РедактироватьЭтот старый вопрос, возможно, не стоит читать, потому что решение простое. Я использовал checkdisk на всем диске, а не на разделе этого диска, вот и все. matnagel/Редактировать
Я использую экземпляр сервера Ubuntu 8.04 с виртуальным диском объемом 8 ГБ на VMware 1.0.9.
Для обслуживания диска я сделал копию виртуального диска (сделав копию 2 файлов vmdk sda на остановленной виртуальной машине на хосте) и добавил ее к исходной виртуальной машине. Теперь у этой виртуальной машины есть свой исходный виртуальный диск sda плюс копия 1:1 (sdd). Есть 2 дополнительных диска sdb и sdc, которые я игнорирую.)
Я ожидал, что sdb не будет смонтирован при запуске vm. Поэтому я пытаюсь выполнить ext2 fsck на sdd из работающей vm, но fsck сообщает, что sdb был смонтирован.
$ sudo fsck.ext3 -b 8193 /dev/sdd
e2fsck 1.40.8 (13-Mar-2008)
fsck.ext3: Device or resource busy while trying to open /dev/sdd
Filesystem mounted or opened exclusively by another program?
Команда «mount» не сообщает мне, что sdd смонтирован:
$ sudo mount
/dev/sda1 on / type ext3 (rw,relatime,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
/sys on /sys type sysfs (rw,noexec,nosuid,nodev)
varrun on /var/run type tmpfs (rw,noexec,nosuid,nodev,mode=0755)
varlock on /var/lock type tmpfs (rw,noexec,nosuid,nodev,mode=1777)
udev on /dev type tmpfs (rw,mode=0755)
devshm on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sdc1 on /mnt/r1 type ext3 (rw,relatime,errors=remount-ro)
/dev/sdb1 on /mnt/k1 type ext3 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw)
Когда я проигнорировал предупреждение и продолжил fsck, он сообщил о множестве ошибок.
Как мне это контролировать? Есть ли лучший способ выяснить, смонтирован ли sdd? Или как он "занят"? Как его тогда размонтировать? Как предотвратить автоматическое монтирование ubuntu. Или я что-то еще упускаю? Также из /var/log/syslog я не вижу, что он смонтирован, это последняя часть последовательности запуска:
kernel: [ 14.229494] ACPI: Power Button (FF) [PWRF]
kernel: [ 14.230326] ACPI: AC Adapter [ACAD] (on-line)
kernel: [ 14.460136] input: PC Speaker as /devices/platform/pcspkr/input/input3
kernel: [ 14.639366] udev: renamed network interface eth0 to eth1
kernel: [ 14.670187] eth1: link up
kernel: [ 16.329607] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/
kernel: [ 16.367540] parport_pc 00:08: reported by Plug and Play ACPI
kernel: [ 16.367670] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE]
kernel: [ 19.425637] NET: Registered protocol family 10
kernel: [ 19.437550] lo: Disabled Privacy Extensions
kernel: [ 24.328857] loop: module loaded
kernel: [ 24.449293] lp0: using parport0 (interrupt-driven).
kernel: [ 26.075499] EXT3 FS on sda1, internal journal
kernel: [ 28.380299] kjournald starting. Commit interval 5 seconds
kernel: [ 28.381706] EXT3 FS on sdc1, internal journal
kernel: [ 28.381747] EXT3-fs: mounted filesystem with ordered data mode.
kernel: [ 28.444867] kjournald starting. Commit interval 5 seconds
kernel: [ 28.445436] EXT3 FS on sdb1, internal journal
kernel: [ 28.445444] EXT3-fs: mounted filesystem with ordered data mode.
kernel: [ 31.309766] eth1: no IPv6 routers present
kernel: [ 35.054268] ip_tables: (C) 2000-2006 Netfilter Core Team
mysqld_safe[4367]: started
mysqld[4370]: 100124 14:40:21 InnoDB: Started; log sequence number 0 10130914
mysqld[4370]: 100124 14:40:21 [Note] /usr/sbin/mysqld: ready for connections.
mysqld[4370]: Version: '5.0.51a-3ubuntu5.4' socket: '/var/run/mysqld/mysqld.sock' port: 3
/etc/mysql/debian-start[4417]: Upgrading MySQL tables if necessary.
/etc/mysql/debian-start[4422]: Looking for 'mysql' in: /usr/bin/mysql
/etc/mysql/debian-start[4422]: Looking for 'mysqlcheck' in: /usr/bin/mysqlcheck
/etc/mysql/debian-start[4422]: This installation of MySQL is already upgraded to 5.0.51a, u
/etc/mysql/debian-start[4436]: Checking for insecure root accounts.
/etc/mysql/debian-start[4444]: Checking for crashed MySQL tables.
решение1
Да, вы правы, вы запускаете fsck на всем диске, а не на разделе. Чтобы проверить, смонтирована ли файловая система, вы можете проверить /etc/mtab, а также выполнить grep вывода lsof, чтобы убедиться, что ни один процесс не открыл ваш раздел.
решение2
Я только что понял, что напечатал
$ sudo fsck.ext3 /dev/sdd
который говорит о необходимости проверки всего диска, а не раздела: это должно быть
$ sudo fsck.ext3 /dev/sdd1
Думаю, это делает вопрос устаревшим. Я просто проверяю...
решение3
Для справки в будущем всегда проверяйте /proc/mounts
, так как mount
команда показывает только то, что находится в /etc/mtab
, что может не соответствовать действительности.
решение4
Проверьте /etc/fstab, убедитесь, что вы не используете /dev/sdd дважды.
Если это так, то при появлении запроса на ввод пароля root для входа в оболочку восстановления перемонтируйте / как rw:
монтировать -o перемонтировать -o rw /
создайте временный каталог монтирования для /fs или там, где находится ваш /etc/fstab (например, /tmp/root)
mkdir /tmp/корень
смонтируйте там свою корневую файловую систему
монтировать /dev/sd??? /tmp/root
отредактируйте ваш /etc/fstab
vi /tmp/root/etc/fstab
исправьте свою проблему, напишите об этом, перезагрузитесь....