Overblog
Suivre ce blog
Administration Créer mon blog
22 mai 2013 3 22 /05 /mai /2013 14:20

 

Did you know ? Solaris 11 is capable of doing a fast reboot, skipping the power-on style self tests (POST) that have traditionally accompanied a reboot. Finished the coffee break !?

 


On x86 machines, this will automatically happen if you use the reboot command (or init 6). To force a full test cycle, and/or to get access to the boot order menu from the BIOS, you can use halt, followed by pressing a key.



On SPARC, the default configuration requires that you use reboot -f for a fast reboot. If you wish fast reboot to be the default, you must change an SMF property fastreboot, as follows:



# svccfg -s system/boot-config:default 'setprop config/fastreboot_default=true'
# svcadm refresh svc:/system/boot-config:default



To temporarily override the setting and reboot the slow way, you can use reboot -p, aka "reboot to PROM".

 

 

It is necessary to find a new excuse for your coffee break !!

Published by gloumps - dans administration
commenter cet article
20 mai 2013 1 20 /05 /mai /2013 21:10

 

I describe only migration P2V of a physical server in a ldom, the installation and the configuration of Oracle VM Server for Sparc are not specified in this article.

 

Some details:

  • The name of physical server is ldom-guest (Solaris 10u3 – kernel 118833-33)
  • The name of crontol domain is ldom-crtl (Solaris 11.1 SRU 5.5)

 

There are a 3 phases to migrate from a physical system to a virtual system:

  • Collection Phase: A filesystem source is created based on the configuration information that it collects about the source system.
  • Preparation Phase: A logical domain is created
  • Conversion Phase: The filesystem source is converted into a logical domain (ex: conversion from sun4u to sun4v)

 

To execute this procedure, you must use tool ldmp2v (download this path p15880570 to obtain the tool - In Solaris 11, this tool is directly available).

 

Before starting, let us look at the configuration available on control domain:

 

ldom-crtl # ldm –V

Logical Domains Manager (v 3.0.0.2)
        Hypervisor control protocol v 1.7
        Using Hypervisor MD v 1.3

