Multipathing iSCSI Disk

Sebagai lanjutan tulisan sebelumnya tentang iSCSI, kali ini saya ingin menuliskan tentang koneksi iSCSI dengan multipathing. Multipathing maksudnya adalah iSCSI Initiator (client) akan mengakses 1 shared disk melalui 2 network yang berbeda (ada tambahan redundant link). Dengan tambahan redundant link, koneksi iSCSI menjadi lebih aman terhadap kemungkinan terjadinya masalah pada jaringan.

Simple Shared Storage with Redundant iSCSI

Masih menggunakan contoh dari tulisan sebelumnya, saya menggunakan 2 buah mesin untuk mensimulasikan iSCSI Multipathing ini. Mesin pertama yang bertindak sebagai iSCSI Target adalah sansvr01. Sementara mesin yang akan bertindak sebagai iSCSI Initiator adalah dev01.

Menyiapkan iSCSI Redundant Link

Di contoh sebelumnya sansvr01 hanya punya 2 IP, satu untuk akses publik (192.168.10.111) dan satu lagi untuk komunikasi iSCSI (172.16.10.5). iSCSI Target & iSCSI Initiator berkomunikasi melalui jaringan 172.16.10.0/24. Nantinya akan ada 1 jalur komunikasi baru dari iSCSI Target ke iSCSI Initiator melalui jaringan 172.16.11.0/24. Untuk mesimulasikan multipathing, saya tambahkan satu interface baru (eth2) pada sansvr01 dengan IP 172.16.11.5.

root@sansvr01:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 52:54:00:66:EC:19  
          inet addr:192.168.10.111  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe66:ec19/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:11951 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1457 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1485359 (1.4 MiB)  TX bytes:217666 (212.5 KiB)
          Interrupt:11 Base address:0x6000 

eth1      Link encap:Ethernet  HWaddr 52:54:00:8B:EC:A5  
          inet addr:172.16.10.5  Bcast:172.16.10.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe8b:eca5/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15283 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8546 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1232962 (1.1 MiB)  TX bytes:3726368 (3.5 MiB)
          Interrupt:11 Base address:0x4000 

eth2      Link encap:Ethernet  HWaddr 52:54:00:06:A1:35  
          inet addr:172.16.11.5  Bcast:172.16.11.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe06:a135/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:438 errors:0 dropped:0 overruns:0 frame:0
          TX packets:91 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:57372 (56.0 KiB)  TX bytes:10219 (9.9 KiB)
          Interrupt:10 Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

root@sansvr01:~# 

Saya juga tambahkan IP baru (eth2 : 172.16.11.31) pada mesin dev01 :

root@dev01:~# ifconfig -a
eth0      Link encap:Ethernet  HWaddr 52:54:00:A6:28:13  
          inet addr:192.168.10.31  Bcast:192.168.10.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fea6:2813/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:22032 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6381 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2570471 (2.4 MiB)  TX bytes:1042792 (1018.3 KiB)
          Interrupt:11 Base address:0x6000 

eth1      Link encap:Ethernet  HWaddr 52:54:00:EC:9B:73  
          inet addr:172.16.10.31  Bcast:172.16.10.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:feec:9b73/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26783 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56508 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14197492 (13.5 MiB)  TX bytes:42777972 (40.7 MiB)
          Interrupt:11 Base address:0x4000 

eth2      Link encap:Ethernet  HWaddr 52:54:00:5F:15:D8  
          inet addr:172.16.11.31  Bcast:172.16.11.255  Mask:255.255.255.0
          inet6 addr: fe80::5054:ff:fe5f:15d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:26285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:56686 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:14100612 (13.4 MiB)  TX bytes:43110648 (41.1 MiB)
          Interrupt:10 Base address:0x8000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:104 errors:0 dropped:0 overruns:0 frame:0
          TX packets:104 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:9084 (8.8 KiB)  TX bytes:9084 (8.8 KiB)

root@dev01:~# 

Yang perlu dilakukan sekarang adalah memodifikasi berkas targets.conf untuk mendaftarkan IP baru milik dev01.

root@sansvr01:~# cat /etc/tgt/targets.conf
default-driver iscsi

<target iqn.2014-04.localdomain:sansvr01.shared01>
    backing-store /dev/mapper/vg_shareddisk-shared01
    initiator-address 172.16.10.31
    initiator-address 172.16.11.31
</target>
root@sansvr01:~# 

Berikutnya kita perlu “memaksa” servis tgtd di sansvr01 untuk menggunakan konfigurasi baru :

root@sansvr01:~# service tgtd force-reload
Force-updating SCSI target daemon configuration:           [  OK  ]
root@sansvr01:~# 

Kita bisa pastikan ACL baru sudah aktif dengan perintah tgt-admin :

root@sansvr01:~# tgt-admin -s
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 524 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/mapper/vg_shareddisk-shared01
            Backing store flags: 
    Account information:
    ACL information:
        172.16.10.31
        172.16.11.31
root@sansvr01:~# 

Penting sekali untuk menambah konfigurasi firewall untuk mengijinkan iSCSI Initiator mengakses shared disk melalui network 172.16.11.0/24 :

root@sansvr01:~# iptables -I INPUT -p tcp -s 172.16.11.0/24 --dport 3260 -j ACCEPT
root@sansvr01:~# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
root@sansvr01:~#

Mengatur Multipath Di iSCSI Initiator

Sekarang mesin dev01 bisa mengenali shared disk dari kedua network :

root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.11.5:3260 --discover
172.16.11.5:3260,1 iqn.2014-04.localdomain:sansvr01.shared01
root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.10.5:3260 --discover
172.16.10.5:3260,1 iqn.2014-04.localdomain:sansvr01.shared01
root@dev01:~# 

Mesin dev01 juga bisa login & mengakses shared disk yang sama lewat 2 target IP yang berbeda :

root@dev01:~# iscsiadm --mode node --targetname="iqn.2014-04.localdomain:sansvr01.shared01" --portal 172.16.10.5:3260 --login
Logging in to [iface: default, target: iqn.2014-04.localdomain:sansvr01.shared01, portal: 172.16.10.5,3260] (multiple)
Login to [iface: default, target: iqn.2014-04.localdomain:sansvr01.shared01, portal: 172.16.10.5,3260] successful.
root@dev01:~# 
root@dev01:~# iscsiadm --mode node --targetname="iqn.2014-04.localdomain:sansvr01.shared01" --portal 172.16.11.5:3260 --login
Logging in to [iface: default, target: iqn.2014-04.localdomain:sansvr01.shared01, portal: 172.16.11.5,3260] (multiple)
Login to [iface: default, target: iqn.2014-04.localdomain:sansvr01.shared01, portal: 172.16.11.5,3260] successful.
root@dev01:~# 

Belum cukup sampai di sini konfigurasinya, mesin dev01 melihat iqn.2014-04.localdomain:sansvr01.shared01 sebagai 2 external disk yang berbeda.

root@dev01:~# cat /proc/partitions 
major minor  #blocks  name

   8        0    8388608 sda
   8        1     512000 sda1
   8        2    7875584 sda2
 253        0    7036928 dm-0
 253        1     835584 dm-1
   8       16     512000 sdb
   8       32     512000 sdc
root@dev01:~# 

Dari informasi di atas, mesin dev01 menganggap ada 2 harddisk baru yaitu sdb & sdc. Perintah fdisk juga menampilkan hal yang sama :

root@dev01:~# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002d485

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/mapper/vg_dev01-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/mapper/vg_dev01-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdb: 524 MB, 524288000 bytes
17 heads, 59 sectors/track, 1020 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x636c0fb3

   Device Boot      Start         End      Blocks   Id  System

Disk /dev/sdc: 524 MB, 524288000 bytes
17 heads, 59 sectors/track, 1020 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x636c0fb3

   Device Boot      Start         End      Blocks   Id  System
root@dev01:~# 

Ini yang masih perlu diperbaiki karena sebenarnya shared disk yang diakses oleh mesin dev01 hanya 1 buah. Dengan multipathing, kita memberitahu OS bahwa sebenarnya /dev/sdb & /dev/sdc mengacu pada “physical storage” yang sama. Hanya proses komunikasinya bisa melalui 2 jalur yang berbeda.

Linux punya daemon multipathd yang bisa melakan proses multipathing. multipathd akan bertugas mengatur pertukaran data dari server ke storage melalui 2 jalur komunikasi yang berbeda. Bila satu jalur putus, multipathd akan tetep mengalihkan jalur pertukaran data tadi melalui redundant link-nya. Kalau mengacu pada gambar ilustrasi di atas, pertukaran data antara iSCSI Target & iSCSI Initiator bisa melalui network 172.16.10.0 atau 172.16.11.0. Bila dua jalur tadi digunakan bersama-sama secara bergantian, ini dikenal dengan konfigurasi round-robbin. Namun misalnya bila transmisi data hanya melalui network 172.16.10.0 saja, maka network 172.16.11.0 akan standby kalau sewaktu-waktu ada gangguan transmisi data pada network 172.16.10.0. Konfigurasi seperti ini dikenal sebagai active-passive (atau active-standby)

Di mesin dev01 sebagai iSCSI Initiator, saya perlu menginstal paket device-mapper-multipath :

root@dev01:~# yum install device-mapper-multipath

Supaya kernel Linux bisa melakukan proses multipathing ini, kita perlu mengaktifkan modul dm_multipath dengan perintah modprobe seperti contoh berikut ini :

root@dev01:~# modprobe dm_multipath
root@dev01:~# lsmod  | grep dm_multipath
dm_multipath           17724  2 dm_round_robin
dm_mod                 84209  15 dm_multipath,dm_mirror,dm_log
root@dev01:~# 

Konfigurasi multipath disimpan dalam berkas /etc/multipath.conf. Kita bisa dapatkan contoh sampel berkas konfigurasinya dari /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf. Berikut ini adalah contoh berkas multipath.conf yang saya gunakan sekarang ini :

root@dev01:~# cat /etc/multipath.conf 
defaults {
    udev_dir        /dev
    polling_interval    10
    path_selector       "round-robin 0"
    path_grouping_policy    multibus
    getuid_callout      "/lib/udev/scsi_id --replace-whitespace --whitelisted --device=/dev/%n"
    prio            const
    path_checker        readsector0
    rr_min_io       100
    max_fds         8192
    rr_weight       priorities
    failback        immediate
    no_path_retry       fail
    user_friendly_names yes
}
blacklist {
    wwid *
    devnode "sda"
}
blacklist_exceptions {
    wwid "1IET_00010001"
}
root@dev01:~# 

Beberapa detail yang perlu diketahui dari contoh konfigurasi di atas antara lain adalah :

  • blacklist : opsi ini dipakai untuk mendaftarkan semua harddisk yang tidak akan diikutsertakan dalam proses multipathing, seperti misalnya internal disk (boot disk). Pada contoh ini mesin dev01 memiliki boot disk /dev/sda.
  • blacklist_exceptions : semua disk yang dimasukkan dalam kategori ini akan ikut menggunakan konfigurasi multipathing. Dari mana kita bisa tahu nama wwid sebuah harddisk? Kita bisa lihat dari hasil perintah scsi_id berikut ini :
    root@dev01:~# scsi_id -g -u -d /dev/sdb
    1IET_00010001
    root@dev01:~# scsi_id -g -u -d /dev/sdc
    1IET_00010001
    root@dev01:~# 
    

    Dalam konteks iSCSI, nama SCSI ID ini sama dengan yang kita peroleh dari perintah tgt-admin pada mesin iSCSI Target.

    root@sansvr01:~# tgt-admin -s
    Target 1: iqn.2014-04.localdomain:sansvr01.shared01
        System information:
            Driver: iscsi
            State: ready
        I_T nexus information:
        LUN information:
            LUN: 0
                Type: controller
                SCSI ID: IET     00010000
                SCSI SN: beaf10
                Size: 0 MB, Block size: 1
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: null
                Backing store path: None
                Backing store flags: 
            LUN: 1
                Type: disk
                SCSI ID: IET     00010001
                SCSI SN: beaf11
                Size: 524 MB, Block size: 512
                Online: Yes
                Removable media: No
                Prevent removal: No
                Readonly: No
                Backing store type: rdwr
                Backing store path: /dev/mapper/vg_shareddisk-shared01
                Backing store flags: 
        Account information:
        ACL information:
            172.16.10.31
            172.16.11.31
    root@sansvr01:~#
    
  • path_selector : opsi ini dipakai untuk menentukan link mana yang akan digunakan untuk transmisi data. Bila diset sebagai round-robin 0 maka data akan ditransmisikan melalui masing-masing link yang aktif secara bergantian (looping)
  • --replace-whitespace : ini gunanya untuk menghapus spasi pada nama disk (dalam hal ini adalah iSCSI Disk). Untuk melihat nama (atau ID) dari iSCSI disk tadi kita bisa gunakan perintah scsi_id seperti contoh berikut ini :
    root@dev01:~# scsi_id --device=/dev/sdc --whitelisted 
    1IET     00010001
    root@dev01:~# 
    

    Tanpa opsi --replace-whitespace ID dari /dev/sdc adalah 1IET 00010001. Bandingkan hasilnya setelah kita gunakan opsi --replace-whitespace berikut ini :

    root@dev01:~# scsi_id --device=/dev/sdc --whitelisted --replace-whitespace
    1IET_00010001
    root@dev01:~# 
    
  • user_friendly_names : opsi ini memungkinkan kita untuk memberi nama yang lebih mudah dikenali untuk setiap multipath-disk. Pada contoh tadi, akan sulit mengidentifikasi nama shared disk “1IET_00010001”. Kita bisa mendaftarkan nama alias untuk setiap WWID tersebut ke dalam berkas /etc/multipath/bindings seperti contoh di bawah ini
    root@dev01:~# cat /etc/multipath/bindings 
    # Multipath bindings, Version : 1.0
    # NOTE: this file is automatically maintained by the multipath program.
    # You should not need to edit this file in normal circumstances.
    #
    # Format:
    # alias wwid
    #
    sansvr01_shared0 1IET_00010001
    root@dev01:~# 
    

    Pada contoh di atas saya memilih untuk memberi alias iSCSI disk “1IET_00010001” menjadi “sansvr01_shared01”. Menurut saya ini jauh lebih mudah untuk diingat-ingat, jadi saya bisa langsung tahu kalau ini adalah iSCSI disk dari mesin sansvr01 dengan nama shared disk shared01.

