Pull to refresh

Переход с UFS на ZFS, опасные операции с ROOT разделом

Reading time4 min
Views2.6K
Сегодня решил рассмотреть интересный вопрос касательно перехода на ZFS.
Для начала ознакомимся с тем что у нас имеется для соответствующего эксперимента, имеется сервер SunFire T2000, с 4 дисками SAS.

image


Просмотрим имеющиеся диски:
root@T2000 # format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>  main
          /pci@780/pci@0/pci@9/scsi@0/sd@0,0
       1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@780/pci@0/pci@9/scsi@0/sd@1,0
       2. c0t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>  Filename
          /pci@780/pci@0/pci@9/scsi@0/sd@2,0
       3. c0t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@780/pci@0/pci@9/scsi@0/sd@3,0 


На нулевом диске установлена система:

root@T2000 # uname -a
SunOS T2000 5.10 Generic_142909-17 sun4v sparc SUNW,Sun-Fire-T200


Пропатченная по всем стандартам Oracle с использование EIS-DVD.
Конечная цель, получить рабочую систему на ZFS, c установленным zfs зеркалом.
Подготавливаем наши жестки диски для миграции на них рутовой файловой системы, в нашем случае это диски 2 и 3. Делать мы это будем с помощью утилиты format:

format> disk

AVAILABLE DISK SELECTIONS:
       0. c0t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>  main
          /pci@780/pci@0/pci@9/scsi@0/sd@0,0
       1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@780/pci@0/pci@9/scsi@0/sd@1,0
       2. c0t2d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>  Filename
          /pci@780/pci@0/pci@9/scsi@0/sd@2,0
       3. c0t3d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
          /pci@780/pci@0/pci@9/scsi@0/sd@3,0
Specify disk (enter its number)[0]: 2
selecting c0t2d0: Filename
[disk formatted]
format> p
partition> 0
Part      Tag    Flag     Cylinders         Size            Blocks
  0 unassigned    wm       0                0         (0/0/0)             0
Enter partition id tag[unassigned]: root
Enter partition permission flags[wm]: 
Enter new starting cyl[0]: 
Enter partition size[28665792b, 2817c, 2816e, 13996.97mb, 13.67gb]: 7850c
partition> p 


Объясню почему размер 7850с, для того, чтобы в дальнейшем он без проблем позволил скопировать туда всю информацию из имеющейся рутовой системы, и относящимся к ней разделам.

partition> label
Ready to label disk, continue? y
partition> name
Enter table name (remember quotes): ZFS
partition> q
format> save
Saving new disk and partition definitions
Enter file name["./format.dat"]: 


Точно такую же операцию проделаем для диска №3. И создаем наш пул-зеркало из созданных нами слайсов на этих двух дисках.

root@T2000 # zpool create -f mainpool mirror c0t2d0s0 c0t3d0s0
root@T2000 # zpool list
NAME       SIZE  ALLOC   FREE    CAP  HEALTH  ALTROOT
mainpool    38G  1,69G  36,3G     4%  ONLINE  - 


Следом создаем загрузочное окружение (BE). Для этого существует специальная командочка, которую мы запустим с необходимыми нам ключами:

 root@T2000 # lucreate -c ufsBE -n zfsBE -p mainpool
Analyzing system configuration.
Comparing source boot environment <ufsBE> file systems with the file 
system(s) you specified for the new boot environment. Determining which 
file systems should be in the new boot environment.
Updating boot environment description database on all BEs.
Updating system configuration files.
The device </dev/dsk/c0t2d0s0> is not a root device for any boot environment; cannot get BE ID.
Creating configuration for boot environment <zfsBE>.
Source boot environment is <ufsBE>.
Creating boot environment <zfsBE>.
Creating file systems on boot environment <zfsBE>.
Creating <zfs> file system for </> in zone <global> on <mainpool/ROOT/zfsBE>.
Populating file systems on boot environment <zfsBE>.
Checking selection integrity.
Integrity check OK.
Populating contents of mount point </>.
Copying.
Creating shared file system mount points.
Creating compare databases for boot environment <zfsBE>.
Creating compare database for file system </var>.
Creating compare database for file system </>.
Updating compare databases on boot environment <zfsBE>.
Making boot environment <zfsBE> bootable.
Creating boot_archive for /.alt.tmp.b-tDb.mnt
updating /.alt.tmp.b-tDb.mnt/platform/sun4v/boot_archive
Population of boot environment <zfsBE> successful.
Creation of boot environment <zfsBE> successful.


Проверим, что у нас получилось.

 root@T2000 # lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
ufsBE                      yes      yes    yes       no     -         
zfsBE                      yes      no     no        yes    -     


Пронаблюдав, что все прошло успешно, мы можем активировать новую среду загрузки zfsBE.

root@T2000 # luactivate zfsBE
A Live Upgrade Sync operation will be performed on startup of boot environment <zfsBE>.


**********************************************************************

The target boot environment has been activated. It will be used when you 
reboot. NOTE: You MUST NOT USE the reboot, halt, or uadmin commands. You 
MUST USE either the init or the shutdown command when you reboot. If you 
do not use either init or shutdown, the system will not boot using the 
target BE.

**********************************************************************

In case of a failure while booting to the target BE, the following process 
needs to be followed to fallback to the currently working boot environment:

1. Enter the PROM monitor (ok prompt).

2. Change the boot device back to the original boot environment by typing:

     setenv boot-device disk:a

3. Boot to the original boot environment by typing:

     boot

**********************************************************************

Modifying boot archive service
Activation of boot environment <zfsBE> successful. 


В данном сообщение нам говорится, что мол не переживайте, если что-то пойдет не так у Вас все еще есть возможность загрузиться со старого источника. Ну естественно пробуем, перезагрузка:

root@T2000 # init 6

И после того, как мы загрузились проверяем свою систему на правильность загрузки.

root@T2000 # lustatus
Boot Environment           Is       Active Active    Can    Copy      
Name                       Complete Now    On Reboot Delete Status    
-------------------------- -------- ------ --------- ------ ----------
ufsBE                      yes      no     no        yes    -         
zfsBE                      yes      yes    yes       no     -  


Здесь мы видим, что на данный момент основным загрузочным окружение является zfsBE, только что созданная нами. Теперь мы совершенно спокойно можем удалить ufsBE.
В итоге мы получили систему, которая обладает всеми прелестями системы ZFS без особых проблем и с минимальным даунтаймом.
Спасибо за внимание.
Tags:
Hubs:
Total votes 5: ↑5 and ↓0+5
Comments2

Articles