Файловые системы

SCTRWD

Местный
Есть сторонние утилиты для отслеживания изменения систояния файловой системы, например fsniper.
В ядре Linux есть подсистема inotify, которую тоже можно использовать для отслеживания таких событий.
В конце концов, если программа ваша, то вы сами можете изменения в ФС мониторить.
Файловых систем которые умеют сами сигнализировать об изменениях я не знаю.

А если бы знал, то никогда не стал бы такие ФС использовать :D
Спасибо за ответ. В ядрах, с которыми я встречался inotify не работает. Хотелось бы именно зависать неактивно(т.е. не жрать время процессора и не дёргать постоянно операционную систсему) на событиях от ФС. Кстати, что-то подобное встречал у Microsoft. Очередной раз убеждаюсь, что у них многие вещи реализованы и зачастую лучше. Взять, хотя бы, функции работы с событиями: WaitForObject и WaitForMultipleObject. Поинтереснее чем в Линухе, если честно.
 

Mike22

Местный
В ядрах, с которыми я встречался inotify не работает.
Обновите ядро. В чём сложность?

Хотелось бы именно зависать неактивно(т.е. не жрать время процессора и не дёргать постоянно операционную систсему) на событиях от ФС. Кстати, что-то подобное встречал у Microsoft. Очередной раз убеждаюсь, что у них многие вещи реализованы и зачастую лучше. Взять, хотя бы, функции работы с событиями: WaitForObject и WaitForMultipleObject. Поинтереснее чем в Линухе, если честно.
Если вы не пробовали работать с Inotify, то как можете утверждать что он хуже чего-либо?
http://ru.wikipedia.org/wiki/Inotify
 

SCTRWD

Местный

Mike22

Местный
SCTRWD, статья специально для вас -

Inotify – это подсистема Linux®, которая отслеживает операции файловой системы, такие как чтение, запись и создание. Inotify действует в реактивном режиме, удивительно проста в использовании и намного более эффективна, чем, например, мониторинг активности при помощи задания планировщика Cron. Научитесь интегрировать inotify в свои приложения и познакомьтесь с набором средств командной строки для более полной автоматизации системного администрирования.
http://www.ibm.com/developerworks/ru/libra...&S_CMP=GR01
(на русском яз.)
 

{$L@VIK}

Новичок
Phobos, на ноутбуке я бы сделал -

swap - swap - 2 Gb
/ - ext3 - весь_диск минус swap

и на / не забыть добавить параметры noatime,nodiratime

и всё.
Не надо забывать про Home! Если система рухнет, то хоть документы останутся невредимыми, а папка с документами на томже диске, что и ос - очень небезопасно, это только на виндоус так.
 

Mike22

Местный
Ваша фраза - "система рухнет" не совсем понятна. Что вы имеете в виду?
Если в результате игр шаловливыми ручками теряется возможность загрузить операционную систему, то это не означает разрушение файловых структур на диске.
Я, за более чем 10 лет общения с Linux, не видел ни разу "рухнувшей" ext2/ext3 файловой системы. Разве что железо откажет.

Я бы для себя именно так и разбивал диск на ноутбуке, как советовал. Или воспользовался бы LVM.
Но LVM - это другая песня (и очень интересная).

Хотя выделение /home в отдельный раздел смысл имеет, но без использования LVM я бы этого делать не стал.
 

Mike22

Местный
В виду последних событий, когда многие люди обнаружили пропадание и обнуление файлов в файловой системе ext4 после краха ОС, создатели ext4 высказались за идею включения в ядро новых системных вызовов, которые бы позволили безопасно работать с файлами.

Линус Торвальдс в списке рассылки ядра жестоко раскритиковал эти предложения и заявил, что большинство программистов никогда не будут этими новыми системными вызовами пользоваться, что они будут нестабильными и плохо оттестированными.

Цитата: "Поэтому вместо того, чтобы придумывать новые системные вызовы, которые никто не будет использовать, разработчики файловых систем должны стараться обеспечить нормальную работу даже плохого кода. Потому что, хотите вы этого или нет, 99% программ именно так и написаны.

Тот неоспоримый факт, что люди не проверяют ошибки, которые возвращает системный вызов close() (закрытие файла и сброс "грязных" данных из кэша на диск) должен означать, что, например, при отложенной записи на диск нужно обязательно проверять ситуацию переполнения диска. Если ваша файловая система возвращает ENOSPC при закрытии файла через вызов close(), а не при записи в него через write(), значит, что вы потеряли обработку ошибок переполнения диска у 90% приложений. Вот так всё просто.

Жаловаться на то, что ошибка в приложении - это всё равно, что жаловаться на скорость света: вы должны иметь дело с реальным миром, а не с тем, каким бы вы хотели его видеть. То же самое относится к идее, что "люди должны писать во временный файл, вызывать функцию fsync для него и переименовывать его вместо оригинала". Вы думаете, что так должно быть, но в реалии программисты пишут open(filename, O_TRUNC | O_CREAT, 0666). Это неправильно, я знаю. Но в конечном итоге, даже разработчики хорошо написанного приложения могут решить, что fsync() не стоит тех потерь в производительности. В git, например, где мы обычно пытаемся быть очень, очень и очень аккуратными, fsync() в объектных файлах по умолчанию выключен.

