В этом разделе содержится описание новых функций в файловой системе ZFS.
Наследование списков ACL в ZFS при режиме Pass Through для разрешения на выполнение
Использование устройств кэширования в пуле устройств хранения ZFS
Настройки квот и резервируемого пространства в ZFS только для данных файловой системы
Горячий резерв устройств в пуле устройств хранения данных ZFS
Обновление пулов устройств хранения данных ZFS (zpool upgrade)
Переименованные команды резервного копирования и восстановления ZFS
Версия Solaris 10 10/09: в этой версии Solaris можно настроить профиль JumpStart для идентификации архива корневого пула ZFS на флеш-накопителях. Для получения подробных сведений см. Установка корневой файловой системы ZFS (установка архива на флеш-накопителе).
Версия Solaris 10 10/09: в предыдущих версиях Solaris квоты и резервируемое пространство могли использоваться в файловой системе ZFS для управления и резервирования пространства.
В данной версии Solaris можно установить квоту для объема пространства, используемого файлами, относящимися к отдельному пользователю или группе. Настройка квот пользователей и групп может быть целесообразной в тех областях, где имеется большое число пользователей или групп.
Для настройки квот пользователя или группы используются свойства zfs userquota и zfs groupquota:
# zfs set userquota@user1=5G tank/data # zfs set groupquota@staff=10G tank/staff/admins |
Просмотр текущей настройки квоты пользователя или группы выполняется следующим образом:
# zfs get userquota@user1 tank/data NAME PROPERTY VALUE SOURCE tank/data userquota@user1 5G local # zfs get groupquota@staff tank/staff/admins NAME PROPERTY VALUE SOURCE tank/staff/admins groupquota@staff 10G local |
Отображение общей информации о квотах:
# zfs userspace tank/data TYPE NAME USED QUOTA POSIX User root 3K none POSIX User user1 0 5G |
# zfs groupspace tank/staff/admins TYPE NAME USED QUOTA POSIX Group root 3K none POSIX Group staff 0 10G |
Отображение информации об использовании пространства отдельным пользователем или группой выполняется посредством просмотра свойств userused@user и groupused@group следующим образом:
# zfs get userused@user1 tank/staff NAME PROPERTY VALUE SOURCE tank/staff userused@user1 213M local # zfs get groupused@staff tank/staff NAME PROPERTY VALUE SOURCE tank/staff groupused@staff 213M local |
Для получения подробной информации о настройке квот пользователей см. Настройки квот и резервируемого пространства в ZFS.
Версия Solaris 10 10/09: в предыдущих версиях Solaris можно было применить наследование списков ACL таким образом, чтобы все файлы создавались посредством разрешений 0664 или 0666. Если дополнительно требуется включить выполняемый бит из режима создания файлов в наследуемые списки ACL, в этой версии можно использовать наследование в режиме Pass Through для разрешения на выполнения.
Если в наборе данных ZFS активирована функция aclinherit=passthrough-x, пользователь может включить разрешение на выполнение для выходного файла, генерируемого из инструментов cc или gcc. Если унаследованные списки ACL не включают разрешение на выполнение, то выполняемые выходные данные из компилятора не могут быть выполнены, пока для изменения разрешений для данного файла не будет использована команда chmod.
Для получения дополнительной информации см. Пример 8–12.
Версия Solaris 10/09. Ниже перечислены усовершенствования файловой системы ZFS, включенные в эту версию.
Настройка свойств файловой системы ZFS во время создания пула – пользователь может устанавливать свойства файловой системы ZFS в ходе создания пула. В следующем примере включено сжатие для файловой системы ZFS, которая создается при создании пула.
# zpool create -O compression=on pool mirror c0t1d0 c0t2d0 |
Настройка свойств кэша в файловой системе ZFS – доступно два новых свойства файловой системы ZFS, которые позволяют управлять тем, для каких данных производится кэширование в первичном кэше (ARC) или во вторичном кэше (L2ARC). Настройка свойств кэша выполняется следующим образом:
primarycache – управляет содержимым для кэширования в ARC.
secondarycache – управляет содержимым для кэширования в L2ARC.
Возможные значения для обоих свойств – all, none и metadata. При установке на all выполняется кэширование данных пользователя и метаданных. При установке на none кэширование данных пользователя и метаданных не выполняется. При установке на metadata выполняется кэширование только метаданных. Значением по умолчанию является all.
Эти свойства могут использоваться в имеющейся файловой системе или при создании файловой системы. Пример:
# zfs set primarycache=metadata tank/datab # zfs create -o primarycache=metadata tank/newdatab |
При настройке для имеющейся файловой системы только новый ввод-вывод является кэшем, основанным на значении этих свойств.
Для некоторых сред баз данных целесообразно не использовать кэширование данных пользователей. Следует решить, необходима ли настройка свойств кэша для конкретной среды.
Свойства вычисления пространства – новые доступные только для чтения свойства файловой системы позволяют определять использование пространства для клонов, файловых систем и томов (но не для снимков). Для этого используются следующие свойства.
usedbychildren – определяет объем пространства, используемого дочерними элементами этого набора данных, который будет освобожден после разрушения всех этих дочерних элементов. Сокращение свойства – usedchild.
usedbydataset – определяет объем пространства, используемого самим набором данных, которое будет освобождено после разрушения набора данных, после того как сначала будут разрушены любые снимки и удалены любые refreservation. Сокращение свойства – usedds.
usedbyrefreservation – определяет объем пространства, используемого набором refreservation для этого набора данных, которое будет освобождено при удалении refreservation. Сокращение свойства – usedrefreserv.
usedbysnapshots – определяет объем пространства, занимаемого снимками этого набора данных. В частности, это объем пространства, которое будет освобождено в случае разрушения всех снимков этого набора данных. Обратите внимание, что это не просто сумма снимков свойств used, поскольку пространство может совместно использоваться несколькими снимками. Сокращение свойства – usedsnap.
Эти новые свойства делят значение свойства used на различные элементы, использующие пространство. В частности, значение свойства used делится следующим образом:
used property = usedbychildren + usedbydataset + usedbyrefreservation + usedbysnapshots |
Для отображения этих свойств используется команда zfs list - o space. Пример:
$ zfs list -o space NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD rpool 25.4G 7.79G 0 64K 0 7.79G rpool/ROOT 25.4G 6.29G 0 18K 0 6.29G rpool/ROOT/snv_98 25.4G 6.29G 0 6.29G 0 0 rpool/dump 25.4G 1.00G 0 1.00G 0 0 rpool/export 25.4G 38K 0 20K 0 18K rpool/export/home 25.4G 18K 0 18K 0 0 rpool/swap 25.8G 512M 0 111M 401M 0 |
Представленная выше команда является эквивалентом команды zfs list - o name,avail,used,usedsnap,usedds,usedrefreserv,usedchild -t filesystem,volume.
Вывод списка снимков – свойство пула listsnapshots определяет необходимость вывода данных о снимке командой zfs list. Значением по умолчанию является on, то есть по умолчанию данные о снимке отображаются.
Если свойство listsnapshots отключено, для для вывода списка можно воспользоваться командой zfs list -t snapshots; в таком случае данные о снимках выводятся.
Версия Solaris 10 10/09: в этой версии ZFS определяет сбои протокола намерений в команде zpool status. FMA также сообщает об этих ошибках. Как ZFS, так и FMA описывают метод восстановления после сбоя протокола намерений.
Например, если система неожиданно отключается до выполнения синхронных операций записи в пул с помощью отдельного устройства протоколирования, будет выведено подобное сообщение:
# zpool status -x pool: pool state: FAULTED status: One or more of the intent logs could not be read. Waiting for adminstrator intervention to fix the faulted pool. action: Either restore the affected device(s) and run 'zpool online', or ignore the intent log records by running 'zpool clear'. scrub: none requested config: NAME STATE READ WRITE CKSUM pool FAULTED 0 0 0 bad intent log mirror ONLINE 0 0 0 c0t1d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 logs FAULTED 0 0 0 bad intent log c0t5d0 UNAVAIL 0 0 0 cannot open |
Необходимо исправить сбой устройства протоколирования следующим образом.
Заменить или восстановить устройство протоколирования. В данном примере это устройство c0t5d0.
Снова активировать устройство протоколирования.
# zpool online pool c0t5d0 |
Выполнить сброс ошибочных параметров отказавшего устройства протоколирования.
# zpool clear pool |
Если устройство протоколирования необходимо восстановить после этой ошибки без его замены, можно удалить ошибку, используя команду zpool clear. В данном случае пул будет работать в режиме с ухудшенными характеристиками, а записи протокола будут записываться в основной пул до замены устройства протоколирования.
Рекомендуется использовать зеркалированные устройства протоколирования для снижения риска сбоев устройства протоколирования.
Версия Solaris 10 10/09: в данной версии Solaris возможно создание пула и указание устройств кэширования, используемых для кэширования данных пула устройств хранения.
Устройства кэширования действуют в качестве дополнительного уровня кэша между оперативной памятью и диском. Наибольшее повышение производительности от использования устройств кэширования достигается в случае рабочих нагрузок, для которых характерны операции случайного чтения преимущественно статических данных.
При создании пула устройств можно указать одно или более устройств кэширования. Пример:
# zpool create pool mirror c0t2d0 c0t4d0 cache c0t0d0 # zpool status pool pool: pool state: ONLINE scrub: none requested config: NAME STATE READ WRITE CKSUM pool ONLINE 0 0 0 mirror ONLINE 0 0 0 c0t2d0 ONLINE 0 0 0 c0t4d0 ONLINE 0 0 0 cache c0t0d0 ONLINE 0 0 0 errors: No known data errors |
После добавления устройств кэширования они постепенно заполняются данными из оперативной памяти. В зависимости от размера устройства кэширования для заполнения может потребоваться более часа. Контроль емкости и операций чтения может проводиться командой zpool iostat следующим образом:
# zpool iostat -v pool 5 |
Устройства кэширования можно добавлять к пулу или удалять из него после создания пула.
Для получения подробной информации см. Создание пула устройств хранения данных ZFS с устройствами кэширования и Пример 4–4.
Версия Solaris 10 5/09: в этой версии расширена поддержа переноса зон в среде ZFS с помощью Live Upgrade. Дополнительные сведения приведены в разделе Перенос или обновление системы с зонами с помощью Solaris Live Upgrade (Solaris 10 5/09 и Solaris 10 10/09).
Список известных проблем данной версии приведен в сопроводительной документации к версии Solaris 5 от 10/09.
Версия Solaris 10 от 10/08: в этой версии поддерживается возможность установки и загрузки файловой системы ZFS. Для установки корневой файловой системы ZFS можно использовать параметр начальной установки или функцию JumpStart. Можно также использовать функцию Live Upgrade для перехода корневой файловой системы UFS в корневую файловую систему ZFS. Кроме того, обеспечивается поддержка ZFS для устройств подкачки и дампа. Для получения дополнительных сведений см. Глава 5Установка и загрузка корневой файловой системы ZFS.
Список известных проблем данной версии приведено в сопроводительной документации к версии Solaris 10 от 10/08.
Версия Solaris 10 от 10/08: в этой версии поддерживается возможность восстановления набора данных без предварительного размонтирования. Эта функциональная возможность означает, что больше не требуется использовать параметр -f в команде zfs rollback для принудительной операции размонтирования. Параметр -f больше не поддерживается и игнорируется, если указан.
Версия Solaris 10 от 10/08: в эту версию включены следующие усовершенствования для команды zfs send.
Пересылка всех инкрементных потоков из одного снимка в совокупный снимок. Пример:
# zfs list NAME USED AVAIL REFER MOUNTPOINT pool 428K 16.5G 20K /pool pool/fs 71K 16.5G 21K /pool/fs pool/fs@snapA 16K - 18.5K - pool/fs@snapB 17K - 20K - pool/fs@snapC 17K - 20.5K - pool/fs@snapD 0 - 21K - # zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@combo |
Отправка всех инкрементных снимков с fs@snapA по fs@snapD в fs@combo.
Для создания клона необходимо перенаправить инкрементный поток из исходного снимка. Для принятия инкрементного потока исходный снимок уже должен существовать на принимающей стороне. Пример:
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I . . # zfs receive -F pool/clone < /snaps/fsclonesnap-I |
Пересылка потока репликации всех файловых систем-потомков вплоть до указанных снимков. При получении сохраняются все свойства, снимки, файловые системы-потомки и клоны. Пример:
zfs send -R pool/fs@snap > snaps/fs-R |
Развернутый пример приведено в разделе Пример 7–1.
Пересылка инкрементного потока репликации.
zfs send -R -[iI] @snapA pool/fs@snapD |
Развернутый пример приведено в разделе Пример 7–1.
Для получения дополнительной информации см. раздел Отправка и получение потоковых представлений сложных моментальных снимков ZFS.
Версия Solaris 10 от 10/08: в дополнение к существующим квотам ZFS и функциям резервирования в данную версию входят квоты и резервирования наборов данных, не включающие потомков, таких как снимки и клоны, при учете занимаемого пространства.
Свойство refquota ограничивает количество пространства, доступного для набора данных. Посредством этого свойства реализуется жесткий предел объема используемого пространства. Этот жесткий предел не включает пространство, используемое потомками, такими как снимки и клоны.
Свойством refreservation определяется минимальный объем пространства, гарантированного для набора данных без учета дочерних элементов.
Например, для studentA можно определить квоту refquota размером 10 ГБ, устанавливающую жесткий предел в 10 ГБ занимаемого пространства. Для дополнительной гибкости можно установить 20-гигабайтную квоту, позволяющую управлять снимками studentA.
# zfs set refquota=10g tank/studentA # zfs set quota=20g tank/studentA |
Для получения дополнительной информации см. Настройки квот и резервируемого пространства в ZFS.
Версия Solaris 10 от 10/08: свойства пула устройств хранения данных ZFS были введены в более ранних версиях. В данной версии предусмотрены дополнительные свойства. Пример:
# zpool get all mpool NAME PROPERTY VALUE SOURCE mpool size 33.8G - mpool used 5.76G - mpool available 28.0G - mpool capacity 17% - mpool altroot - default mpool health ONLINE - mpool guid 2689713858991441653 - mpool version 10 default mpool bootfs mpool/ROOT/zfsBE local mpool delegation on default mpool autoreplace off default mpool cachefile - default mpool failmode continue local |
Описание этих свойств приведено в Таблица 4–1.
Свойство cachefile – версия Solaris 10 от 10/08: в этой версии поддерживается свойство cachefile, с помощью которого осуществляется управление местом кэширования настроек пула. Все пулы в кэше автоматически импортируются при начальной загрузке системы. Однако в средах установки и кластеризации может потребоваться кэширование этой информации в других местоположениях для предотвращения автоматического импорта пулов.
Это свойство можно настроить для кэширования настроек пула в другом местоположении, которое затем можно импортировать командой zpool import c. В большинстве настроек ZFS это свойство не используется.
Свойство cachefile не является сохраняемым и не хранится на диске. Это свойство вводится взамен свойства temporary, которое использовалось для отказа от кэширования информации пула в предыдущих выпусках Solaris.
Свойство failmode – версия Solaris 10 от 10/08: в этой версии поддерживается свойство failmode, определяющее поведение в случае катастрофического отказа пула из-за потери связи с устройством или отказа всех устройств в пуле. Для свойства failmode можно установить следующие значения: wait, continue или panic. Значение по умолчанию – wait, т.е. требуется подключить устройство заново или заменить отказавшее устройство и сбросить ошибку командой zpool clear.
Свойство failmode устанавливается аналогично другим настраиваемым свойствам ZFS, которые можно определять перед созданием пула или после этого. Пример:
# zpool set failmode=continue tank # zpool get failmode tank NAME PROPERTY VALUE SOURCE tank failmode continue local |
# zpool create -o failmode=continue users mirror c0t1d0 c1t1d0 |
Описания всех свойств пула ZFS приведены в Таблица 4–1.
Версия Solaris 10 от 10/08: команда zpool history теперь предоставляет следующие новые возможности:
Отображаются сведения о событиях файловой системы ZFS. Пример:
# zpool history History for 'rpool': 2009-08-26.16:49:07 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /tmp/root/etc/zfs/zpool.cache rpool c1t1d0s0 2009-08-26.16:49:08 zfs set canmount=noauto rpool 2009-08-26.16:49:08 zfs set mountpoint=/rpool rpool 2009-08-26.16:49:09 zfs create -o mountpoint=legacy rpool/ROOT 2009-08-26.16:49:10 zfs create -b 8192 -V 2048m rpool/swap 2009-08-26.16:49:11 zfs create -b 131072 -V 1024m rpool/dump 2009-08-26.16:49:14 zfs create -o canmount=noauto rpool/ROOT/zfs1009BE 2009-08-26.16:49:15 zpool set bootfs=rpool/ROOT/zfs1009BE rpool 2009-08-26.16:49:15 zfs set mountpoint=/ rpool/ROOT/zfs1009BE 2009-08-26.16:49:16 zfs set canmount=on rpool 2009-08-26.16:49:17 zfs create -o mountpoint=/export rpool/export 2009-08-26.16:49:18 zfs create rpool/export/home 2009-08-28.08:17:59 zpool attach rpool c1t1d0s0 c1t0d0s0 |
Параметр -l позволяет отображать длинный формат с указанием имени пользователя, имени узла и зоны, в которой выполняется операция. Пример:
# zpool history -l rpool History for 'rpool': 2009-08-26.16:49:07 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /tmp/root/etc/zfs/zpool.cache rpool c1t1d0s0 [user root on neo:global] 2009-08-26.16:49:08 zfs set canmount=noauto rpool [user root on neo:global] 2009-08-26.16:49:08 zfs set mountpoint=/rpool rpool [user root on neo:global] 2009-08-26.16:49:09 zfs create -o mountpoint=legacy rpool/ROOT [user root on neo:global] 2009-08-26.16:49:10 zfs create -b 8192 -V 2048m rpool/swap [user root on neo:global] 2009-08-26.16:49:11 zfs create -b 131072 -V 1024m rpool/dump [user root on neo:global] 2009-08-26.16:49:14 zfs create -o canmount=noauto rpool/ROOT/zfs1009BE [user root on neo:global] 2009-08-26.16:49:15 zpool set bootfs=rpool/ROOT/zfs1009BE rpool [user root on neo:global] 2009-08-26.16:49:15 zfs set mountpoint=/ rpool/ROOT/zfs1009BE [user root on neo:global] 2009-08-26.16:49:16 zfs set canmount=on rpool [user root on neo:global] 2009-08-26.16:49:17 zfs create -o mountpoint=/export rpool/export [user root on neo:global] 2009-08-26.16:49:18 zfs create rpool/export/home [user root on neo:global] 2009-08-28.08:17:59 zpool attach rpool c1t1d0s0 c1t0d0s0 [user root on neo:global] |
Параметр -i позволяет отображать сведения о внутренних событиях, которые можно использовать для диагностики. Пример:
# zpool history -i rpool History for 'rpool': 2009-08-26.16:49:07 zpool create -f -o failmode=continue -R /a -m legacy -o cachefile= /tmp/root/etc/zfs/zpool.cache rpool c1t1d0s0 2009-08-26.16:49:07 [internal property set txg:6] mountpoint=/ dataset = 16 2009-08-26.16:49:07 [internal property set txg:7] mountpoint=legacy dataset = 16 2009-08-26.16:49:08 [internal property set txg:8] canmount=2 dataset = 16 2009-08-26.16:49:08 zfs set canmount=noauto rpool 2009-08-26.16:49:08 [internal property set txg:10] mountpoint=/rpool dataset = 16 2009-08-26.16:49:08 zfs set mountpoint=/rpool rpool 2009-08-26.16:49:09 [internal create txg:12] dataset = 31 2009-08-26.16:49:09 [internal property set txg:13] mountpoint=legacy dataset = 31 2009-08-26.16:49:09 zfs create -o mountpoint=legacy rpool/ROOT 2009-08-26.16:49:09 [internal create txg:15] dataset = 37 2009-08-26.16:49:10 [internal property set txg:16] refreservation=2147483648 dataset = 37 2009-08-26.16:49:10 [internal refreservation set txg:16] 2147483648 dataset = 37 2009-08-26.16:49:10 zfs create -b 8192 -V 2048m rpool/swap 2009-08-26.16:49:10 [internal create txg:18] dataset = 43 2009-08-26.16:49:10 [internal property set txg:19] refreservation=1073741824 dataset = 43 2009-08-26.16:49:10 [internal refreservation set txg:19] 1073741824 dataset = 43 . . . |
Для получения дополнительной информации об использовании команды zpool history см. Выявление проблем в ZFS.
Версия Solaris 10 от 10/08: в этой версии представлена команда zfs upgrade, с помощью которой можно применять последующие усовершенствования файловой системы ZFS к существующим файловым системам. Пулы устройств хранения данных ZFS обладают сходной функцией обновления, при помощи которой можно реализовать расширения пула для существующих пулов устройств хранения данных.
Пример:
# zfs upgrade This system is currently running ZFS filesystem version 3. All filesystems are formatted with the current version. |
Обновляемые файловые системы и потоки данных, создаваемые из этих обновленных файловых систем с помощью команды zfs send, недоступны в системах, работающих с программным обеспечением более ранних версий.
Версия Solaris 10 от 10/08: в этой версии непривилегированным пользователям можно делегировать детализированные полномочия на выполнение административных задач ZFS.
Для назначения и отмены разрешений используются команды zfs allow и zfs unallow.
Доступность функций делегированного администрирования можно изменять с помощью свойства пула delegation. Пример:
# zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation on default # zpool set delegation=off users # zpool get delegation users NAME PROPERTY VALUE SOURCE users delegation off local |
По умолчанию свойство delegation разрешает использовать эти функции.
Для получения дополнительной информации см. Глава 9Делегированное администрирование ZFS и zfs(1M).
Версия Solaris 10 от 10/08: поддерживается протокол намерений ZFS (ZFS Intent Log – ZIL), обеспечивающий соответствие требованиям POSIX для синхронных транзакций. Например, после системного вызова транзакции баз данных часто должны располагаться на устойчивых устройствах хранения. fsync() также может использоваться NFS и другими приложениями для обеспечения стабильности данных. По умолчанию ZIL выделяется из блоков в основном пуле устройств хранения данных. Однако в целях достижения наилучшей производительности можно использовать отдельные устройства для протокола намерений в пуле устройств хранения данных ZFS, например NVRAM или выделенный диск.
Устройства протоколирования для протокола намерений ZFS не связаны с файлами протоколов базы данных.
Устройство протоколирования ZFS можно настроить во время создания пула устройств хранения данных или после создания пула. Примеры настройки устройств протоколирования приведено в разделах Создание пула устройств хранения данных ZFS с устройствами протоколирования и Добавление устройств в пул устройств хранения данных.
Для создания зеркального устройства протоколирования можно присоединить новое устройство протоколирования к существующему. Эта операция идентична присоединению устройства в незеркалируемом пуле устройств хранения данных.
Чтобы определить, уместна ли настройка устройств протоколирования ZFS в используемой среде, следует принять во внимание следующие моменты:
Повышение производительности в результате реализации отдельного устройства протоколирования зависит от типа устройства, состава оборудования пула и рабочей нагрузки приложений. Начальные сведения о производительности приведено в блоге:
Устройства протоколирования могут использоваться без репликации или с зеркальным отражением, но RAID-Z для этих устройств не поддерживается.
Если на отдельном устройстве протоколирования не используется отражение, то в случае отказа устройства, содержащего файлы протокола, сохранение блоков данных протоколирования снова переходит к пулу устройств хранения данных.
Устройства протоколирования можно добавлять, заменять, подключать, отключать, а также импортировать и экспортировать как часть более крупного пула устройств хранения данных. В настоящее время устройства протоколирования нельзя удалять.
Минимальный размер устройства протоколирования совпадает с минимальным размером каждого устройства в пуле и составляет 64 МБ. Объем активных данных, которые могут храниться на устройстве протоколирования, относительно невелик. Блоки данных протоколирования освобождаются после выполнения транзакции протоколов (системный вызов).
Максимальный размер устройства протоколирования должен составлять примерно 1/2 размера физической памяти, поскольку это максимальный объем потенциальных активных данных, которые могут храниться на устройстве. Например, если в системе имеется 16 ГБ физической памяти, максимальный размер устройства протоколирования должен составлять 8 ГБ.
Версия Solaris 10 от 10/08: для быстрого создания еще не существующего промежуточного набора данных можно воспользоваться параметром -p в командах zfs create, zfs clone и zfs rename.
В качестве примера рассмотрим создание наборов данных ZFS (users/area51) в пуле устройств хранения данных datab.
# zfs list NAME USED AVAIL REFER MOUNTPOINT datab 106K 16.5G 18K /datab # zfs create -p -o compression=on datab/users/area51 |
Если промежуточный набор данных уже существует на момент операции создания, операция завершается успешно.
Указанные свойства относятся к целевому набору данных, а не к промежуточным наборам данных. Пример:
# zfs get mountpoint,compression datab/users/area51 NAME PROPERTY VALUE SOURCE datab/users/area51 mountpoint /datab/users/area51 default datab/users/area51 compression on local |
Промежуточный набор данных создается с точкой монтирования по умолчанию. Дополнительные свойства для промежуточного набора данных деактивируются. Пример:
# zfs get mountpoint,compression datab/users NAME PROPERTY VALUE SOURCE datab/users mountpoint /datab/users default datab/users compression off default |
Для получения дополнительных сведений см. zfs(1M).
Версия Solaris 10 от 10/08: в этой версии ZFS более оперативно реагирует на удаляемые устройства и поддерживает механизм автоматического определения вставляемых устройств с помощью следующих усовершенствований:
Существующее устройство можно заменить эквивалентным устройством без использования команды zpool replace.
Автоматическая замена устройства контролируется свойством autoreplace. Если отключено, замена устройства должна инициироваться администратором по команде zpool replace. Если включено, все новые устройства, обнаруженные в том же самом физическом местоположении, что и устройство, ранее принадлежавшее пулу, автоматически форматируются и заменяются. По умолчанию свойство отключено.
Состояние REMOVED пула устройств хранения данных возникает при удалении устройства или горячего резерва, если устройство было физически удалено во время работы системы. Удаленное устройство заменяется устройством горячего резервирования, если таковое имеется в наличии.
При повторной вставке удаленного устройства оно возвращается в оперативный режим. Если на момент повторной вставки устройства было активировано горячее резервирование, резерв удаляется после выхода из оперативного режима.
Автоматическое обнаружение удаления или вставки устройств зависит от оборудования; на некоторых платформах поддержка может отсутствовать. Например, устройства USB настраиваются автоматически после вставки. Однако для настройки диска SATA, возможно, придется использовать команду cfgadm -c configure.
Устройства горячего резерва периодически проверяются на оперативность и доступность.
Для получения дополнительных сведений см. zpool(1M).
Версия Solaris 10 от 10/08: с помощью команды zfs rename -r можно выполнить рекурсивное переименование всех снимков дочерних элементов ZFS.
Например, можно сделать снимок ряда файловых систем ZFS.
# zfs snapshot -r users/home@today # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@today 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@today 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@today 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@today 0 - 18K - |
Затем можно переименовать снимки завтрашним днем.
# zfs rename -r users/home@today @yesterday # zfs list NAME USED AVAIL REFER MOUNTPOINT users 216K 16.5G 20K /users users/home 76K 16.5G 22K /users/home users/home@yesterday 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@yesterday 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@yesterday 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@yesterday 0 - 18K - |
Снимки представляют собой единственный набор данных, который можно переименовывать рекурсивно.
Для получения дополнительной информации о снимках см. Краткий обзор снимков ZFS и запись блога, в которой описывается создание развертывающихся снимков:
http://blogs.sun.com/mmusante/entry/rolling_snapshots_made_easy
Solaris 10 версии 10/08: в этой версии Solaris помимо сжатия lzjb в файловых системах ZFS можно указать сжатие gzip. Сжатие можно определить как gzip (по умолчанию) или gzip-N, где N принимает значение от 1 до 9. Пример:
# zfs create -o compression=gzip users/home/snapshots # zfs get compression users/home/snapshots NAME PROPERTY VALUE SOURCE users/home/snapshots compression gzip local # zfs create -o compression=gzip-9 users/home/oldfiles # zfs get compression users/home/oldfiles NAME PROPERTY VALUE SOURCE users/home/oldfiles compression gzip-9 local |
Для получения дополнительной информации о задании свойств ZFS см. Установка свойств ZFS.
Версия Solaris 10 от 10/08: для надежности метаданные файловой системы ZFS автоматически сохраняются несколько раз на разных дисках, если это возможно. Эта функция называется дубликаты блоков.
В этой версии Solaris можно также с помощью команды zfs set copies настроить хранение нескольких копий пользовательских данных для каждой файловой системы. Пример:
# zfs set copies=2 users/home # zfs get copies users/home NAME PROPERTY VALUE SOURCE users/home copies 2 local |
Доступныe значения: 1, 2 или 3. Значение по умолчанию: 1. Эти копии являются дополнительными по отношению к избыточности уровня пула, например, при зеркальной настройке или настройке RAID-Z.
Хранение множественных копий пользовательских данных ZFS дает следующие преимущества:
повышается сохранность данных в результате возможности восстановления после неисправимых сбоев чтения блока, например, при сбое носителя (повреждение отдельных битов) для всех настроек ZFS;
обеспечивается защита данных, даже в случае доступности только одного диска;
политику защиты данных можно выбирать для каждой файловой системы, выходя за рамки возможностей одного пула устройств хранения данных.
В зависимости от выделения дубликатов блоков в пуле устройств хранения данных несколько копий могут находиться на одном диске. В результате полного отказа диска все дубликаты блоков могут оказаться недоступными.
Вопрос использования дубликатов блоков следует рассматривать в том случае, если случайно создан нерезервированный пул и если необходимо настроить политику сохранности данных.
Подробную информацию о том, как настройка копий в системе с однодисковым или многодисковым пулом может повлиять на общую защиту данных, приведено в блоге:
http://blogs.sun.com/relling/entry/zfs_copies_and_data_protection
Для получения дополнительной информации о задании свойств ZFS см. Установка свойств ZFS.
Версия Solaris 10 от 8/07: с помощью команды zpool status -v можно вывести на экран список файлов с устойчивыми ошибками. Ранее было необходимо использовать команду find -inum для определения имен файлов на основе списка отображаемых индексных дескрипторов.
Для получения дополнительной информации об отображении списка файлов с устойчивыми ошибками см. Восстановление поврежденного файла или каталога.
Версия Solaris 10 от 8/07: в этой версии Solaris можно создать том ZFS в качестве целевого устройства iSCSI Solaris; для этого нужно указать свойство shareiscsi на томе ZFS. Этот метод позволяет быстро создавать целевые устройства iSCSI в Solaris. Пример:
# zfs create -V 2g tank/volumes/v2 # zfs set shareiscsi=on tank/volumes/v2 # iscsitadm list target Target: tank/volumes/v2 iSCSI Name: iqn.1986-03.com.sun:02:984fe301-c412-ccc1-cc80-cf9a72aa062a Connections: 0 |
После создания целевого устройства iSCSI настраивается инициатор iSCSI. Для получения информации по созданию инициатора iSCSI Solaris см. раздел Глава 14, Configuring Solaris iSCSI Targets and Initiators (Tasks), в System Administration Guide: Devices and File Systems.
Для получения дополнительной информации об управлении томом ZFS как целевым устройством iSCSI см. Использование тома ZFS в качестве целевого устройства iSCSI Solaris.
Версия Solaris 10 от 8/07: в этой версии Solaris ZFS автоматически протоколирует успешные команды zfs и zpool, которые изменяют информацию о состоянии пула. Пример:
# zpool history History for 'newpool': 2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0 2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0 2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0 2007-04-25.11:38:09 zfs create newpool/user1 2007-04-25.11:38:15 zfs destroy newpool/user1 History for 'tank': 2007-04-25.11:46:28 zpool create tank mirror c1t0d0 c2t0d0 mirror c3t0d0 c4t0d0 |
Эта функция позволяет пользователю или сотрудникам службы технической поддержки Sun определить точный состав выполненных команд ZFS для выяснения причин возникновения ошибки.
С помощью команды zpool history можно идентифицировать определенный пул устройств хранения данных. Пример:
# zpool history newpool History for 'newpool': 2007-04-25.11:37:31 zpool create newpool mirror c0t8d0 c0t10d0 2007-04-25.11:37:46 zpool replace newpool c0t10d0 c0t9d0 2007-04-25.11:38:04 zpool attach newpool c0t9d0 c0t11d0 2007-04-25.11:38:09 zfs create newpool/user1 2007-04-25.11:38:15 zfs destroy newpool/user1 |
В этой версии Solaris команда zpool history не записывает идентификатор пользователя, имя узла или имя зоны. Для получения дополнительной информации см. Усовершенствования журнала команд ZFS (zpool history).
Для получения дополнительной информации о поиске и устранении проблем ZFS см. Выявление проблем в ZFS.
Версия Solaris 10 от 8/07: свойство ZFS xattr можно использовать для отключения или включения расширенных атрибутов для определенной файловой системы ZFS. Значение по умолчанию – включено. Описание свойств ZFS приведено в разделе Введение в свойства ZFS.
Версия Solaris 10 от 8/07:с помощью нового свойства ZFS canmount можно определить для набора данных возможность монтирования командой zfs mount. Для получения дополнительной информации см. Свойство canmount.
Версия Solaris 10 от 8/07: в дополнение к стандартным системным свойствам ZFS поддерживает пользовательские свойства, которые могут использоваться для экспорта внутренней статистики или управления поведением файловой системы ZFS. Пользовательские свойства не влияют на поведение ZFS, но их можно использовать для добавления пользовательской информации к наборам данных.
Для получения дополнительной информации см. Пользовательские свойства ZFS.
Версия Solaris 10 от 8/07: в этой версии Solaris свойства можно назначать не только после создания файловой системы, но и непосредственно в процессе ее создания.
В следующих примерах показан эквивалентный синтаксис:
# zfs create tank/home # zfs set mountpoint=/export/zfs tank/home # zfs set sharenfs=on tank/home # zfs set compression=on tank/home |
# zfs create -o mountpoint=/export/zfs -o sharenfs=on -o compression=on tank/home |
Версия Solaris 10 от 8/07: в этой версии Solaris можно использовать различные формы команды zfs get для отображения информации обо всех наборах данных, если не указывается отдельный набор данных или команда all. В предыдущих версиях получить информацию обо всех наборах данных при помощи команды zfs get было невозможно.
Пример:
# zfs get -s local all tank/home atime off local tank/home/bonwick atime off local tank/home/marks quota 50G local |
Версия Solaris 10 от 8/07: в этой версии Solaris можно использовать новый параметр -F в команде zfs receive для принудительного отката файловой системы к последнему снимку перед выполнением операции получения. Этот параметр может потребоваться в случае изменения файловой системы в промежутке между моментами отката и инициирования процедуры получения.
Для получения дополнительной информации см. Получение снимка ZFS.
Версия Solaris 10 от 11/06: при создании снимка файловой системы с помощью команды zfs snapshot параметр -r позволяет рекурсивно создавать снимки для всех дочерних файловых систем. Кроме того, с помощью параметра -r можно рекурсивно удалять все дочерние снимки при удалении родительского снимка.
Рекурсивные снимки ZFS создаются быстро в рамках одной элементарной операции. Снимки создаются все вместе (одновременно) или не создаются вообще. Преимущество элементарных снимков состоит в том, что данные снимка всегда извлекаются в один и тот же момент времени даже из дочерних файловых систем.
Для получения дополнительной информации см. Создание и уничтожение снимков ZFS.
Версия Solaris 10 от 11/06: теперь можно создать резервную настройку RAID-Z с однократным или двойным контролем четности, обеспечивающим непрерывное функционирование без потери данных в случае отказа одного или двух устройств соответственно. Для использования настройки RAID-Z с двойным контролем четности укажите ключевое слово raidz2. Для использования настройки RAID-Z с однократным контролем четности укажите ключевое слово raidz или raidz1.
Для получения дополнительной информации см. Создание пулов устройств хранения данных RAID-Z или zpool(1M).
Версия Solaris 10 от 11/06: функция горячего резерва ZFS позволяет идентифицировать диски, которые можно использовать для замены отказавших или неисправных устройств в одном или нескольких пулах устройств хранения данных. Обозначение устройства в качестве устройства горячего резерва означает, что в случае отказа активного устройства в пуле это отказавшее устройство автоматически заменяется устройством горячего резерва. Кроме того, устройство горячего резерва можно использовать для замены устройства в пуле вручную.
Для получения дополнительной информации см. Устройства горячего резерва в пуле устройств хранения данных и zpool(1M).
Версия Solaris 10 от 11/06: команда zfs promote позволяет заменить существующую файловую систему ZFS клоном этой файловой системы. Эту функцию рекомендуется использовать при необходимости выполнения тестов на альтернативной версии файловой системы с последующей установкой этой альтернативной версии в качестве активной файловой системы.
Для получения дополнительной информации см. Замена файловой системы ZFS на клон ZFS и zfs(1M).
Версия Solaris 10 от 6/06: для обновления пулов до более новой версии, что позволит воспользоваться всеми преимуществами новейших функций, используется команда zpool upgrade. Кроме того, измененная команда zpool status может проинформировать пользователя об использовании в пулах старых версий.
Для получения дополнительной информации см. Обновление пулов устройств хранения данных ZFS и zpool(1M).
При необходимости использования консоли администрирования ZFS в системе с пулом предыдущей версии Solaris сначала убедитесь в том, что пулы обновлены. Для определения необходимости обновления пулов используется команда zpool status. Для получения информации о консоли администрирования ZFS см. Управление ZFS через веб-интерфейс.
Версия Solaris 10 от 6/06: в этой версии Solaris команды zfs backup и zfs restore переименованы в zfs send и zfs receive, что более точно описывает их функцию. Эти команды предназначены для сохранения и восстановления представлений потоков данных ZFS.
Для получения дополнительной информации об этих командах см. радел Отправка и получение данных ZFS.
Версия Solaris 10 от 6/06: в эту версию включена команда zpool import -D, которая используется для восстановления пулов, ранее уничтоженных с помощью команды zpool destroy.
Для получения дополнительной информации см. Восстановление уничтоженных пулов устройств хранения данных ZFS.
Версия Solaris 10 от 6/06: в эту версию включен интегрированный механизм диагностики ZFS, позволяющий диагностировать и регистрировать отказы пула и устройств. Также обеспечивается регистрация ошибок контрольной суммы, ввода/вывода и устройств, связанных с отказом пула или устройства.
Механизм диагностики не обеспечивает прогнозный анализ ошибок контрольной суммы и ввода/вывода и упреждающие действия на основе анализа отказов.
В случае отказа ZFS может появиться сообщение, подобное сообщению, появляющемуся при выполнении команды fmd:
SUNW-MSG-ID: ZFS-8000-D3, TYPE: Fault, VER: 1, SEVERITY: Major EVENT-TIME: Fri Aug 28 09:10:27 PDT 2009 PLATFORM: SUNW,Sun-Fire-T200, CSN: -, HOSTNAME: neo SOURCE: zfs-diagnosis, REV: 1.0 EVENT-ID: d6725ad6-4546-6c48-fa16-eace4d371981 DESC: A ZFS device failed. Refer to http://sun.com/msg/ZFS-8000-D3 for more information. AUTO-RESPONSE: No automated response will occur. IMPACT: Fault tolerance of the pool may be compromised. REC-ACTION: Run 'zpool status -x' and replace the bad device. |
Изучение рекомендуемых действий в дополнение к проверке более подробных результатов команды zpool status позволит быстро выявить и устранить отказ.
Пример решения зарегистрированной проблемы ZFS приведен в разделе Восстановление отсутствующего устройства.
Версия Solaris 10 от 6/06: в эту версию включена команда zpool clear, которая используется для сброса счетчиков ошибок, связанных с устройством или пулом. Ранее сброс счетчиков ошибок осуществлялся при активации устройства пула с помощью команды zpool online. Для получения дополнительной информации см. zpool(1M)Сброс ошибок устройств в пуле устройств хранения данных.
Версия Solaris 10 от 6/06: в этой версии доступны три формата списков ACL NFSv4 – подробный, позиционный и компактный. Для настройки и просмотра списков ACL теперь доступны новые компактные и позиционные форматы списков ACL. При этом для определения всех трех форматов списков ACL можно по-прежнему использовать команду chmod. Для просмотра компактных и позиционных форматов списков ACL используется команда ls -V, а для просмотра подробных форматов списков ACL – командаls -v.
Для получения дополнительной информации см. Настройка и просмотр списков ACL файлов ZFS в компактном формате, chmod(1)ls(1).
Версия Solaris 10 от 6/06: новое средство наблюдения за файловой системой, fsstat, предназначена для вывода информации об операциях файловой системы. Эта информация может быть представлена по точке монтирования или типу файловой системы. В следующем примере показаны общие операции файловой системы ZFS.
$ fsstat zfs new name name attr attr lookup rddir read read write write file remov chng get set ops ops ops bytes ops bytes 7.82M 5.92M 2.76M 1.02G 3.32M 5.60G 87.0M 363M 1.86T 20.9M 251G zfs |
Для получения дополнительной информации см. fsstat(1M)
Версия Solaris 10 от 6/06: при помощи средства управления ZFS через веб-интерфейс можно выполнять множество административных задач. Это средство позволяет решать следующие задачи:
создание нового пула устройств хранения данных;
расширение емкости существующего пула;
перемещение (экспорт) пула устройств хранения данных в другую систему;
импорт ранее экспортированного пула устройств хранения данных в другую систему и обеспечение его доступности;
просмотр информации о пулах устройств хранения данных;
создание файловой системы;
создание тома;
создание снимка файловой системы или тома;
восстановление файловой системы с использованием предыдущего снимка.
Для доступа к консоли администрирования ZFS введите следующий URL-адрес в безопасном веб-обозревателе:
https://system-name:6789/zfs |
Если после ввода соответствующего URL-адреса консоль администрирования ZFS недоступна, возможно, не запущен сервер. Для запуска сервера выполните следующую команду:
# /usr/sbin/smcwebserver start |
При необходимости автоматического запуска сервера в процессе начальной загрузки системы выполните следующую команду:
# /usr/sbin/smcwebserver enable |
Консоль управления Solaris (smc) невозможно использовать для управления пулами устройств хранения данных или файловыми системами ZFS.