Так что я после подключения поддержки ZFS в принципе на всякий случай случай перезагрузился и проверил, не подохла ли она после этого. А увидев, что не подохла, приступил к её окучиванию. Которое начинается с создания пула носителей:

# zpool create -o ashift=12 tank scsi-SATA_SanDisk_SDSSDX1120823400863-part3 scsi-SATA_SanDisk_SDSSDX1120823402786-part3

Поскольку в этот раз я, как уже неоднократно декларировал, подступился к ZFS не ради лёгкого экспериментального флирта, а с серьёзными намерениями, для включаемых в пул разделов были использованы их имена по модели by-id, как это рекомендуется в соответствующем разделе ZFS on Linux FAQ. Кроме того, так как в пул включались разделы SSD-накопителей, имеющих размер блока 4 КБ, опцией ashift=12 это было задано в явном виде — согласно рекомендации того же FAQ’а.

Проверка с помощью команды

# zpool status tank

показала, что с новообразованным пулом всё в порядке:

SSDX1120823400863-part3 scsi-SATA_SanDisk_SDSSDX1120823402786-part3
/home/proj/suseana/scetches/opensuse12.2[root]=> zpool status tank                      15:31 pts/6
  pool: tank
 state: ONLINE
 scan: none requested
config:

        NAME                                           STATE     READ WRITE CKSUM
        tank                                           ONLINE       0     0     0
          scsi-SATA_SanDisk_SDSSDX1120823400863-part3  ONLINE       0     0     0
          scsi-SATA_SanDisk_SDSSDX1120823402786-part3  ONLINE       0     0     0

errors: No known data errors

Теперь предстояло создать наборы данных (dataset) или, иными словами, собственно файловые системы. Что и было проделано в определённой последовательности. Поскольку в дальнейшем я предполагал смонтировать свой пул в каталог /home, первой командой была

# zfs create tank/home

Затем внутри я сделал файловую систему для своего домашнего каталога (в котором я не храню ничего, кроме dot-файлов):

# zfs create tank/home/alv

Далее были образованы файловые системы для текущих проектов

# zfs create tank/home/proj

некоторой самонужной мультимедии — песен и книжек

# zfs create tank/home/media

некоторых прочих рабочих материалов

# zfs create tank/home/other

и, наконец, для размещения наборов данных, применяемых мной при оценке быстродействия

# zfs create tank/home/test

Далее я отключил обновление времени последнего доступа ко всем файловым системам пула командой

# zfs set atime=off tank

Это сделано было пущей производительности для — хотя нынче действие опции noatime в основном психологическое.

Теперь наступила пора проверить, что же получилось. Это можно сделать с помощью команды zfs list или вот так:

# mount | grep tank
tank on /tank type zfs (rw,noatime,xattr)
tank/media on /tank/media type zfs (rw,noatime,xattr)
tank/other on /tank/other type zfs (rw,noatime,xattr)
tank/proj on /tank/proj type zfs (rw,noatime,xattr)
tank/test on /tank/test type zfs (rw,noatime,xattr)

Обращаю внимание, что опция xattr появилась самопроизвольно. А поскольку никакие такие расширенные атрибуты мне не нужны, я от неё благополучно избавился:

# zfs set xattr=off tank

Двлее я, эксперимента ради, решил отказаться от подсчёта контрольных сумм для файловой системы tank/media, поскольку невосполнимых данных в ней хранить не предполагается:

# zfs set checksum=off tank/home/media

После чего настал психологический момент смонтировать наши наборы данных по месту будущей постоянной прописки. А поскольку предполагалось, что все они должны быть полностью доступны обычному пользователю, то предварительно следовало изменить атрибуты принадлежности точек монтирования внутри tank/home:

# chown -R alv:users /tank/home/*

А затем очистить каталог /home от следов прежней жизнедеятельности пользователя:

# rm -Rf /home/alv

Причём делать это необходимо не просто от лица администратора (излишне говорить, что и все предыдущие манипуляции требовали его полномочий), но обязательно перелогинившись root’ом в «голую» консоль, например, в окне приглашения к авторизации KDM, и, возможно, убив реликтовые пользовательские процессы, например, nepomuk: монтирование файловых систем ZFS в каталог с любым содержимым невозможно.

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

# zfs set mountpoint=/home tank/home

После чего командами

# ls /tank

и

# ls -al /home

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

drwxr-xr-x 26 alv users 48 Sep 23 14:27 alv/
drwxr-xr-x  4 alv users  4 Sep 22 02:00 media/
drwxr-xr-x 11 alv users 11 Sep 22 02:23 other/
drwxr-xr-x 18 alv users 18 Sep 22 02:28 proj/
drwxr-xr-x  3 alv users  3 Sep 22 02:05 test/

После этого я, перелогинившись пользователем, спокойно наполнил эти каталоги данными, восстановленными из резервных копий на внешнем винчестере — на деталях процесса останавливаться не буду. Достаточно сказать, что все настройки KDE и приложений в каталоге /home/alv были восстановлены, а с содержимым каталогов собственно для собственно данных всё было в полном порядке как с точки зрения доступа, так и полноты. В последнем можно было убедиться командой

# zfs list
NAME              USED  AVAIL  REFER  MOUNTPOINT
tank             18.3G   178G   136K  /tank
tank/home        18.3G   178G   176K  /home
tank/home/alv     348M   178G   348M  /home/alv
tank/home/media  3.08G   178G  3.08G  /home/media
tank/home/other   310M   178G   310M  /home/other
tank/home/proj   4.20G   178G  4.20G  /home/proj
tank/home/test   10.3G   178G  10.3G  /test

Отписавшись в Джуйке об успешном завершении своего безнадёжного предприятия, я выключил машину и предался заслуженному отдыху.


Содержание