Membuat zone di Solaris 11

Ini adalah contoh cara membuat zone di Solaris 11 dimana pada proses pembuatannya dibutuhkan adanya repositori, pembuatan repositori sendiri sudah dibahas di tulisan sebelumnya.

Persiapkan satu mountpoint untuk lokasi dimana zone tersebut akan di-install, kemudian buat satu virtual nic yang nantinya akan di-assign kedalam zone tersebut.

# zfs create -o mountpoint=/zones rpool/zones
# zfs list rpool/zones
# dladm create-vnic -l net0 vnic1

Buat zone baru (zone1)

# zonecfg -z zone1
# zonecfg:zone1> create
# create: Using system default template 'SYSdefault'
# zonecfg:zone1> set zonepath=/zones/zone1
# zonecfg:zone1> add net
# zonecfg:zone1:net> set physical=vnic1
# zonecfg:zone1:net> end
# zonecfg:zone1> exit

Periksa status zone1 yang barusan dibuat, statusnya seharusnya masih “configured”

# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   - zone1            configured /zones/zone1                   solaris  excl

Buat system profile untuk zone1, kemudian install…. jangan lupa untuk mengarahkan ke profile yang sudah kita buat.

# sysconfig create-profile -o zone1.profile.xml
# zoneadm -z zone1 install -c /root/zone1.profile.xml
The following ZFS file system(s) have been created:
    rpool/zones/zone1
Progress being logged to /var/log/zones/zoneadm.20130719T022204Z.zone1.install
       Image: Preparing at /zones/zone1/root.

 AI Manifest: /tmp/manifest.xml.qQaqej
  SC Profile: /root/zone1.profile.xml
    Zonename: zone1
Installation: Starting ...

              Creating IPS image
Startup linked: 1/1 done
              Installing packages from:
                  solaris
                      origin:  http://10.87.17.250/
                      origin:  http://localhost:1008/solaris/bbb612b800c4a05fe489e22179376fa4cb0b1970/
                      origin:  http://localhost:1008/solaris/d360067de7dce7593b27cca30a0eef0cbb0f4039/
DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
Completed                            183/183   33556/33556  222.2/222.2  261k/s

PHASE                                          ITEMS
Installing new actions                   46825/46825
Updating package state database                 Done
Updating image state                            Done
Creating fast lookup database                   Done
Installation: Succeeded
        Note: Man pages can be obtained by installing pkg:/system/manual
 done.
        Done: Installation completed in 1403.715 seconds.
  Next Steps: Boot the zone, then log into the zone console (zlogin -C)
              to complete the configuration process.
Log saved in non-global zone as /zones/zone1/root/var/log/zones/zoneadm.20130719T022204Z.zone1.install

Nyalakan zone1 dan periksa kembali status zone1, seharusnya statusnya adalah “running”

# zoneadm -z zone1 boot
# zoneadm list -cv
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   1 zone1            running    /zones/zone1                   solaris  excl

Proses pembuatan zonenya sudah selesai 🙂

Membuat Repositori Lokal Solaris 11

Seperti diketahui bahwa Oracle 11 rilis dengan salah satu fitur baru yaitu “IPS repository” dimana IPS ini  memungkinkan kita dengan mudah memasang paket, memperbarui paket, serta melakukan patching terhadap aplikasi serta paket yang ada. IPS ini sangat fleksibel karena dapat disiapkan dalam bentuk antarmuka file (NFS) atau antarmuka HTTP.

Repositori ini tersedia online di Oracle buat Anda yang punya koneksi tingkat dewa, jika tidak; berarti kita butuh repositori lokal.

IPS mendukung dua jenis repositori: repositori “origin” dan repositori “mirror”. Untuk alasan performance dan tujuan keamanan, repository “origin” adalah pilihan yang harus dipilih.

Repositori origin berisi semua metadata (seperti katalog, manifes, dan indeks pencarian) dan isi (file) untuk satu atau lebih paket. Sebuah repositori cermin hanya berisi paket konten (file). Klien yang menginstal dan memperbarui paket dari repositori cermin masih harus men-download metadata dari repositori “origin”.

Cukuplah sudah basa-basinya, langsung saja kita lakukan proses pembuatan repositori lokal nya.

Disini saya menggunakan disk tersendiri (c8t1d0) yang saya dedikasikan hanya untuk menampung paket-paket  repositori.

