Author Topic: Большие файлы в линух  (Read 12058 times)

0 Members and 1 Guest are viewing this topic.

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« on: January 20, 2005, 14:17:43 »
Привет всем.
Я тут обнаружил, что мой линух не может работать с файлами размером больше 2 Гб.
Стоит АСП 10 и ext3 в качестве файловой системы (тоже самое в redhat 7.3).
Что не поддерживает большие файлы - ядро или файловая система? И как это можно лечить?

Offline Syncro

  • Jr. Member
  • **
  • Posts: 62
  • Karma: +0/-0
Большие файлы в линух
« Reply #1 on: January 21, 2005, 12:35:59 »
Quote
Привет всем.
Я тут обнаружил, что мой линух не может работать с файлами размером больше 2 Гб.
Стоит АСП 10 и ext3 в качестве файловой системы (тоже самое в redhat 7.3).
Что не поддерживает большие файлы - ядро или файловая система? И как это можно лечить?
[snapback]625[/snapback]
вообще должен мочь, ну если не получается попробуй использовать XFS или ReiserFS файловые системы

Offline Terminator

  • Jr. Member
  • **
  • Posts: 80
  • Karma: +0/-0
    • Motor-club
Большие файлы в линух
« Reply #2 on: January 21, 2005, 13:09:28 »
Скорее всего всё упирается в возможности проги которая пишет этот большой файл.
Проблему в файлами >2Gb на extX решили давным давно.
Александр.

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Большие файлы в линух
« Reply #3 on: January 21, 2005, 13:13:58 »
Quote
Привет всем.
Я тут обнаружил, что мой линух не может работать с файлами размером больше 2 Гб.
Стоит АСП 10 и ext3 в качестве файловой системы (тоже самое в redhat 7.3).
Что не поддерживает большие файлы - ядро или файловая система? И как это можно лечить?
[snapback]625[/snapback]
У меня на ASPLinux 7.3 нормально на Ext3 существуют файлы более 2 Гб, например, образы DVD и /backup, все зависит от программы которая должна сама уметь создавать файлы больших размеров.

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Большие файлы в линух
« Reply #4 on: January 21, 2005, 17:08:51 »
Может это при работе с ftp? Просто я нарывался в свое врямя, что некоторые сервера (или клиенты я не разбирался) не могут возобновить докачку для файлов больше 2 Гиг.
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #5 on: January 24, 2005, 12:00:21 »
Quote
Может это при работе с ftp? Просто я нарывался в свое врямя, что некоторые сервера (или клиенты я не разбирался) не могут возобновить докачку для файлов больше 2 Гиг.
[snapback]635[/snapback]

Вообще то tar не смог создать архив. Точнее он его создал, но какой-то неправильный и не смог даже просмотреть. А потом система на каждое обращение к директории ругалась на этот файл. После удаления полученного файла посредством командной строки и только под рутом все восстановилось как было.


Offline gvozd

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Большие файлы в линух
« Reply #6 on: January 25, 2005, 11:42:09 »
Сейчас все объясню.

Изначально в посиксе был заложен размер файла до 2 Гб.
Но это стало неактуально и теперь можно делать файлы большего размера.

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

open("/home/vugluskr/dvd_rip.mpg", O_RDONLY | O_LARGEFILE);

Соответственно не все программы могут его указывать.

Теперь надо выяснить конкретно в чем косяк.
Для этого создай файл больше 2 гб чем-нибудь.

например вот этой программкой:

Code: [Select]

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


int main()
{
int fd = open("test.big", O_CREAT | O_WRONLY | O_LARGEFILE);

char buf[2048];
long long size_so_far = 0;

while(size_so_far < ((long long)1 << 32))
{
  write(fd, buf, 2048);
  size_so_far += 2048;
}

close(fd);

return 0;
}


компиллируется так: gcc src.cpp :).

Если успешно создаст файл в 4 Гб, то значит твой тар глючит.
Берешь его исходники и вставляешь выделенный жирным флажек в
тот open, который отвечает за сохранения файла на диск.

От так вот!

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #7 on: January 25, 2005, 13:19:33 »
Quote
Сейчас все объясню.

Изначально в посиксе был заложен размер файла до 2 Гб.
Но это стало неактуально и теперь можно делать файлы большего размера.

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