Setelah konfigurasi tadi selesai dibuat & modul dm_multipath sudah di-load oleh kernel, kita bisa mulai aktifkan service multipathd :

root@dev01:~# service multipathd status
multipathd is stopped
root@dev01:~# 
root@dev01:~# service multipathd start
Starting multipathd daemon:                                [  OK  ]
root@dev01:~# 

Penting untuk mengatur service multipathd supaya aktif otomatis saat proses booting:

root@dev01:~# chkconfig multipathd on

Kita bisa melihat hasil akhir proses multipathing dengan perintah multipath seperti contoh di bawah ini :

root@dev01:~# multipath -ll
sansvr01_shared0 (1IET_00010001) dm-2 IET,VIRTUAL-DISK
size=500M features='0' hwhandler='0' wp=rw
`-+- policy='round-robin 0' prio=1 status=active
  |- 4:0:0:1 sdb 8:16 active ready running
  `- 5:0:0:1 sdc 8:32 active ready running
root@dev01:~# 

Jadi sekarang yang kita “anggap” sebagai harddisk oleh mesin dev01 bukan lagi /dev/sdb atau /dev/sdc melainkan multipath disk-nya yaitu /dev/mapper/sansvr01_shared0.

root@dev01:~# fdisk -l /dev/mapper/sansvr01_shared0

Disk /dev/mapper/sansvr01_shared0: 524 MB, 524288000 bytes
255 heads, 63 sectors/track, 63 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x636c0fb3

                      Device Boot      Start         End      Blocks   Id  System
root@dev01:~# 

Langkah-langkah untuk menyiapkan filesystem pada multipath disk sama persis seperti layaknya harddisk konvensional :

  1. Buat partisi terlebih dulu :
    root@dev01:~# fdisk  /dev/mapper/sansvr01_shared0
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-63, default 1): 
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-63, default 63): 
    Using default value 63
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    
    WARNING: Re-reading the partition table failed with error 22: Invalid argument.
    The kernel still uses the old table. The new table will be used at
    the next reboot or after you run partprobe(8) or kpartx(8)
    Syncing disks.
    root@dev01:~#
    
  2. Cek struktur partisinya :
    root@dev01:~# fdisk -l /dev/mapper/sansvr01_shared0
    
    Disk /dev/mapper/sansvr01_shared0: 524 MB, 524288000 bytes
    255 heads, 63 sectors/track, 63 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x636c0fb3
    
                          Device Boot      Start         End      Blocks   Id  System
    /dev/mapper/sansvr01_shared0p1               1          63      506016   83  Linux
    root@dev01:~# 
    
  3. Sebagai contoh, saya pilih filesystem ext4 :
    root@dev01:~#  mkfs.ext4 /dev/mapper/sansvr01_shared0p1 
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    126976 inodes, 506016 blocks
    25300 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=67633152
    62 block groups
    8192 blocks per group, 8192 fragments per group
    2048 inodes per group
    Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
    
    Writing inode tables: done                            
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 20 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    root@dev01:~# 
    
  4. Mount partisi baru tadi :
    root@dev01:~# mount /dev/mapper/sansvr01_shared0p1 /sharedstorage/
    
  5. Partisi baru sansvr01_shared01 dengan filesystem ext4 sudah siap digunakan :
    root@dev01:~# df -h
    Filesystem                      Size  Used Avail Use% Mounted on
    /dev/mapper/vg_dev01-lv_root    6.7G  854M  5.5G  14% /
    tmpfs                           499M     0  499M   0% /dev/shm
    /dev/sda1                       485M   32M  428M   7% /boot
    /dev/mapper/sansvr01_shared0p1  479M   11M  444M   3% /sharedstorage
    root@dev01:~#   
    

iSCSI Server Dengan CentOS 6.5

iSCSI adalah teknologi yang biasa digunakan untuk menghubungkan server dengan SAN (storage area network). Biasanya harddisk terhubung langsung dengan server melalui konektor seperti SATA, SCSI, atau SAS. Protokol iSCSI mengemulasikan koneksi SCSI melalui jaringan TCP/IP. Keuntungan utamanya adalah fleksibilitas dalam menyambungkan server dengan storage (atau disk array). Jauh lebih flexible karena koneksinya melalui jaringan TCP/IP. Untuk mendapat throughput yang cukup untuk keperluan transfer data, tentu perlu koneksi yang cukup stabil & setidaknya memiliki bandwidth 1 Gbps melalui Gigabit Ethernet.

Dalam terminologi iSCSI setidaknya ada 2 istilah penting yang perlu kita kenal :

  1. iSCSI Target : ini adalah server yang memiliki storage & membagi-bagikannya kepada server lain yang membutuhkan.
  2. iSCSI Initiator : ini adalah client yang akan butuh storage dengan mengakses iSCSI Target.

Simple Shared Disk Via iSCSI

Dalam tulisan ini saya akan menulis langkah-langkah sederhana untuk membuat CentOS Linux sebagai iSCSI Target & juga sebagai iSCSI Initiator seperti pada gambar di atas. Server yang akan menjadi iSCSI Target adalah sansvr01, sementara server yang menjadi iSCSI Initiator adalah dev01. Idenya adalah server dev01 membutuhkan tambahan storage, server ini akan menggunakan storage yang di-share oleh sansvr01.

Untuk komunikasi iSCSI, kedua server akan menggunakan network 172.16.10.0/24. Network ini terpisah dari public network 192.168.10.0/24.

Menyiapkan iSCSI Target

Mesin sansvr01 menggunakan CentOS 6.5 & mempunyai konfigurasi IP seperti berikut ini :

root@sansvr01:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:8b:ec:a5 brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.5/24 brd 172.16.10.255 scope global eth1
    inet6 fe80::5054:ff:fe8b:eca5/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:66:ec:19 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.111/24 brd 192.168.10.255 scope global eth0
    inet6 fe80::5054:ff:fe66:ec19/64 scope link 
       valid_lft forever preferred_lft forever
root@sansvr01:~#

Mesin sansvr01 memiliki 2 buah harddisk yaitu sda (boot disk-nya) & sdb (harddisk yang akan dijadikan shared storage). :

root@sansvr01:~# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002d485

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_sansvr01-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_sansvr01-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

root@sansvr01:~#

Pertama saya perlu menyiapkan /dev/sdb terlebih dulu. Dengan menggunakan perintah fdisk saya membuat 1 partisi /dev/sdb1 :

root@sansvr01:~# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x7943fd2f.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1044, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): 
Using default value 1044

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
root@sansvr01:~#

Saya memilih untuk mengatur shared disk-nya menggunakan LVM. Ada 3 langkah yang perlu dilakukan untuk membuat logical volume yang akan dibagikan ke semua iSCSI Client.

  1. Inisialisasi partisi dengan perintah pvcreate :
    root@sansvr01:~# pvcreate /dev/sdb1
      Physical volume "/dev/sdb1" successfully created
    root@sansvr01:~# 
    root@sansvr01:~# pvs
      PV         VG            Fmt  Attr PSize PFree
      /dev/sda2  vg_sansvr01 lvm2 a--  7.51g    0 
      /dev/sdb1  vg_shareddisk lvm2 a--  8.00g 8.00g
    root@sansvr01:~#
  2. Membuat volume group baru dengan perintah vgcreate. Pada contoh ini saya membuat grup baru dengan nama “vg_shareddisk” :
    root@sansvr01:~# vgcreate vg_shareddisk /dev/sdb1
      Volume group "vg_shareddisk" successfully created
    root@sansvr01:~# 
    root@sansvr01:~# vgs
      VG            #PV #LV #SN Attr   VSize VFree
      vg_sansvr01   1   2   0 wz--n- 7.51g    0 
      vg_shareddisk   1   0   0 wz--n- 8.00g 8.00g
    root@sansvr01:~#
  3. Membuat logical volume yang nantinya akan di-share kepada iSCSI Client. Dalam contoh ini saya membuat sebuah logical volume berukuran 500MB & menamainya “shared01” :
    root@sansvr01:~# lvcreate -n shared01 -L +500M vg_shareddisk
      Logical volume "shared01" created
    root@sansvr01:~# lvs
      LV       VG            Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
      lv_root  vg_sansvr01 -wi-ao----   6.71g                                             
      lv_swap  vg_sansvr01 -wi-ao---- 816.00m                                             
      shared01 vg_shareddisk -wi-a----- 500.00m                                             
    root@sansvr01:~#

Setelah menyiapkan logical volume, langkah berikutnya adalah menginstal semua paket yang diperlukan oleh iSCSI Server ini. Di RedHat atau CentOS paket-paket yang diperlukan tersedia dalam grup paket “Network Storage Server” :

root@sansvr01:~# yum groupinstall "Network Storage Server"
root@sansvr01:~# rpm -aq | grep scsi-target
scsi-target-utils-1.0.24-10.el6.x86_64
root@sansvr01:~#

tgtd adalah nama daemon dari iSCSI Server. Kita bisa melihat berkas-berkas yang termasuk dalam paket scsi-target-utils tadi dengan menggunakan perintah berikut ini :

root@sansvr01:~# rpm -ql scsi-target-utils-1.0.24-10.el6.x86_64
/etc/rc.d/init.d/tgtd
/etc/sysconfig/tgtd
/etc/tgt/targets.conf
/usr/sbin/tgt-admin
/usr/sbin/tgt-setup-lun
/usr/sbin/tgtadm
/usr/sbin/tgtd
/usr/sbin/tgtimg
/usr/share/doc/scsi-target-utils-1.0.24
/usr/share/doc/scsi-target-utils-1.0.24/README
/usr/share/doc/scsi-target-utils-1.0.24/README.iscsi
/usr/share/doc/scsi-target-utils-1.0.24/README.iser
/usr/share/doc/scsi-target-utils-1.0.24/README.lu_configuration
/usr/share/doc/scsi-target-utils-1.0.24/README.mmc
/usr/share/man/man5/targets.conf.5.gz
/usr/share/man/man8/tgt-admin.8.gz
/usr/share/man/man8/tgt-setup-lun.8.gz
/usr/share/man/man8/tgtadm.8.gz
root@sansvr01:~#

Berikutnya saya tinggal mendaftarkan logical volume yang sudah dibuat tadi. Mari kita lihat lagi logical volume “shared01” dengan menggunakan perintah lvs :

root@sansvr01:~# lvs
  LV       VG            Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root  vg_sansvr01   -wi-ao----   6.71g                                             
  lv_swap  vg_sansvr01   -wi-ao---- 816.00m                                             
  shared01 vg_shareddisk -wi-a----- 500.00m                                             
root@sansvr01:~#

Logical volume “shared01” memiliki alamat device seperti berikut ini :

root@sansvr01:~# ls /dev/mapper/vg_shareddisk-shared01 
/dev/mapper/vg_shareddisk-shared01
root@sansvr01:~#

Saya perlu mendaftarkan logical volume tersebut ke dalam berkas /etc/tgt/targets.conf. Berkas targets.conf memuat daftar semua harddisk (logical volume) yang dimiliki oleh iSCSI Server. Berikut ini adalah contoh konfigurasi yang perlu ditambahkan ke dalam berkas targets.conf :

<target iqn.2014-04.localdomain:sansvr01.shared01>
    backing-store /dev/mapper/vg_shareddisk-shared01
</target>

Setiap harddisk atau logical volume yang diatur oleh iSCSI Server dikenal sebagai “target”. Tiap target harus memiliki nama yang unik dalam satu jaringan. Ada konvensi penulisan nama target, aturan ini dikenal dengan “iSCSI Qualified Name” (IQN). IQN ini kurang lebih seperti ini aturannya :

iqn.[informasi tanggal].[domain]:[hostname server].[shared disk name]

Setelah selesai mendaftarkan logical volume, saya bisa langsung mengaktifkan service tgtd seperti pada contoh berikut ini :

root@sansvr01:~# service --status-all | grep tgt
tgtd is stopped
root@sansvr01:~# service tgtd start
Starting SCSI target daemon:                               [  OK  ]
root@sansvr01:~# service tgtd status
tgtd (pid 1458 1455) is running...
root@sansvr01:~#

Penting juga untuk mengatur tgtd supaya otomatis aktif saat proses booting :

root@sansvr01:~# chkconfig tgtd on
root@sansvr01:~# chkconfig tgtd --list
tgtd            0:off   1:off   2:on    3:on    4:on    5:on    6:off
root@sansvr01:~#

Kita bisa lihat status shared disk dengan perintah tgt-admin seperti contoh berikut ini :

root@sansvr01:~# tgt-admin -s -v
tgtadm -C 0 --op show --mode target
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 524 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/mapper/vg_shareddisk-shared01
            Backing store flags: 
    Account information:
    ACL information:
        ALL
root@sansvr01:~#

Bila sudah muncul tampilan seperti contoh di atas, itu artinya logical volume sudah siap diakses oleh iSCSI Client.

Kita bisa menambahkan ACL (access control list) pada berkas targets.conf tadi. ACL ini fungsinya untuk membatasi hanya iSCSI Client tertentu saja yang berhak mengakses shared disk tersebut. Pada contoh di bawah ini saya mengatur tgtd supaya hanya mengijinkan akses dari client yang memiliki IP 172.16.10.31 :

root@sansvr01:~# cat /etc/tgt/targets.conf
default-driver iscsi

<target iqn.2014-04.localdomain:sansvr01.shared01>
    backing-store /dev/mapper/vg_shareddisk-shared01
    initiator-address 172.16.10.31
</target>
root@sansvr01:~#

Tiap kali kita mengubah konfigurasi berkas targes.conf tadi, kita perlu me-restart tgtd :

root@sansvr01:~# service tgtd restart
Stopping SCSI target daemon:                               [  OK  ]
Starting SCSI target daemon:                               [  OK  ]
root@sansvr01:~#

Status ACL bisa dilihat dari hasil perintah tgt-admin seperti pada contoh di bawah ini :

root@sansvr01:~# tgt-admin -s
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 524 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/mapper/vg_shareddisk-shared01
            Backing store flags: 
    Account information:
    ACL information:
        172.16.10.31
root@sansvr01:~#

Selain perintah tgt-admin tadi, kita juga bisa gunakan perintah tgtadm seperti contoh berikut ini :

root@sansvr01:~# tgtadm --lld iscsi --mode target --op show
Target 1: iqn.2014-04.localdomain:sansvr01.shared01
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB, Block size: 1
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: null
            Backing store path: None
            Backing store flags: 
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 524 MB, Block size: 512
            Online: Yes
            Removable media: No
            Prevent removal: No
            Readonly: No
            Backing store type: rdwr
            Backing store path: /dev/mapper/vg_shareddisk-shared01
            Backing store flags: 
    Account information:
    ACL information:
        172.16.10.31
root@sansvr01:~#

Menyiapkan iSCSI Initiator

Mesin dev01 menggunakan CentOS 6.5 & mempunyai konfigurasi IP seperti berikut ini :

root@dev01:~# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:ec:9b:73 brd ff:ff:ff:ff:ff:ff
    inet 172.16.10.31/24 brd 172.16.10.255 scope global eth1
    inet6 fe80::5054:ff:feec:9b73/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:a6:28:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.31/24 brd 192.168.10.255 scope global eth0
    inet6 fe80::5054:ff:fea6:2813/64 scope link 
       valid_lft forever preferred_lft forever
root@dev01:~#

Mesin dev01 hanya memiliki satu buah harddisk (/dev/sda) :

root@dev01:~# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002d485

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/mapper/vg_dev01-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_dev01-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

root@dev01:~# pvs
  PV         VG       Fmt  Attr PSize PFree
  /dev/sda2  vg_dev01 lvm2 a--  7.51g    0 
root@dev01:~# vgs
  VG       #PV #LV #SN Attr   VSize VFree
  vg_dev01   1   2   0 wz--n- 7.51g    0 
root@dev01:~# lvs
  LV      VG       Attr       LSize   Pool Origin Data%  Move Log Cpy%Sync Convert
  lv_root vg_dev01 -wi-ao----   6.71g                                             
  lv_swap vg_dev01 -wi-ao---- 816.00m                                             
root@dev01:~#

Di mesin yang akan menjadi iSCSI Client ini, kita perlu menginstal paket iscsi-initiator-utils. Paket ini bisa juga diperoleh dari YUM grup “iSCSI Storage Client”

root@dev01:~# yum groupinstall "iSCSI Storage Client"
root@dev01:~# rpm -aq | grep iscsi-initiator-utils
iscsi-initiator-utils-6.2.0.873-10.el6.x86_64
root@dev01:~#

Setelah paket iscsi-initiator-utils terpasang, kita perlu mengaktifkan service iscsid dan iscsi :

root@dev01:~# service iscsid start
root@dev01:~# service iscsi start

Penting untuk memastikan kedua servis tersebut aktif otomatis saat proses booting :

root@dev01:~# chkconfig iscsid on
root@dev01:~# chkconfig iscsi on

Sampai tahap ini mesin dev01 sudah siap untuk mengakses iSCSI Target dari mesin sansvr01. Kita bisa gunakan perintah iscsiadm untuk melakukan scanning semua iSCSI Target yang tersedia (atau lebih tepatnya iSCSI Target yang sudah disediakan oleh sansvr01). Perintahnya seperti contoh di bawah ini :

root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.10.5:3260 --discover
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: cannot make connection to 172.16.10.5: No route to host
iscsiadm: connection login retries (reopen_max) 5 exceeded
iscsiadm: Could not perform SendTargets discovery: encountered connection failure
root@dev01:~#

Bila muncul error “No route to host” seperti ini, kita perlu memeriksa konektivitas antara iSCSI Client (dev01) dan iSCSI Server-nya (sansvr01). Pertama kita bisa gunakan perintah ping. Kedua mesin ini akan menggunakan network 172.16.10.0/24 untuk komunikasi iSCSI. Jadi pada contoh ini, yang diakses oleh mesin dev01 adalah IP 172.16.10.5.

root@dev01:~# ping 172.16.10.5
PING 172.16.10.5 (172.16.10.5) 56(84) bytes of data.
64 bytes from 172.16.10.5: icmp_seq=1 ttl=64 time=1.28 ms
64 bytes from 172.16.10.5: icmp_seq=2 ttl=64 time=0.951 ms
64 bytes from 172.16.10.5: icmp_seq=3 ttl=64 time=0.974 ms
64 bytes from 172.16.10.5: icmp_seq=4 ttl=64 time=0.946 ms
64 bytes from 172.16.10.5: icmp_seq=5 ttl=64 time=0.939 ms
^C
--- 172.16.10.5 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4551ms
rtt min/avg/max/mdev = 0.939/1.019/1.287/0.137 ms
root@dev01:~#

Bila iSCSI Client dapat melakukan ping ke mesin iSCSI Server, berikutnya kita perlu memastikan port 3260 sudah tersedia (LISTEN) di iSCSI Server. Caranya kita bisa coba telnet port tersebut.

root@dev01:~# telnet 172.16.10.5 3260
-bash: telnet: command not found
root@dev01:~#

Bila perintah telnet tidak tersedia, kita perlu instal paket telnet terlebih dulu :

root@dev01:~# yum install telnet

Lalu kita coba lagi telnet port 3260 :

root@dev01:~# telnet 172.16.10.5 3260
Trying 172.16.10.5...
telnet: connect to address 172.16.10.5: No route to host
root@dev01:~#

Bila iSCSI Client masih belum bisa melakukan telnet ke port 3260, kita perlu cek dulu apakah servis tgtd benar-benar aktif di iSCSI Server :

root@sansvr01:~# service tgtd status
tgtd (pid 1365 1362) is running...
root@sansvr01:~# netstat -plunt | grep 3260
tcp        0      0 0.0.0.0:3260                0.0.0.0:*                   LISTEN      1362/tgtd           
tcp        0      0 :::3260                     :::*                        LISTEN      1362/tgtd           
root@sansvr01:~#

Bila ternyata servis tgtd sudah aktif & port 3260 sudah tersedia, maka dapat dipastikan port 3260 ini terblok oleh firewall. Kita perlu membuka akses port 3260 ini supaya semua iSCSI Client bisa mengakses shared disk melalui protokol iSCSI. Berikut adalah contoh perintah iptables untuk membuka akses port 3260 dari semua mesin di jaringan 172.16.10.0/24.

root@sansvr01:~# iptables -I INPUT -p tcp -s 172.16.10.0/24 --dport 3260 -j ACCEPT
root@sansvr01:~# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]
root@sansvr01:~#

Setelah kita selesai mengatur firewall, kita bisa coba lagi untuk melakukan telnet dari iSCSI Client :

root@dev01:~# telnet 172.16.10.5 3260
Trying 172.16.10.5...
Connected to 172.16.10.5.
Escape character is '^]'.

^]
telnet> q
Connection closed.
root@dev01:~#

Bila perintah telnet sukses mengakses port 3260, kita bisa coba perintah iscsiadm tadi sekali lagi :

root@dev01:~# iscsiadm --mode discovery --type sendtargets --portal 172.16.10.5:3260 --discover
Starting iscsid:                                           [  OK  ]
172.16.10.5:3260,1 iqn.2014-04.localdomain:sansvr01.shared01
root@dev01:~#

Sekarang mesin dev01 sudah mengenali ada 1 shared disk yang disediakan oleh mesin sansvr01 (iqn.2014-04.localdomain:sansvr01.shared01). Setelah itu kita gunakan perintah iscsiadm lagi untuk mengakses iqn.2014-04.localdomain:sansvr01.shared01, kali ini dengan opsi --login.

root@dev01:~# iscsiadm --mode node --targetname="iqn.2014-04.localdomain:sansvr01.shared01" --portal 172.16.10.5:3260 --login
root@dev01:~#

Bila perintah tadi sukses dijalankan, sekarang dev01 sudah memiliki 1 buah hardisk baru. Mesin dev01 sukses mengakses iSCSI Target “shared01”, terdeteksi oleh dev01 sebagai /dev/sdb :

root@dev01:~# fdisk -l

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0002d485

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          64      512000   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              64        1045     7875584   8e  Linux LVM

Disk /dev/mapper/vg_dev01-lv_root: 7205 MB, 7205814272 bytes
255 heads, 63 sectors/track, 876 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/mapper/vg_dev01-lv_swap: 855 MB, 855638016 bytes
255 heads, 63 sectors/track, 104 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb: 524 MB, 524288000 bytes
17 heads, 59 sectors/track, 1020 cylinders
Units = cylinders of 1003 * 512 = 513536 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

root@dev01:~#

Setelah mesin dev01 sukses mengakses shared disk “shared01” tersebut, selanjutnya kita bisa gunakan “shared01” ini seperti layaknya internal harddisk. Langkah-langkah untuk menyiapkan iSCSI disk misalnya seperti ini :

  1. Membuat partisi baru :
    root@dev01:~# fdisk /dev/sdb
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0x636c0fb3.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
    
    WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
             switch off the mode (command 'c') and change display units to
             sectors (command 'u').
    
    Command (m for help): n
    Command action
       e   extended
       p   primary partition (1-4)
    p
    Partition number (1-4): 1
    First cylinder (1-1020, default 1): 
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-1020, default 1020): 
    Using default value 1020
    
    Command (m for help): w
    The partition table has been altered!
    
    Calling ioctl() to re-read partition table.
    Syncing disks.
    root@dev01:~# fdisk -l /dev/sdb
    
    Disk /dev/sdb: 524 MB, 524288000 bytes
    17 heads, 59 sectors/track, 1020 cylinders
    Units = cylinders of 1003 * 512 = 513536 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disk identifier: 0x636c0fb3
    
       Device Boot      Start         End      Blocks   Id  System
    /dev/sdb1               1        1020      511500+  83  Linux
    root@dev01:~#
  2. Membuat filesystem baru pada partisi /dev/sdb1, pada contoh ini saya pilih filesystem ext4 :
    root@dev01:~# mkfs.ext4 /dev/sdb1
    mke2fs 1.41.12 (17-May-2010)
    Filesystem label=
    OS type: Linux
    Block size=1024 (log=0)
    Fragment size=1024 (log=0)
    Stride=0 blocks, Stripe width=0 blocks
    128016 inodes, 511500 blocks
    25575 blocks (5.00%) reserved for the super user
    First data block=1
    Maximum filesystem blocks=67633152
    63 block groups
    8192 blocks per group, 8192 fragments per group
    2032 inodes per group
    Superblock backups stored on blocks: 
        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409
    
    Writing inode tables: done                            
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done
    
    This filesystem will be automatically checked every 27 mounts or
    180 days, whichever comes first.  Use tune2fs -c or -i to override.
    root@dev01:~#
  3. Membuat mountpoint untuk /dev/sdb1 tadi :
    root@dev01:~# mkdir /iscsidisk
  4. Mounting partisi /dev/sdb1
    root@dev01:~# mount /dev/sdb1 /iscsidisk
    root@dev01:~# df -h
    Filesystem                    Size  Used Avail Use% Mounted on
    /dev/mapper/vg_dev01-lv_root  6.7G  748M  5.6G  12% /
    tmpfs                         499M     0  499M   0% /dev/shm
    /dev/sda1                     485M   32M  428M   7% /boot
    /dev/sdb1                     484M   11M  449M   3% /iscsidisk
    root@dev01:~# touch test
    root@dev01:~# ls -tlr /iscsidisk/
    total 13
    drwx------. 2 root root 12288 Apr  9 00:41 lost+found
    -rw-r--r--. 1 root root     0 Apr  9 00:43 test
    root@dev01:~#

Kira-kira seperti itu cara sederhana untuk menyiapkan shared disk via protokol iSCSI sekaligus mengatur iSCSI Initiator-nya.

Set IP ILOM

Tiap server Sparc Enterprise T-series dilengkapi dengan ILOM (Integrated Lights Out Manager). ILOM merupakan embedded Linux yang berfungsi untuk manajemen server, mulai dari melihat error, menyalakan/mematikan server, mengatur konfigurasi hardware, dan yang paling sering dipakai adalah mengakses console server ybs. Kenapa penting, karena server semacam ini tidak dilengkapi dengan port VGA untuk koneksi ke monitor. Jadi instalasi OS pun dilakukan via console (text-based).

Di bagian belakang server T series, ada 2 port yang berhubungan dengan ILOM. Pertama memiliki label “SER MGT” (singkatan dari Serial Management) & yang kedua memiliki label NET MGT. Mengakses ILOM melalui port serial tentu tidak praktis karena kita perlu menghubungkan langsung kabel serial dari laptop ke port “SER MGT” tadi. Agak merepotkan apalagi bila servernya berada di lokasi yang cukup jauh. NET MGT mengatasi keterbatasan ini dengan menyediakan IP sebagai antar mukanya. Kita cukup melakukan koneksi SSH ke IP ILOMnya saja.

Default username ILOM ini adalah root & default password ILOM tersebut adalah “changeme”. Setelah sukses login ke ILOM, kita akan mendapati tanda prompt ->. Untuk melihat alamat IP NET MGT yang ada pada ILOM ini kita bisa gunakan perintah seperti berikut ini :

-> cd /SP/network
/SP/network
-> ls

 /SP/network
    Targets:

    Properties:
        commitpending = (Cannot show property)
        dhcp_server_ip = none
        ipaddress = 192.168.1.10
        ipdiscovery = static
        ipgateway = 0.0.0.0
        ipnetmask = 255.255.255.0
        macaddress = 00:14:4F:D4:09:E9
        pendingipaddress = 192.168.1.10
        pendingipdiscovery = static
        pendingipgateway = 0.0.0.0
        pendingipnetmask = 255.255.255.0
        state = enabled

 Commands:
     cd
     set
     show
->

Untuk mengubah alamat IP ILOM caranya seperti pada contoh di bawah ini :

-> set pendingipaddress=172.16.1.15
Set 'pendingipgateway' to '172.16.1.15'

-> set pendingipnetmask=255.255.255.0
Set 'pendingipgateway' to '255.255.255.0'

-> set pendingipgateway=172.16.1.1
Set 'pendingipgateway' to '172.16.1.1'

-> set commitpending=true
Set 'commitpending' to 'true'

-> ls

 /SP/network
    Targets:

    Properties:
        commitpending = (Cannot show property)
        dhcp_server_ip = none
        ipaddress = 172.16.1.15
        ipdiscovery = static
        ipgateway = 0.0.0.0
        ipnetmask = 255.255.255.0
        macaddress = 00:14:4F:D4:09:E9
        pendingipaddress = 172.16.1.15
        pendingipdiscovery = static
        pendingipgateway = 0.0.0.0
        pendingipnetmask = 255.255.255.0
        state = enabled

 Commands:
     cd
     set
     show

->

Bila IPnya sudah sukses diganti, kita bisa langsung coba SSH ke IP baru tersebut :

$ ssh root@172.16.1.15
Password:
Waiting for daemons to initialize...
Daemons ready

Oracle(R) Integrated Lights Out Manager

Version 3.0.12.4.v r71977

Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.

Warning: password is set to factory default.

->

Mengganti Nama LVM Grup

Saat menginstal CentOS/RedHat Linux, kita bisa memilih untuk menggunakan LVM (Logical Volume Manger) untuk manajemen harddisk & partisinya. Bila kita memilih untuk menggunakan LVM, instaler biasanya akan menawarkan layout seperti ini :

Contoh Default Disk Layout CentOS

Boot disk akan dibagi menjadi 2 partisi, partisi pertama akan dialokasikan untuk direktori /boot & partisi kedua akan dialokasikan untuk menjadi anggota LVM. LVM grup akan diberi nama mengikuti hostname mesin tersebut. Pada contoh di atas misalnya, mesin tersebut memiliki hostname “devserver01” sehingga LVM akan menggunakan nama grup vg_devserver01. Baru kemudian di dalam group tersebut dibuat logical volume untuk partisi root & swap. Tentu kita bisa melakukan kustomisasi terhadap usulan disk layout tersebut.

Misalnya saya punya sebuah virtual server yang sudah berisi CentOS Linux. Mesin ini adalah hasil cloning dari virtual server lainnya. Karena merupakan hasil cloning, nama LVM grupnya masih mengikuti nama hostname server aslinya. Contohnya seperti ini :

[root@dev01 ~]# cat /etc/redhat-release 
CentOS release 6.5 (Final)
[root@dev01 ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/vg_websvr01-lv_root  6.7G  745M  5.6G  12% /
tmpfs                            499M     0  499M   0% /dev/shm
/dev/vda1                        485M   32M  428M   7% /boot
[root@dev01 ~]# 

Terlihat hostname server ini adalah dev01, sementara LVM grup-nya masih menggunakan nama lama vg_websvr01. Ini bisa dilihat juga dengan perintah vgs atau vgdisplay seperti berikut ini :

[root@dev01 ~]# vgs
  VG          #PV #LV #SN Attr   VSize VFree
  vg_websvr01   1   2   0 wz--n- 7.51g    0 
[root@dev01 ~]# 
[root@dev01 ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_websvr01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  3
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.51 GiB
  PE Size               4.00 MiB
  Total PE              1922
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       0 / 0   
  VG UUID               Mz4cE4-jzec-gfHi-H76W-cmFy-FA2U-SWXKrA

[root@dev01 ~]#

LVM menyediakan perintah vgrename untuk mengatasi hal ini. Saya bisa menggunakan vgrename untuk mengubah nama LVM grup tersebut, seperti yang terlihat pada contoh di bawah ini :

[root@dev01 ~]# vgrename vg_websvr01 vg_dev01
  Volume group "vg_websvr01" successfully renamed to "vg_dev01"
[root@dev01 ~]# 

Pada contoh ini saya mengubah nama grupnya dari vg_websvr01 menjadi vg_dev01. Sukses tidaknya perubahan nama grup ini bisa dicek lagi dengan perintah vgs atau vgdisplay seperti pada contoh di bawah ini :

[root@dev01 ~]# vgs
  VG       #PV #LV #SN Attr   VSize VFree
  vg_dev01   1   2   0 wz--n- 7.51g    0 
[root@dev01 ~]# vgdisplay
  --- Volume group ---
  VG Name               vg_dev01
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               7.51 GiB
  PE Size               4.00 MiB
  Total PE              1922
  Alloc PE / Size       1922 / 7.51 GiB
  Free  PE / Size       0 / 0   
  VG UUID               Mz4cE4-jzec-gfHi-H76W-cmFy-FA2U-SWXKrA

[root@dev01 ~]# 

Tidak cukup sampai di situ, ada 2 hal lain yang harus diperhatikan setelah mengubah nama LVM grup ini.

  1. Berkas /etc/fstab. Pengaturan mountpoint partisi disimpan dalam berkas ini. Isi berkas /etc/fstab mulanya seperti ini :

    [root@dev01 ~]# cat /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Sat Apr  5 07:37:58 2014
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg_websvr01-lv_root /                       ext4    defaults        1 1
    UUID=c0144e8c-75aa-4c57-a51c-1c4b8df0759f /boot                   ext4    defaults        1 2
    /dev/mapper/vg_websvr01-lv_swap swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    [root@dev01 ~]# 
    

    Bila berkas ini tidak diperbaharui, maka server ini akan gagal boot karena dia masih mencari partisi /dev/mapper/vg_websvr01-lv_root. Oleh karenanya kita perlu mengganti setiap nama LVM grup yang ada di dalam berkas /etc/fstab tersebut. Pada contoh saya tadi, berikut adalah isi berkas /etc/fstab setelah diperbaharui :

    [root@dev01 ~]# cat /etc/fstab 
    
    #
    # /etc/fstab
    # Created by anaconda on Sat Apr  5 07:37:58 2014
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/mapper/vg_dev01-lv_root /                       ext4    defaults        1 1
    UUID=c0144e8c-75aa-4c57-a51c-1c4b8df0759f /boot                   ext4    defaults        1 2
    /dev/mapper/vg_dev01-lv_swap swap                    swap    defaults        0 0
    tmpfs                   /dev/shm                tmpfs   defaults        0 0
    devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
    sysfs                   /sys                    sysfs   defaults        0 0
    proc                    /proc                   proc    defaults        0 0
    [root@dev01 ~]# 
    
  2. Berkas /boot/grub/grub.conf. Karena LVM grup yang tadi diubah namanya memiliki partisi root, kita perlu mengatur ulang isi berkas grub.conf. Tampilan awal dari berkas grub.conf adalah seperti berikut ini :

    [root@dev01 ~]# cat /boot/grub/grub.conf 
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/vg_websvr01-lv_root
    #          initrd /initrd-[generic-]version.img
    #boot=/dev/vda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_websvr01-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_websvr01/lv_root rd_NO_MD rd_LVM_LV=vg_websvr01/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-431.el6.x86_64.img
    [root@dev01 ~]# 
    

    Tanpa diubah sistem akan gagal menemukan mana partisi rootnya dan akibatnya gagal menemukan di mana lokasi kernel Linux berada. Setelah diubah tampilannya menjadi seperti ini :

    [root@dev01 ~]# cat /boot/grub/grub.conf 
    # grub.conf generated by anaconda
    #
    # Note that you do not have to rerun grub after making changes to this file
    # NOTICE:  You have a /boot partition.  This means that
    #          all kernel and initrd paths are relative to /boot/, eg.
    #          root (hd0,0)
    #          kernel /vmlinuz-version ro root=/dev/mapper/vg_dev01-lv_root
    #          initrd /initrd-[generic-]version.img
    #boot=/dev/vda
    default=0
    timeout=5
    splashimage=(hd0,0)/grub/splash.xpm.gz
    hiddenmenu
    title CentOS (2.6.32-431.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-431.el6.x86_64 ro root=/dev/mapper/vg_dev01-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_dev01/lv_root rd_NO_MD rd_LVM_LV=vg_dev01/lv_swap SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-431.el6.x86_64.img
    [root@dev01 ~]#
    

Untuk memastikan kedua berkas tadi sudah terbarui dengan benar, saya tinggal reboot servernya saja.

Yum Remove

CentOS & RedHat Linux menggunakan yum sebagai perintah untuk mengatur instalasi paket (package management tool). Saya baru tahu dari Wikipedia kalau yum itu sendiri adalah singkatan dari “Yellowdog Updater, Modified”. Sintaks pemakaiannya mirip dengan apt-get-nya Debian/Ubuntu Linux. Misalnya untuk menginstal paket dari repositori, saya bisa menggunakan perintah yum install, Misalnya saya ingin memasang paket Apache web server (httpd) :

[root@web01 ~]# yum install httpd
Loaded plugins: fastestmirror
Determining fastest mirrors
CDROM                                                                                                                                        | 4.0 kB     00:00 ... 
CDROM/primary_db                                                                                                                             | 4.4 MB     00:00 ... 
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6.centos will be installed
--> Processing Dependency: httpd-tools = 2.2.15-29.el6.centos for package: httpd-2.2.15-29.el6.centos.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-29.el6.centos.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.2.15-29.el6.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.2.15-29.el6.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.2.15-29.el6.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-5.el6_2 will be installed
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be installed
---> Package httpd-tools.x86_64 0:2.2.15-29.el6.centos will be installed
---> Package mailcap.noarch 0:2.1.31-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================================================================================
 Package                                  Arch                              Version                                          Repository                        Size
====================================================================================================================================================================
Installing:
 httpd                                    x86_64                            2.2.15-29.el6.centos                             CDROM                            821 k
Installing for dependencies:
 apr                                      x86_64                            1.3.9-5.el6_2                                    CDROM                            123 k
 apr-util                                 x86_64                            1.3.9-3.el6_0.1                                  CDROM                             87 k
 apr-util-ldap                            x86_64                            1.3.9-3.el6_0.1                                  CDROM                             15 k
 httpd-tools                              x86_64                            2.2.15-29.el6.centos                             CDROM                             73 k
 mailcap                                  noarch                            2.1.31-2.el6                                     CDROM                             27 k

Transaction Summary
====================================================================================================================================================================
Install       6 Package(s)

Total download size: 1.1 M
Installed size: 3.6 M
Is this ok [y/N]: y
Downloading Packages:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                27 MB/s | 1.1 MB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : apr-1.3.9-5.el6_2.x86_64                                                                                                                         1/6 
  Installing : apr-util-1.3.9-3.el6_0.1.x86_64                                                                                                                  2/6 
  Installing : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                                                                             3/6 
  Installing : httpd-tools-2.2.15-29.el6.centos.x86_64                                                                                                          4/6 
  Installing : mailcap-2.1.31-2.el6.noarch                                                                                                                      5/6 
  Installing : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                6/6 
  Verifying  : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                1/6 
  Verifying  : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                                                                             2/6 
  Verifying  : httpd-tools-2.2.15-29.el6.centos.x86_64                                                                                                          3/6 
  Verifying  : apr-1.3.9-5.el6_2.x86_64                                                                                                                         4/6 
  Verifying  : mailcap-2.1.31-2.el6.noarch                                                                                                                      5/6 
  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                                                                                                                  6/6 

Installed:
  httpd.x86_64 0:2.2.15-29.el6.centos                                                                                                                               

Dependency Installed:
  apr.x86_64 0:1.3.9-5.el6_2        apr-util.x86_64 0:1.3.9-3.el6_0.1     apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1     httpd-tools.x86_64 0:2.2.15-29.el6.centos    
  mailcap.noarch 0:2.1.31-2.el6    

Complete!
[root@web01 ~]#

Dari contoh di atas, terlihat bahwa yum tidak hanya memasang paket httpd, yum juga memasang beberapa paket lain yang diperlukan oleh httpd (dependencies packages). Dalam contoh tadi ada 5 paket tambahan yang ikut terpasang secara otomatis.

Nah lucunya saat saya ingin membuang paket httpd, paket-paket lain tadi tidak ikut terbuang. Misalnya dengan yum remove berikut ini :

[root@web01 ~]# yum install httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
CDROM                                                                                                                                                                                                                  | 4.0 kB     00:00 ... 
Setting up Install Process
Package httpd-2.2.15-29.el6.centos.x86_64 already installed and latest version
Nothing to do
[root@web01 ~]# vi /etc/yum.conf 
[root@web01 ~]# yum remove httpd
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6.centos will be erased
--> Finished Dependency Resolution
CDROM                                                                                                                                                                                                                  | 4.0 kB     00:00 ... 

Dependencies Resolved

==============================================================================================================================================================================================================================================
 Package                                              Arch                                                  Version                                                               Repository                                             Size
==============================================================================================================================================================================================================================================
Removing:
 httpd                                                x86_64                                                2.2.15-29.el6.centos                                                  @CDROM                                                2.9 M

Transaction Summary
==============================================================================================================================================================================================================================================
Remove        1 Package(s)

Installed size: 2.9 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                          1/1 
  Verifying  : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                          1/1 

Removed:
  httpd.x86_64 0:2.2.15-29.el6.centos                                                                                                                                                                                                         

Complete!
[root@web01 ~]#

yum hanya membuang paket httpd saja. Ada 5 paket lain yang tadi ikut terinstal tidak terbuang juga.

[root@web01 ~]# rpm -qa | egrep "apr|httpd|mailcap"
apr-util-1.3.9-3.el6_0.1.x86_64
httpd-tools-2.2.15-29.el6.centos.x86_64
apr-1.3.9-5.el6_2.x86_64
apr-util-ldap-1.3.9-3.el6_0.1.x86_64
mailcap-2.1.31-2.el6.noarch
[root@web01 ~]#

Di Debian, ada opsi untuk menggunakan apt-get autoremove untuk menghapus sisa paket dependensi yang sudah tidak dipakai. Saya juga baru tahu ternyata ada opsi untuk mengatur yum supaya menghapus semua paket dependensinya. Opsi ini perlu diaktifkan dulu di dalam berkas /etc/yum.conf seperti ini :

[root@web01 ~]# echo "clean_requirements_on_remove=1" >> /etc/yum.conf

Opsi clean_requirements_on_remove akan membuat yum membersihkan setiap paket dependensinya. Setelah penambahan opsi tersebut, contohnya seperti berikut ini :

[root@web01 ~]# yum remove httpd
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6.centos will be erased
--> Finished Dependency Resolution
--> Finding unneeded leftover dependencies
---> Marking httpd-tools to be removed - no longer needed by httpd
---> Marking apr-util-ldap to be removed - no longer needed by httpd
---> Marking mailcap to be removed - no longer needed by httpd
---> Marking apr-util to be removed - no longer needed by httpd-tools
---> Marking apr to be removed - no longer needed by httpd-tools
Found and removing 5 unneeded dependencies
--> Running transaction check
---> Package apr.x86_64 0:1.3.9-5.el6_2 will be erased
---> Package apr-util.x86_64 0:1.3.9-3.el6_0.1 will be erased
---> Package apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1 will be erased
---> Package httpd-tools.x86_64 0:2.2.15-29.el6.centos will be erased
---> Package mailcap.noarch 0:2.1.31-2.el6 will be erased
--> Finished Dependency Resolution
CDROM                                                                                                                                                                                                                  | 4.0 kB     00:00 ... 

Dependencies Resolved

==============================================================================================================================================================================================================================================
 Package                                                    Arch                                                Version                                                             Repository                                           Size
==============================================================================================================================================================================================================================================
Removing:
 httpd                                                      x86_64                                              2.2.15-29.el6.centos                                                @CDROM                                              2.9 M
Removing for dependencies:
 apr                                                        x86_64                                              1.3.9-5.el6_2                                                       @CDROM                                              296 k
 apr-util                                                   x86_64                                              1.3.9-3.el6_0.1                                                     @CDROM                                              198 k
 apr-util-ldap                                              x86_64                                              1.3.9-3.el6_0.1                                                     @CDROM                                              9.3 k
 httpd-tools                                                x86_64                                              2.2.15-29.el6.centos                                                @CDROM                                              137 k
 mailcap                                                    noarch                                              2.1.31-2.el6                                                        @CDROM                                               52 k

Transaction Summary
==============================================================================================================================================================================================================================================
Remove        6 Package(s)

Installed size: 3.6 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing    : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                          1/6 
  Erasing    : httpd-tools-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                    2/6 
  Erasing    : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                                                                                                                                                       3/6 
  Erasing    : mailcap-2.1.31-2.el6.noarch                                                                                                                                                                                                4/6 
  Erasing    : apr-util-1.3.9-3.el6_0.1.x86_64                                                                                                                                                                                            5/6 
  Erasing    : apr-1.3.9-5.el6_2.x86_64                                                                                                                                                                                                   6/6 
  Verifying  : httpd-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                          1/6 
  Verifying  : apr-util-ldap-1.3.9-3.el6_0.1.x86_64                                                                                                                                                                                       2/6 
  Verifying  : httpd-tools-2.2.15-29.el6.centos.x86_64                                                                                                                                                                                    3/6 
  Verifying  : apr-1.3.9-5.el6_2.x86_64                                                                                                                                                                                                   4/6 
  Verifying  : mailcap-2.1.31-2.el6.noarch                                                                                                                                                                                                5/6 
  Verifying  : apr-util-1.3.9-3.el6_0.1.x86_64                                                                                                                                                                                            6/6 

Removed:
  httpd.x86_64 0:2.2.15-29.el6.centos                                                                                                                                                                                                         

Dependency Removed:
  apr.x86_64 0:1.3.9-5.el6_2              apr-util.x86_64 0:1.3.9-3.el6_0.1              apr-util-ldap.x86_64 0:1.3.9-3.el6_0.1              httpd-tools.x86_64 0:2.2.15-29.el6.centos              mailcap.noarch 0:2.1.31-2.el6             

Complete!
[root@web01 ~]#

Dengan begitu sekarang tidak ada lagi paket dependensi yang tertinggal :

[root@web01 ~]# rpm -qa | egrep "apr|httpd|mailcap"
[root@web01 ~]#

Repositori Lokal DVD RHEL

Tiap kali menggunakan Ubuntu atau Debian, saya selalu menggunakan repositori online saat perlu memasang paket/aplikasi tertentu (software). Perintah apt-get atau aptitude akan otomatis mengunduh instaler paket dari repositori di Internet. Memang perlu koneksi internet tiap kali akan memasang paket. Dulu saat saya masih kesulitan mendapat akses internet, saya mengoleksi banyak CD/DVD repositori Ubuntu. Kalau tidak salah ingat dulu Ubuntu 7.04 punya 5 atau 6 CD repositori. Debian lebih fantastis lagi, jumlah CD repositorinya sampai puluhan. DVD Debian terbaru versi 7.4.0 jumlahnya sampai 9 buah. Sangat tidak praktis mengoleksi semua DVD repositori tadi. Menggunakan media CD/DVD tentu rentan hilang, rusak tidak bisa terbaca, dan repot karena harus menggonta-ganti CD/DVD saat memasang paket tertentu. Memang masih bisa diakali dengan menyimpan ISO image dari CD/DVD tadi, tapi ini juga tidak praktis karena membutuhkan ruang yang cukup besar dalam harddisk.

Dulu saya pernah tulis cara menjadikan DVD Ubuntu Linux sebagai sumber repositori lokal. Tadi saya kembali ingat hal ini saat menginstal Red Hat Linux. Tidak seperti Debian atau Ubuntu, Red Hat Enterprise Linux (RHEL) menyediakan online repositori hanya bagi pengguna yang membeli lisensinya. Namun demikian saya masih tetap bisa menggunakan DVD instalasi sebagai repositori lokal. Saya tidak tahu persisnya, aplikasi apa yang tidak tersedia dalam DVD & hanya bisa didapat dari online repositori resminya RHEL.

Tulisan ini akan jadi catatan saya untuk menjadikan DVD instalasi RHEL 6.4 sebagai repositori lokal.

Tadi saya menginstal virtual mesin dengan hostname redhat6, mesin ini menggunakan RHEL 6.4

[root@redhat6 ~]# uname -a
Linux redhat6 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@redhat6 ~]# 
[root@redhat6 ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 6.4 (Santiago)
[root@redhat6 ~]#

Tanpa repositori lokal saya tidak bisa memasang paket nmap. Saat mencoba mencari paket nmap saya mendapati error seperti ini :

[root@redhat6 yum.repos.d]# yum search nmap
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Warning: No matches found for: nmap
No Matches found
[root@redhat6 yum.repos.d]#

RHEL menempatkan konfigurasi repositori dalam direktori /etc/yum.repos.d :

[root@redhat6 ~]# cd /etc/yum.repos.d/
[root@redhat6 yum.repos.d]# ls
rhel-source.repo
[root@redhat6 yum.repos.d]#

Ada 1 berkas konfigurasi bawaan proses instalasi OS seperti berikut ini :

[root@redhat6 yum.repos.d]# cat rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[rhel-source-beta]
name=Red Hat Enterprise Linux $releasever Beta - $basearch - Source
baseurl=ftp://ftp.redhat.com/pub/redhat/linux/beta/$releasever/en/os/SRPMS/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@redhat6 yum.repos.d]#

Karena saya ingin menjadikan DVD instalasi RHEL sebagai repositori lokal, tentu langkah pertama adalah mengakses DVDnya terlebih dulu. Saya mount DVD RHEL 6.4 ke direktori /mnt:

[root@redhat6 yum.repos.d]# mount -o loop /dev/cdrom /mnt
[root@redhat6 yum.repos.d]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_redhat6-lv_root
                      5.5G  931M  4.3G  18% /
tmpfs                 499M     0  499M   0% /dev/shm
/dev/sda1             485M   33M  427M   8% /boot
/dev/sr0              3.5G  3.5G     0 100% /mnt
[root@redhat6 yum.repos.d]#

Langkah selanjutnya saya buat berkas konfigurasi baru, saya pilih nama iso-rhel6.repo. Tiap berkas konfigurasi repositori boleh menggunakan nama apa saja asalkan diakhiri dengan *.repo.

[root@redhat6 yum.repos.d]# vi iso-rhel6.repo 
[ISO_RHEL64]
name=ISO RHEL64_x86_64
baseurl=file:///mnt
enabled=1 
gpgcheck=0
[root@redhat6 yum.repos.d]#

Isi berkasnya paling tidak harus terdiri dari id, name & baseurl. ID dituliskan dalam tanda kurung kotak [ISO_RHEL64]. Sejauh yang saya tahu tidak ada aturan khusus untuk memilih ID repo tadi. Pada contoh di atas, baseurl saya arahkan untuk mengakses direktori /mnt (mountpoint DVD). Selanjutnya saya tinggal jalankan 2 perintah seperti berikut ini :

[root@redhat6 yum.repos.d]# yum clean all
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Cleaning repos: ISO_RHEL64
Cleaning up Everything
[root@redhat6 yum.repos.d]# yum repolist
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
ISO_RHEL64                                                                                                                                                | 3.9 kB     00:00 ... 
ISO_RHEL64/primary_db                                                                                                                                     | 3.1 MB     00:00 ... 
repo id                                                                           repo name                                                                                status
ISO_RHEL64                                                                        ISO RHEL64_x86_64                                                                        3,648
repolist: 3,648
[root@redhat6 yum.repos.d]#

Setelah sistem selesai membuat repositori lokal, saya bisa memeriksanya dengan perintah yum repolist seperti contoh berikut ini :

[root@redhat6 yum.repos.d]# yum repolist
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
repo id                                                                           repo name                                                                                status
ISO_RHEL64                                                                        ISO RHEL64_x86_64                                                                        3,648
repolist: 3,648
[root@redhat6 yum.repos.d]#

Artinya sekarang sistem sudah punya repositori lokal dengan nama “ISO RHEL64_x86_64”. Untungnya paket nmap tersedia dalam DVD ini :

[root@redhat6 yum.repos.d]# yum search nmap
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
=============================================================================== N/S Matched: nmap ===============================================================================
nmap.x86_64 : Network exploration tool and security scanner

  Name and summary matches only, use "search all" for everything.
[root@redhat6 yum.repos.d]#

Dengan begitu saya tinggal menggunakan perintah yum install untuk memasang nmap, yum akan mengambil berkas sumber nmap dari DVD bukan dari Internet :

[root@redhat6 yum.repos.d]# yum install nmap
Loaded plugins: product-id, security, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package nmap.x86_64 2:5.51-2.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================================================================================================
 Package                               Arch                                    Version                                         Repository                                   Size
=================================================================================================================================================================================
Installing:
 nmap                                  x86_64                                  2:5.51-2.el6                                    ISO_RHEL64                                  2.8 M

Transaction Summary
=================================================================================================================================================================================
Install       1 Package(s)

Total download size: 2.8 M
Installed size: 9.7 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2:nmap-5.51-2.el6.x86_64                                                                                                                                      1/1 
ISO_RHEL64/productid                                                                                                                                      | 1.7 kB     00:00 ... 
  Verifying  : 2:nmap-5.51-2.el6.x86_64                                                                                                                                      1/1 

Installed:
  nmap.x86_64 2:5.51-2.el6                                                                                                                                                       

Complete!
[root@redhat6 yum.repos.d]#

CentOS sebagai salah satu varian open source Red Hat, langsung menyediakan repositori online sejak awal instalasi. Pada contoh di bawah ini terlihat CentOS langsung mendeteksi lokasi repositori online yang paling cepat diakses :

[root@centos ~]# uname -a
Linux centos 2.6.32-358.el6.x86_64 #1 SMP Fri Feb 22 00:31:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@centos ~]# 
[root@centos ~]# cat /etc/redhat-release 
CentOS release 6.4 (Final)
[root@centos ~]# 
[root@centos ~]# yum repolist
Loaded plugins: fastestmirror, security
Determining fastest mirrors
 * base: mirror.axarva.co.id
 * extras: mirror.axarva.co.id
 * updates: mirror.axarva.co.id
base                                                                                                                                                      | 3.7 kB     00:00     
base/primary_db                                                                                                                                           | 4.4 MB     00:10     
extras                                                                                                                                                    | 3.4 kB     00:00     
extras/primary_db                                                                                                                                         |  19 kB     00:00     
updates                                                                                                                                                   | 3.4 kB     00:00     
updates/primary_db                                                                                                                                        | 2.5 MB     00:03     
repo id                                                                         repo name                                                                                  status
base                                                                            CentOS-6 - Base                                                                            6,367
extras                                                                          CentOS-6 - Extras                                                                             14
updates                                                                         CentOS-6 - Updates                                                                           718
repolist: 7,099
[root@centos ~]# 
[root@centos ~]# yum search nmap
Loaded plugins: fastestmirror, security
Loading mirror speeds from cached hostfile
 * base: mirror.axarva.co.id
 * extras: mirror.axarva.co.id
 * updates: mirror.axarva.co.id
=============================================================================== N/S Matched: nmap ===============================================================================
nmap-frontend.noarch : The GTK+ front end for nmap
nmap.x86_64 : Network exploration tool and security scanner

  Name and summary matches only, use "search all" for everything.
[root@centos ~]#

Saya juga bisa pakai cara yang sama untuk menjadikan DVD instalasi CentOS sebagai repositori lokal. Untuk testing, saya pindahkan dulu konfigurasi repositorinya CentOS ke dalam folder backup :

[root@centos ~]# mkdir /etc/yum.repos.d/backup
[root@centos ~]# mv /etc/yum.repos.d/*repo /etc/yum.repos.d/backup
[root@centos ~]#

Selanjutnya sama persis seperti sudah ditulis di atas :

[root@centos ~]# mount -o loop /dev/cdrom /mnt
    [root@centos ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/mapper/vg_centos-lv_root
                      3.6G  844M  2.6G  25% /
tmpfs                 939M     0  939M   0% /dev/shm
/dev/sda1             485M   37M  423M   8% /boot
/dev/sr0              4.1G  4.1G     0 100% /mnt
[root@centos ~]# 
[root@centos ~]# vi /etc/yum.repos.d/iso-centos64.repo
[ISO_CentOS64]
name=ISO CentOS64_x86_64
baseurl=file:///mnt
gpgcheck=0
[root@centos ~]# 
[root@centos ~]# yum repolist
Loaded plugins: fastestmirror, security
Determining fastest mirrors
ISO_CentOS64                                                                                                                                              | 4.0 kB     00:00 ... 
ISO_CentOS64/primary_db                                                                                                                                   | 4.4 MB     00:00 ... 
repo id                                                                           repo name                                                                                status
ISO_CentOS64                                                                      ISO CentOS64_x86_64                                                                      6,381
repolist: 6,381
[root@centos ~]# 
[root@centos ~]# yum install -q  nmap

=================================================================================================================================================================================
 Package                               Arch                                    Version                                       Repository                                     Size
=================================================================================================================================================================================
Installing:
 nmap                                  x86_64                                  2:5.51-2.el6                                  ISO_CentOS64                                  2.7 M

Transaction Summary
=================================================================================================================================================================================
Install       1 Package(s)

Is this ok [y/N]: y
[root@centos ~]#

Pasang SSD Mac Mini (part 5 – END)

Sekilas Tentang Partisi a.k.a Volume

Tulisan ini masih lanjutan dari beberapa post sebelumnya tentang pasang SSD. Sejauh ini saya sudah memasang SSD ke dalam Mac Mini & sudah selesai menginstal Mac OSX 10.9.1 ke dalam SSD tersebut. Berarti sekarang Mac Mini memiliki 2 buah storage :

  1. SSD 128GB. Untuk menyingkat penulisan selanjutnya saya akan menyebut SSD sebagai disk0
  2. Harddisk 2.5″ 500GB. Selanjutnya saya akan menyebut SSD sebagai disk1.

Baik disk0 maupun disk1 saat ini masih bisa dipakai sebagai media boot. Hanya saja sekarang saya gunakan disk0 sebagai active boot disk-nya.

Mac membagi tiap disk menjadi beberapa partisi. Sama seperti waktu kita menggunakan Windows, kita biasa menyebut partisi dengan drive C:\, D:\, dst. Di Mac OSX, partisi sering kali disebut juga sebagai “volume”. Selanjutnya saya mungkin menggunakan istilah volume untuk menyebut partisi (dan juga sebaliknya). Tiap volume bisa diberi nama sendiri-sendiri. Perintah diskutil list dapat dipakai untuk menampilkan struktur partisi setiap harddisk :

ttirtawi@macmini:~ $ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER         
   0:      GUID_partition_scheme                        *128.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                  Apple_HFS MacOSX                  127.2 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            479.8 GB   disk1s2
   3:       Microsoft Basic Data                         8.7 GB     disk1s3
   4:        Bios Boot Partition                         1.0 MB     disk1s4
   5:                 Linux Swap                         691.0 MB   disk1s5
   6:       Microsoft Basic Data                         10.6 GB    disk1s6
ttirtawi@macmini:~ $

Pada disk0 a.k.a SSD, Mac menggunakan partisi nomor 2. Partisi nomor 2 tersebut saya beri nama “MacOSX” (lihat pada tulisan sebelumnya). Semua data sistem operasi OSX 10.9.1, aplikasi-aplikasi, home directory berada pada volume “MacOSX” ini. Dengan kata lain, volume “MacOSX” adalah root filesystem-nya.

Hal yang sama berlaku pada disk1 a.k.a harddisk 2.5“ 500GB tadi. Semua data sistem operasi OSX 10.9.1, aplikasi-aplikasi, home directory sebelum proses instal ulang, ada di partisi nomor 2 yang bernama ”Macintosh HD”. Karena saya tidak akan menggunakan disk1 sebagai boot disk lagi, saya hanya perlu home directory lama saja.

Seperti umumnya sistem Unix, Mac OSX mengenal proses mounting untuk setiap partisi/volume yang dimilikinya. Tanpa adanya proses mount, user tidak bisa mengakses data-data yang disimpan dalam partisi tersebut.

Untuk setiap volume yang berada pada non-root disk, Mac OSX akan otomatis melakukan mounting menggunakan nama volume sebagai nama mountpoint-nya. Misalnya volume “Macintosh HD” milik disk1 tadi otomatis di-mount pada /Volume/Macintosh\ HD.

Memindahkan Mountpoint Partisi Mac

Seperti disebut sebelumnya, volume “Macintosh HD” otomatis di-mount di /Volume/Macintosh\ HD. Saya kurang suka nama mountpoint-nya, menurut saya terlalu panjang. Saya memilih untuk memindahkan mountpoint-nya ke direktori yang lebih gampang diingat & lebih pendek untuk diketik. Tentu lebih cepat untuk mengetikkan ~/mydata daripada /Volume/Macintosh\ HD. Alih-alih menggunakan alias untuk menyingkatnya, saya pilih untuk mengganti saja sekalian mountpoint-nya.

Untuk menentukan mountpoint secara manual, kita bisa mendaftarkan volume & mountpoint-nya pada file /etc/fstab. Linux juga menggunakan file /etc/fstab untuk mengatur mountpoint setiap volume/partisinya. Berkas /etc/fstab dapat dimodifikasi dengan editor teks seperti vi. Mac punya perintah vifs sebagai alternatif untuk mengedit /etc/fstab.

Tiap volume yang didaftarkan dalam file /etc/fstab diwakili dengan UUID-nya. Jadi untuk mengubah mountpoint partisi “Macintosh HD”, saya perlu cari tahu dulu UUID-nya dengan perintah diskutil seperti pada contoh di bawah ini :

ttirtawi@macmini:~ $ diskutil info /Volumes/Macintosh\ HD/
   Device Identifier:        disk1s2
   Device Node:              /dev/disk1s2
   Part of Whole:            disk1
   Device / Media Name:      Customer

   Volume Name:              Macintosh HD
   Escaped with Unicode:     Macintosh%FF%FE%20%00HD

   Mounted:                  Yes
   Mount Point:              /Volumes/Macintosh HD
   Escaped with Unicode:     /Volumes/Macintosh%FF%FE%20%00HD

   File System Personality:  Journaled HFS+
   Type (Bundle):            hfs
   Name (User Visible):      Mac OS Extended (Journaled)
   Journal:                  Journal size 40960 KB at offset 0x1238a000
   Owners:                   Enabled

   Partition Type:           Apple_HFS
   OS Can Be Installed:      Yes
   Media Type:               Generic
   Protocol:                 SATA
   SMART Status:             Verified
   Volume UUID:              E61E6A98-9E6A-32FD-87C9-31AFB09F6218

   Total Size:               499.8 GB (499763888128 Bytes) (exactly 976101344 512-Byte-Units)
   Volume Free Space:        71.5 GB (71495225344 Bytes) (exactly 139639112 512-Byte-Units)
   Device Block Size:        512 Bytes

   Read-Only Media:          No
   Read-Only Volume:         No
   Ejectable:                No

   Whole:                    No
   Internal:                 Yes
   Solid State:              No
   Device Location:          "Lower"    
ttirtawi@macmini:~ $

Dari contoh di atas, UUID “Macintosh HD” adalah E61E6A98-9E6A-32FD-87C9-31AFB09F6218. Saya ingin “Macintosh HD” di-mount ke ~/mydata. Tentu direktori ~/mydata ini harus sudah ada dulu sebelumnya.

ttirtawi@macmini:~ $ mkdir ~/mydata

Setelah saya ubah maka berkas /etc/fstab-nya menjadi seperti ini :

ttirtawi@macmini:~ $ sudo vifs
#
# Warning - this file should only be modified with vifs(8)
#
# Failure to do so is unsupported and may be destructive.
#
UUID=E61E6A98-9E6A-32FD-87C9-31AFB09F6218 /Users/ttirtawi/mydata hfs rw,auto
ttirtawi@macmini:~ $

Setelah itu saya tinggal reboot Mac Mininya. Setelah reboot, partisi “Macintosh HD” akan berada pada mountpoint ~/mydata (/Users/ttirtawi/mydata) seperti terlihat pada contoh di bawah ini :

ttirtawi@macmini:~ $ df -h
Filesystem      Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk0s2   118Gi   19Gi  100Gi    16%   4924430 26124376   16%   /
devfs          193Ki  193Ki    0Bi   100%       666        0  100%   /dev
/dev/disk1s2   465Gi  382Gi   84Gi    83% 100108219 21904447   82%   /Users/ttirtawi/mydata
map -hosts       0Bi    0Bi    0Bi   100%         0        0  100%   /net
map auto_home    0Bi    0Bi    0Bi   100%         0        0  100%   /home
ttirtawi@macmini:~ $

Bersih-Bersih Harddisk Lama

Ada beberapa bagian dalam disk1 (“Macintosh HD”) yang sudah tidak saya perlukan, seperti misalnya :

  • Folder sistem OSX
  • Folder Application
  • Recovery partition
  • Partisi bekas BootCamp (dulu saya pernah instal Ubuntu Linux berdampingan dengan Mac OSX)

Saya hanya perlu data-data dalam folder Users/ttirtawi saja. Selebihnya saya bisa hapus semua. Struktur partisi dalam disk1 sekarang seperti berikut ini :

ttirtawi@macmini:~ $ diskutil list /dev/disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            479.8 GB   disk1s2
   3:       Microsoft Basic Data                         8.7 GB     disk1s3
   4:        Bios Boot Partition                         1.0 MB     disk1s4
   5:                 Linux Swap                         691.0 MB   disk1s5
   6:       Microsoft Basic Data                         10.6 GB    disk1s6
ttirtawi@macmini:~ $

Ada beberapa partisi yang tidak saya perlukan lagi yaitu partisi 3,4,5,6. Kapasitas dari keempat partisi tersebut cukup besar, sayang bila tidak digunakan. Saya ingin gabungkan dengan partisi 2 (“Macintosh HD”). Untuk menghapus partisi 3,4,5,6 saya gunakan perintah seperti berikut ini :

ttirtawi@macmini:~ $ diskutil eraseVolume HFS+ Blank /dev/disk1s3
Started erase on disk1s3
Unmounting disk
Erasing
Initialized /dev/rdisk1s3 as a 8 GB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk1s3 Blank
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ diskutil eraseVolume HFS+ Blank /dev/disk1s4
Started erase on disk1s4
Unmounting disk
Erasing
Initialized /dev/rdisk1s4 as a 977 KB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk1s4 Blank
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ diskutil eraseVolume HFS+ Blank /dev/disk1s5
Started erase on disk1s5
Unmounting disk
Erasing
Initialized /dev/rdisk1s5 as a 659 MB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk1s5 Blank
ttirtawi@macmini:~ $ 
ttirtawi@macmini:~ $ diskutil eraseVolume HFS+ Blank /dev/disk1s6
Started erase on disk1s6
Unmounting disk
Erasing
Initialized /dev/rdisk1s6 as a 10 GB case-insensitive HFS Plus volume
Mounting disk
Finished erase on disk1s6 Blank
ttirtawi@macmini:~ $

Setelah keempat partisi tadi dihapus tampilan struktur partisinya menjadi seperti berikut ini :

ttirtawi@macmini:~ $ diskutil list /dev/disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            479.8 GB   disk1s2
   3:                  Apple_HFS Blank                   8.5 GB     disk1s3
   4:                  Apple_HFS Blank                   1.0 MB     disk1s4
   5:                  Apple_HFS Blank                   691.0 MB   disk1s5
   6:                  Apple_HFS Blank                   10.5 GB    disk1s6
ttirtawi@macmini:~ $

Berikutnya saya gabungkan satu persatu partisi tersebut dengan partisi nomor 2.

ttirtawi@macmini:~ $ diskutil mergePartitions HFS+ Macintosh\ HD disk1s2 disk1s3
The chosen disk supports resize; disregarding your new file system type and volume name
Merging partitions into a new partition
     Start partition: disk1s2 Macintosh HD
     Finish partition: disk1s3 Blank
Started partitioning on disk1
Merging partitions
Waiting for the disks to reappear
Growing disk
Finished partitioning on disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            488.4 GB   disk1s2
   3:                  Apple_HFS Blank                   1.0 MB     disk1s4
   4:                  Apple_HFS Blank                   691.0 MB   disk1s5
   5:                  Apple_HFS Blank                   10.5 GB    disk1s6
ttirtawi@macmini:~ $

Lalu saya lanjutkan dengan menggabungkan partisi 4 ke dalam partisi nomor 2 :

ttirtawi@macmini:~ $ diskutil mergePartitions HFS+ Macintosh\ HD disk1s2 disk1s4
The chosen disk supports resize; disregarding your new file system type and volume name
Merging partitions into a new partition
     Start partition: disk1s2 Macintosh HD
     Finish partition: disk1s4 Blank
Started partitioning on disk1
Merging partitions
Waiting for the disks to reappear
Growing disk
Finished partitioning on disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            488.4 GB   disk1s2
   3:                  Apple_HFS Blank                   691.0 MB   disk1s5
   4:                  Apple_HFS Blank                   10.5 GB    disk1s6
ttirtawi@macmini:~ $

Lalu saya lanjutkan dengan menggabungkan partisi 5 ke dalam partisi nomor 2 :

ttirtawi@macmini:~ $ diskutil mergePartitions HFS+ Macintosh\ HD disk1s2 disk1s5
The chosen disk supports resize; disregarding your new file system type and volume name
Merging partitions into a new partition
     Start partition: disk1s2 Macintosh HD
     Finish partition: disk1s5 Blank
Started partitioning on disk1
Merging partitions
Waiting for the disks to reappear
Growing disk
Finished partitioning on disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            489.1 GB   disk1s2
   3:                  Apple_HFS Blank                   10.5 GB    disk1s6
ttirtawi@macmini:~ $

Terakhir saya gabungkan partisi 6 ke dalam partisi nomor 2 :

ttirtawi@macmini:~ $ diskutil mergePartitions HFS+ Macintosh\ HD disk1s2 disk1s6
The chosen disk supports resize; disregarding your new file system type and volume name
Merging partitions into a new partition
     Start partition: disk1s2 Macintosh HD
     Finish partition: disk1s6 Blank
Started partitioning on disk1
Merging partitions
Waiting for the disks to reappear
Growing disk
Finished partitioning on disk1
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *500.1 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                  Apple_HFS Macintosh HD            499.8 GB   disk1s2
ttirtawi@macmini:~ $

Lumayan ada tambahan 20 GB untuk partisi 2 (“Macintosh HD”). Saya tidak sentuh partisi 0 & 1, takut merusak data-data dalam partisi nomor 2. Proses mergePartition tadi tidak menghapus data yang sudah ada di dalam partisi nomor 2.

Migrasi Home Directory

Setelah selesai melakukan clean install Mac OSX, saya buat user baru untuk saya gunakan sehari-hari. User baru saya ini sekarang memiliki home directory ($HOME) di dalam SSD. Sementara direktori $HOME lama saya sekarang berada di :

/Users/ttirtawi/mydata/Users/ttirtawi

Karena kapasitas SSD baru cuma 128GB, tentu tidak mungkin menyalin semua data lama tersebut. Data lama saya dalam “Macintosh HD” sudah lebih dari 400GB. Saya punya dua pilihan untuk mengatasi masalah ini :

  1. Menggunakan $HOME lama yang ada di dalam “Macintosh HD”. Cara ini yang paling praktis, cukup dengan mengubahnya dari menu “Advance Options” (bisa diakses dari System Preferences ☞ Users & Groups)
    Advance Option User Setting Mac
    Edit HOME User Mac
    Saya tinggal ganti bagian yang diberi tanda panah, dari /Users/ttirtawi menjadi /Users/ttirtawi/mydata/Users/ttirtawi.
  2. Menggunakan lokasi $HOME baru yang ada di SSD (/Users/ttirtawi) & menggunakan soft link untuk mengakses data lama.

Meskipun cara pertama adalah cara yang paling praktis, kelemahannya adalah saya tidak bisa memaksimalkan kecepatan SSD untuk penggunaan sehari-hari. Karena beberapa data yang sering diakses seperti yang ada di Library masih berada di harddisk yang kecepatan aksesnya lambat. Jadi saya memilih untuk menggunakan cara kedua saja.

ttirtawi@macmini:~ $ ln -sf ~/mydata/Users/ttirtawi/Documents Documents
ttirtawi@macmini:~ $ ln -sf ~/mydata/Users/ttirtawi/Downloads Downloads
ttirtawi@macmini:~ $ ln -sf ~/mydata/Users/ttirtawi/Music Music
ttirtawi@macmini:~ $ ln -sf ~/mydata/Users/ttirtawi/Pictures Pictures

Dengan cara di atas saya otomatis mengatur ulang librari iPhoto & iTunes. Librari iPhoto berada dalam folder Pictures. Sementara koleksi musik iTunes ada di folder Music. Jumlah berkas foto & musik saya cukup banyak, jadi biarlah iPhoto & iTunes tetap lambat karena harus mengakses data dari harddisk lama. Begitu iPhoto & iTunes dibuka, keduanya langsung menampilkan data-data lama saya. Tidak perlu ada setting tambahan lainnya.

Khusus untuk aplikasi Mail saya tidak menggunakan cara tadi. Mailbox saya tidak terlalu besar jadi bisa dipindah semua ke dalam SSD. Pekerjaan saya tergantung sekali dengan email, jadi saya putuskan untuk menaruh mailbox ke dalam SSD saja. Baik mailbox, account setting, Preferences, semuanya ada di dalam folder Library. Jadi saya cukup pindahkan semua data Mail ke Library yang baru :

ttirtawi@macmini:~ $ cd ~/Library
ttirtawi@macmini:~ $ mv ~/mydata/Users/ttirtawi/Library/Mail/* .

Must Have Application

Karena saya melakukan instal ulang, mau tidak mau saya harus menginstal lagi semua aplikasi satu per satu. Beberapa aplikasi Mac saya ambil & beli dari App Store. Aplikasi yang saya dapat dari Mac App Store mudah untuk didapatkan kembali. Cukup buka App Store lalu klik menu Purchases. Lalu saya tinggal klik satu persatu untuk menginstalnya kembali.

Sementara aplikasi yang lain saya ambil langsung dari Internet & backup data di harddisk eksternal. Dengan clean install ini saya jadi punya waktu untuk bersih-bersih aplikasi. Saya hanya instal aplikasi yang benar-benar saya perlukan saja :

  • Adium
  • Adobe Flash Plugin
  • AppCleaner : melakukan uninstall suatu aplikasi di Mac sangat mudah, cukup memindahkan aplikasi yang ingin dibuang dari direktori /Application ke Trash. AppCleaner mempermudah saya melakukan uninstall karena AppClenaner membuang juga data-data sampah yang berhubungan dengan aplikasi.
  • Byword : aplikasi yang saya pakai untuk menulis artikel ini, Byword adalah text editor yang mendukung format Markdown.
  • Dropbox
  • Evernote
  • Filezilla : meskipun saya lebih suka menggunakan secure copy (scp) dari Terminal, kadang saya perlu juga aplikasi Filezilla untuk melakukan transfer data ke remote server.
  • Jave Runtime Environment : pernah saya tulis di sini alasan saya perlu JRE.
  • KeePassX : aplikasi penting untuk menyimpan password, pernah saya tulis di sini.
  • Microsoft Office 2011
  • Mozilla Firefox
  • OmniGraffle Professional : aplikasi untuk membuat diagram seperti Microsoft Visio.
  • Skitch : aplikasi untuk mengambil screenshot, saya suka aplikasi ini karena terintegrasi dengan Evernote
  • Skype
  • Teamviewer : ini aplikasi yang saya pakai bila ingin mengakses komputer orang yang punya masalah dengan komputernya. Ini pernah saya tulis juga di sini.
  • TextWrangler : ini adalah editor teks favorit di Mac
  • The Unarchiver : aplikasi untuk menangani kompresi file (*.zip, *.rar, *tar.gz, dsb)
  • Thunderbird Mail (saya masih punya kumpulan email lama yang tidak dimigrasi ke Mail App)
  • Transmission : aplikasi untuk mengunduh torrent file.
  • Twitter / Tweetdeck
  • VLC Media Player
  • Virtualbox : aplikasi penting untuk menjalankan virtual machine, saya tetap butuh Linux & Windows jadi saya memasangnya pada virtual machine.
  • Wireshark : perlu untuk membaca file hasil snoop network, saya perlu ini untuk urusan pekerjaan.
  • iPhoto
  • iSyncr
  • iWork (Pages, Number, Keynote)

Membandingkan Kecepatan SSD & Harddisk

Beberapa sumber di Internet merekomendasikan aplikasi Blackmagic Disk Speed Test untuk mengukur kecepatan baca/tulis data harddisk. Saat Mac Mini masih menggunakan harddisk 500GB sebagai boot disk, kecepatannya terukur seperti berikut ini :

Kecepatan baca/tulis harddisk konvensional

Setelah saya sukses memasangkan SSD Samsung 840 Pro & menggunakannya sebagai media boot, saya ukur lagi kecepatan baca tulisnya. Hasilnya seperti berikut ini :

Kecepatan baca/tulis SSD

Saya puas sekali dengan peningkatan kecepatan ini. Mac Mini saya tidak lagi terasa lambat, proses booting sangat cepat, membuka aplikasi tidak lagi ada jeda yang menjengkelkan.

Pasang SSD Mac Mini (part 4)

Instal Ulang Mac OSX Mavericks

Setelah sukses memasangkan SSD ke dalam Mac Mini, saya melanjutkan dengan instal ulang Mac OSX. Instal ulang ini akan dilakukan pada SSD yang baru. Selama proses instalasi ini semua data saya (termasuk home directory) masih tersimpan dalam harddisk 2.5″ . Setelah instalasi selesai, barulah saya akan melakukan migrasi data-data lama saya.

Saya gunakan USB bootable media yang sudah disiapkan sebelumnya. Supaya bisa memilih USB sebagai media boot, saya harus menekan tombol Option (Alt) saat Mac Mini dihidupkan. Di sini saya sempat mengalami kesulitan, beberapa kali percobaan Mac tidak kunjung masuk ke menu untuk memilih USB. Mac malah masuk kembali ke halaman login OSX. Saya baru ingat kalau tombol Option (Alt) saya sudah tidak berada pada posisi aslinya. Aslinya tombol Option (Alt) berada tepat di sebelah kiri tombol Command (sebelah kiri). Saya pernah tulis cerita tentang menukar posisi tombol Alt dan tombol Control pada tulisan sebelumnya. Saya baru ingat kalau modifikasi tombol itu hanya berlaku di dalam OS. Selama proses booting, susunan tombol keyboard balik lagi ke settingan awal keyboard Apple.

Posisi Awal Tombol Alt/Option Apple

Jadi yang saya tekan selama proses booting adalah tombol Control seperti terlihat pada foto di atas. Barulah Mac bisa masuk ke menu boot seperti pada tampilan berikut ini :

Pilihan Media Boot

Dari situ saya tinggal mengarahkan kursor ke USB yang ditandai dengan nama “Install OS X Mavericks” & menekan tombol Enter. Mac akan meminta saya untuk segera mengaktifkan wireless mouse. Tidak masalah, Apple Wireless mouse langsung terdeteksi dengan baik & bisa segera digunakan.

Mac OSX Mouse Setup

Tampilan pertama yang muncul pada mode instalasi ini adalah menu “OS X Utilities” seperti ini :

Menu Awal Instalasi

Saya disodori beberapa pilihan mulai dari menu restore dari Time Machine, menu instal ulang, menu “Disk Utility”, dan menu untuk mendapat bantuan online. Sebelum mulai proses instalasi, saya perlu menyiapkan partisi SSDnya terlebih dulu. Oleh karena itu saya klik saja menu “Disk Utility”.

Mac OSX 10.9.1 ini mendukung penggunaan Fusion Drive. Fusion Drive adalah teknologi yang menggabungkan NAND flash storage + harddisk konvesional dalam 1 kemasan. Elemen flash storage tersebut ditujukan sebagai media tempat OS berada. Dengan meletakkan sistem operasi di dalam flash storage begitu diharapkan performance OSX menjadi lebih cepat. OSX akan menentukan secara otomatis di mana data akan disimpan. Nah installer Mac OSX ini mendeteksi adanya SSD (yang berbentuk flash storage), sehingga dia bersiap-siap menjadikan SSD baru saya sebagai bagian dari Fusion Drive.

Saya tidak ingin menjadikan kombinasi SSD & harddisk yang ada di Mac Mini sebagai Fusion Drive. Saya ingin punya kontrol sendiri untuk urusan penempatan data dan sistem operasi. Dengan Fusion Drive saya tidak bisa tahu di mana persisnya data saya akan di simpan, apakah di SSD atau di harddisk? Saat pertama kali membuka Disk Utility, Mac OSX akan memperingatkan saya tentang Fusion Drive tadi. Saya pilih untuk mengabaikan tawaran tadi dengan mengklik pilihan “Ignore”.

Destroy Fusion Drive

Selanjutnya saya perlu membuat partisi baru di dalam SSD. Caranya tinggal pilih SSD di kolom sebelah kiri, lalu klik menu Erase seperti pada foto di bawah ini.

Saya beri nama partisi SSD ini dengan nama “MacOSX”. Partisinya saya format dengan tipe filesystem “Mac OS Extended (Journaled)”. Saat saya mengklik tombol Erase, Mac akan menampilkan peringatan seperti berikut ini :

Peringatan ini maksudnya supaya pengguna memeriksa kembali apa yang akan diformat. Jaga-jaga jangan sampai salah pilih storage yang akan diformat. Setelah proses format selesai, saya tutup aplikasi Disk Utility. Mac akan menampilkan kembali menu “OS X Utilities”.

Menu Awal Instalasi

Sekarang barulah saya bisa memilih menu “Install OS X”. Saat diklik, Mac akan memunculkan tampilan seperti berikut ini :

Tampilan Awal Menu Instalasi Mac OSX 10.9.1

Pilihannya cukup jelas, tinggal klik Continue saja. Yang berikutnya tampil adalah menu software license agreement seperti yang terlihat pada 2 foto berikut ini :

Halaman Software License Agreement
Halaman Software License Agreement 2

Berikutnya adalah langkah yang penting, memilih storage tempat OSX akan diinstal. Di sini saya memilih storage dengan nama “MacOSX”. Ini adalah SSD yang sudah saya format tadi.

Pilihan Disk Untuk Menyimpan Mac OSX

Setelah saya mengklik tombol Install, proses instalasi segera berjalan otomatis.

Proses Instalasi Tahap 1

Tahapan ini berlangsung cukup cepat, Mac akan restart secara otomatis. Mulanya saya pikir proses instalasi sudah selesai sedemikian cepat. Ternyata setelah Mac aktif kembali, tahapan instalasi masih berjalan lagi.

Proses Instalasi Tahap 2

Perlu waktu sekitar 35–40 menit sampai proses instalasi selesai. Beberapa langkah yang akan muncul setelah proses instalasi antara lain adalah :

  • Pengaturan lokasi

    Pengaturan Lokasi

  • Pengaturan tipe keyboard

    Pengaturan Keyboard

  • Bila ada jaringan WiFi yang tersedia, Mac akan menawarkan pilihan pada kita untuk menyambungkan Mac dengan jaringan WiFi tersebut.

    Pengaturan WiFi

  • Mac juga menawarkan menu bantuan migrasi data dari komputer Mac lainnya. Meskipun saya punya data-data lama di harddisk satunya, saya pilih untuk mengabaikan pilihan ini. Proses migrasi data akan saya lakukan manual nanti.

    Pilihan Migrasi Data

  • Ada pilihan untuk mengatur akun iCloud juga. Untuk menggunakan layanan iCloud saya perlu memasukkan Apple ID & password-nya.

    Setup iCloud

  • Mac akan meminta kita untuk menyetujui Term & Condition seperti yang tampak pada 2 foto berikut ini :

    Term & Condition
    Term & Condition 2

  • Pada langkah selanjutnya kita bisa membuat user account baru untuk Mac OSX yang baru diinstal ini. Saya memilih untuk membuat user sementara dengan nama “Administrator”.

    Membuat User Account Baru

  • Kita akan diberi pilihan untuk mengintegrasikan KeyChain (aplikasi penyimpan password) dengan iCloud. Saya memilih untuk mengabaikan pilihan ini (dengan memilih “Set up later”).

    Pilihan Pengaturan iCloud KeyChain

  • Pada menu terakhir, kita bisa melakukan registrasi mesin. Saya memilih untuk segera meregistrasikan kembali Mac Mini ini. Saya cukup memasukkan Apple ID saya untuk melakukan proses registrasi.

    Pilihan Registrasi Mac

  • Mac akan segera melakukan finishing & menyiapkan desktop :

    Finishing

Setelah reboot Mac Mini saya segera menggunakan SSD sebagai media boot-nya. Terasa sekali peningkatan kecepatan booting-nya. Perlu waktu sekitar dari 25 detik saja dari Mac mulai dihidupkan sampai desktop siap digunakan.

Pasang SSD Mac Mini (part 3)

Bongkar Pasang Mac Mini

Jumat minggu lalu saya akhirnya punya waktu untuk memasang SSD ke dalam Mac Mini. Agak deg-degan juga saya membongkar Mac Mini ini. Saya kuatir merusak komponen yang ukurannya kecil, kuatir pula SSD Samsungnya tidak bisa dikenali oleh Mac OSX. Selain itu saya deg-degan bila proses ini malah menghilangkan data-data yang ada dalam harddisk 2.5″-nya. Saya mantapkan hati saja dengan mensugesti diri sendiri. Kalau dulu di kantor sebelumnya pekerjaan saya bongkar pasang server sebesar lemari, apalah susahnya membongkar komputer kecil seperti ini :-) .

Postingan ini bukan merupakan tutorial cara pasang SSD. Ini hanya catatan pengalaman saya saja. Saya sendiri mengikuti instruksi cara bongkar pasang Mac Mini dari video disediakan oleh OWC di link berikut ini :

 

Semua komponen Mac Mini dapat diakses setelah tutup di bagian bawahnya dilepas. Tutup ini sangat mudah untuk dilepas. Tinggal diputar berlawanan arah jarum jam. Begitu tutupnya dibuka kita bisa melihat modul memory, kipas, dan antena WiFi. Mac Mini memiliki 2 keping memori. Dulu saya pernah ganti salah satu memorinya dengan dengan 1 keping memori 8GB.

Beberapa komponen yang perlu dilepas bisa dilihat pada foto di atas. Pertama saya harus melepas memorinya terlebih dulu. Setelah memori saya perlu melepas kipas. Kipas ini terhubung dengan system board dengan konektor yang ukurannya kecil sekali. Perlu bantuan pengungkit plastik (yang disertakan dalam paket Data Doubler) untuk melepas konektor kipas itu. Setelah kipas dilepas barulah saya bisa melepaskan antena WiFi. Kabel penghubung antena WiFi juga sangat kecil ukurannya. Harddisk 2.5″ bawaan Mac Mini berada tepat dibalik antena WiFi.

Sebelum melepaskan system board, saya perlu melepas konektor harddisk & konektor sensor IR. Sensor IR ini lebih sulit dilepas daripada konektor SATA harddisk. Singkatnya saya berhasil juga melepas system board. Sesuai dengan namanya yang Mini, system board-nya berukuran cukup kecil sehingga bisa dipegang dengan satu tangan saja.

System Board Mac Mini

Setelah system board-nya dikeluarkan begini wujud kosong casing Mac Mini.

Casing Mac Mini Tanpa System Board

Dari situ tinggal power supply yang perlu dilepas. Power supply Mac Mini ini ukurannya benar-benar mini. Boleh dibilang ukurannya lebih kecil & ringan dari kebanyakan charger notebook.

Power Supply Mac Mini

Setelah semua dilepas saya baru bisa memasangkan SSD Samsung 840 Pro ini ke tempatnya. SSD ini akan menempati slot atas (upper bay) yang tadinya kosong. Harddisk 2.5″ bawaan Mac Mini akan berada pada posisi semua pada slot bawah (lower bay).



Bila dilihat dari bagian bawah Mac Mini seperti foto di atas, maka SSD akan berada di bawah sementara harddisk 2.5″-nya akan ditumpuk di atasnya.

Saya menghabiskan waktu total sekitar 2.5 jam mulai dari membongkar sampai Mac Mini bisa dihidupkan kembali. Melepas semua komponen Mac Mini adalah pekerjaan yang cukup menantang (jika tidak ingin disebut “sulit”). Tapi memasangkan semua komponen ke posisi semua adalah pekerjaan yang jauh lebih sulit. Beberapa tahap yang menurut saya paling sulit antara lain adalah :

  • Melepas & menyambungkan kembali kabel power supply dengan system board.
  • Memasangkan power supply kembali pada posisi semula.
  • Melepas & menyambungkan kembali kabel IR.
  • Menghubungkan kembali kabel antena WiFi.
  • Melepas system board dari casing. Meski sudah ada tool untuk melepasnya, system board ini cukup keras terpasang. Perlu sedikit tenaga ekstra untuk menariknya keluar. Mungkin karena takut-takut jadi terasa agak sulit.

Pengalaman membongkar Mac Mini ini membuat saya makin kagum dengan produk Apple. Bagaimana bisa mereka mengemas sebuah komputer desktop dalam kemasan yang kecil & ringkas tapi tetap indah bentuknya. Saya kagum mengamati struktur bagian dalam Mac Mini, semuanya tersusun rapih sampai ke komponen terkecilnya. Ini membuktikan kebenaran pernyataan Steve Jobs almarhum :

“When you’re a carpenter making a beautiful chest of drawers, you’re not going to use a piece of plywood on the back, even though it faces the wall and nobody will ever see it. You’ll know it’s there, so you’re going to use a beautiful piece of wood in the back. For you to sleep well at night, the aesthetic, the quality, has to be carried all the way through.”

Saya salin quote tadi dari Goodreads.com. Terjemahan gampangnya versi saya : Apple memperhatikan keindahan & ketelitian struktur sampai ke bagian dalam yang jarang dilihat orang.

Setelah semua komponen terpasang, saya masih deg-degan saat pertama kali menghidupkannya kembali. Untungnya Mac Mini ini bisa di-boot dengan lancar. Mac OSX langsung muncul & otomatis mengenali adanya tambahan storage baru. Saya segera cek semua komponen seperti Bluetooth, WiFi, Ethernet, bersyukur semuanya bisa berjalan normal seperti semula. Selanjutnya saya tinggal menginstal ulang Mac OSX Mavericks ke dalam SSD. Seperti rencana semula, SSD akan saya jadikan sebagai boot media sementara harddisk yang lama akan saya jadikan media penyimpanan data saja.

Pasang SSD Mac Mini (part 2)

Samsung SSD 840 Pro Series

Setelah memiliki Data Doubler saya segera mencari referensi SSD yang cocok. Dari beberapa referensi di Internet, pilihan saya jatuh pada Samsung SSD tipe 840 Pro Series. Tipe ini katanya paling bagus kecepatan baca tulisnya. Sayangnya harganya relatif lebih mahal daripada kompetitor lainnya. Harganya hanya kalah oleh Intel SSD yang sementara ini paling mahal di pasaran.


Saya memutuskan untuk membeli SSD yang berukuran 128GB saja, kapasitas paling kecil tipe 840 Pro. Selain kapasitas yang paling kecil, SSD Samsung 840 Pro 128GB adalah yang paling murah di kelasnya. Di Bhinneka.com, SSD Samsung 840 Pro kapasitas 128GB dijual seharga Rp 2.117.500, -. Samsung punya varian lain yang lebih murah, yaitu tipe 840 & 840 Evo (berurut dari yang paling murah). Sampai hari ini harga SSD masih jauh lebih mahal beberapa kali lipat bila dibandingkan dengan harddisk konvensional. Untuk harga yang sama, saya bisa dapat harddisk biasa (ukuran 2.5″) dengan kapasitas 2 TeraByte, bayangkan….16x lipat kapasitasnya.

Memang terlalu kecil rasanya menggunakan media penyimpanan dengan kapasitas 128GB. Saya pun sudah merasakan repotnya memiliki komputer dengan media penyimpanan sebesar 128GB. MacBook Air saya cuma memiliki kapasitas SSD 128GB. Tidak mungkin menyimpan koleksi foto, musik, atau video di dalam SSD tadi. Lalu mengapa saya malah memilih SSD berukuran 128GB juga untuk Mac Mini? Saya memang berencana tidak akan menyimpan data-data di dalam SSD. Rencananya saya hanya akan menggunakan SSD untuk menyimpan OS & aplikasi-aplikasinya. Data yang lain akan saya simpan pada harddisk 500GB bawaan Mac Mini. Dengan kata lain, SSD akan menjadi “boot disk” sementara harddisk bawaan Mac Mini menjadi “data disk”.

SSD Samsung 840 Pro ini ukurannya mirip dengan harddisk 2.5“. Bedanya SSD ini terasa lebih ringan. Konektor SATAnya sudah mendukung SATA III yang katanya bisa mengalirkan data sampai kecepatan 6Gb/s. Kebetulan Mac Mini sudah memiliki port SATA III juga. Sama halnya seperti harddisk 2.5”, SSD ini dilengkapi dengan 8 buah lubang sekrup. Empat di bagian belakang, empat lainnya berada di sisi-sisi tertipisnya.


Mungkin tidak lama lagi SSD akan tersedia di pasaran dengan harga yang lebih terjangkau & dengan kapasitas yang lebih besar. Bukan suatu hal yang mustahil rasanya. Lihat saja perkembangan media penyimpanan USB flash disk. Sekarang flash disk ukuran 8GB sudah bisa didapat dengan harga puluhan ribu rupiah. Saya masih ingat betul sekitar tahun 2005 (saat masih kuliah) saya membeli flash disk pertama kalinya, merek Apacer dengan kapasitas 128MB (masih ukuran Megabyte) dengan harga Rp160.000,-. Dengan harga yang sama sekarang saya bisa mendapat flash disk ukuran 16GB. Oh ya kemarin Bhinneka memberi bonus USB flash disk 8GB juga :-) .