# echo | format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
       0. c8t0d0 <VMware,-VMware Virtual S-1.0-20.00GB>
          /pci@0,0/pci15ad,1976@10/sd@0,0
       1. c8t1d0 <VMware,-VMware Virtual S-1.0 cyl 2608 alt 2 hd 255 sec 63>
          /pci@0,0/pci15ad,1976@10/sd@1,0
Specify disk (enter its number): Specify disk (enter its number):

Buat zfs pool tersendiri (ipsrepo) menggunakan disk yang tadi sudah ditentukan.

# zpool create ipspool c8t1d0
# zpool status ipspool
  pool: ipspool
 state: ONLINE
  scan: none requested
config:

        NAME      STATE     READ WRITE CKSUM
        ipspool   ONLINE       0     0     0
          c8t1d0  ONLINE       0     0     0

errors: No known data errors

Buat mountpoint repo pada pool ipsrepo, kemudian periksa menggunakan “df -h”.

# zfs create -o mountpoint=/repo ipspool/repo
# df -h
Filesystem             Size   Used  Available Capacity  Mounted on
...
ipspool                 20G    31K        20G     1%    /ipspool
ipspool/repo            20G    31K        20G     1%    /repo

Untuk bisa membuat repositori lokal ada dua cara, melakukannya online ke oracle atau menggunakan iso, dalam tulisan ini kita akan melakukannya menggunakan iso.

Unduh terlebih dahulu Oracle Solaris 11.1 Repository Image di website Oracle, dibutuhkan akun login untuk mengunduhnya, atau Anda bisa dateng ke rumah/kantor saya jika mau menyalin :).

Dikarenakan iso nya terdiri dari dua file, maka tahapan setelah mendownload adalah menggabungkannya, mount iso hasil penggabungan ke “/mnt”, kemudian lakukan rsync untuk menyalin isi repo di iso ke mountpoint “/repo” yang tadi sudah kita siapkan.

# cat sol-11_1-repo-full.iso-a sol-11_1-repo-full.iso-b > sol-11_1-repo-full.iso
# mount -F hsfs /repo/sol-11_1-repo-full.iso /mnt
# rsync -aP /mnt/repo/ /repo

 

Membuat repositori dengan menggunakan antarmuka file [ Repository via NFS ]

# zfs set share=name=ipsrepo,path=/repo,prot=nfs ipspool/repo
name=ipsrepo,path=/repo,prot=nfs
# zfs set sharenfs=on ipspool/repo
# grep repo /etc/dfs/sharetab
/repo   ipsrepo nfs     sec=sys,rw

Dari sisi client tinggal jalankan :

# pkg set-publisher -g /net/10.87.17.250/repo solaris

Opsi yang biasa digunakan : -g, –add-origin, -G, –remove-origin, -m, –add-mirror, -M, –remove-mirror.

# pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F file:///net/10.87.17.250/repo/

 

Membuat repositori dengan menggunakan antarmuka Web [ Repository via HTTP ]

# svccfg -s application/pkg/server setprop pkg/inst_root=/repo
# svccfg -s application/pkg/server setprop pkg/readonly=true
# svcadm refresh application/pkg/server
# svcadm enable application/pkg/server
# svcprop -p pkg/inst_root application/pkg/server
/repo

Dari sisi client tinggal jalankan :

# pkg set-publisher -g http://10.87.17.250 solaris
# pkg publisher
PUBLISHER                   TYPE     STATUS P LOCATION
solaris                     origin   online F http://10.87.17.250

Port yang digunakan defaultnya adalah 80, jika hendak menggunakan custom port (misal : 8080), jalankan perintah berikut :

# svccfg –s application/pkg/server setprop pkg/port=8080

Agar proses pencarian lebih cepat, maka lakukan rebuild index pencarian

# pkgrepo -s /repo refresh
Initiating repository refresh.

 

Update Repository

Seiring waktu tentulah paket-paket yang ada di repo harus di-update, cara meng-updatenya juga bisa dilakukan dengan SRU iso, download dan lakukan update repo menggunakan SRU iso image.

# mount -F hsfs /repo/sol-11_1_6_4_0-incr-repo.iso /mnt
# pkgrecv -s /mnt/repo -d file:///net/10.87.17.250/repo '*'
Processing packages for publisher solaris ...
Retrieving and evaluating 197 package(s)...
PROCESS                                         ITEMS    GET (MB)   SEND (MB)
Completed                                     197/197   2133/2133   4601/4601

