Raw-устройства

Материал из Xgu.ru

Перейти к: навигация, поиск


Возможно, вас интересует страница RAW (фото)

Raw-устройства (raw devices, сырые устройства) — специальные символьные (character) устройства, предназначенные для организации доступа к блочным устройствам без кэширования. Обычно используются системами, которые сами знают как им кэшировать данные, и не хотят полагаться в этом на операционную систему, в частности системами управления базами данных (СУБД).

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

Если всё же по какой-то причине необходимо использовать raw-устройства, тогда нужно

  1. Убедиться, что загружен соответствующий модуль ядра (raw);
  2. Созданы соответствующие устройства в /dev;
  3. Есть утилита для работы с raw-устройствами, называемая raw.

Привязка raw-устройств:

$ raw /dev/raw/raw1 /dev/sda3
/dev/raw/raw1:  bound to major 8, minor 3
$ raw /dev/raw/raw2 /dev/sda
/dev/raw/raw2:  bound to major 8, minor 0
$ raw -qa
/dev/raw/raw1:  bound to major 8, minor 3
/dev/raw/raw2:  bound to major 8, minor 0

Просмотр файлов устройств:

$ ls -lR /dev/raw*
crw-r--r--    1 root     root     162,   0 Dec  6 06:54 /dev/rawctl

/dev/raw:
total 0
crw-r--r--    1 root     root     162,   1 Dec  6 06:54 raw1
crw-r--r--    1 root     root     162,   2 Dec  6 06:54 raw2


Если в системе используется udev, raw-устройства можно создавать автоматически.

Для этого в файл /etc/udev/rules.d/60-raw.rules нужно добавить строку:

ACTION=="add", KERNEL=="<device name>“, RUN+=”raw /dev/raw/rawX %N”

Здесь вместо <device name> необходимо указать имя исходного блочного устройства.

Если известно не имя устройства, а его мажорный и минорный номера, строка будет выглядеть так:

ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"

Если от старой системы в файле /etc/sysconfig/rawdevices (в RHEL) накопилось большое количество raw-устройств, сконвертировать их можно с помощью скрипта:

#!/bin/sh
grep -v "^ *#" /etc/sysconfig/rawdevices | grep -v "^$" | while read dev major
minor ; do
        if [ -z "$minor" ]; then
                echo "ACTION==\"add\", KERNEL==\"${major##/dev/}\",
RUN+=\"/usr/bin/raw $dev %N\""
        else
                echo "ACTION==\"add\", ENV{MAJOR}==\"$major\",
ENV{MINOR}==\"$minor\", RUN+=\"/usr/bin/raw $dev %M %m\""
        fi
done

Проверка правил udev:

%# udevtest /block/sdb/sdb1 | grep raw
main: run: '/bin/raw /dev/raw/raw1 /dev/.tmp-8-17'

После перезапуска udev убедиться, что устройства создались, можно следующим образом:

%# raw -qa
/dev/raw/raw1:  bound to major 8, minor 17
%# ls -l /dev/raw
total 0
crw-rw---- 1 root   disk 162,  1 Jan 29 02:47 raw1

[править] Дополнительная информация

Xentaur
Дисковая подсистема
Linux | FreeBSD

Диски и разделы
Файлы устройств: Блочное устройство | Символьное устройство | Raw-устройство | loop-устройство
Диски: IDE | SATA (SATA hotplug) | SCSI | USB
RAID-массивы: Аппаратный RAID | Linux RAID | FreeBSD RAID
Дисковые разделы: Раздел | MBR | fdisk | parted | disklabel | GPT

Управление томами
Логический том | Физический том | Группа томов | Снимок | Клон
device-mapper | dm-ioband | dm-crypt | dm-userspace | multipath
Системы управления томами: LVM | CLVM | EVMS | Btrfs* | ZFS* | AdvFS* | Zumastor

Сетевые хранилища и репликация
Отказоустойчивость: DRBD | Xen + DRBD | ggate + gmirror | HAST
Сетевые хранилища: AoE | iSCSI | FCoE | GNBD

Файловые системы
Монтирование | Проверка целостности | Дефрагментация | Суперблок | inode | Журнал | Кэш | VFS | UUID | FUSE
Локальные: ext3 | ext3cow | ext4 | JFS | Reiser4 | XFS | ZFS | Btrfs | AdvFS | ISO | aufs
Сетевые: NFS | CIFS | AFS | POHMELFS
Кластерные: GFS | OCFS2 | CXFS | VMFS | GPFS
Распределенные: Lustre | PVFS | Ceph | Coda

* Btrfs, ZFS и AdvFS — это файловые системы с возможностями управления томами
На других языках