помилка помилки: операція не підтримується


10

Під час бігу

fallocate -l 10G /path/to/file

Мені повернули таку помилку:

fallocate: file: fallocate failed: Operation not supported

Створення файлу за допомогою dd (якщо = / dev / zero або if = / dev / urandom) працює, але якщо я намагаюся створити великі файли розміром у десятки ГБ, це займе кілька годин.

Запуск Ubuntu 14.04. Використовуючи розділ ext4, вказуючи тип файлу, схоже, не змінюється результат.

Добре працює на моїх машинах CentOS6, тільки не Ubuntu.


яку файлову систему ви використовуєте?
g_p

Також оновіть нам тип файлу, який ви створюєте.
vembutech

Використовуючи ext4, тип файлу, мабуть, не має значення. Чи створюю я порожній файл, .txt, .img, я отримую ту ж помилку.
Джон Дж. Джонсон

Відповіді:


11

Якщо рідкі файли для вас нормальні (наприклад, ви хочете створити зображення, щоб заповнити його файловою системою), вони створюються в найкоротші терміни

100 Гб зайняти 3 мілісекунди:

# time dd if=/dev/zero of=tmptst.dat bs=1G seek=100 count=0
0+0 records in
0+0 records out
0 bytes (0 B) copied, 0,00037726 s, 0,0 kB/s

real    0m0.003s
user    0m0.000s
sys 0m0.002s

Отриманий файл:

# ls -lh tmptst.dat
-rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

Його справжній розмір на даний момент: 0 байт

# ls -lsh tmptst.dat
0 -rw-r--r-- 1 root root 100G 2015-01-22 16:39 tmptst.dat

Це стосувалося створення контейнера dm-crypt / LUKS, який працює за припущенням, що створення контейнера за допомогою / dev / urandom було б більш безпечним, ніж створення одного з / dev / zero та поступового заповнення його даними. З тих пір я навчився використовувати fallocate не вирішив би мою проблему незалежно, оскільки повільна швидкість була просто обмеженням того, наскільки швидко працює pRNG / dev / urandom, але я досі не маю уявлення, чому сам fallocate відмовляється працювати. Ура за відповідь, однак, прийнято, як я собі уявляю, після цього часу це найкраща відповідь, яку я отримаю ха-ха.
Джон Дж Джонсон

Цікаво, чи не вдасться випасти, щоб зробити те ж саме? Це було б для мене сенсом.
unfa

3

Якщо ви не дбаєте про вміст, але вам просто потрібні деякі дані,

Спочатку зробіть,

dd if=/dev/urandom of=tmp.txt bs=1M count=1

Це створить,

-rw-r--r-- 1 root root 1.0M Oct 17 00:30 tmp1.txt.

Потім, якщо ви хочете створити 10M-файл, використовуйте вищезгаданий файл для додавання кілька разів,

for i in {1..10}; do dd if=tmp.txt of=tmp1.txt bs=1M oflag=append conv=notrunc; done;

2

Я також зіткнувся з цією проблемою.

Здається, символічне посилання в шляху до каталогу є проблемою. спробуйте ту ж команду on / tmp і вона повинна працювати.

Мені вдалося подолати проблему, додавши до команди "fallocate" "-x". Це вимушений режим "posix", і він повинен тривати більше часу.

Навіть незважаючи на те, що файлова система була ext4, символічне посилання викликало помилку "не підтримується у цій файловій системі". Насправді, якщо я перейшов безпосередньо до імені каталогу (без будь-яких символічних посилань), виклик fallocate () справді спрацював.

A1: ніде не міститься символічних посилань у повному імені файлу, який ви створюєте.

A2: використовуйте '-x', хоча це займає більше часу.

b \ 375

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.