Почему? Потому что его включение вызывает неприемлемое поведение ext3. Сейчас, надо сказать, дизайн git'a рассчитан на то, что потеря нового БД файла не фатальна, но потенциально это очень беспокоит и смущает - вам, возможно, придётся откатить изменения назад и переделать некоторые операции вручную.

К чему я всё это говорю ? Иногда те разработчики файловых систем, которые говорят "вы должны использовать fsync(), чтобы получить предсказуемые результаты" - это те же люди, которые испортили всё это до такого безобразия, что fsync'ом абсолютно нереально пользоваться.

Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда."

 

QweRius

Пользователь
И еще :D
Задача: Разделить ext4 на ntfs и ext4
подскажите программу которой можно это осуществить
или
как это сделать (пошагово) средствами fdisk (sfdisk, cfdisk) - с ними разобраться не смог, дистр RF 11
, заранее благодарен.
 

Mike22

Местный
QweRius, не нужно примерно, нужно точно!
Ваш ответ не соответствует действительности, диск у вас более сложно разбит.

Покажите вывод двух команд:
fdisk -l /dev/sda
и
lvscan
 

QweRius

Пользователь
[codebox][root@localhost mike]# fdisk -l /dev/sda

Диск /dev/sda: 80.0 ГБ, 80025280000 байт
255 heads, 63 sectors/track, 9729 cylinders
Units = цилиндры of 16065 * 512 = 8225280 bytes
Disk identifier: 0x753f5238

Устр-во Загр Начало Конец Блоки Id Система
/dev/sda1 * 1 26 204800 83 Linux
Раздел 1 не заканчивается на границе цилиндра.
/dev/sda2 26 9729 77943361 8e Linux LVM
[root@localhost mike]# lvscan
ACTIVE '/dev/VolGroup/lv_root' [70,43 GB] inherit
ACTIVE '/dev/VolGroup/lv_swap' [3,91 GB] inherit
[root@localhost mike]#

[/codebox]
 

Mike22

Местный
Дак вы хотите /dev/VolGroup/lv_root уменьшить и сделать там ещё раздел ntfs ?

Зачем вам это?

Windows не сможет к этому разделу обратиться, Win-системы не понимают разделов под LVM.
 

vega

Администратор
Сотрудники Вега-Интернет
Дак вы хотите /dev/VolGroup/lv_root уменьшить и сделать там ещё раздел ntfs ?

Зачем вам это?

Windows не сможет к этому разделу обратиться, Win-системы не понимают разделов под LVM.
помоему человек от LVM хочет отделить раздел и сделать его NTFS
 

QweRius

Пользователь
помоему человек от LVM хочет отделить раздел и сделать его NTFS
Именно :p
Дак вы хотите /dev/VolGroup/lv_root уменьшить и сделать там ещё раздел ntfs ?

Зачем вам это?

Windows не сможет к этому разделу обратиться, Win-системы не понимают разделов под LVM.
Просто лежала Xp в архиве хотел ее востановить параллельно на этот жесткий диск.
Сейчас уже нашел место на другом винте, но всетаки остается интересно возможно ли от "LVM отделить раздел и сделать его NTFS" ?
Видимо совсем не понимаю сокращения lvm )
 

Mike22

Местный
Именно :p


Просто лежала Xp в архиве хотел ее востановить параллельно на этот жесткий диск.
Сейчас уже нашел место на другом винте, но всетаки остается интересно возможно ли от "LVM отделить раздел и сделать его NTFS" ?
Видимо совсем не понимаю сокращения lvm )
Конечно можно, но Windows к разделу внутри LVM не сможет получить доступ и тем более загрузиться с него.
Не понимают Win-системы технологии LVM.

Вытащить из LVM часть места можно, но это для вас будет сложной операцией череватой потерей данных.

1. Грузим Linux с внешнего носителя.
2. Уменьшаем ext4 раздел / на /dev/VolGroup/lv_root
3. Уменьшаем VG LVM /dev/VolGroup на освободившийся размер.
4. Создаём на диске обычный раздел (не LVM) из свободного места
5. Форматируем его в ntfs
6. Перезагружаемся скрестив пальцы :blink:

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

vega

Администратор
Сотрудники Вега-Интернет
Видимо совсем не понимаю сокращения lvm )
менеджер логических томов...
вещица гибкая в возможностях но очень трудная в понимании имхо....

Конечно можно, но Windows к разделу внутри LVM не сможет получить доступ и тем более загрузиться с него.
Не понимают Win-системы технологии LVM.
рррр Михаил как не понять то!!!! человек хочет не внутри группы отделить НТФС раздел... а вообще из нее ее вынести
 
Сверху