# pkgrepo rebuild -s /repo
Initiating repository rebuild.

Jika hendak memperbarui paket-paket yang ada di repo, dan Anda punya koneksi yang lumayan, silakan lakukan update repo secara online, caranya :

# pkgrecv -s http://pkg.oracle.com/solaris/release/ -d /repo/ solaris

Lakukan test dengan meng-install salah satu paket menggunakan perintah “pkg install” atau dengan cara membuat zone.

Ubah Alamat IP di Solaris 11

Belajar lagi Solaris 11, karena Solaris 11 ini beda jauh dengan Solaris versi sebelumnya, dan ini adalah catatan pertama tentang Solaris 11 tentang cara mengubah alamat IP di Solaris 11

Konfigurasi sebelumnya :

# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/v4           static   ok           10.87.17.253/24
lo0/v6            static   ok           ::1/128
net0/v6           addrconf ok           fe80::20c:29ff:fe41:4860/10

Proses penggantian :

# ipadm delete-addr net0/v4
# ipadm create-addr -T static -a 10.87.17.251/24 net0/v4

Konfigurasi sesudahnya :

# ipadm show-addr
ADDROBJ           TYPE     STATE        ADDR
lo0/v4            static   ok           127.0.0.1/8
net0/v4           static   ok           10.87.17.251/24
lo0/v6            static   ok           ::1/128
net0/v6           addrconf ok           fe80::20c:29ff:fe41:4860/10

Sekian kapan-kapan disambung kembali 🙂

Ubah kepemilikan berkas symlink

Baru tau ternyata ada cara untuk mengubah “User Owner” maupun “Group Owner” dari berkas symlink.

chown -h user:group symlink

Jika file yang mau diubah terlalu banyak bisa kombinasikan dengan “find”, contoh ingin mengubah owner dari beberapa berkas yang tadinya milik user “103” menjadi milik user “oracle”

find / -user 103 -exec chown -h oracle {} ;

Semoga bermanfaat…

Clonning zone/container Solaris

Ini adalah langkah-langkah cara melakukan clonning terhadap zone/container di Solaris, dalam tulisan ini dicontohkan bahwa kita akan melakukan clonning dari zone “sumber” menjadi zone “tujuan”.

root@globalzone # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0 global            running    /                              native   shared
1 sumber            running    /zone/sumber                   native   shared

Terlihat hanya ada satu non-global zone yaitu zone “sumber”

Matikan zone “sumber” dan export konfigurasi zone “sumber”

root@globalzone # zoneadm -z sumber halt
root@globalzone # zonecfg -z sumber export -f /zone/tujuan.cfg

Sesuaikan dengan konfigurasi zone Anda, dalam contoh ini hanya zonepath serta alamat ip yang disesuaikan.

root@globalzone # cat /zone/tujuan.cfg
create -b
set zonepath=/zone/tujuan
set autoboot=true
set ip-type=shared
add net
set address=10.87.2.20
set physical=bge0
end
add dedicated-cpu
set ncpus=1-2
end

Buat zone kosong berdasarkan dari konfigurasi yang tadi kita export.

root@globalzone # zonecfg -z tujuan -f /zone/tujuan.cfg

Lakukan clonning

root@globalzone # # zoneadm -z tujuan clone sumber
Copying /zone/sumber...

root@globalzone # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0 global            running    /                              native   shared
- sumber            installed  /zone/sumber                   native   shared
- tujuan            installed  /zone/tujuan                   native   shared

Jika sudah seperti ini tinggal nyalakan zone “tujuan” dan ikuti step-step yang muncul dilayar hingga finish.

root@globalzone # zoneadm -z tujuan boot
root@globalzone # zlogin -C tujuan

Selamat, proses clonning berhasil dan saatnya berexperimen.

Langkah-langkah memindahkan zone/container Solaris ke mesin yang berbeda

Berikut ini adalah tutorial langkah-langkah memindahkan zone/container Solaris ke mesin yang berbeda, disini kita akan memindahkan “zone01” dari server “source” ke server “destination”

Server source dan server target sama-sama mempunyai sistem operasi Solaris 10/08, dan kebetulan juga tipe mesin yang sama “Sun Sparc M5000”.