open("/home/vugluskr/dvd_rip.mpg", O_RDONLY | O_LARGEFILE);

Соответственно не все программы могут его указывать.

Теперь надо выяснить конкретно в чем косяк.
Для этого создай файл больше 2 гб чем-нибудь.

От так вот!
[snapback]672[/snapback]

Т.е. предлагается каждую программу которая не умеет открывать большие файлы собирать с таким флагом?
А не маразм ли это? Ведь для открытия файла используется системная библиотека? Не проще ли ее научить?
Или я что-то неправильно понимаю?
 

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Большие файлы в линух
« Reply #8 on: January 25, 2005, 17:51:12 »
Quote
Т.е. предлагается каждую программу которая не умеет открывать большие файлы собирать с таким флагом?
А не маразм ли это? Ведь для открытия файла используется системная библиотека? Не проще ли ее научить?
Или я что-то неправильно понимаю?
[snapback]674[/snapback]
Есть еще одна интимная подробность -- для работы с большими файлами надо использовать 64-битные числа, а не 32-х как это сделано по умолчанию (2^32 -- это как раз и будет 4 Гб). Соответственно, если вдруг системная библиотека начнет работать таким образом, то тут и будет маразм у приложений.

Хотя большинство пакетов уже в RH 7.3 и ASPL 7.3 прекрасно работаю с файлами больше 4 Гб.

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #9 on: January 26, 2005, 10:02:46 »
Quote
Есть еще одна интимная подробность -- для работы с большими файлами надо использовать 64-битные числа, а не 32-х как это сделано по умолчанию (2^32 -- это как раз и будет 4 Гб). Соответственно, если вдруг системная библиотека начнет работать таким образом, то тут и будет маразм у приложений.

Хотя большинство пакетов уже в RH 7.3 и ASPL 7.3 прекрасно работаю с файлами больше 4 Гб.
[snapback]679[/snapback]

Поробовал. Собрал тестовую прогу которая генерит текстовый файл объемом в 4 гига. Запустил. Прога отработала без ошибок.
Но вот ls говорит, что файл имеет размер примерно 2.2 гига. mc матерится на ширину трех экранов при обращении к директрории в которой лежит этот файл, и этом его не показывает и виснет. Кде при попытке посмотерь свойства файла наглухо завис, df показал что на диске занято на 6 гиг больше. 6 гиг освободилось после удаления файла.
Тестировалось на RH 7.3 и ASPL 10. (В последнем кде не завис, а показал тот же размер, что и ls).
Ну и где глюки? Если все нормально с поддержкой в системах, значит у меня руки кривые, и чего-то не так поставил.
Вопрос, ЧТО ИМЕННО?

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Большие файлы в линух
« Reply #10 on: January 26, 2005, 11:08:37 »
Quote
Поробовал. Собрал тестовую прогу которая генерит текстовый файл объемом в 4 гига. Запустил. Прога отработала без ошибок.
Но вот ls говорит, что файл имеет размер примерно 2.2 гига. mc матерится на ширину трех экранов при обращении к директрории в которой лежит этот файл, и этом его не показывает и виснет. Кде при попытке посмотерь свойства файла наглухо завис, df показал что на диске занято на 6 гиг больше. 6 гиг освободилось после удаления файла.
Тестировалось на RH 7.3 и ASPL 10. (В последнем кде не завис, а показал тот же размер, что и ls).
Ну и где глюки? Если все нормально с поддержкой в системах, значит у меня руки кривые, и чего-то не так поставил.
Вопрос, ЧТО ИМЕННО?
[snapback]690[/snapback]
Code: [Select]
[demiurg@ajax soft]$ /bin/ls -lh
итого 4.9G
-rw-rw-r--    1 demiurg  admins       531M Фев  4  2003 kylix3.iso
-rw-------    1 demiurg  admins       4.4G Янв 10 17:46 win-all-in-one.iso
drwxr-xr-x    8 demiurg  admins       4.0k Янв 10 17:04 win-all-in-1
[demiurg@ajax soft]$ uname -a
Linux ajax.chtd.tpu.ru 2.4.28-ow1-acl #1 Вто Янв 18 01:45:59 NOVT 2005 i686 unknown
[demiurg@ajax soft]$ cat /etc/asplinux-release
ASPLinux release 7.3 (Vostok)
[demiurg@ajax soft]$ /bin/ls --version
ls (fileutils) 4.1
[demiurg@ajax soft]$ mc --version
GNU Midnight Commander, версия 4.6.0
win-all-in-one.iso -- это образ DVD, как видно ls показывает реальный размер. В mc  тоже проблем нет.
Везде файловая система ext3, на ядро дополнительно наложены патчи ow и acl
(хотя для данного вопроса это значения не имеет)
« Last Edit: January 26, 2005, 11:09:17 by demiurg »

