Не удается отформатировать файловую систему локальной обратной петли.

Вопрос или проблема

Я пытаюсь создать 40GB файловую систему ext3 на локальном loopback устройстве. Эта loopback файловая система хранится на моем NAS, который подключен к машине Ubuntu Precise 12.04 x64 с использованием NFS. Машина имеет права на чтение и запись на NAS.

Я создал 40GB файл, выполнив команду dd if=/dev/zero of=/media/vps/Ironman.ext3 bs=1024 count=40000000. Файл был успешно создан, поэтому я монтировал его как loopback систему в /dev/loop0, выполнив команду sudo losetup /dev/loop0 /media/vps/Ironman.ext3.

Сейчас я пытаюсь отформатировать его как файловую систему ext3, выполнив команду sudo mkfs -t ext3 -q /media/vps/Ironman.ext3. Однако, при выполнении этой команды я получаю следующий вывод:

mke2fs 1.42 (29-Nov-2011)
/media/vps/Ironman.ext3 is not a block special device.
Продолжить в любом случае? (y,n) y
/media/vps/Ironman.ext3: Permission denied while setting up superblock

Как я могу обойти это и отформатировать loopback устройство как ext3?

Обновление 1

Я только что попробовал отформатировать, используя loopback устройство, как показано ниже. Однако я все еще получаю отказ в доступе. Вы можете увидеть в первом наборе, что файл уже был смонтирован.

danielsgroves@precise64:/dev$ sudo losetup /dev/loop0
/dev/loop0: [0015]:26378243 (/media/vps/Ironman.ext3)
danielsgroves@precise64:/dev$ sudo mkfs -t ext3 -q /dev/loop0
/dev/loop0: Operation not permitted while setting up superblock

Обновление 2

С подробным выводом:

danielsgroves@precise64:/dev$ sudo mkfs -t ext3 -v /dev/loop0
mke2fs 1.42 (29-Nov-2011)
fs_types for mke2fs.conf resolution: 'ext3'
/dev/loop0: Operation not permitted while setting up superblock

Необходимо создать файловую систему на loop устройстве, а не на файле, который поддерживает loop устройство. (Именно об этом предупреждает mke2fs “не является специальным блочным устройством”.) Поддерживающий файл важен только для кода “loop устройства” в ядре, и вы не будете использовать его напрямую, кроме как в команде losetup. Ошибка “отказ в доступе” вполне возможно возникает потому, что вы пытаетесь напрямую изменить поддерживающий файл текущего активного loop устройства; это может вызвать всевозможные проблемы, поэтому ядро вероятно (разумно) не позволяет вам это делать, даже будучи суперпользователем.

После выполнения losetup, используйте sudo mkfs -t ext3 -q /dev/loop0, и все должно заработать. Затем смонтируйте /dev/loop0 там, где вы предпочитаете (например, sudo mount /dev/loop0 /media/ironman).

Это станет более ясным, если вы рассмотрите другие параметры, доступные для losetup, включая --offset и --sizelimit (проверьте man-страницу для получения дополнительных примеров).

Возможно, это не было так в 2013 году, но в наши дни mkfs.ext* может выполняться без привилегий на файле. Поэтому отформатируйте файл перед созданием loop устройства, затем создайте loop устройство и смонтируйте его.

Хорошо, это сообщение очень старое, но не имеет ответа.

Я только что столкнулся с той же проблемой. Проблема для меня заключалась в том, что по NFS у пользователя root нет особых прав на чтение и запись файла.

Один из вариантов решения – изменить владельца файла на root, или вы можете добавить его в группу root и сделать его доступным для записи группой.

Ответ или решение

Если вы сталкиваетесь с проблемой при форматировании локальной файловой системы loopback в Ubuntu Precise 12.04 x64, вероятно, причина кроется в правах доступа и особенностях работы с сетевыми файловыми системами, такими как NFS. Давайте подробно рассмотрим, как можно решить эту задачу.

Шаги по решению проблемы

  1. Создание файла для файловой системы: Вы уже успешно создали файл объёмом 40 ГБ с помощью команды dd. Этот файл будет использоваться как основа для создания системы loopback.

  2. Настройка loopback устройства: Вы правильно использовали losetup для ассоциации вашего файла с устройством /dev/loop0. На этом этапе важно убедиться, что ваше NAS хранилище позволяет все необходимые операции с файлом, включая чтение и запись от имени root.

  3. Форматирование через loopback устройство: Основная ошибка, возникающая при выполнении команды mkfs, связана с правами доступа. Проблема может быть связана с NFS, который по умолчанию может ограничивать полномочия root-пользователя. Для выполнения форматирования следует использовать команду: sudo mkfs -t ext3 /dev/loop0. Это позволит вам обойти предупреждение "не является специальным блочным устройством".

Важные рекомендации

  • Права доступа: Убедитесь, что пользователь root имеет право на запись в файл на вашем NAS. Это можно сделать, изменив владельца файла на root с помощью: sudo chown root:root /media/vps/Ironman.ext3, или установив нужные права доступа: sudo chmod 770 /media/vps/Ironman.ext3, чтобы предоставить возможность записи.

  • Проблемы с NFS: Убедитесь, что параметры монтирования NFS допускают использование root-полномочий. Вы можете сделать это, добавив no_root_squash в файл конфигурации экспорта на сервере, где хранится файл. Это позволит root-пользователю клиентской машины сохранять свои права в файловой системе NFS.

  • Форматирование напрямую в файл: Если проблем не удалось избежать, попробуйте форматировать файл локально, а затем переместите его обратно на NFS-хранилище.

Заключение

При решении данной задачи важно учитывать особенности и ограничения, связанные с использованием сетевых хранилищ и правами доступа. Правильные настройки прав пользователей и монтирования помогут вам успешно создать и использовать локальную файловую систему на основе loopback устройства. Надеюсь, эти рекомендации помогут вам успешно справиться с проблемой.

Оцените материал
Добавить комментарий

Капча загружается...