List semua zone yang ada di server “source”, terlihat bahwa kita punya “global zone” dan “zone01”, apa perbedaan global zone dan non-global zone? silakan menuju ke link berikut ini.

root@source # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
1  zone01           running    /zone/zone01                   native   shared

Matikan zone yang akan kita pindah, dalam hal ini adalah “zone01”

root@source # zoneadm -z zone01 halt
root@source # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
-  zone01           installed  /zone/zone01                   native   shared

Terlihat bahwa status “zone01” berubah menjadi “installed”

Langkah selanjutnya adalah men-detach “zone01”, setelah itu cek kembali, seharusnya status “zone01” akan berubah menjadi “configured”.

root@source # zoneadm -z zone01 detach
root@source # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
-  zone01           configured /zone/zone01                   native   shared

Setelah status “zone01” berubah menjadi “configured” maka langkah selanjutnya adalah masuk ke folder dimana “zone01” berada (dalam hal ini ada di /zone), kemudian kompres folder “zone01” dan salin ke mesin “destination”.

root@source # cd /zone
root@source # tar cvf - zone01 | gzip -c > /backup/zone01.tar.gz
root@source # cd /backup
root@source # scp zone01.tar.gz user@destination:/zone/

Setelah selesai menyalin, saatnya bekerja pada server “destination”.

Masuk ke folder “/zone” kemudian extract berkas hasil salin dari mesin “source” (zone01.tar.gz)

root@destination # cd /zone
root@destination # gunzip < zone01.tar.gz | tar xvf -

Setelah selesai proses extract, maka saatnya kita membuat zone dengan nama “zone01”.

root@destination # zonecfg -z zone01
zone01: No such zone configured
Use 'create' to begin configuring a new zone.
zonecfg:zone01> create -a /zone/zone01
zonecfg:zone01> commit
zonecfg:zone01> exit

Coba kita cek kembali zone yang ada di server “destination”, seharusnya muncul zone01 dengan status “configured”

root@destination # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
-  zone01           configured /zone/zone01                   native   shared

Saatnya attach “zone-01”, pastikan tidak muncul galat.

root@destination # zoneadm -z zone01 attach
These patches installed on the source system are inconsistent with this system:
119788-10: not installed
121081: version mismatch
(08) (06)

Jika muncul galat seperti diatas, lakukan langkah dibawah ini, kemudian coba attach kembali “zone01” nya.

root@destination # echo 121081 >> /usr/lib/brand/native/bad_patches
root@destination # echo 119788 >> /usr/lib/brand/native/bad_patches
root@destination # zoneadm -z zone01 attach
root@destination # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
-  zone01           installed  /zone/zone01                   native   shared

Yes…! status “zone01” sudah berubah menjadi “installed”, artinya “zone01” sudah berhasil dipindah ke mesin “destination”, langkah selanjutnya adalah coba menyalakan zone tersebut di mesin “destination”

root@destination # zoneadm -z zone01 boot
root@destination # zoneadm list -cv
ID NAME             STATUS     PATH                           BRAND    IP
0  global           running    /                              native   shared
1  zone01           running    /zone/zone01                   native   shared

Alhamdulillah, “zone01” statusnya sudah berubah menjadi “running” yang artinya zone tersebut sudah hidup di mesin “destination”, selanjutnya silakan coba login ke “zone01”

root@destination # zlogin -C zone01

Untuk keluar dari console login “zone01” gunakan “tilde” + “titik” (~.)

“Ubah” serial number server SUN Solaris menggunakan command “sneep”

Sore ini saat hendak melakukan inventory, ada sedikit keanehan dimana ada dua mesin Solaris X4170 yang serial numbernya SAMA saat diperiksa menggunakan command “sneep“.

Setelah cek dan ricek ternyata hal ini dikarenakan mesin yang satunya diinstall menggunakan metode “Flash Archive”, jadi serial number mesin source terbawa ke mesin target (serial number yang dimaksud adalah serial number yang disimpan di eeprom)

# sneep -A
Sneep has found more than one possible value for Serial Number.
The Serial Numbers available on this system are:
eeprom     : 1213XXX0L2
ipmi       : 1213XXX0L4
smbios     : 1213XXX0L4
backup     : 1213XXX0L2
explorer   : 1213XXX0L2
To change the serial number reported, use 'sneep -s ActualSerialNumber'