Offline gvozd

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Большие файлы в линух
« Reply #11 on: January 26, 2005, 12:21:37 »
Quote
Ну и где глюки? Если все нормально с поддержкой в системах, значит у меня руки кривые, и чего-то не так поставил.
Вопрос, ЧТО ИМЕННО?
[snapback]690[/snapback]

Слушай ну тогда не знаю.
Мистика какая-то.
Ты libc не менял?
Ядро пересобирал или взял стандартное?
Если стандартное, то как конфигурация называется?

Опиши свое железо.

С другой стороны понятно, что проблема не в софте, а
либо драйвер файловой системы неправельно обрабатывает системные вызовы, либо libc какая-то странная.

Сама ext3 большие файлы поддерживает.

Может у тебя какая-нибудь особенность в железе, что ядро считает, что не сможет на хард большой файл сложить.
Как ты думаешь?

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #12 on: January 26, 2005, 14:31:42 »
Quote
Сама ext3 большие файлы поддерживает.

Может у тебя какая-нибудь особенность в железе, что ядро считает, что не сможет на хард большой файл сложить.
Как ты думаешь?
[snapback]693[/snapback]

Тот диск на который я пытался писать, был разбит досовским fdiskом на две части
(винт линуху достался по наследству вместе с информацией от виндовозной машины). Потом обе партиции по очереди были отфтрматирован под линухом как ext3.  
Скопировал с него всю инфу и разбил родным линуховым. Теперь нормально работает с большими файлами.  
Ну и что бы это значило?


Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Большие файлы в линух
« Reply #13 on: January 26, 2005, 16:05:28 »
Quote
Тот диск на который я пытался писать, был разбит досовским fdiskом на две части
(винт линуху достался по наследству вместе с информацией от виндовозной машины). Потом обе партиции по очереди были отфтрматирован под линухом как ext3. 
Скопировал с него всю инфу и разбил родным линуховым. Теперь нормально работает с большими файлами. 
Ну и что бы это значило?
[snapback]696[/snapback]
Дык ты бил досовским fdiskom, т.е. у тебя там был в лучшем случае fat32, а он файлы больше 2 гиг не держит :D
А после того как переразбил и сделал ext3 естественно стал файлы больше 2 гиг держать...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Большие файлы в линух
« Reply #14 on: January 26, 2005, 18:32:21 »
Quote
Дык ты бил досовским fdiskom, т.е. у тебя там был в лучшем случае fat32, а он файлы больше 2 гиг не держит :D
А после того как переразбил и сделал ext3 естественно стал файлы больше 2 гиг держать...
[snapback]697[/snapback]
Млин.... как все оказалось просто.  :(
А самое печально то, что в исходном сообщении говорится именно об ext3
Quote
Я тут обнаружил, что мой линух не может работать с файлами размером больше 2 Гб.
Стоит АСП 10 и ext3 в качестве файловой системы (тоже самое в redhat 7.3).
Что не поддерживает большие файлы - ядро или файловая система? И как это можно лечить?
:angry:

PS. Перечетал еще раз все сообщения и окончательно ничего понять не могу.  :blink:
У меня только одна гипотеза, видимо при форматировании из ляликса что-то намудрили, может и не etx3 там совсем получилась или опции неправильные указали для mkfs.
« Last Edit: January 26, 2005, 23:29:47 by demiurg »

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #15 on: January 27, 2005, 11:43:51 »
Quote
Млин.... как все оказалось просто.  :(
А самое печально то, что в исходном сообщении говорится именно об ext3
 :angry:

PS. Перечетал еще раз все сообщения и окончательно ничего понять не могу.  :blink:
У меня только одна гипотеза, видимо при форматировании из ляликса что-то намудрили, может и не etx3 там совсем получилась или опции неправильные указали для mkfs.
[snapback]700[/snapback]

Ну народ, я может и тормоз, но еще не совсем идиот.
Первоночально диск стоял на машине с установленной виндой и на мем было два раздела. Оба были отформатированы как fat32. На нем куча инфы.
Потом я его поставил на линух машину, поочереди отфарматировал разделы как ext3. И подмонтирповал в систему как ext3. Сделано было так, потому, что инфу было некуда слить, чтобы разбить винт заново. Но разделы форматировались в линухе как ext3. И монтровались так же.
Сейчас я разбил диск линуховым фдиском. И отформатировал как ext3.
А форматировал я только с одной опцией -j. Больше ничего, остальное по умолчанию.
Ну да ладно, главное сейчас работает.
Просто опыт - сын ошибок трудных...

Offline gvozd

  • Newbie
  • *
  • Posts: 28
  • Karma: +0/-0
Большие файлы в линух
« Reply #16 on: January 27, 2005, 15:04:54 »
Quote
Ну да ладно, главное сейчас работает.
[snapback]712[/snapback]
А после чего заработало?
После того как отформатировал еще раз?

Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Большие файлы в линух
« Reply #17 on: January 27, 2005, 16:01:26 »
Quote
Ну народ, я может и тормоз, но еще не совсем идиот.
Первоночально диск стоял на машине с установленной виндой и на мем было два раздела. Оба были отформатированы как fat32. На нем куча инфы.
Потом я его поставил на линух машину, поочереди отфарматировал разделы как ext3. И подмонтирповал в систему как ext3. Сделано было так, потому, что инфу было некуда слить, чтобы разбить винт заново. Но разделы форматировались в линухе как ext3. И монтровались так же.
Сейчас я разбил диск линуховым фдиском. И отформатировал как ext3.
А форматировал я только с одной опцией -j. Больше ничего, остальное по умолчанию.
Ну да ладно, главное сейчас работает.
Просто опыт - сын ошибок трудных...
[snapback]712[/snapback]
Подожди... Я тоже еще раз перечитал и понял, что у тебя были разделы переформатированы под ext3, но тут возник вопрос ты когда переформатировал просто запустил mkfs.ext3 и все на виндовые разделы.
Т.е. линуксовый fdisk ты не запускал и тип файловой системы через него ты не изменял? Боюсь в этом и есть проблема.

Когда ты заново переразбивал диск линуксовым fdiskом то ты естественно поставил нужные типы для партицый, а в предыдущем случае этого не было сделано...
Я вообще с трудом представляю, что у тебя в том случае получилось...
Наверно могло оказаться, что тип партиции мог остаться fat32, хотя сам раздел был отформатирован как ext3... Хотя может быть и что-то по другому...
Я просто так не пробовал делать - всегда разбивал или линуксовым fdiskом или в крайнем случае Acronisом...

_____________________________________________________________
Что-то я в этой жизни не понимаю... или одно из двух...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Большие файлы в линух
« Reply #18 on: January 28, 2005, 09:03:27 »
Quote
А после чего заработало?
После того как отформатировал еще раз?
[snapback]719[/snapback]

Не знаю. Я сделал слишком много телодвижений перед тем как заработало.
Наверно после разбивки диска по новой.

Offline Unit

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 1263
  • Karma: +9/-1
Большие файлы в линух
« Reply #19 on: January 28, 2005, 11:50:47 »
Quote
Подожди... Я тоже еще раз перечитал и понял, что у тебя были разделы переформатированы под ext3, но тут возник вопрос ты когда переформатировал просто запустил mkfs.ext3 и все на виндовые разделы.
Т.е. линуксовый fdisk ты не запускал и тип файловой системы через него ты не изменял? Боюсь в этом и есть проблема.

Когда ты заново переразбивал диск линуксовым fdiskом то ты естественно поставил нужные типы для партицый, а в предыдущем случае этого не было сделано...
Я вообще с трудом представляю, что у тебя в том случае получилось...
Наверно могло оказаться, что тип партиции мог остаться fat32, хотя сам раздел был отформатирован как ext3... Хотя может быть и что-то по другому...
Я просто так не пробовал делать - всегда разбивал или линуксовым fdiskом или в крайнем случае Acronisом...
:wacko: