Вопрос или проблема
Я пытаюсь создать 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. Давайте подробно рассмотрим, как можно решить эту задачу.
Шаги по решению проблемы
-
Создание файла для файловой системы: Вы уже успешно создали файл объёмом 40 ГБ с помощью команды
dd
. Этот файл будет использоваться как основа для создания системы loopback. -
Настройка loopback устройства: Вы правильно использовали
losetup
для ассоциации вашего файла с устройством/dev/loop0
. На этом этапе важно убедиться, что ваше NAS хранилище позволяет все необходимые операции с файлом, включая чтение и запись от имени root. -
Форматирование через 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 устройства. Надеюсь, эти рекомендации помогут вам успешно справиться с проблемой.