System PROM:
        Hypervisor v. 1.10.0. @(#)Hypervisor 1.10.0.a 2011/07/15 11:51\015
        OpenBoot   v. 4.33.0. @(#)OpenBoot 4.33.0.b 2011/05/16 16:28

 

ldom-crtl # ldm ls –o console,network,disk primary
[…]

VCC
    NAME           PORT-RANGE
    primary-vcc0   5000-5100

VSW
    NAME           MAC          […]
    primary-vsw0   x:x:x:x:x:x  […]

VDS
    NAME           VOLUME       […]
    primary-vds0

[…]

 

A traditional configuration !?, no ?

 

Fisrt step: Collection phase (runs on the physical source system)

 

To create a consistent file system image, I suggest you to boot the server in “single mode”. To save a file system image, I often use a NFS share.

 

ldom-guest # mount –F nfs myshare:/tempo /mnt

 

By default, the cmd ldmp2v creates a flar image.

 

ldom-guest # /usr/sbin/ldmp2v collect -d /mnt/ldom-guest
Collecting system configuration ...
Archiving file systems ...
Full Flash
Checking integrity...
Integrity OK.
Running precreation scripts...
Precreation scripts done.
Creating the archive...
136740734 blocks
Archive creation complete.

ldom-guest # init 0

 

Second step: Preparation phase (runs on the control domain)

 

I start by creating a ZFS pool which will contain the data of the logical domain.

 

ldmon-crtl # zpool create -m none ldom-guest cXtYdZ

 

I prefer to use the manual mode to create a logical domain (so I edit the following file ldmp2v.conf).

 

ldmon-crtl # cat /etc/ldmp2v.conf
# Virtual switch to use
VSW="primary-vsw0"
# Virtual disk service to use
VDS="primary-vds0"
# Virtual console concentrator to use
VCC="primary-vcc0"
# Location where vdisk backend devices are stored
BACKEND_PREFIX=""
# Default backend type: "zvol" or "file".
BACKEND_TYPE="zvol"
# Create sparse backend devices: "yes" or "no"
BACKEND_SPARSE="yes"
# Timeout for Solaris boot in seconds
BOOT_TIMEOUT=60

 

Just after mounted the share NFS, I create a logical domain by indicating the following informations: cpu, mem and prefix (here it is name of ZFS pool)

 

ldom-crtl # mount –F nfs myshare:/tempo /mnt
ldom-crtl # ldmp2v prepare -c 16 -M 16g –p ldom-guest -d /mnt/ldom-guest ldom-guest
Creating vdisks ...
Creating file systems ...
Populating file systems ...
136740734 blocks
Modifying guest OS image ...
Modifying SVM configuration ...
Unmounting file systems ...
Creating domain ...
Attaching vdisks to domain ldom-guest ...

 

For this example, the ldom guest is configured with 16 vcpu and 16 Go (options –c and –M).

 

Final step: Conversion phase (runs on the control domain)

 

In the conversion phase, the logical domain uses the Oracle Solaris upgrade process to upgrade to the Oracle Solaris 10 OS. The upgrade operation removes all existing packages and installs the Oracle Solaris 10 sun4v packages, which automatically performs a sun4u-to-sun4v conversion. The convert phase can use an Oracle Solaris DVD ISO image or a network installation image. On Oracle Solaris 10 systems, you can also use the Oracle Solaris JumpStart feature to perform a fully automated upgrade operation.

 

On “jumpstart server” (do you known jet ?), I edit the jumpstart profile to add the following lines

 

install_type    upgrade
root_device c0d0s0

 

Ready for conversation !! The last command to convert the Sparc architecture and to start the guest domain.

 

ldom-crtl # ldmp2v convert -j -n vnet0 -d /mnt/ldom-guest ldmon-guest
Testing original system status ...
LDom ldom-guest started
Waiting for Solaris to come up ...
Using Custom JumpStart
Trying 0.0.0.0...
Connected to 0.
Escape character is '^]'.

 

Connecting to console "server" in group "server" ....
Press ~? for control options ..
Configuring devices.
Using RPC Bootparams for network configuration information.
Attempting to configure interface vnet0...
Configured interface vnet0
Setting up Java. Please wait...
Extracting windowing system. Please wait...
Beginning system identification...
Searching for configuration file(s)...
Using sysid configuration file 10.x.x.x:/opt/SUNWjet/Clients/ldom-guest/sysidcfg
Search complete.
Discovering additional network configuration...
Completing system identification...
Starting remote procedure call (RPC) services: done.
System identification complete.
Starting Solaris installation program...
Searching for JumpStart directory...
Using rules.ok from 10.x.x.x:/opt/SUNWjet.
Checking rules.ok file...
Using begin script: Utils/begin
Using derived profile: Utils/begin
Using finish script: Utils/finish
Executing JumpStart preinstall phase...
Executing begin script "Utils/begin"...
Installation of ldom-guest at 00:41 on 10-May-2013
Loading JumpStart Server variables
Loading JumpStart Server variables
Loading Client configuration file
Loading Client configuration file
Running base_config begin script....
Running base_config begin script....
Begin script Utils/begin execution completed.
Searching for SolStart directory...
Checking rules.ok file...
Using begin script: install_begin
Using finish script: patch_finish
Executing SolStart preinstall phase...
Executing begin script "install_begin"...
Begin script install_begin execution completed.

WARNING: Backup media not specified.  A backup media (backup_media) keyword must be specified if an upgrade with disk space reallocation is required

Processing default locales
       - Specifying default locale (en_US.ISO8859-1)

Processing profile

Loading local environment and services

Generating upgrade actions
       - Selecting locale (en_US.ISO8859-1)

Checking file system space: 100% completed
Space check complete.

Building upgrade script

Preparing system for Solaris upgrade

Upgrading Solaris: 101% completed
       - Environment variables (/etc/default/init)

Installation log location
       - /a/var/sadm/system/logs/upgrade_log (before reboot)
       - /var/sadm/system/logs/upgrade_log (after reboot)

Please examine the file:
       - /a/var/sadm/system/data/upgrade_cleanup

It contains a list of actions that may need to be performed to complete the upgrade. After this system is rebooted, this file can be found at:
       - /var/sadm/system/data/upgrade_cleanup

Upgrade complete
Executing SolStart postinstall phase...
Executing finish script "patch_finish"...

Finish script patch_finish execution completed.
Executing JumpStart postinstall phase...
Executing finish script "Utils/finish"...
[…]
Terminated

Finish script Utils/finish execution completed.
The begin script log 'begin.log'
is located in /var/sadm/system/logs after reboot.

The finish script log 'finish.log'
is located in /var/sadm/system/logs after reboot.

syncing file systems... done
rebooting...
Resetting...

 

T5240, No Keyboard
Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
OpenBoot 4.33.0.b, 16384 MB memory available, Serial #83470255.
Ethernet address 0:x:x:x:x:x, Host ID: 84f9a7af.

Boot device: disk0:a  File and args:
SunOS Release 5.10 Version Generic_118833-33 64-bit
Copyright 1983-2006 Sun Microsystems, Inc.  All rights reserved.
Use is subject to license terms.
Hostname: ldom-guest
Loading smf(5) service descriptions: 1/1
checking ufs filesystems
/dev/rdsk/c0d1s0: is logging.

ldom-guest console login:

 

It’s already finishes. Is it simple !? You do not have any more excuses not to use ldoms.

 

See Also

 

Published by gloumps - dans administration
commenter cet article
10 février 2013 7 10 /02 /février /2013 20:14

 

Lors d'un précédent article, j'ai traité la mise en place d'un serveur AI personnalisé pour l'architecture Sparc (déploiement via Wanboot). Comme convenu, je vais traité ici la mise en place d'un serveur AI mais sur l'architecture x86. La différence entre ces deux architectures (d'un point vue installation) se situe principalement sur la phase d'initialisation juste avant le début de l'installation.

 

Sur une architecture x86, la phase d'initialisation est généralement exécutée par le couple pxe / dhcp. Il est donc nécessaire de configurer un serveur dhcp permettant d'interpréter la requête pxe que le client enverra. Il peut s'agir d'un serveur dédié ou mutualisé avec le serveur AI. Dans mon exemple ci-dessous, il n'y a qu'un serveur pour la configuraton dhcp et AI.

 

Un choix s'offre à nous concernant le type de serveur dhcp. Il est possible d'utiliser le serveur dhcp de l'ISC ou alors le serveur dhcp de Solaris. La configuration d'un serveur dhcp ISC est automatique si celui-ci se trouve sur le serveur AI. Toutefois, je préfére utiliser le serveur dhcp Solaris.

 

Il faut installer les package dhcp et ai sur le serveur d'installation depuis notre serveur de repos (pour créer les repos lire cet article). Ensuite il suffit d'initialiser le serveur dhcp avec les bonnes informations.

 

# pkg install install/installadm SUNWdhcs

 

# /usr/sbin/dhcpconfig -D -r SUNWfiles -p /var/dhcp
Created DHCP configuration file.
Created dhcptab.
Added "Locale" macro to dhcptab.
Added server macro to dhcptab - aiserver.
DHCP server started.

 

# dhcpconfig -N 192.168.10.0 -m 255.255.255.0 -t 192.168.10.1
Added network macro to dhcptab - 192.168.10.0.
Created network table. 

 

# pntadm -L
192.168.10.0

 

 

Une fois ces étapes effectuées, il faut initialiser le service d'installation pour les clients x86.

 

# installadm create-service –a i386
Warning: Service svc:/network/dns/multicast:default is not online.
   Installation services will not be advertised via multicast DNS.

 

Creating service from: pkg:/install-image/solaris-auto-install
OK to use subdir of /export/auto_install to store image? [y/N]: y
DOWNLOAD              PKGS         FILES    XFER (MB)   SPEED
Completed              1/1       514/514  292.3/292.3 11.1M/s

 

PHASE                                      ITEMS
Installing new actions                   661/661
Updating package state database             Done
Updating image state                        Done
Creating fast lookup database               Done
Reading search index                        Done
Updating search index                        1/1

 

Creating i386 service: solaris11_1-i386
Image path: /export/auto_install/solaris11_1-i386

 

Refreshing install services
Warning: mDNS registry of service solaris11_1-i386 could not be verified.

 

Creating default-i386 alias

 

Setting the default PXE bootfile(s) in the local DHCP configuration
to:
bios clients (arch 00:00):  default-i386/boot/grub/pxegrub2
uefi clients (arch 00:07):  default-i386/boot/grub/grub2netx64.efi

 

Unable to update the DHCP SMF service after reconfiguration: DHCP
server is in an unexpected state: action [enable] state [offline]

 

The install service has been created and the DHCP configuration has
been updated, however the DHCP SMF service requires attention. Please
see dhcpd(8) for further information.

 

Refreshing install services
Warning: mDNS registry of service default-i386 could not be verified.

 

 

Le service pour les clients x86 est maintenant disponible.

 

# installadm list -m

Service/Manifest Name  Status   Criteria
---------------------  ------   --------

default-i386
   orig_default        Default  None

solaris11_1-i386
   orig_default        Default  None

 

 

Concernant la personnalisation, je vous renvoie au précédent article pour plus de détails. On crée un manifest spécifique en utilisant les commandes suivantes.

 

# installadm export --service solaris11_1-i386 \
--manifest orig_default \

--output /export/auto_install/manifests/sol11.1-i386-001
# vi /export/auto_install/manifests/sol11.1-i386-001
# installadm create-manifest \
-f /export/auto_install/manifests/sol11.1-i386-001 \

-n solaris11_1-i386 -m sol11.1-i386-001 -d

 

 

En cas d'autre modification sur ce manifest, on utilise les commandes suivantes.

 

# vi /export/auto_install/manifests/sol11.1-i386-001
# installadm update-manifest \
-f /export/auto_install/manifests/sol11.1-i386-001 \

-n solaris11_1-i386 -m sol11.1-i386-001

 

 

Pour éviter de garder le service et le manifest par défaut, on nettoie un peu la configuration.

 

# installadm delete-service default-i386
# installadm delete-manifest -n solaris11_1-i386 -m orig_default

 

 

On passe maintenant à la création du profile pour un client donné.

 

# sysconfig create-profile -o /export/auto_install/ref/profile.xml
# cd /export/auto_install/ref
# cp profile.xml ../clients/i386-01.xml
# vi /export/auto_install/clients/i386-01.xml

 

# installadm create-profile \
-f /export/auto_install/clients/i386-01.xml \
-n solaris11_1-i386 \

-p i386-01 -c mac="00:xx:xx:xx:xx:04"

 

 

Lors de la création du client, j'initialise la redirection série ainsi que le mode debug (connexion ssh distante pendant l'installation). Pour plus de détails sur la redirection série je vous invite à lire cet autre article.

 

# installadm create-client -e 00xxxxxxxx04 -n solaris11_1-i386 \
-b console=ttya,livessh=enable,install_debug=enable

Warning: Service svc:/network/dns/multicast:default is not online.
   Installation services will not be advertised via multicast DNS.
Adding host entry for 00:xx:xx:xx:xx:04 to local DHCP configuration.

 

Local DHCP configuration complete, but the DHCP server SMF service is
offline. To enable the changes made, enable:
svc:/network/dhcp/server:ipv4.
Please see svcadm(1M) for further information.

 

 

La configuration du serveur AI est terminée et un client a été généré (profile spécifique).

 

# installadm list -c -p -m

 
Service Name      Client Address    Arch   Image Path
------------      --------------    ----   ----------
solaris11_1-i386 00:xx:xx:xx:xx:04  i386  /export/auto_install/solaris11_1-i386

 

Service/Manifest Name  Status   Criteria
---------------------  ------   --------

solaris11_1-i386
   sol11.1-i386-001   Default  None 

 

Service/Profile Name  Criteria
--------------------  --------

solaris11_1-i386
   i386-01      mac = 00:xx:xx:xx:xx:04

 

 

Reste la configuration dhcp pour ce client.

 

# pntadm -A 192.168.10.123 -i 0100xxxxxxxx04 \
-m 0100xxxxxxxx04 -f "PERMANENT+MANUAL" 192.168.10.0

 

# pntadm -P 192.168.10.0 | grep 0100xxxxxxxx04
0100xxxxxxxx04  03  192.168.10.5  192.168.10.123   Zero   0100xxxxxxxx04

 

# dhtadm -g -A -m 0100xxxxxxxx04 -d \
":Include=`uname -n`:BootSrvA=192.168.10.5:BootFile=0100xxxxxxxx04:"

 

 

L'installation du client peut donc commencer. Depuis l'ILO de ce client x86, on sélectionne notre carte réseau comme périphérique de boot puis dane le menu de grub on sélectionne le choix 2 pour lancer l'installation. 

 

SunOS Release 5.11 Version 11.1 64-bit
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.
Remounting root read/write
Probing for device nodes ...
Preparing network image for use

 

Downloading solaris.zlib
--2013-01-30 20:51:33--  http://192.168.10.5:5555//export/auto_install/solaris11_1-i386/solaris.zlib
Connecting to 192.168.10.5:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 135808512 (130M) [text/plain]
Saving to: `/tmp/solaris.zlib'

100%[======================================>] 135,808,512 57.3M/s   in 2.3s   

2013-01-30 20:51:35 (57.3 MB/s) - `/tmp/solaris.zlib' saved [135808512/135808512]

 

Downloading solarismisc.zlib
--2013-01-30 20:51:35--  http://192.168.10.5:5555//export/auto_install/solaris11_1-i386/solarismisc.zlib
Connecting to 192.168.10.5:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11935744 (11M) [text/plain]
Saving to: `/tmp/solarismisc.zlib' 

100%[======================================>] 11,935,744  58.3M/s   in 0.2s   

2013-01-30 20:51:36 (58.3 MB/s) - `/tmp/solarismisc.zlib' saved [11935744/11935744]

 

Downloading .image_info
--2013-01-30 20:51:36--  http://192.168.10.5:5555//export/auto_install/solaris11_1-i386/.image_info
Connecting to 192.168.10.5.:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 228 [text/plain]
Saving to: `/tmp/.image_info'

100%[======================================>] 228         --.-K/s   in 0s     

2013-01-30 20:51:36 (19.5 MB/s) - `/tmp/.image_info' saved [228/228]

 

Done mounting image
Configuring devices.
Hostname: i386-01
Setting debug mode to enable
Service discovery phase initiated
Service name to look up: solaris11_1-i386
Service discovery over multicast DNS failed
Service solaris11_1-i386 located at 192.168.10.5:5555 will be used
Service discovery finished successfully
Process of obtaining install manifest initiated
Using the install manifest obtained via service discovery

 

i386-01 console login:
Automated Installation started
The progress of the Automated Installation will be output to the console
Detailed logging is in the logfile at /system/volatile/install_log

 

Press RETURN to get a login prompt at any time.

 

Installer will be run in debug mode
20:52:02    Using XML Manifest: /system/volatile/ai.xml
20:52:02    Using profile specification: /system/volatile/profile
20:52:02    Using service list file: /var/run/service_list
20:52:02    Starting installation.
20:52:02    0% Preparing for Installation
20:52:03    100% manifest-parser completed.
20:52:03    0% Preparing for Installation
20:52:03    1% Preparing for Installation
20:52:03    2% Preparing for Installation
20:52:03    4% Preparing for Installation
20:52:07    6% target-discovery completed.
20:52:07    Selected Disk(s) : c8t0d0
20:52:07    10% target-selection completed.
20:52:07    12% ai-configuration completed.
20:52:07    14% var-share-dataset completed.
20:52:30    16% Beginning IPS transfer
20:52:30    Creating IPS image
20:52:34     Startup: Retrieving catalog 'solaris' ... Done
20:52:36     Startup: Caching catalogs ... Done
20:52:37     Startup: Refreshing catalog 'site' ... Done
20:52:37     Startup: Refreshing catalog 'solaris' ... Done
20:52:40     Startup: Caching catalogs ... Done
20:52:40    Installing packages from:
20:52:40        solaris
20:52:40            origin:  http://192.168.10.5:8000/
20:52:40        site
20:52:40            origin:  http://192.168.10.5:8001/
20:52:41     Startup: Refreshing catalog 'site' ... Done
20:52:41     Startup: Refreshing catalog 'solaris' ... Done
20:52:44    Planning: Solver setup ... Done
20:52:45    Planning: Running solver ... Done
20:52:45    Planning: Finding local manifests ... Done
20:52:45    Planning: Fetching manifests:   0/408  0% complete
20:52:53    Planning: Fetching manifests: 100/408  24% complete
[…]
20:53:11    Planning: Fetching manifests: 408/408  100% complete
20:53:22    Planning: Package planning ... Done
20:53:23    Planning: Merging actions ... Done
20:53:26    Planning: Checking for conflicting actions ... Done
20:53:28    Planning: Consolidating action changes ... Done
20:53:30    Planning: Evaluating mediators ... Done
20:53:33    Planning: Planning completed in 52.04 seconds
20:53:33    Please review the licenses for the following packages post-install:
20:53:33      runtime/java/jre-7                       (automatically accepted)
20:53:33      consolidation/osnet/osnet-incorporation  (automatically accepted,
20:53:33                                                not displayed)
20:53:33    Package licenses may be viewed using the command:
20:53:33      pkg info --license <pkg_fmri>
20:53:34    Download:     0/60319 items    0.0/822.8MB  0% complete
[…]
21:00:44    Download: 60010/60319 items  822.0/822.8MB  99% complete (650k/s)
21:00:45    Download: Completed 822.79 MB in 431.69 seconds (1.9M/s)
21:01:00     Actions:     1/85295 actions (Installing new actions)
21:01:01    16% Transferring contents
21:01:01    19% Transferring contents
21:01:05     Actions: 13914/85295 actions (Installing new actions)
21:01:06    45% Transferring contents
21:01:10     Actions: 18060/85295 actions (Installing new actions)
21:01:15     Actions: 18534/85295 actions (Installing new actions)
[…]
21:09:55     Actions: 83977/85295 actions (Installing new actions)
21:10:00     Actions: 84781/85295 actions (Installing new actions)
21:10:01     Actions: Completed 85295 actions in 540.82 seconds.
21:10:01    Finalize: Updating package state database ...  Done
21:10:03    Finalize: Updating image state ...  Done
21:10:15    Finalize: Creating fast lookup database ...  Done
21:10:25    Version mismatch:
21:10:25    Installer build version: pkg://solaris/entire@0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z
21:10:25    Target build version: pkg://solaris/entire@0.5.11,5.11-0.175.1.1.0.4.0:20121106T001344Z
21:10:25    46% initialize-smf completed.
21:10:27    Setting console boot device property to ttya
21:10:27    Disabling boot loader graphical splash
21:10:27    Installing boot loader to devices: ['/dev/rdsk/c8t0d0s1']
21:10:32    Setting boot devices in firmware
21:10:32    54% boot-configuration completed.
21:10:32    55% update-dump-adm completed.
21:10:32    57% setup-swap completed.
21:10:32    58% device-config completed.
21:10:33    60% apply-sysconfig completed.
21:10:33    61% transfer-zpool-cache completed.
21:10:51    90% boot-archive completed.
21:10:51    92% transfer-ai-files completed.
21:10:52    99% create-snapshot completed.
21:10:52    Automated Installation succeeded.
21:10:52    System will be rebooted now
Automated Installation finished successfully
Auto reboot enabled. The system will be rebooted now
Log files will be available in /var/log/install/ after reboot
Jan 30 21:10:56 i386-01 reboot: initiated by root
WARNING: Fast reboot is not supported on this platform since some BIOS routines are in RAM
syncing file systems... done
rebooting...

 

Plus d'excuse maintenant, vous pouvez installer un serveur AI pour déployer aussi bien des serveurs Sparc que des serveurs i386.

 

Published by gloumps - dans administration
commenter cet article
4 février 2013 1 04 /02 /février /2013 21:24

 

Après avoir créé vos repos (méthode pas-à-pas disponible dans un précédant article), il est temps de créer votre serveur AI personnalisé. Je vais découper ce sujet en deux partie, un article sur l'architecture Sparc et un autre sur l'architecture x86. Et pourquoi donc ? J'utilise deux méthodes d'initialisations différentes, wanboot pour l'architecture Sparc et la paire pxe/dhcp pour l'architecture x86. Du coup je préfère distinguer ces deux architectures.

 

Pour recevoir et interpréter la procédure d'installation d'un client Sparc (via wanboot), il faut que le serveur AI soit correctement configuré (serveur web, serveur tftp et script cgi).

 

# pkg set-publisher –M ‘*’ –G ‘*’ -P -g http://10.xx.xx.xxx:8000 solaris
# pkg install network/tftp 
install/installadm

# svccfg -s system/install/server:default setprop all_services/port = 5555
# svccfg refresh system/install/server:default
 

# mkdir /var/ai/image-server/images/cgi-bin
# chmod 777 /var/ai/image-server/images/cgi-bin
# cp -pr /usr/lib/inet/wanboot/wanboot-cgi /var/ai/image-server/images/cgi-bin
 

# svccfg –s network/tftp/udp6 setprop \
netd_start/exec=”/usr/sbin/in.tftpd -s /etc/netboot”

# svcadm refresh network/tftp/udp6
# inetadm –e network/tftp/udp6

 

Une fois ces étapes effectuées, il faut initialiser le service d'installation pour les clients Sparc.

 

# installadm create-service –a sparc
Warning: Service svc:/network/dns/multicast:default is not online.
   Installation services will not be advertised via multicast DNS.


Creating service from: pkg:/install-image/solaris-auto-install
OK to use subdir of /export/auto_install to store image? [y/N]: y

DOWNLOAD            PKGS      FILES    XFER (MB)   SPEED
Completed            1/1      45/45  237.8/237.8 11.5M/s 

PHASE                                      ITEMS
Installing new actions                   187/187
Updating package state database             Done
Updating image state                        Done
Creating fast lookup database               Done
Reading search index                        Done
Updating search index                        1/1


Creating sparc service: solaris11_1-sparc

 

Image path: /export/auto_install/solaris11_1-sparc

 

Service discovery fallback mechanism set up
Creating SPARC configuration file
Refreshing install services
Warning: mDNS registry of service solaris11_1-sparc could not be verified.

 

Creating default-sparc alias

 

Service discovery fallback mechanism set up
Creating SPARC configuration file
No local DHCP configuration found. This service is the default
alias for all SPARC clients. If not already in place, the following should
be added to the DHCP configuration:
Boot file: http://10.xx.xx.xxx:5555/cgi-bin/wanboot-cgi

 

Refreshing install services
Warning: mDNS registry of service default-sparc could not be verified.

 

Le service pour les clients Sparc est maintenant disponible.

 

# installadm list -m

Service/Manifest Name  Status   Criteria
---------------------  ------   --------

default-sparc
   orig_default        Default  None

solaris11_1-sparc
   orig_default        Default  None

 

Quelques personnalisations sont nécessaires (A vous de voir ce que vous souhaitez faire). Moi je personnalise de la manière suivante. Attention, dans le reste de la procédure, on utilise cette arborescence.

  • Le répertoire ref contient le profile de référence pour tous les clients
  • Le répertoire manifests contient les manifests (par mise à jour de Solaris 11)
  • Le répertoire clients contient les profiles personnalisés de chaque client

 

# cd /export/auto_install
# mkdir clients manifests ref

 

On crée un manifest spécifique en utilisant les commandes suivantes.

 

# installadm export --service solaris11_1-sparc \
--manifest orig_default \

--output /export/auto_install/manifests/sol11.1-sparc-001
# vi /export/auto_install/manifests/sol11.1-sparc-001
# installadm create-manifest \
-f /export/auto_install/manifests/sol11.1-sparc-001 \

-n solaris11_1-sparc -m sol11.1-sparc-001 -d

 

En cas d'autre modification sur ce manifest, on utilise les commandes suivantes.

 

# vi /export/auto_install/manifests/sol11.1-sparc-001
# installadm update-manifest \
-f /export/auto_install/manifests/sol11.1-sparc-001 \

-n solaris11_1-sparc -m sol11.1-sparc-001

 

Pour éviter de garder le service et le manifest par défaut, on nettoie un peu la configuration.

 

# installadm delete-service default-sparc
# installadm delete-manifest -n solaris11_1-sparc -m orig_default

 

On passe maintenant à la création du profile pour un client donné.

 

# sysconfig create-profile -o /export/auto_install/ref/profile.xml
# cd /export/auto_install/ref
# cp profile.xml ../clients/sparc-01.xml
# vi /export/auto_install/clients/sparc-01.xml

 

# installadm create-profile \
-f /export/auto_install/clients/sparc-01.xml \
-n solaris11_1-sparc \

-p sparc-01 -c mac="00:1x:xx:xx:xx:f2"

 

Reste la création du client.

 

# installadm create-client -e 001xxxxxxxf2 -n solaris11_1-sparc
Warning: Service svc:/network/dns/multicast:default is not online.
   Installation services will not be advertised via multicast DNS.

 

La configuration du serveur AI est terminé et un client a été généré par rapport à un manifest et un profile spécifique.

 

# installadm list -c -p -m

 
Service Name      Client Address     Arch   Image Path
------------      --------------     ----   ----------
solaris11_1-sparc 00:1x:xx:xx:xx:F2  sparc  /export/auto_install/solaris11_1-sparc

 

Service/Manifest Name  Status   Criteria
---------------------  ------   --------

solaris11_1-sparc
   sol11.1-sparc-001   Default  None 

 

Service/Profile Name  Criteria
--------------------  --------

solaris11_1-sparc
   sparc-01      mac = 00:1x:xx:xx:xx:F2

 

Depuis l'OBP du client Sparc, on configure les paramètres du wanboot et on lance l'installation.

 

{0} ok setenv network-boot-arguments  host-ip=10.xx.xx.xxx,router-ip=10.xx.xx.1,
subnet-mask=255.xxx.xxx.xxx,file=http://10.xx.xx.xxx:5555/cgi-bin/wanboot-cgi

 

{0} ok boot net - install

 

Boot device: /pci@0,600000/pci@0/pci@8/pci@0/network@2  File and args: - install
1000 Mbps full duplex  Link up
<time unavailable> wanboot info: WAN boot messages->console
<time unavailable> wanboot info: configuring /pci@0,600000/pci@0/pci@8/pci@0/network@2

 

1000 Mbps full duplex  Link up
<time unavailable> wanboot progress: wanbootfs: Read 368 of 368 kB (100%)
<time unavailable> wanboot info: wanbootfs: Download complete
Mon Dec 17 15:49:54 wanboot progress: miniroot: Read 243471 of 243471 kB (100%)
Mon Dec 17 15:49:54 wanboot info: miniroot: Download complete

 

SunOS Release 5.11 Version 11.1 64-bit
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.
Remounting root read/write
Probing for device nodes ...
Preparing network image for use

 

Downloading solaris.zlib
--2012-12-17 16:21:37--  http://10.xx.xx.xxx:5555/export/auto_install/solaris11_1-sparc//solaris.zlib
Connecting to 10.xx.xx.xxx:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 133076480 (127M) [text/plain]
Saving to: `/tmp/solaris.zlib'

100%[======================================>] 133,076,480 49.6M/s   in 2.6s   

2012-12-17 16:21:39 (49.6 MB/s) - `/tmp/solaris.zlib' saved [133076480/133076480]

 

Downloading solarismisc.zlib
--2012-12-17 16:21:39--  http://10.xx.xx.xxx:5555/export/auto_install/solaris11_1-sparc//solarismisc.zlib
Connecting to 10.xx.xx.xxx:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11808768 (11M) [text/plain]
Saving to: `/tmp/solarismisc.zlib'

100%[======================================>] 11,808,768  63.0M/s   in 0.2s   

2012-12-17 16:21:40 (63.0 MB/s) - `/tmp/solarismisc.zlib' saved [11808768/11808768]

 

Downloading .image_info
--2012-12-17 16:21:40--  http://10.xx.xx.xxx:5555/export/auto_install/solaris11_1-sparc//.image_info
Connecting to 10.xx.xx.xxx:5555... connected.
HTTP request sent, awaiting response... 200 OK
Length: 81 [text/plain]
Saving to: `/tmp/.image_info'

100%[======================================>] 81          --.-K/s   in 0s     

2012-12-17 16:21:40 (7.02 MB/s) - `/tmp/.image_info' saved [81/81]

 

Done mounting image
Configuring devices.
Hostname: solaris
Service discovery phase initiated
Service name to look up: solaris11_1-sparc
Service discovery over multicast DNS failed
Service solaris11_1-sparc located at 10.xx.xx.xxx:5555 will be used
Service discovery finished successfully
Process of obtaining install manifest initiated
Using the install manifest obtained via service discovery

 

solaris console login:

Automated Installation started
The progress of the Automated Installation will be output to the console
Detailed logging is in the logfile at /system/volatile/install_log

Press RETURN to get a login prompt at any time.

16:22:08    Using XML Manifest: /system/volatile/ai.xml
16:22:08    Using profile specification: /system/volatile/profile
16:22:08    Using service list file: /var/run/service_list
16:22:08    Starting installation.
16:22:08    0% Preparing for Installation
16:22:08    100% manifest-parser completed.
16:22:09    0% Preparing for Installation
16:22:09    1% Preparing for Installation
16:22:09    2% Preparing for Installation
16:22:09    3% Preparing for Installation
16:22:09    4% Preparing for Installation
16:22:24    7% target-discovery completed.
16:22:24    Selected Disk(s) : c2t0d0
16:22:24    13% target-selection completed.
16:22:24    17% ai-configuration completed.
16:22:24    19% var-share-dataset completed.
16:22:41    21% target-instantiation completed.
16:22:41    21% Beginning IPS transfer
16:22:41    Creating IPS image
16:22:45     Startup: Retrieving catalog 'solaris' ... Done
16:22:48     Startup: Caching catalogs ... Done
16:22:48     Startup: Refreshing catalog 'site' ... Done
16:22:48     Startup: Refreshing catalog 'solaris' ... Done
16:22:51     Startup: Caching catalogs ... Done
16:22:51    Installing packages from:
16:22:51        solaris
16:22:51            origin:  http://10.xx.xx.xxx:8000/
16:22:51        site
16:22:51            origin:  http://10.xx.xx.xxx:8001/
16:22:51     Startup: Refreshing catalog 'site' ... Done
16:22:52     Startup: Refreshing catalog 'solaris' ... Done
16:22:56    Planning: Solver setup ... Done
16:22:56    Planning: Running solver ... Done
16:22:56    Planning: Finding local manifests ... Done
16:22:56    Planning: Fetching manifests:   0/365  0% complete
16:23:03    Planning: Fetching manifests: 100/365  27% complete
16:23:08    Planning: Fetching manifests: 253/365  69% complete
16:23:16    Planning: Fetching manifests: 365/365  100% complete
16:23:25    Planning: Package planning ... Done
16:23:26    Planning: Merging actions ... Done
16:23:29    Planning: Checking for conflicting actions ... Done
16:23:31    Planning: Consolidating action changes ... Done
16:23:34    Planning: Evaluating mediators ... Done
16:23:37    Planning: Planning completed in 45.22 seconds
16:23:37    Please review the licenses for the following packages post-install:
16:23:37      runtime/java/jre-7                       (automatically accepted)
16:23:37      consolidation/osnet/osnet-incorporation  (automatically accepted,
16:23:37                                                not displayed)
16:23:37    Package licenses may be viewed using the command:
16:23:37      pkg info --license <pkg_fmri>
16:23:38    Download:     0/51156 items    0.0/831.8MB  0% complete
16:23:43    Download:   837/51156 items    5.4/831.8MB  0% complete (1.1M/s)

[…]

16:29:37    Download: 50159/51156 items  828.7/831.8MB  99% complete (714k/s)
16:29:42    Download: 50971/51156 items  831.1/831.8MB  99% complete (619k/s)
16:29:43    Download: Completed 831.78 MB in 365.45 seconds (2.3M/s)
16:29:55     Actions:     1/73904 actions (Installing new actions)
16:30:00     Actions: 15949/73904 actions (Installing new actions

[…]

16:34:51     Actions: 72496/73904 actions (Installing new actions)
16:34:56     Actions: 72687/73904 actions (Installing new actions)
16:35:01     Actions: Completed 73904 actions in 305.77 seconds.
16:35:02    Finalize: Updating package state database ...  Done
16:35:04    Finalize: Updating image state ...  Done
16:35:16    Finalize: Creating fast lookup database ...  Done
16:35:24    Version mismatch:
16:35:24    Installer build version: pkg://solaris/entire@0.5.11,5.11-0.175.1.0.0.24.2:20120919T190135Z
16:35:24    Target build version: pkg://solaris/entire@0.5.11,5.11-0.175.1.1.0.4.0:20121106T001344Z
16:35:24    23% generated-transfer-1181-1 completed.
16:35:25    25% initialize-smf completed.
16:35:25    Boot loader type SPARC ZFS Boot Block does not support the ...
16:35:25    Installing boot loader to devices: ['/dev/rdsk/c2t0d0s0']
16:35:26    Setting boot devices in firmware
16:35:26    Setting openprom boot-device
16:35:27    35% boot-configuration completed.
16:35:27    37% update-dump-adm completed.
16:35:27    40% setup-swap completed.
16:35:27    42% device-config completed.
16:35:28    44% apply-sysconfig completed.
16:35:29    46% transfer-zpool-cache completed.
16:35:38    87% boot-archive completed.
16:35:38    89% transfer-ai-files completed.
16:35:39    99% create-snapshot completed.
16:35:39    Automated Installation succeeded.
16:35:39    System will be rebooted now

Automated Installation finished successfully
Auto reboot enabled. The system will be rebooted now
Log files will be available in /var/log/install/ after reboot
Dec 17 16:35:43 solaris reboot: initiated by root
Dec 17 16:35:50 solaris syslogd: going down on signal 15
syncing file systems... done
rebooting...

 

La configuration d'un serveur AI et la personnalisation d'un client (manifest et profile) sont des étapes assez simple à mettre en place. Il est grand temps maintenant, pour vous, de mettre en place votre architecture d'installation pour Solaris 11.

 

Published by gloumps - dans administration
commenter cet article
31 janvier 2013 4 31 /01 /janvier /2013 21:28

 

Ci-joint la procédure de création pas-à-pas des principales repo pour Solaris 11. Rien de plus simple... vous allez voir !

 

On commence par créer les différentes repos.

 

# zfs create –o atime=off –o mountpoint=/repo rpool/repo
# pkgrepo create /repo/solaris
# pkgrepo create /repo/site
# pkgrepo create /repo/solarisstudio
# pkgrepo create /repo/cluster

 

La repo site contiendra les packages IPS locaux (packages maison). Pour provisonner les autres repos, j'utilise les packages sous support (contrat de support valide). Les certificats sont disponibles à l'adresse suivante : https://pkg-register.oracle.com.

 

Je considére que les certificats sont disponibles dans le répertoire /tmp de mon serveur après les avoir téléchargé.

 

# mkdir -m 0755 -p /var/pkg/ssl
# cp -i /tmp/Ora* /var/pkg/ssl
# ls /var/pkg/ssl
Oracle_Solaris_11_Support.certificate.pem
Oracle_Solaris_11_Support.key.pem
Oracle_Solaris_Cluster_4_Support.certificate.pem
Oracle_Solaris_Cluster_4_Support.key.pem
Oracle_Solaris_Studio_Support.certificate.pem
Oracle_Solaris_Studio_Support.key.pem

 

Je considère aussi que mon serveur peut se connecter à internet (via un proxy web). Il suffit alors de provisionner chaque repo de la manière suivante (en exemple la repo solaris).

 

# export http_proxy=http://my-proxy:8080/
# export https_proxy=https://my-proxy:8080/
# export PKG_SRC=https://pkg.oracle.com/solaris/support/
# export PKG_DEST=/repo/solaris

# pkgrecv --key /var/pkg/ssl/Oracle_Solaris_11_Support.key.pem \
--cert /var/pkg/ssl/Oracle_Solaris_11_Support.certificate.pem \
-m all-versions '*'

# pkgrepo refresh -s /repo/solaris 

 

La repo solaris est maintenant provisonnée. Il reste à effectuer cette opération pour toutes les autres repos (execption pour la repo site). Une fois ces opérations terminées, il suffit de configurer ces différentes repos pour pouvoir y accéder à distance (j'utilise le protocole http).

 

On configure la repo par défaut (server) qui correspond à solaris (le choix du port est arbitraire).

 

# svccfg -s application/pkg/server setprop pkg/inst_root=/repo/solaris
# svccfg -s application/pkg/server setprop pkg/readonly=true
# svccfg -s application/pkg/server setprop pkg/port=8000
# svcadm refresh svc:/application/pkg/server:default
# svcadm enable svc:/application/pkg/server:default

 

Pour les autres repos, je duplique simplement le manifest pkg-server.xml et modifie le nom du manifest avant de les importer dans la base smf.

 

# cd /lib/svc/manifest/application/pkg
# cp pkg-server.xml pkg-cluster.xml
# cp pkg-server.xml pkg-studio.xml
# cp pkg-server.xml pkg-site.xml

 

# ls -l
total 59
-r--r--r--   1 root sys   3843 Jan 14 14:42 pkg-site.xml
-r--r--r--   1 root sys   3855 Jan 14 17:38 pkg-cluster.xml
-r--r--r--   1 root sys   2546 Oct 24 11:55 pkg-mdns.xml
-r--r--r--   1 root sys   3850 Oct 24 11:55 pkg-server.xml
-r--r--r--   1 root sys   3859 Jan 14 14:58 pkg-studio.xml
-r--r--r--   1 root sys   4651 Oct 24 11:58 pkg-system-repository.xml
-r--r--r--   1 root sys   2098 Oct 24 11:49 zoneproxyd.xml

 

# vi pkg-cluster.xml pkg-studio.xml pkg-site.xml

 

# scvcfg import ./pkg-cluster.xml
# scvcfg import ./pkg-studio.xml
# scvcfg import ./pkg-site.xml

 

Quelques modifications sont nécessaires avant d'activer ces repos.

 

# svccfg -s application/pkg/site setprop pkg/inst_root=/repo/site
# svccfg -s application/pkg/site setprop pkg/port=8001
# svcadm refresh svc:/application/pkg/site:default
# scvadm enable svc:/application/pkg/site:default

 

# svccfg -s application/pkg/studio setprop pkg/inst_root=/repo/solarisstudio
# svccfg -s application/pkg/studio setprop pkg/port=8002
# svcadm refresh svc:/application/pkg/studio:default
# scvadm enable svc:/application/pkg/studio:default

 

# svccfg -s application/pkg/cluster setprop pkg/inst_root=/repo/cluster
# svccfg -s application/pkg/cluster setprop pkg/port=8003
# svcadm refresh svc:/application/pkg/cluster:default
# scvadm enable svc:/application/pkg/cluster:default

 

Une petite mise à jour de mes publishers en local.

 

# pkg set-publisher -M '*' -G '*' -P -g http://10.xx.xx.100:8000/ solaris
# pkg set-publisher -M '*' -G '*' -P -g http://10.xx.xx.100:8001/ site
# pkg set-publisher -M '*' -G '*' -P -g http://10.xx.xx.100:8002/ solarisstudio
# pkg set-publisher -M '*' -G '*' -P -g http://10.xx.xx.100:8003/ ha-cluster

 

# pkg publisher
PUBLISHER         TYPE     STATUS P LOCATION
solaris           origin   online F http://10.xx.xx.100:8000/
site              origin   online F http://10.xx.xx.100:8001/
solarisstudio     origin   online F http://10.xx.xx.100:8002/
ha-cluster        origin   online F http://10.xx.xx.100:8003/

 

Et hop c'est terminé. Alors c'est simple non ? Pour vérifier l'accès aux différentes repos, il suffit simplement de tester l'accès au url dans un navigateur web (ou via la commande wget).

 

 

Pour aller plus loin :

Published by gloumps - dans administration
commenter cet article
30 janvier 2013 3 30 /01 /janvier /2013 22:46

 

Depuis Solaris 11 update 1, le chain loader utilisé pour les plateforme x86 est GRUB2. Le fichier de configuration présent dans GRUB (menu.lst) est remplacé par un nouveau fichier nommé grub.cfg. L'édition de ce fichier est normallement déconseillé, du coup la mise à jour s'effectue via la commande bootadm.

 

Si comme moi, vous utilisez la redirection série (pour l'accès au déport console) sur les serveurs x86, il est nécessaire de paramétrer correctement les options de GRUB2.

 

Lister la configuration disponible

 

# bootadm list-menu
the location of the boot loader configuration files is: /rpool/boot/grub
default 0
console text
timeout 30
0 Oracle Solaris 11.1

 

Modifier la redirection du déport console sur le com1

 

# bootadm change-entry -i 0 kargs=console=ttya

 

Afficher la configuration actuelle du choix 0 

 

# bootadm list-menu -i 0
the location of the boot loader configuration files is: /rpool/boot/grub
title: Oracle Solaris 11.1
kernel: /platform/i86pc/kernel/amd64/unix
kernel arguments: console=ttya
boot archive: /platform/i86pc/amd64/boot_archive
bootfs: rpool/ROOT/solaris

 

Lors de l'installation d'un serveur avec Solaris 11, vous avez la possibilité de vous connecter à votre serveur pendant le processus d'installation. Cette fonctionnalité est disponible par défaut pour les platefornes Sparc uniquement.  Pour les palteformes x86, une modification de GRUB2 est nécassaire.

 

Lors de l'initialisation de votre client sur le serveur ai, utilliser simplement la syntaxe suivante

 

# installadm create-client -e 00xxxxxxxxxx -n solaris11_1-i386 \
-b console=ttya,livessh=enable,install_debug=enable

 

Rien de plus facile, non !?

 

Pour aller plus loin :

Published by gloumps - dans administration
commenter cet article
8 janvier 2013 2 08 /01 /janvier /2013 20:54

 

Comment réduire efficacement les coûts d'une infrastructure de serveurs sous Solaris 10 ? En les consolidant !! Cela va de soi, la forte utilisation des zones en est un très bonne exemple. Oui mais... Pourquoi ne pas utiliser les nouvelles possibilités qui s'offrent à nous : Un serveur sous Solaris 11 et des brandZ Solaris 10.

 

Je vous présente deux exemples rapides de migration d'environnements Solaris 10 physique (P2V) et Solaris 10 zone (V2V) sur un serveur Solaris 11.

 

Quelques prérequis sont obligatoires sur le serveur source :

  •           Patch kernel 142909-17 (SPARC) ou 142910-17 (x86 et x64)
  •           Patch 119254-75, 119534-24 et 140914-02 (SPARC)
  •           Patch 119255-75, 119535-24 et 140915-02 (x86/x64)
  •           Systèmes de fichiers racine en ZFS uniquement pour la migration P2V

 

 

Exemple de Migration P2V

 

Les actions ci-dessous sont à réaliser sur le serveur source Solaris 10

 

J'utilise l'utilitaire (disponible via MOS) SUNWzonep2vchk pour valider rapidement ma migration.

 

# ls
SUNWzonep2vchk.zip

 

# unzip SUNWzonep2vchk.zip
Archive:  SUNWzonep2vchk.zip
   creating: SUNWzonep2vchk/
[...]

 

# pkgadd -d . SUNWzonep2vchk   
[...]

/opt/SUNWzonep2vchk/bin/zonep2vchk
/opt/SUNWzonep2vchk/man/man1/zonep2vchk.1m

[...]
Installation of <SUNWzonep2vchk> was successful.

 

 

Quelques checks rapides pour paramétrer au mieux mon futur environnement.    

 

# cd /opt/SUNWzonep2vchk/bin
# ./zonep2vchk -T S11

 

-- Executing Version: 1.0.5-11-16135 

 

  - Source System: myserver10

 

      Solaris Version: Solaris 10 8/07 s10s_u4wos_12b SPARC
      Solaris Kernel:  5.10 Generic_147440-23
      Platform:        sun4u SUNW,Sun-Fire-V210

 

   - Target System:

 

      Solaris_Version: Solaris 11
      Zone Brand:      solaris10 (Solaris 10 Container)
      IP type:         exclusive 

 

-- Executing basic checks 

 

  - The following /etc/system tunables exist.  These tunables will not
    function inside a zone.  The /etc/system tunable may be transfered to
    the target global zone, but it will affect the entire system,
    including all zones and the global zone.  If there is an
    alternate tunable that can be configured from within the zone,
    this tunable is described: 

 

        set noexec_user_stack=1
            zonep2vchk has no information on tunable                    

 

        set noexec_user_stack_log=1
            zonep2vchk has no information on tunable                    

 

        set tod_validate_enable=0
            zonep2vchk has no information on tunable                    

 

        set c2audit:audit_load = 1
            Replacement tunable exists on target host:
                utility auditconfig(1m) 

 

        set rlim_fd_cur = 1024
            Alternate tunable exists inside a non-global zone:
                rctl process.max-file-descriptor 

 

  - The following boot environments will not be usable.  Only the active
    boot environment will be usable in the target non-global zone: 

 

        newBE

 

  - The following ntp client service is enabled.  This service updates
    the system clock.  Since all zones share the same system clock, this
    service is disabled automatically during p2v.  If it is desired
    that the zone update the system clock on the target host, the
    zone will need the privilege "sys_time", and the service will
    need to be enabled inside the zone after p2v.  See the description
    of the "limitpriv" property in zonecfg(1m): 

 

        svc:/network/ntp:default

 

   Basic checks compete, 7 issue(s) detected

 

-- Total issue(s) detected: 7

 

 

Pour obtenir facilement le fichier template nécessaire à la création de la brandZ Solaris 10, j'utilise encore l'utilitaire zonep2vcheck.

 

# ./zonep2vchk -T S11 -c
create -b
set zonepath=/zones/myserver10
set brand=solaris10
add attr
        set name="zonep2vchk-info"
        set type=string
        set value="p2v of host myserver10"
        end
set ip-type=exclusive
# Uncomment the following to retain original host hostid:
# set hostid=845b7f42
# Max procs and lwps based on max_uproc/v_proc
set max-processes=20000
set max-lwps=40000
add attr
        set name=num-cpus
        set type=string
        set value="original system had 2 cpus"
        end

# Only one of dedicated or capped cpu can be used.
# Uncomment the following to use cpu caps:
# add capped-cpu
#       set ncpus=2.0
#       end

# Uncomment the following to use dedicated cpu:
# add dedicated-cpu
#       set ncpus=2
#       end

# Uncomment the following to use memory caps.
# Values based on physical memory plus swap devices:
# add capped-memory
#       set physical=4096M
#       set swap=20099M
#       end

# Original bge1 interface configuration:
#    Statically defined 10.30.228.92 (myzone10)
#    Factory assigned MAC address 0:14:4f:5b:7f:42

add anet
        set linkname=bge1
        set lower-link=change-me
        # Uncomment the following to retain original link configuration:
        # set mac-address=0:14:4f:5b:7f:42
        end
exit 

 

 

Pour obtenir facilement une image cohérente, je reboote en single le serveur source. J'utilise ici un serveur nfs pour héberger temporairement mon image flar.

 

# init 0
Creating boot_archive for /a
updating /a/platform/sun4u/boot_archive
# syncing file systems... done
Program terminated

 

{0} ok boot -s

 

Boot device: /pci@1c,600000/scsi@2/disk@1,0:a  File and args: -s
SunOS Release 5.10 Version Generic_147440-23 64-bit
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.
Hardware watchdog enabled
Booting to milestone "milestone/single-user:default".
Hostname: myserver10
Requesting System Maintenance Mode
SINGLE USER MODE

 

Root password for system maintenance (control-d to bypass):
single-user privilege assigned to /dev/console.
Entering System Maintenance Mode

 

Jan  2 18:16:22 su: 'su root' succeeded for root on /dev/console
Sun Microsystems Inc.      SunOS 5.10   Generic      January 2005

 

# mount –F nfs nfsserver:/myshare /mnt
# zfs mount -a
# flarcreate -n myserver10 -c /mnt/myserver10.flar

Full Flash
Checking integrity...
Integrity OK.
Running precreation scripts...
Precreation scripts done.
Determining the size of the archive...
The archive will be approximately 9.05GB.
Creating the archive...
Archive creation complete.
Running postcreation scripts...
Postcreation scripts done.

 

Running pre-exit scripts...
Pre-exit scripts done.   

 

 

J'utilise plusieurs autres datasets ZFS attachés directement au dataset rpool. Du coup lors de la création du flar, ces datasets ne sont pas pris en compte. J'utilise donc des petits snapshots ZFS pour pouvoir recopier mes données sur la future brandZ Solaris 10.

 

# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
rpool                 50.7G  16.2G  33.5K  /rpool
rpool/ROOT            24.4G  16.2G    23K  legacy
rpool/ROOT/zfsBE      24.4G  16.2G  19.9G  /
rpool/ROOT/zfsBE/var  4.54G  16.2G  4.54G  /var
rpool/apps            8.05G  16.2G  8.05G  /apps
rpool/dump            2.00G  16.2G  2.00G  -
rpool/export          1.39G   629M  1.39G  /export
rpool/swap            14.9G  16.2G  14.9G  -

 

# zfs snapshot rpool/export@now
# zfs snapshot rpool/apps@now
# zfs send rpool/export@now > /mnt/export
# zfs send rpool/apps@now > /mnt/apps    

 

 

Les actions ci-dessous sont à réaliser sur le serveur destination Solaris 11

 

La première étape est de créer la brandZ Solaris 10 sur le serveur Solaris 11.

 

# zpool create myserver10 cXtYdZ
# zfs set mountpoint=/zones/myserver10
# chmod 700 /zones/myserver10

 

# cat /var/tmp/myserver10
create -b
set zonepath=/zones/myserver10
set brand=solaris10
set ip-type=shared
add net
       set address=192.xx.xx.xx/xx
       set physical=ipmp0
end
set hostid=845b7f42
exit

 

 

Comme vous pouvez le constater, j'ai réduit consiérablement le fichier template pour la création de la zone. J'ai apporté notamment la modification suivante : ip-type=shared. En fait j'ai configuré un groupe ipmp sur mon serveur Solaris 11, il m'est alors impossible de créer des vnic via l'interface ipmp. Du coup je préfére utiliser le mode shared.

 

# zonecfg –z myserver10 –f /var/tmp/myserver10
# zoneadm list –cv
  ID NAME           STATUS     PATH                 BRAND    IP   
   0 global         running    /                    solaris  shared
   - myserver10     configured /zones/myserver10    solaris10 shared    

 

 

Je lance maintenant le chargement des données dans ma brandZ Solaris 10.

 

# mount –F nfs nfsserver:/myshare /mnt
# zoneadm -z myserver10 install -p -a /tools/myserver10.flar

Progress being logged to /var/log/zones/zoneadm.20130103T135726Z.myserver10.install
    Installing: This may take several minutes... 

 

Postprocessing: This may take a while...
   Postprocess: Updating the image to run within a zone

 

         Result: Installation completed successfully.


Log saved in non-global zone as /zones/myzone10/root/var/log/zones/zoneadm.20130103T135726Z.myserver10.install

 

# zoneadm list -cv
  ID NAME           STATUS     PATH                 BRAND    IP   
   0 global         running    /                    solaris  shared
   - myserver10     installed  /zones/myserver10    solaris10 shared

 

 

L'installation s'est correctement déroulée. Reste encore quelques modifications à faire pour finaliser complétement la migration P2V. Il nous manque les données contenues dans les différents snapshots.

 

# zfs list -r myserver10
NAME                              USED   AVAIL  REFER  MOUNTPOINT
myserver10                        24.5G  42.0G    33K  /zones/myserver10
myserver10/rpool                  24.5G  42.0G    31K  /rpool
myserver10/rpool/ROOT             24.5G  42.0G    31K  legacy
myserver10/rpool/ROOT/zbe-0       24.5G  42.0G  19.6G  /zones/myserver10/root
myserver10/rpool/ROOT/zbe-0/var   4.55G  42.0G  4.54G  /zones/myserver10/root/var

 

# zfs receive myserver10/rpool/ROOT/zbe-0/apps < /mnt/apps
# zfs receive myserver10/rpool/ROOT/zbe-0/export < /mnt/export

 

# zfs list -r myserver10
NAME                                USED   AVAIL  REFER  MOUNTPOINT
myserver10                          33.9G  32.5G    33K  /zones/myserver10
myserver10/rpool                    33.9G  32.5G    31K  /rpool
myserver10/rpool/ROOT               33.9G  32.5G    31K  legacy
myserver10/rpool/ROOT/zbe-0         33.9G  32.5G  19.6G  /zones/myserver10/root
myserver10/rpool/ROOT/zbe-0/apps    8.05G  32.5G  8.05G  /apps
myserver10/rpool/ROOT/zbe-0/export  1.39G  32.5G  1.39G  /export
myserver10/rpool/ROOT/zbe-0/var     4.55G  32.5G  4.54G  /zones/myserver10/root/var

 

 

Et voilà notre migration P2V est terminée. N'oublier pas de modifier les quelques paramètres obtenus lors de votre check : comme par exemple désactiver le ntp, le nombre de file descriptor, etc.

 

# zoneadm -z myserver10 boot

 

 

 

Migration V2V

 

Les actions ci-dessous sont à réaliser sur le serveur source Solaris 10 hébergeant la zone à migrer

 

Il faut stopper la zone Solaris 10 et l'activer dans un mode particulier pour créer l'archive. J'utilise toujours un serveur nfs pour stocker mon archive flar.

 

# mount -F nfs nfsserver:/myshare /mnt

 

# zoneadm –z myzone10 halt
# zoneadm –z myzone10 ready
# zonecfg –z myzone10 info | grep zonepatch
zonepath: /zones/myzone10

 

# cd /zones/myzone10
# find root -print | cpio –oH crc -oP@ | gzip >/mnt/myzone10.cpio.gz

 

 

Je récupére les infos nécessaires à la création du template de la futur brandZ Solaris 10.

 

# zonecfg -z myzone10 info
zonename: myzone10
zonepath: /zones/myzone10
brand: native
autoboot: false
bootargs:
pool:
limitpriv:
scheduling-class:
ip-type: shared
inherit-pkg-dir:
       dir: /lib
inherit-pkg-dir:
       dir: /platform
inherit-pkg-dir:
       dir: /sbin
inherit-pkg-dir:
       dir: /usr
fs:
       dir: /sources
       special: /datas/myzone10/source
       raw not specified
       type: lofs
       options: []
fs:
       dir: /appli
       special: /datas/myzone10/appli
       raw not specified
       type: lofs
       options: []
net:
       address: 192.xx.xx.xx
       physical: ce0
       defrouter not specified 

 

 

J'utilise ici deux montages lofs pour stocker les données utilisateurs de ma zone solaris 10. Il ne faut oublier de les récupérer lors de la migration.

 

# zfs list -r myzone10
NAME               USED  AVAIL  REFER  MOUNTPOINT
myzone10           105G  17.2G  10.9G  /zones/myzone10
myzone10/appli     83.6G 17.2G  83.6G  /datas/myzone10/appli
myzone10/source    10.3G 17.2G  10.3G  /datas/myzone10/source

 

# zfs snapshot myzone10/appli@now
# zfs snapshot myzone10/source@now
# zfs send myzone10/appli@now > /mnt/appli
# zfs send myzone10/source@now > /mnt/source

 

 

Les actions ci-dessous sont à réaliser sur le serveur destination Solaris 11 

 

La première étape est de créer la brandZ Solaris 10 sur le serveur Solaris 11.

 

# zpool create myzone10 cXtYdZ
# zfs set mountpoint=/zones/myzone10
# chmod 700 /zones/myzone10

 

# cat /var/tmp/myzone10
create -b
set zonepath=/zones/myzone10
set brand=solaris10
set ip-type=shared
add net
       set address=192.xx.xx.xx/xx
       set physical=ipmp0
end
exit

 

# zonecfg –z myzone10 –f /var/tmp/myzone10
# zoneadm list –cv
  ID NAME           STATUS     PATH                 BRAND    IP   
   0 global         running    /                    solaris  shared
   - myzone10       configured /zones/myzone10      solaris10 shared    

 

 

Je lance maintenant le chargement des données dans ma brandZ Solaris 10.

 

# mount –F nfs nfsserver:/myshare /mnt 
# zoneadm -z myzone10 install -p -a /tools/myzone10.cpio.gz
Progress being logged to /var/log/zones/zoneadm.20130105T011129Z.myzone10.install
    Installing: This may take several minutes...
Postprocessing: This may take a while...
   Postprocess: Updating the image to run within a zone
   Postprocess: Migrating data
       from: myzone10/rpool/ROOT/zbe-0
         to: myzone10/rpool/export

 

   Postprocess: A backup copy of /export is stored at /export.backup.20130105T012820Z.
It can be deleted after verifying it was migrated correctly.

 

        Result: Installation completed successfully.
Log saved in non-global zone as /zones/myzone10/root/var/log/zones/zoneadm.20130105T011129Z.myzone10.install 

 

 

L'installation s'est correctement déroulée. Reste encore quelques modifications à faire pour la finaliser complétement : il nous manque notamment les données contenues dans les différents snapshots.

 

# zfs list -r myzone10
NAME                          USED   AVAIL  REFER  MOUNTPOINT
myzone10                      34.5G  40.0G    33K  /zones/myzone10
myzone10/rpool                34.5G  40.0G    31K  /rpool
myzone10/rpool/ROOT           34.5G  40.0G    31K  legacy
myzone10/rpool/ROOT/zbe-0     34.5G  40.0G  19.5G  /zones/myzone10/root
myzone10/rpool/export         34.5G  40.0G   1.0G  /zones/myzone10/root/export
myzone10/rpool/export/home    34.5G  40.0G  14.0G  /zones/myzone10/root/export/home 

 

# zfs receive myzone10/rpool/ROOT/zbe-0/appli < /mnt/appli
# zfs receive myzone10/rpool/ROOT/zbe-0/source < /mnt/source

 

# zfs list -r myserver10
NAME                             USED   AVAIL  REFER  MOUNTPOINT
myzone10                         64.5G  10.0G    33K  /zones/myzone10
myzone10/rpool                   64.5G  10.0G    31K  /rpool
myzone10/rpool/ROOT              64.5G  10.0G    31K  legacy
myzone10/rpool/ROOT/zbe-0        64.5G  10.0G  19.5G  /zones/myzone10/root
myzone10/rpool/ROOT/zbe-0/appli  64.5G  10.0G  20.0G  /appli
myzone10/rpool/ROOT/zbe-0/source 64.5G  10.0G  10.0G  /source
myzone10/rpool/export            64.5G  10.0G   1.0G  /zones/myzone10/root/export
myzone10/rpool/export/home       64.5G  10.0G  14.0G  /zones/myzone10/root/export/home

 

 

Et voilà notre migration V2V est terminée. Reste plus que l'activation de la brandZ Solaris 10.

 

# zoneadm -z myzone10 boot

 

 

J'espère que cet article vous incitera aux migrations de vos environnements Solaris 10 dans des brandZ Solaris 10. Sans parler des aspects de consolidation, il existe plusieurs avantages à utiliser un chassis Solaris 11 pour héberger vos zones ou brandZ. En effet vous bénéficier de tous les optimisations kernel présentent dans Solaris 11. Un vrai plus, je vous l'assure...

 

 

Pour aller plus loin :

 

Published by gloumps - dans administration
commenter cet article
16 novembre 2012 5 16 /11 /novembre /2012 20:50

 

Petit article sur la configuration du déport Console Série et des interruptions NMI sur les serveurs Dell (gamme PowerEdge Rxx0).

 

 

Configuration d'un déport Console Série

 

La redirection série s’effectue par défaut sur le COM2 pour les serveurs Dell. Il est donc nécessaire d’effectuer quelques modifications dans Solaris si vous souhaitez l’utiliser correctement.

 

Il y a deux paramètres importants lors de la configuration : le numéro du port COM et sa vitesse. Ces valeurs doivent correspondre impérativement à la configuration présente dans le BIOS du serveur. Dans mon cas, la redirection série s’effectue sur le COM2 avec une vitesse de 115200 bauds.

 

Mise à jour de grub

 

# cat /rpool/boot/grub/menu.lst
#pragma ident   "@(#)menu.lst   1.1     05/09/01 SMI"
#
# default menu entry to boot
default 0
[…]

#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris 10 9/10 s10x_u9wos_14a X86
findroot (pool_rpool,0,a)
kernel$ /platform/i86pc/multiboot -B $ZFS-BOOTFS,console=ttyb,ttyb-mode="115200,8,n,1,-"
module /platform/i86pc/boot_archive
#---------------------END BOOTADM--------------------
#---------- ADDED BY BOOTADM - DO NOT EDIT ----------
title Solaris failsafe
findroot (pool_rpool,0,a)
kernel /boot/multiboot -s -B console=ttyb,ttyb-mode="115200,8,n,1,-"
module /boot/amd64/x86.miniroot-safe
#---------------------END BOOTADM--------------------

 

 

Mise à jour des « boot environment variables »

 

# cat /boot/solaris/bootenv.rc                             
#
# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
 
#ident  "@(#)bootenv.rc 1.33    07/03/03 SMI"
#
#       bootenv.rc -- boot "environment variables"
#
setprop ata-dma-enabled '1'
setprop atapi-cd-dma-enabled '0'
setprop ttyb-rts-dtr-off 'false'
setprop ttyb-ignore-cd 'true'
setprop ttya-rts-dtr-off 'false'
setprop ttya-ignore-cd 'true'
setprop ttyb-mode '115200,8,n,1,-'
setprop ttya-mode '9600,8,n,1,-'
setprop lba-access-ok '1'
setprop prealloc-chunk-size '0x2000'
setprop console 'ttyb'

 

 

Modification du manifest console-login.xml

 

L'entrée suivante

 

<propval name='label' type='astring' value='console' />

 

devient

 

<propval name='label' type='astring' value='115200' />

 

 

Modification du module asy

 

# cat /kernel/drv/asy.conf
#
# Copyright (c) 1999 by Sun Microsystems, Inc.
# All rights reserved.
#

#pragma ident   "@(#)asy.conf   1.12    99/03/18 SMI"

interrupt-priorities=12;
name="asy" parent="isa" reg=1,0x2f8,8 interrupts=3;

 

 

Un arrêt + relance du serveur est nécessaire pour valider les modifications. Il vous suffit ensuite de vous connecter au déport console (iDrac) pour valider le bon fonctionnement de la redirection.

 

 

Configuration NMI sur serveurs Dell

 

Sur l’ancienne gamme Dell (tous sauf la gamme gen12), il suffisait d’ajouter le setting ci-dessous dans le fichiers system pour pouvoir interpréter l’interruption NMI envoyée.

 

# grep nmi /etc/system
set pcplusmp:apic_kmdb_on_nmi=1
set pcplusmp:apic_panic_on_nmi=1

 

Pour votre culture, le setting « pcplusmp:apic_kmdb_on_nmi » fonctionne uniquement si le kernel est activé en mode debug (instruction kdb à ajouter dans grub).

 

Etrangement ce setting ne fonctionne plus avec la gamme gen12. Je sais résoudre ce problème sans trop comprendre les raisons subtils du changemennt. En fait le module « pcplusmp » ne semble plus fonctionner (même si vous le charger correctement) pour interpréter les instructions NMI. En recherchant un peu, j’ai decouvert un autre module assez intéressant.

 

# cd /kernel/mach
# ls -l
total 757
drwxr-xr-x   2 root     sys            4 Sep 20 15:04 amd64
-rwxr-xr-x   1 root     sys       137528 May 29 10:30 apix
-rwxr-xr-x   1 root     sys       120824 May 29 10:30 pcplusmp

 

Les deux modules « apix » et « pcplusmp » comportent les mêmes variables nmi.

 

# /usr/ccs/bin/nm ./apix | grep -i nmi
[204]   |       432|         4|OBJT |LOCL |0    |4      |acpi_nmi_ccnt
[205]   |       436|         4|OBJT |LOCL |0    |4      |acpi_nmi_cp
[207]   |       440|         4|OBJT |LOCL |0    |4      |acpi_nmi_scnt
[206]   |       444|         4|OBJT |LOCL |0    |4      |acpi_nmi_sp
[590]   |       476|         4|OBJT |GLOB |0    |4      |apic_kmdb_on_nmi
[549]   |     42121|       176|FUNC |GLOB |0    |1      |apic_nmi_intr
[550]   |         1|         1|OBJT |GLOB |0    |COMMON |apic_nmi_lock
[350]   |       532|         4|OBJT |GLOB |0    |4      |apic_num_nmis
[349]   |       652|         4|OBJT |GLOB |0    |4      |apic_panic_on_nmi
[263]   |         0|         0|FUNC |GLOB |0    |UNDEF  |psm_add_nmintr
[655]   |         0|         0|FUNC |GLOB |0    |UNDEF  |tenmicrosec

 

# /usr/ccs/bin/nm ./pcplusmp | grep -i nmi
[171]   |       376|         4|OBJT |LOCL |0    |4      |acpi_nmi_ccnt
[172]   |       380|         4|OBJT |LOCL |0    |4      |acpi_nmi_cp
[174]   |       384|         4|OBJT |LOCL |0    |4      |acpi_nmi_scnt
[173]   |       388|         4|OBJT |LOCL |0    |4      |acpi_nmi_sp
[491]   |       420|         4|OBJT |GLOB |0    |4      |apic_kmdb_on_nmi
[453]   |     33189|       176|FUNC |GLOB |0    |1      |apic_nmi_intr
[454]   |         1|         1|OBJT |GLOB |0    |COMMON |apic_nmi_lock
[300]   |       476|         4|OBJT |GLOB |0    |4      |apic_num_nmis
[299]   |       596|         4|OBJT |GLOB |0    |4      |apic_panic_on_nmi
[224]   |         0|         0|FUNC |GLOB |0    |UNDEF  |psm_add_nmintr
[549]   |         0|         0|FUNC |GLOB |0    |UNDEF  |tenmicrosec

 

J’ai forcé le chargement du module « apix » (dans le fichier system) pour tester l’interruption NMI.

 

# grep apix /etc/system
forceload: mach/apix
set apix:apic_panic_on_nmi=1

 

Soit on modifie la valeur dynamiquement (après avoir loader le module apix) soit on effectue un petit arrêt + relance pour valider la configuration. J'utilise l'outil ipmitool pour générer l'instruction NMI (via le déport console) depuis un autre serveur (natuellement).

 

# ipmitool -I lanplus -U <user> -H <serveur-sp> power diag

 

 

Il ne s'agit pas de grand chose mais la configuration correct d'un déport console (accessible facilement via ssh et non via une interface graphique !!) et la configuration correct du serveur pour pouvoir, en cas de hang (ou pas), prendre facilement un core sont deux éléments obligatoires pour toute production. Je suis encore surpris de rencontrer certaines productions où ces configurations de bases ne sont pas présentes.

 

 

Pour aller plus loin :

 

Published by gloumps - dans administration
commenter cet article
13 novembre 2012 2 13 /11 /novembre /2012 20:24

 

Petite astuce pour la mise à jour kernel d'un miniroot Solaris 10. Mais avant de commencer, parlons un peu du contexte. Lors d'une migration p2v d'un serveur Sparc vers une Ldom, j'ai rencontré l'erreur suivante lors de l'extraction de l'archive flar.

 

{0} ok boot net - install
Requesting Internet Address for xx:xx:xx:xx:xx:xx
SunOS Release 5.10 Version Generic_147440-01 64-bit
Copyright (c) 1983, 2011, Oracle and/or its affiliates. All rights reserved.

 […]

No local customization defined

Extracting archive: flar01

        Extracted    0.00 MB (  0% of 11387.00 MB archive)

could not generate hash

 

ERROR: Could not write to pipe while processing 10.0.0.1:/export/flar/flar01.flar
ERROR: Errors occured during the extraction of flash archive.

The file /tmp/flash_errors contains the list of errors encountered

 

ERROR: Could not extract Flash archive
ERROR: Flash installation failed

 

Solaris installation program exited.

 

# cat /tmp/flash_errors
cannot receive: stream has unsupported feature, feature flags = 0

 

Le bug ZFS (cannot receive: stream has unsupported feature) est corrigé dans la version kernel 147440-21. Il est donc nécessaire de mettre à jour le miniroot (version kernel actuelle du miniroot 147440-01). Si comme moi, vous suivez la procédure indiquée dans la documentation Oracle, l'installation du patch kernel ne fonctionne pas : 

 

# mkdir /JUMPSTART/miniroot /JUMPSTART/miniroot.patch
# cd /export/install/S10_u0811/Solaris_10/Tools
# ./setup_install_server /JUMPSTART/miniroot
Verifying target directory...
Calculating the required disk space for the Solaris_10 product
Calculating space required for the installation boot image
Copying the CD image to disk...
Copying Install Boot Image hierarchy...
Copying /boot netboot hierarchy...
Install Server setup complete

 

# /boot/solaris/bin/root_archive unpackmedia /JUMPSTART/miniroot /JUMPSTART/miniroot.patch
# cd /JUMPSTART/miniroot.patch/sbin
# cp rc2 rc2.orig
# cp sulogin sulogin.orig

 

# patchadd -C /JUMPSTART/miniroot.patch /var/tmp/147440-23

Checking installed patches...
Executing prepatch script...
df: (/JUMPSTART/miniroot.patch/var/tmp/patchadd-3259121710) not a block device, directory or mounted resource
Insufficient space in /JUMPSTART/miniroot.patch/var/tmp/patchadd-3259121710 to save old files.
Space required in kilobytes:  206535
Space available in kilobytes:  0

 

Patchadd is terminating.
umount: /JUMPSTART/miniroot.patch/tmp/root/var busy
umount: /JUMPSTART/miniroot.patch/tmp busy
umount: /JUMPSTART/miniroot.patch/mnt busy

 

Le patch n’a pas été installé (problème dans le script de prepatch). Un cas de figure non validé par l’engineering Oracle !? Etonnant !?

 

# umount: /JUMPSTART/miniroot.patch/tmp/root/var
# umount: /JUMPSTART/miniroot.patch/tmp
# umount: /JUMPSTART/miniroot.patch/mnt

 

# mount -F lofs /JUMPSTART/miniroot.patch/var/tmp /JUMPSTART/miniroot.patch/var/tmp

 

Pour contourner ce petit problème j’ai trouvé une petite astuce banale mais qui fonctionne :

 

# patchadd -C /JUMPSTART/miniroot.patch /var/tmp/147440-23

Checking installed patches...
Executing prepatch script...
Installing patch packages...

 

Patch 147440-23 has been successfully installed.
See /JUMPSTART/miniroot.patch/var/sadm/patch/147440-23/log for details
Executing postpatch script...

Patch packages installed:
  SUNWcakr
  SUNWcakr.3
  SUNWcakr.2
  SUNWcar.2
  SUNWckr
  SUNWcsl
  SUNWcslr
  SUNWcsr
  SUNWcsu
[…]

 

C’est légèrement mieux. Non ? Vérifions sommairement la présence du patch dans le miniroot :

 

# cd /JUMPSTART/miniroot.patch/var/sadm/patch
# ls
124337-01  147440-23

 

Encore quelques modifications nécessaires pour finaliser le miniroot :

 

# export SVCCFG_REPOSITORY=/JUMPSTART/miniroot.patch/etc/svc/repository.db
# svccfg -s system/manifest-import setprop start/exec = :true
# svccfg -s system/filesystem/usr setprop start/exec = :true
# svccfg -s system/identity:node setprop start/exec = :true
# svccfg -s system/device/local setprop start/exec = :true
# svccfg -s network/loopback:default setprop start/exec = :true
# svccfg -s network/physical:default setprop start/exec = :true
# svccfg -s milestone/multi-user setprop start/exec = :true

 

# cd /JUMPSTART/miniroot.patch/sbin
# mv rc2.orig rc2
# mv sulogin.orig sulogin

 

# /boot/solaris/bin/root_archive packmedia /JUMPSTART/miniroot /JUMPSTART/miniroot.patch

 

Voilà le miniroot est à jours, reste à savoir si celui-ci est fonctionnel.

 

{0} ok boot net -s
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: -s
Requesting Internet Address for xx:xx:xx:xx:xx:xx
SunOS Release 5.10 Version Generic_147440-23 64-bit
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.
Booting to milestone "milestone/single-user:default".
Configuring devices.
Using RPC Bootparams for network configuration information.
Attempting to configure interface vnet1...
Skipped interface vnet1
Attempting to configure interface vnet0...
Configured interface vnet0
Requesting System Maintenance Mode
SINGLE USER MODE
#

 

Le miniroot patché semble fonctionnel. Allez hop, testons avec le flar :

 

{0} ok boot net - install
Boot device: /virtual-devices@100/channel-devices@200/network@0  File and args: -s
Requesting Internet Address for xx:xx:xx:xx:xx:xx
SunOS Release 5.10 Version Generic_147440-23 64-bit
Copyright (c) 1983, 2012, Oracle and/or its affiliates. All rights reserved.

[…]

Processing profile
       - Saving Boot Environment Configuration
       - Opening Flash archive
       - Validating Flash archive
       - Selecting all disks
       - Configuring boot device
       - Configuring / (any)

 

ZFS send stream rpool/ROOT/ABE gets extracted to rpool/ROOT/root
ZFS send stream rpool/export gets extracted to rpool/export

 

Verifying disk configuration
Verifying space allocation

 

Preparing system for Flash install

 

Configuring disk (c0d0)
       - Creating Solaris disk label (VTOC)
       - Creating pool rpool
       - Creating swap zvol for pool rpool
       - Creating dump zvol for pool rpool

 

Beginning Flash archive processing

 

Predeployment processing
16 blocks
32 blocks
16 blocks

 

No local customization defined

 

Extracting archive: flar01
       Extracted    0.00 MB (  0% of 11387.00 MB archive)
       Extracted    1.00 MB (  0% of 11387.00 MB archive)
       Extracted    2.00 MB (  0% of 11387.00 MB archive)
       Extracted    3.00 MB (  0% of 11387.00 MB archive)
[…]
       Extracted 11384.42 MB ( 99% of 11387.00 MB archive)
       Extracted 11385.42 MB ( 99% of 11387.00 MB archive)
       Extracted 11386.42 MB ( 99% of 11387.00 MB archive)
       Extracted 11387.00 MB (100% of 11387.00 MB archive)
       Extraction complete
[…]

 

Rien de plus simple qu'un petit montage lofs pour contourner le problème dans le script de prepatch du kernel. Astuce valable pour le kernel 147440-23, à voir si dans les versions inférieurs (ou suppérieurs), cette erreur est (ou sera) encore présente.

 

 

Ci-joint quelques références sur ce sujet :

 

Published by gloumps - dans administration
commenter cet article
1 mai 2012 2 01 /05 /mai /2012 19:13

 

Petit retour sur la mise oeuvre d'une carte Fusion IO sous Solaris 10x64. J'ai été amené à tester un des produit de la gamme Fusion IO pour répondre à différentes problèmatiques liées aux bases de données Oracle et Sybase (les différents tests ont été effectués avec la carte ioDrive Duo à 1,28 To).

 

L'installation du driver n'a rien de bien sorcier (un simple pkgadd, merci du peu). Il se peut que le module ne soit pas chargé automatiquement après l'installation du package, il vous suffit alors d'utiliser add_drv pour le faire. Une fois le package installé et le module chargé, vous pouvez utiliser votre carte.

 

# cd /opt/fusionio/bin
# ./fio-status -a

Found 2 ioDrives in this system with 1 ioDrive Duo
Fusion-io driver version: 2.3.1 build 123

Adapter: ioDrive Duo
    Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:100364
    ioDrive Duo HL, PN:00190000107, Mfr:004, Date:20110104
    External Power: NOT connected
    Powerloss protection: available
    PCIE Bus voltage: avg 12.20V, min 12.11V, max 12.21V
    PCIE Bus current: avg 0.91A, max 2.76A
    PCIE Bus power: avg 11.07W, max 27.49W
    PCIE Power limit threshold: 24.75W
    Connected ioDimm modules:
     fct0: Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72376
     fct1: Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72417

fct0  Attached as 'fioa' (block device)
      Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72376
      ioDIMM3 640GB MLC, PN:00276700501, Mfr:004, Date:20110103
      Located in slot 1 Lower of ioDrive Duo SN:100364
      Powerloss protection: protected 

      PCI:0c:00.0 

      Vendor:1aed, Device:1005, Sub vendor:1aed, Sub device:1010
      Firmware v5.0.7, rev 101971
      640.00 GBytes block device size, 812 GBytes physical device size
      Format: block, v300, 1,250,001,920 sectors, 512 bytes per sector
      Error correction: 39 bits per 960 bytes
      FPGA ID:0 Format UID:000000011ab80132db170041f8755400
      Internal temperature: 49.7 degC, max 54.1 degC
      Board temperature: 40 degC
      Internal voltage: avg 0.996V, max 1.005V
      Aux voltage: avg 2.429V, max 2.429V
      Media status: Healthy; Reserves: 100.00%, warn at 10.00%
      Lifetime data volumes:
        Physical bytes written: 238,962,192,171,536
        Physical bytes read   : 233,379,513,217,664
        RAM usage:
           Current: 206,100,480 bytes
           Peak   : 275,838,976 bytes

fct1  Attached as 'fiob' (block device)
      Fusion-io ioDrive Duo 1.28TB, Product Number:FS3-202-641-CS SN:72417
      ioDIMM3 640GB MLC, PN:00276700501, Mfr:004, Date:20110103
      Located in slot 0 Upper of ioDrive Duo SN:100364
      Powerloss protection: protected
      PCI:0b:00.0
      Vendor:1aed, Device:1005, Sub vendor:1aed, Sub device:1010
      Firmware v5.0.7, rev 101971
      640.00 GBytes block device size, 812 GBytes physical device size
      Format: block, v300, 1,250,001,920 sectors, 512 bytes per sector
      Error correction: 39 bits per 960 bytes
      FPGA ID:0 Format UID:000000011ae10132db170041f8755400
      Internal temperature: 54.6 degC, max 59.6 degC
      Board temperature: 44 degC
      Internal voltage: avg 1.017V, max 1.025V
      Aux voltage: avg 2.435V, max 2.438V
      Media status: Healthy; Reserves: 100.00%, warn at 10.00%
      Lifetime data volumes:
        Physical bytes written: 247,334,121,450,136
        Physical bytes read   : 244,476,258,760,136
        RAM usage:
           Current: 209,283,072 bytes
           Peak   : 277,673,984 bytes

 

 

Quelques précausions avant de commencer à l'utiliser la carte : mettre à jour le firmware de la carte (fio-update-iodrive) et la formater avant utilisation.

 

# ./fio-detach /dev/fct0
Detaching: [====================] (100%) |

# ./fio-detach /dev/fct1 
Detaching: [====================] (100%) |

# ./fio-format /dev/fct0
Creating a standard block device of size 640.00GBytes (596.05GiBytes).
  Using block (sector) size of 512 bytes.

WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) \
Format successful.

# ./fio-format /dev/fct1
Creating a standard block device of size 640.00GBytes (596.05GiBytes).
  Using block (sector) size of 512 bytes.

WARNING: Formatting will destroy any existing data on the device!
Do you wish to continue [y/n]? y
Formatting: [====================] (100%) |
Formatting: [====================] (100%)
Format successful.

# ./fio-attach /dev/fct0
Attaching: [====================] (100%) -
fioa

# ./fio-attach /dev/fct1
Attaching: [====================] (100%) -
fiob

 

 

Nous voiçi donc avec une unité de stockage prête à l'emploi. A vous de choisir le LVM (SVM, ZFS) selon vos uses et coutumes. Pour les amateurs de VxVM sous Solaris, je pense qu'il n'y a pas de problèmes (les tests restent à être réalisés, je susi preneur de l'information).

 

Ci-joint quelques tests comparatifs entre du stockage SAN et la carte Fusion IO. Tous les tests ont été réalisés avec l'utilitaire filebench.

 

Configuration SAN :

  •  Solaris s10x_u10wos_17b (kernel 147441-11)
  • Stockage EMC VMAX (52 Luns de 34 Go)
  • VxVM (stripe 4 colonnes - stripe unit 64 Ko)
  • UFS largefile
  • Option de montage directio et non directio

 

Configuration Fusion IO :

  • Solaris s10x_u10wos_17b (kernel 147441-11)
  • Stockage Fusion IO
  • ZFS (avec compression)
  • Dataset (logbias à throuput)

 

Résultats :

 

Configuration SAN sans directio

 

filebench> load oltp
 [...]
filebench> set $dir=/filebench
filebench> set $iosize=8192
filebench> set $filesize=2147483648
filebench> run runtime
[...]
 9894: 2585.561: IO Summary: 87982 ops, 1466.331 ops/s, (741/719 r/w), 11.2mb/s, 2890us cpu/op, 243.7ms latency
 9894: 2585.561: Shutting down processes
 9894: 2588.876: Deleting ISM...

 

 

Configuration SAN avec directio


filebench> load oltp
[...]
filebench> set $dir=/filebench
filebench> set $iosize=8192
filebench> set $logfilesize=2147483648
filebench> run runtime
[...]
12702: 2205.474: IO Summary: 485747 ops, 8095.346 ops/s, (4038/4016 r/w),  62.9mb/s,    523us cpu/op,  13.6ms latency
12702: 2205.474: Shutting down processes
12702: 2207.606: Deleting ISM...

 

 

Configuration Fusion IO

 

filebench> load oltp
[...]
filebench> set $dir=/fusionio
filebench> set $iosize=8192
filebench> set $filesize=2147483648
filebench> run runtime
[...]
24859: 2337.767: IO Summary: 2287573 ops, 38045.769 ops/s, (18937/18914 r/w), 296.9mb/s,    223us cpu/op,   8.4ms latency
24859: 2337.767: Shutting down processes
24859: 2339.914: Deleting ISM... 

 

 

Les résultats parlent d'eux-mêmes, non ? Le débit sur la carte Fusion IO avoisine les 300 Mb/s ?! Le fait d'utiliser de ZFS compressé permet en plus d'augmenter de manière significative la capacité de stockage de la carte (sans altérer ses incroyables capacités).

 

Juste un petit bémol, sur une infrastructure de production, il est conseillé d'avoir une solution de secours. Avec ce type de configuration, l'utilisation d'outils de clustering classique ne permettent pas une bascule efficace (récupération des données entre les deux serveurs). Il faut donc se poser la question suivante : Comment répliquer les données ? Il faut donc mettre en oeuvre d'autres outils : par exemple Dataguard pour Oracle ou des outils de réplication de données sur IP comme AVS.

 

 

Ci-joint quelques références sur ce sujet :

 

Published by gloumps - dans administration
commenter cet article