Отправляет email-рассылки с помощью сервиса Sendsay

ограничение файловой системы

Напомните мне плиз, какое ограничение в ext2 на размер файла.
Не 2Гига случаем?

Ответить   Fri, 4 Jun 2004 10:52:18 +0400 (#161811)

 

Ответы:

On Пятница 04 Июнь 2004 10:52, Konstantin Mitkinyh wrote:

Documentation/filesystems/ext2.txt:

Filesystem block size: 1kB 2kB 4kB 8kB

File size limit: 16GB 256GB 2048GB 2048GB
Filesystem size limit: 2047GB 8192GB 16384GB 32768GB

Ответить   "Sergey B. Khvatov" Fri, 4 Jun 2004 11:24:32 +0400 (#161840)

 

Konstantin Mitkinyh пишет:

Было такое ограничение в ядрах 2.0.XX. Начиная с 2.2.XX оно снято.
Другое дело, какими запросами ввода/вывода пользуется конкретная задача.
Если обычными (не 64-битными), то имеется такое ограничение независимо
от используемой файловой системы.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7868; Возраст листа: 314; Участников: 1153
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/162004



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Fri, 04 Jun 2004 13:51:10 +0300 (#162004)

 

Hello Yuri,

Friday, June 4, 2004, 2:51:10 PM, you wrote:

Гмм..
Используется Redhut 6.2, ядро 2.4.17, в качестве приложения - Oracle8i
8.1.6 Думаю, запросы у него, как вы говорите, обычные. Видимо, в этом
всё дело.
А "имеется такое ограничение" - это сколько все-таки?

Ответить   Fri, 4 Jun 2004 17:36:14 +0400 (#162142)

 

Konstantin Mitkinyh пишет:

Ограничение 32-битного числа со знаком: 2^31-1 = 2147483647. Т.е.
фактически 2Gb без одного байта.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7877; Возраст листа: 314; Участников: 1153
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/162148



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Fri, 04 Jun 2004 16:47:43 +0300 (#162148)

 

i386-asplinux-linux)

И снова здравствуйте!

On Fri, 04 Jun 2004 16:47:43 +0300
"Yuri N. Glibovetz" <gyn***@m*****.ru> wrote:

Почему же без байта? Если считать от нулевого адреса, то как раз 2Gb и
получается.

Ответить   Ivan Savochenko Sat, 5 Jun 2004 04:38:08 +0400 (#162485)

 

Ivan Savochenko пишет:

А что по вашему для 2Gb файла должен вернуть lseek(fd, 0L, SEEK_END)?
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7896; Возраст листа: 315; Участников: 1155
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/162664



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Sat, 05 Jun 2004 12:36:58 +0300 (#162664)

 

Yuri N. Glibovetz wrote:

2^31-1, т.к. первый байт имеет нулевое смещение.

Ответить   Max Vasin Sat, 05 Jun 2004 14:31:33 +0400 (#162680)

 

Max Vasin пишет:

Идем по порядку:

Размер файла = 0: lseek(fd, 0L, SEEK_END) = 0;
Размер файла = 1: lseek(fd, 0L, SEEK_END) = 1;
....
Размер файла = 2147483647: lseek(fd, 0L, SEEK_END) = 2147483647;
Размер файла = 2Gb: lseek(fd, 0L, SEEK_END) = ???
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7899; Возраст листа: 315; Участников: 1155
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/162682



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Sat, 05 Jun 2004 13:39:15 +0300 (#162682)

 

И снова здравствуйте!

В своём сообщении от Sat, 05 Jun 2004 13:39:15 +0300
Yuri N. Glibovetz (aka "YNG") поведал:

и

Может мы говорим о разных вещах?
Я понимаю так:
- 1 килобайт = 2^10 = 1024 байт;
- 2 --"--"-- = 2^11 = 2048 байт;
[==8<--]
- 1 гигабайт = 2^30 = 1073741824 байт;
- 2 --"--"-- = 2^31 = 2147483648 байт.
Соответственно и вернуться должно 2147483648. Но вопрос был о другом. По
этому поводу "посыпаю голову пеплом", так как если ограничение и есть
2Gb, то размер файла может быть какой угодно, только не 2Gb

Ответить   Ivan Savochenko Mon, 7 Jun 2004 01:58:10 +0400 (#163700)

 

Hi, Yuri.

Вы писали 4 июня 2004 г., 17:47:43:

Только там используется long long, т.е. 64 битная адресация.

Адресация в файловой системе происходит блоками. Следовательно
увеличив размер блока увеличивается максимальный размер файла.
Вот цитата о лимитах из документации для ядер 2.4

Filesystem block size: 1kB 2kB 4kB 8kB

File size limit: 16GB 256GB 2048GB 2048GB
Filesystem size limit: 2047GB 8192GB 16384GB 32768GB

Ответить   Nekipelov Alex Mon, 7 Jun 2004 12:24:56 +0400 (#164460)

 

i586-asplinux-linux-gnu)

А что это за файл? Что в нем находится? Я предполагаю что, если
используются только функции open/read/write (без lseek), то
ограничения в 2G не влияет. Или я ошибаюсь?

Ответить   Konstantin Korikov Sat, 5 Jun 2004 01:08:15 +0300 (#162462)

 

Konstantin Korikov пишет:

read/write действительно не влияют. А вот выбор open/open64 влияет.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7897; Возраст листа: 315; Участников: 1155
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/162671



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Sat, 05 Jun 2004 12:47:04 +0300 (#162671)

 

On Sat, 5 Jun 2004, Yuri N. Glibovetz wrote:

А где Вы нашли open64? В glibc? Потому, что в ядре такого нет.
Вот в `fs/open.c' оно само определяет на какой архитектуре работает:

...
long sys_open(const char * filename, int flags, int mode)
{
char * tmp;
int fd, error;

#if BITS_PER_LONG != 32
flags |= O_LARGEFILE;
#endif
...

Кстати, получается Linux не может работать ни на одной <32-разрядной
архитектуре, если у них в ядре такое ;-)

Кстати об lseek. Тут вообще забавный код:

...
loff_t generic_file_llseek(struct file *file, loff_t offset, int
origin)
{
long long retval;

switch (origin) {
case 2: /* вот здесь */
offset += file->f_dentry->d_inode->i_size;
break;
case 1: /* и здесь */
offset += file->f_pos;
}

...

Да и вообще в `read_write.c' полнейший бред с long/off_t/loff_t и
unsigned/[signed] int. Сами посудите:

off_t sys_lseek(unsigned int fd, off_t offset, unsigned int origin)
^^^^^ ^^^^^^^^^^^^
вызывает (со своими же параметрами):

loff_t llseek(struct file *file, loff_t offset, int origin)
^^^^^^ ^^^

Вот еще штука:

#if !defined(__alpha__) /* а че там с альфой не так, кто нам скажет? */
long sys_llseek(unsigned int fd, unsigned long offset_high,
unsigned long offset_low, loff_t * result,
unsigned int origin)

Чего куда здесь коннектится вообще хрен поймешь... Помойка короче :-)
Хоть комментарий бы написали, что ли...

Ответить   Sat, 5 Jun 2004 20:02:30 +0400 (MSD) (#162857)

 

Mike Belopuhov пишет:

/usr/include/fcntl.h

Интересно. Получается что можно использовать обычный open, добавив в
flags "|O_LARGEFILE". Надо будет попробовать. Хотя не знаю, правильно ли
это идеологически.

А смысл?

Вообще-то origin - это:

#define SEEK_SET 0
#define SEEK_CURR 1
#define SEEK_END 2

Да, здесь некрасиво, но преобразовать 0, 1, 2 из unsigned int в int
несмертельно.

-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 7937; Возраст листа: 317; Участников: 1160
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/163947



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Mon, 07 Jun 2004 11:48:26 +0300 (#163947)

 

On Mon, 7 Jun 2004, Yuri N. Glibovetz wrote:

Это от glibc.

Это будет идеологически неправильно, если Вы пишите переносимый софт.
O_LARGEFILE заморочка линуксовская.

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

Также, мне кажется, не надо особо думать об open/open64. OC сама
должна обрабатывать такую ситуацию, ведь никто не знает, где будет
собрана и использована программа.

И еще: open64 это тоже только в glibc и посему также непереносимо
(но уже в плане исходников). А использовать libtool и auto{conf,make}
и заявлять, что это обеспечивает максимальную портабельность исходного
кода (как делает подавляющее большинство GNU программистов) вообще
неприемлимо.

Да в общем никакого, просто интересно :-)

[skip]

[skip]

В таких делах лучше быть параноиком :-]

Ответить   Mon, 7 Jun 2004 22:34:36 +0400 (MSD) (#164482)

 

i586-asplinux-linux-gnu)

В сообщении от Mon, 7 Jun 2004 22:34:36 +0400 (MSD) Вы написали:

А чем плох такой код?

#include "../config.h"
....
#ifdef ENABLE_LARGE_FILE
fd = open(filename, O_RDONLY | O_LARGEFILE);
#else
fd = open(filename, O_RDONLY);
#endif
....

Скрипт configure определит (сам или при помощи пользователя) есть
ли в системе O_LARGEFILE, если есть то в config.h будет:

#define ENABLE_LARGE_FILE 1

Чем плох такой подход?

Ответить   Konstantin Korikov Mon, 7 Jun 2004 23:31:28 +0300 (#164631)

 

Mike Belopuhov пишет:

Можно конечно задать в флагах gcc -D_FILE_OFFSET_BITS=64 и тогда по
умолчанию будут использоваться 64-битные варианты функций. Но не люблю я
такую "игру в темную" - обязательно где-то вылезет. Хотя с точки зрения
переносимости конечно это выход.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 8028; Возраст листа: 318; Участников: 1164
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/165029



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   "Yuri N. Glibovetz" Tue, 08 Jun 2004 14:06:20 +0300 (#165029)

 

Hi, Mike.

Вы писали 5 июня 2004 г., 20:02:30:

glibc в любом случае не предоставляет системных вызовов :-)

Ну разумеется. На архитектурах <32 нет защищенного режима.

Ответить   Nekipelov Alex Mon, 7 Jun 2004 12:18:31 +0400 (#164459)

 

On Mon, 7 Jun 2004, Nekipelov Alex wrote:

А в чем проблема его реализовать на <32 битной архитектуре? Другое
дело, что вроде как никто не делал (и не будет).

Ответить   Mon, 7 Jun 2004 22:49:28 +0400 (MSD) (#164493)

 

Mike Belopuhov wrote:

Проблема в режиме работы процессора. Защищенный режим в процессорах
появился только начиная с i386. Это, если речь идет о PC -архитектуре.
Для других "слабых" и <32 разрядных, и процов без "защищенного режима",
естественно, были порты ядра и ранее, а с 2.6 и стандартное ядро может
быть собрано для таких процессоров.
-*Название листа "Linux: разрешение вопросов, перспективы и общение";
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Адрес правил листа http://subscribe.ru/catalog/comp.soft.linux.discuss/rules
Номер письма: 8004; Возраст листа: 318; Участников: 1164
Адрес сайта рассылки: http://www.linuxrsp.ru
Адрес этого письма в архиве: http://subscribe.ru/archive/comp.soft.linux.discuss/msg/164751



-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.linux.discuss-list@subscribe.ru
Отписаться: mailto:comp.soft.linux.discuss--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   d2r Tue, 08 Jun 2004 08:27:35 +0300 (#164751)

 

Hello Konstantin,

Saturday, June 5, 2004, 2:08:15 AM, you wrote:

Файл базы данных. Думаю вы ошибаетесь, т.к. файл более 2 Гиг создать
не удалось ;-) Это обходится элементарно, просто наш DBA спросил
почему, а я что-то затруднился с ответом.

Ответить   Sun, 6 Jun 2004 09:23:39 +0400 (#163110)