Библиотека сайта rus-linux.net
Если вам не изменяет память: используем файловые системы 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 являются энергозависимыми. Иными словами, если в системе произойдет сбой, она будет перезагружена или будет выключена по какой-либо причине, данные, хранящиеся в любой из этих файловых систем будут уничтожены. И только по этой причине вам следует периодически делать дампы данных с такой энергозависимой файловой системы на устройство постоянного хранения. Использование файловой системы, размещенной в оперативной памяти, - это быстро и дешево, но не безопасно.