The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Настройка загрузки ZFS с GPT-раздела во FreeBSD и создание зеркала
Во FreeBSD 8-CURRENT недавно появилась поддержка загрузки ядра с ZFS,
а сама файловая система была обновлена до версии 13. Процесс
развертывания ZFS с возможностью загрузки с нее очень простой:

1. Собираете world с LOADER_ZFS_SUPPORT и kernel с поддержкой gpart(8):

	# добавляем в make.conf(5) опцию поддержки ZFS для loader(8)
	echo LOADER_ZFS_SUPPORT=yes >>/etc/make.conf

	# собираем world... нет, только loader(8) и загрузочный код
	cd /usr/src/sys/boot
	make cleandir; make cleandir
	make obj depend all install

	# добавляем поддержку таблиц разделов для gpart(8)
	cat MYKERNEL
	include		GENERIC
	nooption	GEOM_BSD
	nooption	GEOM_MBR
	options		GEOM_PART_BSD
	options		GEOM_PART_MBR
	options		GEOM_PART_GPT

	# собираем kernel
	make kernel KERNCONF=MYKERNEL -C/usr/src

2. Размечаете первый диск командой gpart(8) на несколько разделов, из
   которых обязательны только freebsd-boot и freebsd-zfs:

	# создаем таблицу разделов типа GPT на диске ad0
	gpart create -s GPT ad0

	# добавляем загрузочный код, позволяющий загружаться с GPT разделов
	gpart bootcode -b /boot/pmbr ad0

	# создаем раздел для кода загрузки loader(8)'а с раздела GPT
	gpart add -b 34 -s 256 -t freebsd-boot ad0

	# записываем загрузочный код на него
	gpart bootcode -p /boot/gptzfsboot -i 1 ad0

	# создаем swap раздел для возможности использовать его
	# в качестве dumpdev, т.к. делать kernel dump'ы на zvol'ах
	# невозможно
	gpart add -b 290 -s 2097152 -t freebsd-swap ad0

	# создаем основной раздел для ZFS
	gpart add -b 2097442 -s 232344173 -t freebsd-zfs ad0

	# смотрим на результат
	gpart show
	=>       34  234441581  ad0  GPT  (112G)
	         34        256    1  freebsd-boot  (128K)
	        290    2097152    2  freebsd-swap  (1.0G)
	    2097442  232344173    3  freebsd-zfs  (111G)

3. Создаете pool для ZFS на первом разделе и загружаетесь с него:

	# создаем pool с именем `h', выключенном поддержкой
	# времени последнего доступа и включенным сжатием данных
	zpool create -O atime=off -O compression=on h ad0p3

	# создаем необходимые dataset'ы
	zfs create -p -o setuid=off -o utf8only=on h/usr/home
	zfs create -o sharenfs='-alldirs -webnfs' h/usr/ports
	zfs create -o atime=on h/var
	zfs create -o readonly=on h/var/empty

	# населяем pool[1]
	rsync -aHS --del --fileflags --filter 'merge migrate.rsync' / /h/

	# перезагружаемся
	shutdown -r now

	# загружаемся *не* с ZFS в single-user режим (loader prompt)
	boot -s

	# меняем точку монтирования pool'а на корень
	/etc/rc.d/hostid restart
	/sbin/zfs set mountpoint=/ h

	# перезагружаемся
	/sbin/reboot

	# загружаемся с ZFS (loader prompt)
	load zfs
	set vfs.root.mountfrom=zfs:h
	boot

	# добавляем в loader.conf(5) поддержку zfs и точку
        # монтирования / (корня)
	echo zfs_load=YES >>/boot/loader.conf
	echo vfs.root.mountfrom=\"zfs:h\" >>/boot/loader.conf

4. Повторяете шаг 1 для второго диска и подсоединяете его к "зеркалу":

	# Размечаем диск с учетом того, что количество блоков
        # у freebsd-zfs должно быть такое же, как и на первом диске.
	# В даннном примере - 484200428.
	=>       34  488394988  ad0  GPT  (233G)
	         34        256    1  freebsd-boot  (128K)
	        290    4194304    2  freebsd-swap  (2.0G)
	    4194594  484200428    3  freebsd-zfs  (231G)

	=>       34  488397101  ad1  GPT  (233G)
	         34        256    1  freebsd-boot  (128K)
	        290    4196417    2  freebsd-swap  (2.0G)
	    4196707  484200428    3  freebsd-zfs  (231G)

	# подсоединяете его к pool'у как элемент зеркала
	# (не перепутайте с *add*)
	zpool attach h ad0p3 ad1p3

	# смотрим на результат
	zpool status
	  pool: h
	 state: ONLINE
	 scrub: none requested
	config:

		NAME        STATE     READ WRITE CKSUM
		h           ONLINE       0     0     0
		  mirror    ONLINE       0     0     0
		    ad0p3   ONLINE       0     0     0
		    ad1p3   ONLINE       0     0     0

	errors: No known data errors

Примечание: Тест проводился на 14 версии и с использованием
вот этого патча - http://pastebin.com/f3d2089f3

[1] пример migrate.rsync:
	exclude .ccache
	exclude /h
	exclude /dev
	exclude /nfs
	exclude /tmp
	exclude /var/emtpy
	exclude /var/run

Стоит не забыть потом создать эти директории в /h с соответствующими правами
на них. В частности без /dev система не загрузится.
 
23.11.2008 , Автор: unknown , Источник: http://wiki.lissyara.su/wiki/%D0%97...
Ключи: zfs, boot, gpt, raid, freebsd
Раздел:    Корень / Администратору / Система / Диски и файлы / Файловые системы

Обсуждение [ RSS ]
  • 1, Leo (??), 22:58, 23/11/2008 [ответить]  
  • +/
    Напишите, пожалуйста, как поставить 7-ку на флэшку (da0s1a - UFS2 - /boot only), а всё остальное - на ZFS - raidz - ad0,ad1,ad2,ad3 ?
    Спасибо
     
     
  • 2, abigor (?), 02:46, 24/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    а смысл в таком? да и не сложно там если быть точно, я вижу так, ставишь ее на флеху полностью, а потом выносишь все разделы кроме корня на zfs
     
  • 3, iZEN (ok), 11:34, 25/11/2008 [^] [^^] [^^^] [ответить]  
  • +/
    Поставить FreeBSD на флэшку 1 Разметить флэшку На всё пространство fdisk -BI... большой текст свёрнут, показать
     
     
  • 4, ш (?), 11:19, 05/10/2009 [^] [^^] [^^^] [ответить]  
  • +/
    ваша вот это cp разименует все хардлинки, переносить нужно дампом или таром
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру