Дата и время публикации: Дата и время модификации:
Назначение и применение в ОС GNU/Linux
1. Назначение
Накопители информации карт памяти SDС (от англ. Secure Digital Memory Card, далее по тексту – карты памяти SD) имеют три типа – SD, SDHC и SDXC.
Они описываются спецификацией, разработанной Ассоциацей SD (кратко называемой SDA от SD Association) и соблюдаемой её членов-компаний, таких как Panasonic, SanDisc и Toshiba. Данная спецификация разработана в целях стандартизации работы аппаратной части на физическом уровне (хост-контроллера) и программной части на логическом уровне представления данных и реализации доступа по чтению и записи на носителях информации.
Таким образом, спецификация делится на два уровня: первый для описания аппаратного уровня (англ. Physical Layer Specifiction), а второй для логического доступа к данным с использованием спецификации файловой системы (англ. File System Specifiction).
Согласно, 2-ой части File System Specification[pdf] версии 3.0, для разметки карт памяти SD могут применяться только файловые системы FAT, которые выбираются в соответствие с её емкостью и типом, значения которых приведены в таблице 1.1.
Емкость карты SD | Тип | Файловая система | Год адаптации | Скорость записи |
---|---|---|---|---|
~2048MB[1] | Карта памяти SD стандартной емкости (Standard Capacity SD Memory Card) | FAT12/FAT16 | 2000 | 0.9 – 20MB/s | 2,088.5MB,...,~32,768MB[1,4] | Карта памяти SD большой емкости (High Capacity SD Memory Card – SDHC) [2] | FAT32 | 2006 | 2 – 40MB/s | 32896MB,...,~2048GB[1,4] | Карта памяти SD повышенной емкости (Extended Capacity SD Memory Card – SDXC) [2] | exFAT[3] | 2009 | Не более 300MB/s/s |
2. Применение
2.1 Виды подключений
Карты памяти SD, которые подключаются через шину USB (например, при использовании карт-ридеров), будут определяться как /dev/sdX, как показано в листинге 2.1.1.
Листинг 2.1.1
# cat /proc/partitions major minor #blocks name . . . 8 0 1967104 sda 8 1 1966080 sda1
В тоже время, карты памяти SD присоединяемые к шине Multi Media Card (далее по тексту – mmc), будут определяться как /dev/mmcblkX, логические диски как /dev/mmcblkXpY. Пример такого определения приводится в листинге 2.1.2.
Листинг 2.1.2
... /dev/mmcblk0: PTUUID="6917ef24" PTTYPE="dos" /dev/mmcblk0p1: UUID="2411-1A8E" TYPE="exfat" PARTUUID="6917ef24-01"
2.2 Обслуживание
Автор в настоящей статье умышленно пропускает операции по разметки карт памяти SD, т.к. указанные носители информации поступают потребителям уже отформатированными компаниями-членами ассоциации SD согласно таблицы 1.1 настоящего документа. Поэтому, далее речь пойдет об обслуживание в части проверки их работоспособности по применяемым файловым системам.
2.2.1 Файловая система FAT12/FAT16/FAT32
Файловая система FAT16/FAT12 использовалась и применяется до сих пор в картах памяти mmc/SD до 2ГБ. За исключением промышленных карт SD MMCplus версии 4, в которых возможно использовать как FAT16, так и файловую систему FAT32.
Проверку работоспособности карт памяти SD для упомянутых файловых систем лучше проводить, как показано в листинге 2.2.1.1
Листинг 2.2.1.1
$ sudo fsck.vfat -w -r -a -l /dev/sdb1
По умолчанию, fsck.vfat только лишь тестовый проход без исправления ошибок. Таким образом, для внесения исправления ошибок нужно дополнительно использовать опции ‘-a’ или ‘-r’. Последняя предоставляет возможность пользователю собственноручно управлять исправлением ошибок.
Опция ‘w’ обеспечивает немедленную запись на диск, а опция ‘l’ печатает на стандартное устройство ввода-вывода (по сисадмински – на консоль) не только имя файла, но и абсолютный путь. Так же можно добавить опцию ‘t’, которая позволит помечать bad сектора при отказе чтения.
В тоже время, как показано в листинге 2.2.1.2, перечисленные опции к fsck.vfat можно использовать, на первый взгляд иной системной утилитой fsck.fat.
Листинг 2.2.1.2
$ sudo fsck.fat -wralt /dev/sdb1
На самом деле, fsck.vfat и fsck.msdos являются всего лишь псевдонимами fsck.vfat, как показано в листинге 2.2.1.3 и служат для обратной совместимости, например к ранее написанным системным скриптам, которые могут использовать при инициализации системы.
Листинг 2.2.1.3
$ sudo ls -l /sbin/fsck.vfat lrwxrwxrwx 1 root root 8 Jan 25 2017 /sbin/fsck.vfat -> fsck.fat ... $ sudo -l /sbin/fsck.msdos lrwxrwxrwx 1 root root 8 Jan 25 2017 /sbin/fsck.msdos -> fsck.fat
Для получения и установки метки логическому диску используйте утилиту fatlabel(8), как показано в листинге 2.2.1.4
Листинг 2.2.1.4
$ sudo fatlabel /dev/sdb1 01234567-89
2.2.2 Файловая система exFAT
Применяется в картах памяти повышенной емкости типа SDXC, имеющие размер более 32 ГБ.
Как показано в листинге 2.2.2.1, проверка работоспособности таких носителей производится без возможности восстановления утилитой exfatfsck(8).
Листинге 2.2.2.1
$ sudo exfatfsck /dev/sdb1
Для получения и установки метки логическому диску используйте утилиту exfatlabel(8), как показано в листинге 2.2.2.2
Листинг 2.2.2.2
$ sudo fatlabel /dev/sdb1 01234567-89
3. Особенности применения
При постоянном использование карты памяти SD, например в качестве источника хранения образов на сервере tftp и ftp, следует прописать точку монтирования /srv/ftp в файле /etc/fstab, как показано в листинге 3.1.
Листинг 3.1
# <file system> <dir> <type> <options> <dump> <pass> . . . LABEL=01234567-89 /srv/ftp vfat defaults,uid=root,gid=users,fmask=037,dmask=027 0 2
Соответственно, после выполнения команды `mount -a` в директории с правами суперпользователя root выполним беспрепятственно команды, приведенные в листинге 3.2.
Листинг 3.2
root@home:~# mkdir /srv/ftp/tstdir root@home:~# root@home:~# touch /srv/ftp/tstdir/file-root root@home:~# ls -l /srv/ftp/tstdir/ total 0 -rwxr-x--- 1 root user 0 May 13 20:58 file-root
При этом, для пользователей из группы users файлы в /srv/ftp будут доступны лишь только по чтению, что и иллюстрирует листинг 3.3
Листинг 3.3
user@home:~$ ls -l /srv/ftp/tstdir/ total 0 -rwxr-x--- 1 root user 0 May 13 20:58 file-root user@home:~$ touch /srv/ftp/tstdir/file-user touch: cannot touch '/srv/ftp/tstdir/file-user': Permission denied
Разграничение прав доступа между суперпользователем root и пользователей из группы users стало возможно благодаря использованию опций uid= и gid=, установившие владельца и группу пользователей для файлов и директорий. При этом, непосредственно разделение прав доступа между суперпользователем и пользователями из указанной группы, как это наблюдали в листинге 3.2 и 3.3, осуществляется с помощью опций fmask=037,dmask=027, которые устанавливают возможность просматривать файлы и директории в /srv/ftp, но не создавать и редактировать.
4. Библиография
1) Part 2. File System Specification V3.00 Final [pdf]
4) SDcard Tools. File System Design Guide
7) Secure Digital MMC memory card fat16/fat32 driver
8) The Extended FAT file system. Differentiating with FAT32 file system[pdf]