Terlihat bahwa serial number nya tidak sama antara yang di eeprom dan yang ada di bios, untuk itu kita harus set agar sama, tapi bagaimana kita bisa tahu mana serial number yang valid?

Cara pertama dan paling mudah adalah check di fisik mesinnya, disitu akan terlihat berapa serial number yang valid.

Cara kedua kita gunakan command :

# smbios -t SMB_TYPE_SYSTEM | grep Serial
Serial Number: 1213XXX0L4

Dari situ terlihat bahwa serial number mesin tersebut yang valid adalah : 1213XXX0L4

Langkah selanjutnya kita tinggal set serial numbernya, sesuaikan dengan hasil ouput dari command sebelumnya.

# sneep -s 1213XXX0L4

Kemudian periksa kembali serial numbernya :

# sneep -A
All sneep data sources are consistent.
Serial Number: 1213XXX0L4

Selesai

pam_authtok_check:pam_sm_chauthtok: Dictionary database not present – Solved

Hari ini ada salah satu user yang password login ke server Solaris expired, dan ketika user tersebut meng-input password lamanya maka akan muncul prompt untuk mengetik “New password:”, dan ketika user tersebut memasukkan password baru maka selalu muncul “Access denied” walaupun sudah mengikuti syarat kombinasi password yang ditentukan.

Setelah dicek di log  muncul error seperti dibawah ini :

# tail -f /var/adm/messages
sshd[15627]: [ID 645138 auth.error] pam_authtok_check:pam_sm_chauthtok: Dictionary database not present.

Solusinya :

Sunting berkas konfigurasi “/etc/default/passwd”, pastikan parameter “DICTIONLIST” nya benar.

# vi /etc/default/passwd
DICTIONLIST=/usr/share/lib/dict/words

Alhamdulillah.

Cara sakti deteksi disk baru (dari FC-Storage) di Solaris

Judul yang sangat provokatif, tapi mudah-mudahan bermanfaat

# devfsadm -cv

Periksa apakah disk barunya sudah muncul?

# echo | format
Searching for disks...done

AVAILABLE DISK SELECTIONS:
0. c0t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
/pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c1t60060E8006D6D3000000D6D300000C00d0 <SUN-LCSM100_F-0670 cyl 34814 alt 2 hd 128 sec 64>
/scsi_vhci/ssd@g60060e8006d6d3000000d6d300000c00
3. c1t60060E8006D6D3000000D6D300000C01d0 <SUN-LCSM100_F-0670 cyl 34677 alt 2 hd 128 sec 64>
/scsi_vhci/ssd@g60060e8006d6d3000000d6d300000c01

Ternyata belum, kita lakukan cara sakti berikutnya :

Periksa port FC yang terkoneksi

# luxadm -e port
/devices/pci@3,700000/SUNW,qlc@0/fp@0,0:devctl                     CONNECTED
/devices/pci@3,700000/SUNW,qlc@0,1/fp@0,0:devctl                   CONNECTED

Lakukan forcelip

# luxadm -e forcelip /devices/pci@3,700000/SUNW,qlc@0/fp@0,0:devctl
# luxadm -e forcelip /devices/pci@3,700000/SUNW,qlc@0,1/fp@0,0:devctl
# echo | format
Searching for disks…done

AVAILABLE DISK SELECTIONS:
0. c0t0d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
    /pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@0,0
1. c0t1d0 <SUN72G cyl 14087 alt 2 hd 24 sec 424>
    /pci@0,600000/pci@0/pci@8/pci@0/scsi@1/sd@1,0
2. c1t60060E8006D6D3000000D6D300000C00d0 <SUN-LCSM100_F-0670 cyl 34814 alt 2 hd 128 sec 64>
    /scsi_vhci/ssd@g60060e8006d6d3000000d6d300000c00
3. c1t60060E8006D6D3000000D6D300000C01d0 <SUN-LCSM100_F-0670 cyl 34677 alt 2 hd 128 sec 64>
    /scsi_vhci/ssd@g60060e8006d6d3000000d6d300000c01
4. c1t60060E8006D6D3000000D6D300000C02d0 <HITACHI-OPEN-V-SUN-7003 cyl 65533 alt 2 hd 15 sec 1066>
    /scsi_vhci/ssd@g60060e8006d6d3000000d6d300000c02

Dah muncul tuh 🙂