Наши партнеры








Книги по Linux (с отзывами читателей)

Библиотека сайта rus-linux.net

На главную -> MyLDP -> Тематический каталог -> Файловые системы Linux

Если вам не изменяет память: используем файловые системы ramfs и tmpfs

Оригинал: "When Memory Serves You: Using ramfs and tmpfs"
Автор: Ken Hess
Дата публикации: January 31st, 2010
Перевод: Н.Ромоданов
Дата перевода: февраль 2010 г.

Нужно увеличить скорость чтения и записи в базе данных или работу с другими динамически изменяемыми файлами? Файловая система, размещенная в оперативной памяти, это именно то, что вам надо.

Если характеристики чтения / записи ваших файлов не соответствуют вашим требованиям, то наименее затратным и трудоемким будет размещение наиболее часто используемых файлов в оперативной памяти. Чтение и запись в оперативной памяти происходит значительно быстрее, чем при использовании дисковых файловых систем. Передача данных, используемая дисковый ввод/вывод, так как это используется при работе с базами данных, очень сильно выиграет, если использовать файловые системы, размещаемые в оперативной памяти.

Почему оперативная память? Оперативная память очень быстрая. Она функционирует с временем доступа в наносекундном диапазоне, тогда как самые быстрые диски работают со временем доступа в миллисекундном диапазоне. В оперативной памяти нет вращающихся частей. Механические дисковые устройства вращаются, что означает, что их скорость чтения / записи и поиска значительно медленнее, чем их эквивалентов на основе оперативной памяти. Например, в оперативной памяти DDR3 скорость передачи данных в пиковых значениях превышает 10 Гбайтов /сек. Даже самый быстрый диск UltraStar фирмы Hitachi со скоростью вращения 15000 об./сек. передает данные со средней стабильной скоростью от 119 Мбайтов/сек. и максимумом в 600 Мбайтов/сек. Оперативная память имеет больше значение MTBF (среднее время между отказами). Поскольку оперативная память не механическая, она не подвержена такой степени отказов, как вращающиеся диски, таким образом продолжительность работы у нее существенно превышают ту же характеристику типичных дисковых устройств.

У вас есть две возможности повышение производительности с использованием файловых, располагаемых в оперативной памяти: файловая система tmpfs и файловая система ramfs. Давайте разберемся, как установить файловую систему в оперативной памяти, изучим некоторые общие приемы использования и то, как избежать типичных проблем, которые при этом встретятся.

Файловая система ramfs

Файловые системы tmpfs и ramfs работают по-разному. Файловая система ramfs может использовать только системную память, что не указывается в листинге команды "df –h", не имеет ограничений по размеру и не выдаст сообщения об ошибке в случае, если необязательное ограничение по размеру все же будет установлено и оно будет достигнуто. В том, что что сказано, что ramfs не имеет ограничения по размеру и что вы не получите сообщений об ошибке в случае, если установите необязательный предел и его превысите, противоречия нет. Ограничить размер ramfs вы можете, но вы не получите предупреждение, если превысите этот размер — система не помешает вам сделать это.

Например, вы используете следующую команду монтирования файловой системы со следующим стандартным синтаксисом:

# mount –t fs_type device mount_dir

Синтаксис команды, с помощью которой монтируется файловая система ramfs размером в 200 Мбайтов в директории /opt/data, будет следующим:

# mount –t ramfs –o size=200m ramfs /opt/data

Как уже ранее упоминалось, эта файловая система не будет показана в листинге команды "df –h". Единственный способ увидеть ее — использовать команду mount:

# mount

/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
ramfs on /opt/db type ramfs (rw,size=200m)

Если вы попытаетесь записать более 200 МБ данных в эту файловую систему, то запись будет выполнена и вы не получите предупреждения о том, что превышен размер файловой системы. Задание размера в 200 Мбайтов излишне и не оказывает влияния на фактический размер ramfs и на то, сколько данных вы можете записать. Это серьезный недостаток файловой системы ramfs.

Системные администраторы из-за своей перегруженности работой иногда оставляют в файловой системе брошенные файлы после установки патчей, после установки программ или после выполнения бесконечного количества тестов, которые выполняются в некоторых системах. С помощью ramfs можно решить эту проблему эффективно. Все файлы, которые, как предполагается, не требуют долговременного хранения, можно размещать в области временного хранения (ramfs) до тех пор, пока они не станут ненужными. Размонтируйте ramfs и система вернется к нормальному состоянию без той неряшливости, которая связана с этими периодическими действиями системных администраторов.

Файловая система tmpfs

Системные администраторы считают, что для задач, связанных с реальными данными, файловая система tmpfs обладает огромными преимуществами в сравнении с файловой системой ramfs. Файловая система tmpfs имеет заранее устанавливаемый фиксированный размер, она может размещаться в оперативной памяти или в области свопинга и будут выдаваться сообщения об ошибках в случае, если указанный размер будет превышен. Синтаксис похож на синтаксис ramfs.

# mount –t tmpfs –o size=200m tmpfs /opt/data

Команда "df –h" покажет смонтированную файловую систему tmpfs точно также, как она показывает другие смонтированные файловые системы.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
                      360G  225G  117G  66% /
/dev/sda1              99M   25M   70M  27% /boot
tmpfs                 200M     0  200M   0% /opt/data

Команда mount выдаст следующий результат:

# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
tmpfs on /opt/db type tmpfs (rw,size=200m)

Если вы превысите пределы, установленные для смонтированной файловой системы tmpfs, то получите от системы сообщение "No space left on device" ("На устройстве нет места"), информирующее о том, что файловая система заполнена. Файловая система tmpfs ведет себя подобно файловой системе, монтируемой на диске, но только она энергозависима. Вы можете перейти в директорий /etc/fstab и указать там энергозависимость этих файловых систем с тем, чтобы они монтировались после перезагрузки.

Обе файловые системы ramfs и tmpfs являются энергозависимыми. Иными словами, если в системе произойдет сбой, она будет перезагружена или будет выключена по какой-либо причине, данные, хранящиеся в любой из этих файловых систем будут уничтожены. И только по этой причине вам следует периодически делать дампы данных с такой энергозависимой файловой системы на устройство постоянного хранения. Использование файловой системы, размещенной в оперативной памяти, - это быстро и дешево, но не безопасно.