Дисковая подсистема Linux
Материал из Xgu.ru
- Короткий URL: linux/disk
Содержание |
[править] Жёсткие диски
[править] Добавление нового диска
- Основная страница: SATA hotplug
Добавить новый диск можно в выключенную систему или без её выключения, если система поддерживает возможность горячего подключения жёстких дисков.
Если речь идёт о SATA-дисках, то их можно попробовать подключить без выключения питания.
Подключение диска:
%# echo 0 0 0 > /sys/class/scsi_host/host2/scan ata2: exception Emask 0x10 SAct 0x0 SErr 0x50000 action 0x3 ata2: hard resetting port ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) ata2.00: ATA-7: HDS725050KLA360, K2AOAD1A, max UDMA/133 ata2.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 0/32) ata2.00: configured for UDMA/133 ata2: EH complete scsi 2:0:0:0: Direct-Access ATA HDS725050KLA360 K2AO PQ: 0 ANSI: 5 SCSI device sdc: 976773168 512-byte hdwr sectors (500108 MB) sdc: Write Protect is off sdc: Mode Sense: 00 3a 00 00 SCSI device sdc: write cache: enabled, read cache: enabled, doesn't support DPO or FUA SCSI device sdc: 976773168 512-byte hdwr sectors (500108 MB) sdc: Write Protect is off sdc: Mode Sense: 00 3a 00 00 SCSI device sdc: write cache: enabled, read cache: enabled, doesn't support DPO or FUA sdc: sdc1 sdc2 sdc3 sd 2:0:0:0: Attached scsi disk sdc
Или же командой:
rescan-scsi-bus -l
Отключение диска:
%# echo 1 > /sys/block/sdc/device/delete ata2.00: disabled
[править] Настройка и оптимизация жёсткого диска
[править] Проблемы с размером диска
Диск большого размера может определяться как диск значительно меньшего размера (причём, как в операционной системе, так и в BIOS). Например, диск размером 1TB может быть виден как диск размером 33MB.
|
Не нужно ничего менять на диске: пересоздавать таблицу разделов, изменять геометрию, файловые системы. Все данные должны уцелеть и будут вновь видны, после того как размер диска восстановится. |
Проблема, скорее всего, связана с механизмом HPA (Host Protected Area). Проверить это можно выполнив команду:
%$ hdparm -N /dev/sdc
где /dev/sdc — имя проблемного жёсткого диска.
Результатом выполнения команды должно быть нечто наподобие этого:
/dev/sdc: max sectors = некое_небольшое_число/1953525168, HPA is enabled
Для того чтобы заставить компьютер видеть весь диск, нужно дать команду:
%# hdparm -N 1953525168 /dev/sdc
Эти изменения сохранятся до перезагрузки.
Для того чтобы сделать изменения постоянными, необходимо дать команду:
%# hdparm -Np 1953525168 /dev/sdc
То есть, использовать дополнительный ключ p. В этом случае изменения становятся постоянными.
На старых ядрах (<2.6.28) команда может работать не всегда корректно.
Подробнее о проблеме и её решении: [1].
[править] Создание дисковых разделов
[править] Перечитать таблицу разделов
# partprobe
(из пакета parted).
Другие способы:
# hdparm -z /dev/DISK
# blockdev --rereadpt /dev/DISK
# echo 1 > /sys/block/DISK/device/rescan
Здесь везде вместо DISK название соответствующего устройства (sda, sdb, sdc).
[править] Дисковые разделы более 2TB
Используйте GPT и parted.
Подробнее: [2].
[править] Файловые системы
ОС Linux поддерживает огромное количество разнообразных файловых систем. В каталоге fs/ дерева исходных кодов ядра находится более 60 подкаталогов, каждый из которых соответствует одной файловой системе. Кроме этого, существует интерфейс FUSE, обеспечивающий поддержку ещё большего количества файловых систем, реализованных не в пространстве ядра (kernel level), а в пространстве пользователя (user level).
Традиционно файловые системы разделяют на четыре класса:
- Локальные файловые системы;
- Сетевые файловые системы;
- Кластерные файловые системы;
- Файловые системы специального назначения.
К основным локальным файловым системам Linux относят:
- ext2, ext3 и теперь ext4, которая с декабря 2008 года (ядро 2.6.28) считается стабильной;
- XFS,
- JFS,
- Reiserfs и Reiser4.
Ведётся работа над файловой системой btrfs, которая, возможно, войдёт в число основных файловых систем Linux, но пока до этого ещё далеко.
К основным сетевым файловым системам в Linux относят:
Также можно выделить файловую систему AFS, поддержка которой в ядре Linux существенно развилась за последнее время.
Файловые системы отличаются:
- функциональностью;
- производительностью;
- надёжностью;
- эффективностью хранения данных.
Для улучшения этих и других характеристик в файловых системах используются различные подходы, решения и техники, в том числе:
- журналирование;
- транзакции;
- снимки и версии файлов;
- контрольные суммы файлов и метаданных;
- шифрование данных;
- подвыделение блоков (block suballocation);
- различные меры для борьбы с фрагментацией.
[править] Создание файловых систем
[править] Монтирование файловых систем
...
Для того чтобы смонтировать файловую систему UFS2 (FreeBSD) в Linux в режиме read/write, необходимо разрешить это в ядре.
CONFIG_UFS_FS_WRITE=y
Подробнее [3].
[править] Работа с файловыми системами
[править] Сброс и очистка кэша
Запись несохранённых изменений в кэше на диск:
%# sync
Очистить кэш страниц (pagecache):
%# sync && echo 1 > /proc/sys/vm/drop_caches
Очистить кэш каталогов и индексных дескрипторов:
%# sync && echo 2 > /proc/sys/vm/drop_caches
Очистить кэш страниц, кэш каталогов и индексных дескрипторов:
%# sync && echo 3 > /proc/sys/vm/drop_caches
Подробнее: linux/Documentation/filesystems/proc.txt
Эта возможность появилась начиная с ядра версии 2.6.16.
[править] Отключение диска
[править] Надёжное удаление данных
Очистка первого раздела на первом диске (PATA|SATA), с помощью:
dd:
Заполнение нулями:
dd if=/dev/zero of=/dev/sda1 bs=1M
Заполнение псевдослучайными данными:
dd if=/dev/urandom of=/dev/sda1 bs=1M
bcwipe -b -ms -v /dev/sda1
-b wipe special block device.
-ms use 7-pass Bruce Schneier's wiping scheme.
-v verbose output.
[править] Работа с файлами как с блочными устройствами
Для того, чтобы создать файловую систему в файле, как в блочном устройстве, достаточно задать его параметром в команде создания ФС.
Создание пустого файла:
dd if=/dev/zero of=/tmp/file.img bs=1024k count=100
Создание в нём ФС:
mkreiserfs /tmp/file.img
Монтирование файла с ФС, как блочного устройства:
mount -o loop /tmp/file.img /mnt/file_img_mount_point
Аналогичным образом можно монтировать iso-образы дисков и т.д.
[править] Экспорт блочных устройств по сети
Подробнее:
[править] RAID-массивы
- Основная страница: RAID
[править] Системы управления томами
Подробнее:
[править] Мониторинг и диагностика
[править] Мониторинг с помощью SMART
%# apt-get install smartmontools %# smartctl -i /dev/hda Device Model: IC35L120AVV207-0 Serial Number: VNVD02G4G3R72G Firmware Version: V24OA63A Device is: In smartctl database [for details use: -P show] ATA Version is: 6 ATA Standard is: ATA/ATAPI-6 T13 1410D revision 3a SMART support is: Available - device has SMART capability. SMART support is: Enabled
Аналогичным образом можно смотреть состояние SCSI-дисков или массивов:
%# smartctl -d cciss,0 -a /dev/cciss/c0d0
Здесь:
- cciss,0 --- первый физический диск;
- /dev/cciss/c0d0 -- контроллер.
Другие способы узнать о состоянии дисков и массивов Smart Array перечислены здесь [4].
Подробнее:
- Monitoring Hard Disks with SMART (англ.)
[править] Полезные программы
- blockdev — вызов ioctl() для блочных устройств прямо из командной строки
- blkid — определение атрибутов блочных устройств
- hdparm — управление параметрами контроллера IDE-дисков