Длина сектора диска, oleg_3, 10-Май-10, 07:40 [смотреть все][СИ] Длина сектора дискаЯзык СИ ОС UNIX База данных и транзакция. Два вопроса. Имеется файл строк, каждая строка это отдельная запись БД. Нужно сделать транзакцию - изменить одну из этих строк. При этом длина строки не меняется. Должно выдерживать мягкий сбой (выключение питания). Винт плохой и при сбое портит весь сектор (или иную минимальную порцию данных). Значит я должен в журнале сохранить всё то, что может быть испорчено, т. е. сектор (или секторы) содержащий эту строку. Вопрос 1.
О длине сектора. Как узнать длину сектора или иной порции данных, которая может быть испорчена? Вопрос 2. Что если я буду для верности сохранять заведомо большую порцию, а именнно 8 Кбайт, начало порции кратно ей самой от начала файла. Сработает ли такой подход? |
- Длина сектора диска, svn, 10:11 , 10-Май-10 (1)
- Длина сектора диска, oleg_3, 11:08 , 10-Май-10 (2)
Извините. Я не достаточно понятно сформулировал вопросы. Да, т. к. речь идет об отключении питания, то всё должно быть на диске, а не в буфере. В моём вопросе подразумевалось: write(); fsync(); всюду такая пара, при записи журнала и при записи изменений в файл. И в момент записи на диск изменённых данных отключается питание. Винт плохой и при сбое портит весь сектор (или иную минимальную порцию данных). С учетом этого и надо понимать поставленные вопросы.
- Длина сектора диска, Максим, 11:40 , 10-Май-10 (3)
- Длина сектора диска, oleg_3, 12:01 , 10-Май-10 (4)
Программа может работать на разных машинах и не всегда есть возможность выбора. А если такая возможность будет, тогда в настройках программы можно уменьшить страховочные действия. Сейчас хотелось бы заложить побольше, чтоб могла надежно работать где угодно. Всё-таки хотелось бы получить ответ на вопросы.
- Длина сектора диска, anonymous, 09:21 , 18-Май-10 (13)
- Длина сектора диска, ACCA, 20:43 , 10-Май-10 (6)
- Длина сектора диска, oleg_3, 23:16 , 10-Май-10 (7)
Спасибо. Это конкретный ответ на конкретный вопрос.Программа прикладная. Я знаю, что "флэшки" пишут огромными блоками. Но про диски, пишущие целыми дорожками, я не знал. Я исходил из того, что пишут в книгах и статьях о дисках, а так же в статье SQLite http://www.sqlite.org/atomiccommit.html. В этой статье написано, что если можно от системы получить длину сектора, то используют её. Иначе 512 байт.
- Длина сектора диска, oleg_3, 04:54 , 11-Май-10 (8)
Не могу сказать что удовлетворён Вашим ответом. Предполагается работа на арендованных машинах-серверах. ОС UNIX, ufs. Нигде не попадалось почитать о дисках с такими большими блоками. Может быть дадите ссылку или иную зацепку, где можно что-нибудь найти об этом.Но всё равно спасибо.
- Длина сектора диска, guest, 10:32 , 11-Май-10 (9)
- Длина сектора диска, oleg_3, 00:25 , 12-Май-10 (10)
Спасибо за отклик.В этой и других структурах stat statfs есть ещё поле длины блока f_bsize. Я бы согласился взять даже большее из них (см. вопрос 2). Как будто, я только получу некоторую избыточность, не страшно. Но вот сильно смущают слова ACCA о блоках 64K и 4M. Хотелось бы узнать о таких устройствах. Не может ли быть такого, что блок файловой системы меньше физического сектора диска? Для "флэшек" наверное может быть. Но они не очень применяются на машинах-серверах. А вот для дисков? После его заявления появился вопрос вопрос 3 Не может ли быть такого, что блок файловой системы меньше физического сектора диска?
|