diskcloneCloning disk atau proses mereplikasikan data didalam suatu disk baik itu HDD, SSD, SAS atau perangkat storage lainnya terhadap suatu alternatif disk yang lain atau alternatif perangkat storage lainnya yang baru, guna menghindari data yang rusak atau bahkan hilang yang diakibatkan disk lama yang failure. Proses cloning disk umumnya dilakukan atas kondisi disk lama yang kinerjanya sudah tidak optimal, proses I/O read/write yang sudah lambat, atau bahkan terindikasi failure dan harus segera diproses pergantian disk lama dengan disk yang baru serta perpindahan datanya antar disk yang lama terhadap disk alternatif lain yang baru tersebut.

Tahapan dan proses cloning disk memiliki beberapa alternatif, bisa melalui aplikasi clonezila atau aplikasi lainnya, menggunakan dd clone atau lainnya. Namun dalam artikel ini akan didokumentasikan tahapan dan proses cloning disk menggunakan dd dan rsync. Proses menggunakan dd clone yaitu dengan menggunakan perintah (contoh kasus) dd if=/dev/sda of=/dev/sdb dengan sda merupakan hardisk lama yang aktif dan yang ingin di clonekan dengan hardisk sdb yang baru tersebut sebetulnya sudah dapat berjalan prosesnya, bahkan merupakan proses yang sangat sederhana dan sangat efisien dalam penggunaan perintahnya, namun menurut penulis sangat tidak efektif. Kenapa? Pertama, karena menghindari lamanya proses cloning dan menghindari ketidak sempurnaan data dari hasilnya yang diakibatkan kinerja I/O atau baca tulis hardisk yang sudah tidak optimal atau lambat. Bahkan jika gagal, maka akan diulang dari nol karena tidak akan diketahui data yang kurang dari lokasi partisi yang keberapa dari hardisk lama yang ingin di ganti tersebut. Kedua, guna mengantisipasi kondisi hardisk baru sebagai pengganti yang memiliki space kurang dari hardisk lama yang hendak diganti. Misal hardisk lama memiliki space 500 GB dan ingin diganti atau di clonekan terhadap hardisk baru yang hanya memiliki space 320 GB. Hal tersebut tentu sangat riskan terhadap existing data dari hardisk yang lama yang hendak di clonekan terhadap hardisk baru. Namun apabila hardisk baru memiliki space yang lebih besar dari hardisk yang lama atau lebih besar sama dengan 500GB seperti contoh kasus yang disampaikan sebelumnya tentu tidak perlu dikhawatirkan terkait penggunaan space.

Disk Layout

Sebelum melanjutkan tahapan dan prosesnya, berikut gambar tabel layout hardisk baik sda sebagai existing yang hendak diganti atau diclone beserta dengan partisinya terhadap hardisk sdb sebagai target disknya.

clone

Untuk hardisk existing atau hardisk lama (sda) atau hardisk yang hendak diganti dengan melakukan cloning datanya terhadap hardisk target atau hardisk baru (sdb). Pada dokumentasi ini menggunakan hardisk yang memiliki space sama besar dengan kondisi partisinya seperti tabel tersebut diatas. Karena pada dokumentasi artikel ini menggunakan space yang sama besar, maka hardisk target akan memiliki partisi dan space yang sama. Khusus untuk partisi “/boot” dan “/” karena merupakan partisi dengan disk usage paling sedikit diantara partisi lain maka akan diproses menggunakan perintah dd clone.

Gambar data layout tabel tersebut merupakan rangkuman dari kondisi hardisk lama atau sda (existing) sebagai berikut yang hendak di clone kan terhadap hardisk baru atau sdb (target) guna memudahkan penulis untuk penyampaian tahapan dan prosesnya melalui dokumentasi artikel ini.

Kondisi File System Hardisk SDA

root@server [~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.8G  405M  8.9G   5% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sda9       185G   60M  175G   1% /backup
/dev/sda1       289M   56M  218M  21% /boot
/dev/sda8       148G  786M  140G   1% /home
/dev/sda6       9.8G   23M  9.3G   1% /tmp
/dev/sda5        50G  5.4G   42G  12% /usr
/dev/sda3        50G  687M   46G   2% /var

Kondisi Partisi Hardisk SDA

root@server [~]# fdisk -l /dev/sda
Disk /dev/sda: 500.1 GB, 500106780160 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x91d03150
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          50      313572   83  Linux
/dev/sda2              51        1723    10493056   83  Linux
/dev/sda3            1724       10083    52433920   83  Linux
/dev/sda4           10084       77867   425141248    5  Extended
/dev/sda5           10084       18443    52433892   83  Linux
/dev/sda6           18444       20116    10493028   83  Linux
/dev/sda7           20117       21454     8391908   82  Linux swap / Solaris
/dev/sda8           21455       46533   157295460   83  Linux
/dev/sda9           46534       77867   196526820   83  Linux

Kondisi Partisi Hardisk SDB

root@server [~]# fdisk -l /dev/sdb
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 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: 0x000390a6
   Device Boot      Start         End      Blocks   Id  System

Dari hasil pengecekan fdisk -l tersebut, dapat diketahui kondisi partisi hardisk sdb tersebut masih kosong atau belum dibuat partisi. Sehingga nanti perlu disipkan partisinya terlebih dahulu sesuai dengan persiapan dari Disk Layout.

Serial Number Hardisk

Penting untuk dicatat juga untuk serial number setiap hardisk agar dapat digunakan untuk membedakan mana serial number hardisk yang lama yang hendak diganti dengan serial number hardisk baru, mengingat apabila hardisk yang hendak diproses cloningnya tertukar, maka resikonya data akan terhapus (kosong). Penulis sangat menghimbau agar teliti dalam melakukan pengamatan dan penerapan merujuk dari dokumentasi artikel ini. Berikut perintah hdparm untuk pengecekan serial number hardisk. Serial number dibawah juga sudah dicatat oleh penulis di dalam persiapan Disk Layout.

root@server [~]# hdparm -i /dev/sda
/dev/sda:
Model=WDC WD5003AZEX-00K1GA0, FwRev=80.00A80, SerialNo=WD-WMC1S2958482
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
BuffType=unknown, BuffSize=unknown, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976771055
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-1,2,3,4,5,6,7
* signifies the current active mode
root@server [~]# hdparm -i /dev/sdb
/dev/sdb:
Model=Hitachi HDS721050CLA362, FwRev=JP2OA50E, SerialNo=JP8522HR3U4SXV
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
BuffType=DualPortCache, BuffSize=14111kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
AdvancedPM=yes: disabled (255) WriteCache=enabled
Drive conforms to: unknown: ATA/ATAPI-2,3,4,5,6,7
* signifies the current active mode

Partisi Hardisk SDB

Sebelum melakukan proses perpindahan data atau cloning maka perlu dipersiapkan terlebih dahulu partisi dari hardisk sdb sesuai dengan persiapan Disk Layout sebelumnya mengingat kondisi hardisk sdb masih belum memiliki partisinya.
Dalam tahapan ini, untuk prosesnya penulis detailkan menggunakan perintah fdisk sebagai berikut.

root@server [~]# fdisk -H 224 -S 56 /dev/sdb

Informasi tambahan, opsi dari fdisk -H 224 -S 56 tersebut guna merubah dan menyesuaikan geometry cylinder, head, sector apabila menggunakan hardisk 4096 byte serta menghindari error “Partition does not end on cylinder boundary”. Detail informasinya dapat merujuk pada artikel https://www.ibm.com/developerworks/library/l-4kb-sector-disks/ tersebut. Berikut detail proses dari tahapan partisi hardisk sdb menggunakan fdisk.

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-77867, default 1):
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-77867, default 77867): +300M
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (51-77867, default 51):
Using default value 51
Last cylinder, +cylinders or +size{K,M,G} (51-77867, default 77867): +10G
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1724-77867, default 1724):
Using default value 1724
Last cylinder, +cylinders or +size{K,M,G} (1724-77867, default 77867): +50G
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Selected partition 4
First cylinder (10084-77867, default 10084):
Using default value 10084
Last cylinder, +cylinders or +size{K,M,G} (10084-77867, default 77867):
Using default value 77867
Command (m for help): n
First cylinder (10084-77867, default 10084):
Using default value 10084
Last cylinder, +cylinders or +size{K,M,G} (10084-77867, default 77867): +50G
Command (m for help): n
First cylinder (18444-77867, default 18444):
Using default value 18444
Last cylinder, +cylinders or +size{K,M,G} (18444-77867, default 77867): +10G
Command (m for help): n
First cylinder (20117-77867, default 20117):
Using default value 20117
Last cylinder, +cylinders or +size{K,M,G} (20117-77867, default 77867): +8G
Command (m for help): n
First cylinder (21455-77867, default 21455):
Using default value 21455
Last cylinder, +cylinders or +size{K,M,G} (21455-77867, default 77867): +150G
Command (m for help): n
First cylinder (46534-77867, default 46534):
Using default value 46534
Last cylinder, +cylinders or +size{K,M,G} (46534-77867, default 77867):
Using default value 77867
Command (m for help): p
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000390a6
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          50      313572   83  Linux
/dev/sdb2              51        1723    10493056   83  Linux
/dev/sdb3            1724       10083    52433920   83  Linux
/dev/sdb4           10084       77867   425141248    5  Extended
/dev/sdb5           10084       18443    52433892   83  Linux
/dev/sdb6           18444       20116    10493028   83  Linux
/dev/sdb7           20117       21454     8391908   83  Linux
/dev/sdb8           21455       46533   157295460   83  Linux
/dev/sdb9           46534       77867   196526820   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Setelah proses partisi selesai maka lakukan proses pengecekan kembali untuk memastikan persiapan partisi hardisk sdb telah sesuai dengan hardisk sda.

root@server [~]# fdisk -l
Disk /dev/sda: 500.1 GB, 500106780160 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x91d03150
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          50      313572   83  Linux
/dev/sda2              51        1723    10493056   83  Linux
/dev/sda3            1724       10083    52433920   83  Linux
/dev/sda4           10084       77867   425141248    5  Extended
/dev/sda5           10084       18443    52433892   83  Linux
/dev/sda6           18444       20116    10493028   83  Linux
/dev/sda7           20117       21454     8391908   82  Linux swap / Solaris
/dev/sda8           21455       46533   157295460   83  Linux
/dev/sda9           46534       77867   196526820   83  Linux
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000390a6
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          50      313572   83  Linux
/dev/sdb2              51        1723    10493056   83  Linux
/dev/sdb3            1724       10083    52433920   83  Linux
/dev/sdb4           10084       77867   425141248    5  Extended
/dev/sdb5           10084       18443    52433892   83  Linux
/dev/sdb6           18444       20116    10493028   83  Linux
/dev/sdb7           20117       21454     8391908   83  Linux
/dev/sdb8           21455       46533   157295460   83  Linux
/dev/sdb9           46534       77867   196526820   83  Linux

Dari hasil pengecekan tersebut untuk partisi hardisk sda dan hardisk sdb nya telah sesuai, mulai dari partisi primary serta logicalnya termasuk dengan spacenya. Hanya saja masih belum sesuai pada sisi partisi swap, yaitu masih belum terdapat kesesuaian antara partisi sdb7 dengan sda7.

Partisi swap Hardisk SDB

Berikut persiapan proses dari tahapan partisi swap yang masih menggunakan perintah fdisk dan didokumentasikan detailnya sebagai berikut.

root@server [~]# fdisk /dev/sdb
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): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)
Command (m for help): l
 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT
1e  Hidden W95 FAT1
Command (m for help): t
Partition number (1-9): 7
Hex code (type L to list codes): 82
Changed system type of partition 7 to 82 (Linux swap / Solaris)
Command (m for help): p
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000390a6
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1          50      313572   83  Linux
/dev/sdb2              51        1723    10493056   83  Linux
/dev/sdb3            1724       10083    52433920   83  Linux
/dev/sdb4           10084       77867   425141248    5  Extended
/dev/sdb5           10084       18443    52433892   83  Linux
/dev/sdb6           18444       20116    10493028   83  Linux
/dev/sdb7           20117       21454     8391908   82  Linux swap / Solaris
/dev/sdb8           21455       46533   157295460   83  Linux
/dev/sdb9           46534       77867   196526820   83  Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.

Persiapan dd clone partisi /boot dan / terhadap Hardisk SDB

root@server [~]# dd if=/dev/sda1 of=/dev/sdb1
627144+0 records in
627144+0 records out
321097728 bytes (321 MB) copied, 13.8037 s, 23.3 MB/s
root@server [~]# dd if=/dev/sda2 of=/dev/sdb2
20986112+0 records in
20986112+0 records out
10744889344 bytes (11 GB) copied, 471.873 s, 22.8 MB/s

Dari hasil diatas dapat diketahui proses write speed cukup lambat dan tentu sangat tidak efektif apabila melakukan dd clone secara menyeluruh sebesar 500GB.

Format Partisi Hardisk SDB

Sebelumnya untuk partisi “/boot” dan “/” di sisi hardisk sdb telah diproses perpindahan datanya menggunakan dd clone. Namun untuk partisi lainnya dalam artikel ini tidak didokumentasikan menggunakan dd karena dua alasan pertimbangan yang telah disampaikan sebelumnya dan juga telah disampaikan melalui persiapan Disk Layout yaitu melakukan proses formatting untuk partisi yang telah dipersiapkan dari tahapan sebelumnya. Khusus untuk sdb1 “/boot” dan sdb2 “/” tidak ikut serta di format karena sudah diproses dd clone. Berikut perintah untuk melakukan proses format partisi menggunakan mkfs.ext4.

root@server [~]# mkfs.ext4 -L /var /dev/sdb3
mke2fs 1.41.12 (17-May-2010)
Filesystem label=/var
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
3278576 inodes, 13108480 blocks
655424 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
401 block groups
32768 blocks per group, 32768 fragments per group
8176 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
        4096000, 7962624, 11239424
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 29 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

Dari detail perintah yang digunakan, mkfs.ext4 menggunakan file system ext4 untuk partisi yang diformat tersebut dengan diberikan label “/var” sesuai dengan persiapan Disk Layout. Selanjutnya lakukan proses format partisi lainnya yang telah dibuat di sisi hardisk sdb sesuai dengan persiapan Disk Layout.

Format Partisi swap Hardisk SDB

Khusus untuk formatting file sistem swap menggunakan perintah yang berbeda dengan partisi lainnya, yakni menggunakan mkswap. Berikut detail perintahnya untuk partisi sdb7 sesuai dengan persiapan Disk Layout termasuk dengan pemberian label swap partisinya sebagai berikut.

root@server [~]# mkswap -L swap /dev/sdb7
Setting up swapspace version 1, size = 8391904 KiB
LABEL=swap, UUID=ce3d61ab-1dfc-48e9-ac8a-ad905a3fb763

Mount Partisi Hardisk SDB

Setelah Proses partisi dan formatting partisi selesai, selanjutnya proses mounting seluruh partisi-partisi hardisk sdb terlebih dahulu dibawah direktori sementara atau direktori “/mnt” sebelum siap menampung data dari masing-masing partisi hardisk sda.

root@server [~]# mount /dev/sdb2 /mnt/
root@server [~]# mount /dev/sdb1 /mnt/boot/
root@server [~]# mount /dev/sdb3 /mnt/var/
root@server [~]# mount /dev/sdb5 /mnt/usr/
root@server [~]# mount /dev/sdb6 /mnt/tmp
root@server [~]# mount /dev/sdb8 /mnt/home/
root@server [~]# mount /dev/sdb9 /mnt/backup/

Setelah seluruh paritisi termount, baik hardisk sda ataupun sdb maka akan tertampil sebagai berikut.

root@server [~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       9.8G  405M  8.9G   5% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sda9       185G   60M  175G   1% /backup
/dev/sda1       289M   56M  218M  21% /boot
/dev/sda8       148G  786M  140G   1% /home
/dev/sda6       9.8G   23M  9.3G   1% /tmp
/dev/sda5        50G  5.5G   42G  12% /usr
/dev/sda3        50G  694M   46G   2% /var
/dev/sdb2       9.8G  405M  8.9G   5% /mnt
/dev/sdb3        50G  710M   46G   2% /mnt/var
/dev/sdb5        50G  5.8G   41G  13% /mnt/usr
/dev/sdb6       9.8G   23M  9.3G   1% /mnt/tmp
/dev/sdb8       148G  786M  140G   1% /mnt/home
/dev/sdb9       185G   60M  175G   1% /mnt/backup
/dev/sdb1       289M   56M  218M  21% /mnt/boot

Sinkronisasi Data Hardisk

Setelah semua siap, selanjutnya proses sinkronisasi data dari setiap partisi hardisk sda terhadap partisi hardisk sdb. Khusus untuk partisi sda1 “/boot” terhadap sdb1 “/mnt/boot” dan sda2 “/” terhadap sdb2 “/mnt” tidak diproses karena sudah melalui dd clone pada proses sebelumnya.

root@server [~]# rsync -avHP /var/ /mnt/var/
root@server [~]# rsync -avHP /usr/ /mnt/usr/
root@server [~]# rsync -avHP /tmp/ /mnt/tmp/
root@server [~]# rsync -avHP /home/ /mnt/home/
root@server [~]# rsync -avHP /backup/ /mnt/backup/

Informasi tambahan, penggunakan perintah “rsync -avHP sumber_data/ tujuan_data/” dengan “rsync -avHP sumber_data tujuan_data/” akan berbeda hasilnya. Jika direktori sumber_data/ (menggunakan ‘/’ diujung argument) maka data-data di dalam direktori/subdirektorinya saja yang akan dipindahkan, tidak beserta dengan direktori utamanya, hasilnya nanti akan tersimpan menjadi tujuan_data/isi-sumber_data. Namun apabila tanpa menggunakan ‘/’ diujung argument, misal sumber_data saja maka direktori sumber_data nya pun akan ikut tersinkronisasi terhadap direktori tujuan_data sehingga nanti akan tersimpan tujuan_data/sumber_data/isi-sumber_data.

Label dan UUID Check

Salah satu fungsi dari proses labeli ng adalah sebagai acuan automounting partisi melalui fstab pada saat server mengalami proses booting atau rebooting. Proses pengecekan labelnya menggunakan perintah blkid sebagai berikut.

root@server [~]# blkid |grep /dev/sda
/dev/sda1: UUID="f255640a-27a5-423b-97df-3d14742f51ce" TYPE="ext4"
/dev/sda2: UUID="6d062fc6-a686-4038-b2d1-36814ed39707" TYPE="ext4"
/dev/sda3: UUID="3a7e90df-07e7-4801-8bca-7f1c846a851f" TYPE="ext4"
/dev/sda5: UUID="f3f14817-4c6f-403a-bc68-4a60209d3b59" TYPE="ext4"
/dev/sda6: UUID="f0e48ca7-8938-42df-b04f-ec52a0fe3335" TYPE="ext4"
/dev/sda7: UUID="3b3b7b12-3ae9-449c-a681-0cfddefbbdf7" TYPE="swap"
/dev/sda8: UUID="cb3323c9-8390-4701-863f-992b44278f1a" TYPE="ext4"
/dev/sda9: UUID="9fe988f3-456f-4b97-824b-76ab7f5ff78d" TYPE="ext4"
root@server [~]# blkid |grep /dev/sdb
/dev/sdb1: UUID="f255640a-27a5-423b-97df-3d14742f51ce" TYPE="ext4"
/dev/sdb2: UUID="6d062fc6-a686-4038-b2d1-36814ed39707" TYPE="ext4"
/dev/sdb3: LABEL="/var" UUID="b7655c77-cd2d-409b-baff-10c22ad04933" TYPE="ext4"
/dev/sdb5: LABEL="/usr" UUID="6c4a2be9-7f9e-4e23-bbde-92342ef773e8" TYPE="ext4"
/dev/sdb6: LABEL="/tmp" UUID="bf9f4883-2f02-42d0-9d40-f57dcb3018cd" TYPE="ext4"
/dev/sdb7: LABEL="swap" UUID="ce3d61ab-1dfc-48e9-ac8a-ad905a3fb763" TYPE="swap"
/dev/sdb8: LABEL="/home" UUID="3050a14a-6391-4164-9bd6-adc29045562d" TYPE="ext4"
/dev/sdb9: LABEL="/backup" UUID="75d3e5fb-e28b-4c0c-9dd1-504b0151167c" TYPE="ext4"

Dari hasilnya diatas, untuk partisi-partisi hardisk sda tidak menggunakan label sehingga acuan automounting nya menggunakan uuid yang perlu di baca melalui fstab, namun untuk hardisk sdb akan didokumentasikan menggunakan label guna memudahkan penamaan identitas partisi suatu hardisk.
Untuk partisi sdb1 dan sdb2 di sisi hardisk sdb masih belum memiliki label, oleh karenanya bisa ditambahkan terlebih dahulu menggunakan perintah e2label berikut.

root@server [~]# e2label /dev/sdb1 /boot
root@server [~]# e2label /dev/sdb2 /

Setelahnya bisa dicek kembali label-label partisi di sisi hardisk sdb menggunakan perintah blkid kembali.

root@server [~]# blkid |grep /dev/sdb
/dev/sdb1: LABEL="/boot" UUID="f255640a-27a5-423b-97df-3d14742f51ce" TYPE="ext4"
/dev/sdb2: LABEL="/" UUID="6d062fc6-a686-4038-b2d1-36814ed39707" TYPE="ext4"
/dev/sdb3: LABEL="/var" UUID="b7655c77-cd2d-409b-baff-10c22ad04933" TYPE="ext4"
/dev/sdb5: LABEL="/usr" UUID="6c4a2be9-7f9e-4e23-bbde-92342ef773e8" TYPE="ext4"
/dev/sdb6: LABEL="/tmp" UUID="bf9f4883-2f02-42d0-9d40-f57dcb3018cd" TYPE="ext4"
/dev/sdb7: LABEL="swap" UUID="ce3d61ab-1dfc-48e9-ac8a-ad905a3fb763" TYPE="swap"
/dev/sdb8: LABEL="/home" UUID="3050a14a-6391-4164-9bd6-adc29045562d" TYPE="ext4"
/dev/sdb9: LABEL="/backup" UUID="75d3e5fb-e28b-4c0c-9dd1-504b0151167c" TYPE="ext4"

Label Partisi fstab Hardisk SDB

File konfigurasi /etc/fstab berfungsi melakukan automounting suatu partisi beserta dengan filesistemnya. Karena pembahasan dokumentasi artikel ini adalah cloning disk untuk pergantian hardisk sda lama dengan hardisk sdb baru maka tentu informasi uuid setiap partisi hardisk sda lama harus diganti menjadi uuid setiap partisi hardisk baru atau sdb. Karena uuid bersifat identitas berupa bilangan hexacode, maka akan digantikan dengan label untuk memudahkan penamaan setiap partisi hardisk baru atau sdb agar pada saat server melakukan proses booting atau rebooting sistem, maka fstab akan mengenali partisi hardisk baru atau sdb melalui label yang telah dibuat dan dicocokan dari hasil blkid sebelumnya.
Karena hardisk baru atau sdb termount di “/mnt” maka lokasi file konfigurasinya tidak di “/etc/fstab” (karena sama dengan hardisk lama atau sda) melainkan di /dev/sdb2 atau di “/mnt/etc/fstab” mengingat lokasi fstab hardisk sdb tersimpan didalam direktori “/mnt/etc” hasil dari mounting /dev/sdb2 terhadap “/mnt”.

root@server [~]# more /mnt/etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Mar  3 16:58:23 2016
#
# 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
#
UUID=6d062fc6-a686-4038-b2d1-36814ed39707       /       ext4    usrjquota=quota.user,jqfmt=vfsv0        1       1
UUID=9fe988f3-456f-4b97-824b-76ab7f5ff78d /backup                 ext4    defaults        1 2
UUID=f255640a-27a5-423b-97df-3d14742f51ce /boot                   ext4    defaults        1 2
UUID=cb3323c9-8390-4701-863f-992b44278f1a       /home   ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
UUID=f0e48ca7-8938-42df-b04f-ec52a0fe3335 /tmp                    ext4    defaults        1 2
UUID=f3f14817-4c6f-403a-bc68-4a60209d3b59       /usr    ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
UUID=3a7e90df-07e7-4801-8bca-7f1c846a851f       /var    ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
UUID=3b3b7b12-3ae9-449c-a681-0cfddefbbdf7 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

Secara default, fstab masih menggunakan uuid seperti yang telah disampaikan. Sebelum di edit atau diganti menggunakan label, baiknya file konfigurasi fstab yang asli dibackup terlebih dahulu.

root@server [~]# cp /mnt/etc/fstab /mnt/etc/fstab-asli

Kemudian edit fstab nya menggunakan teks editor untuk pergantian uuid menjadi label.

root@server [~]# vim /mnt/etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Mar  3 16:58:23 2016
#
# 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
#
LABEL="/"       /       ext4    usrjquota=quota.user,jqfmt=vfsv0        1       1
LABEL="/backup" /backup                 ext4    defaults        1 2
LABEL="/boot" /boot                   ext4    defaults        1 2
LABEL="/home"   /home   ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
LABEL="/tmp" /tmp                    ext4    defaults        1 2
LABEL="/usr"    /usr    ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
LABEL="/var"    /var    ext4    usrjquota=quota.user,jqfmt=vfsv0        1       2
LABEL="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

Reinstall GRUB Hardisk SDB

Sampai pada tahapan ini, untuk seluruh data hardisk sda sudah tersinkronisasikan terhadap hardisk sdb, baik melalui dd clone maupun rsync. Namun apabila server dipoweroff (shutdown) kemudian hardisk sda dilepas dan dicoba menggunakan hardisk sdb maka server belum dapat melakukan proses booting dikarenakan GRUB perlu di install ulang di sisi partisi sdb1 atau /boot hardisk baru. Pertama masuk kedalam mode grub terlebih dahulu kemudian lakukan proses reinstall dengan perintah sebagai berikut.

root@server [~]# grub
Probing devices to guess BIOS drives. This may take a long time.
GNU GRUB version 0.97 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]
gru> find /grub/stage1
find /grub/stage1
(hd0,0)
(hd1,0)
grub> root (hd1,0)
root (hd1,0)
Filesystem type is ext2fs, partition type 0x83
grub> setup (hd1)
setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 27 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+27 p (hd1,0)/grub/stage2 /grub/grub.conf"... succeeded
Done.
grub> quit
quit

Detail informasi terkait dengan proses reinstall grub dapat merujuk pada hyperlink ini. Silahkan bisa dicoba poweroff atau shutdown servernya, lepas hardisk sda kemudian dicoba poweron kembali dengan menggunakan hardisk sdb saja, secara otomatis hardisk sdb baru tersebut akan menjadi sda.

File System Check Partisi Hardisk SDB

Tahapan ini bersifat opsional namun direkomendasikan, yaitu fsck atau file system check yang berfungsi untuk melakukan reparasi setiap data yang telah di sinkronisasikan disisi hardisk sdb guna menghindari (apabila diteumkan) file yang korup yang dapat mengakibatkan gagal mounting suatu partisi oleh fstab pada saat server mengalami proses booting atau reboot, apabila di sisi fstab diaktifkan auto fsck. Terkait dengan proses fsck nya sendiri diperlukan unmounting filesytem untuk setiap partisinya terlebih dahulu.

root@server [~]# umount /mnt/var
root@server [~]# umount /mnt/usr/
root@server [~]# umount /mnt/tmp/
root@server [~]# umount /mnt/home/
root@server [~]# umount /mnt/backup/
root@server [~]# umount /mnt/boot/
root@server [~]# umount /mnt

Kemudian lakukan fsck untuk setiap partisi di sisi hardisk sdb sesuai dengan yang di perispakan di sisi Disk Layout, termasuk dengan partisi sdb1 yang nantinya akan menjadi “/boot” dan sdb2 yang nantinya akan menjadi “/”.

root@server [~]# fsck -f /dev/sdb1
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/: 44/78624 files (2.3% non-contiguous), 75452/313572 blocks

Percobaan Hasil Cloning Disk

Seluruh tahapan dan proses cloning disk sudah selesai. Silahkan bisa dicoba poweroff atau shutdown servernya, lepas hardisk sda kemudian poweron menggunakan hardisk sdb. Setelah server up, secara otomatis hardisk baru yang sebelumnya berada di posisi sdb akan menjadi disk file sistem yang aktif atau sda. Pastikan serial number sda nya sama dengan sdb pada persiapan Disk Layout sebelumnya mengingat hardisk baru yang dulu berada di posisi sdb sudah menjadi sda karena hardisk lamanya sudah dilepas.

root@server [~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       9.8G  405M  8.9G   5% /
tmpfs           3.9G     0  3.9G   0% /dev/shm
/dev/sda9       185G   60M  175G   1% /backup
/dev/sda2       9.8G  405M  8.9G   5% /boot
/dev/sda8       148G  786M  140G   1% /home
/dev/sda6       9.8G   23M  9.3G   1% /tmp
/dev/sda5        50G  5.8G   41G  13% /usr
/dev/sda3        50G  709M   46G   2% /var
root@server [~]# fdisk -l
Disk /dev/sda: 500.1 GB, 500107862016 bytes
224 heads, 56 sectors/track, 77867 cylinders
Units = cylinders of 12544 * 512 = 6422528 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000390a6
   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1          50      313572   83  Linux
/dev/sda2              51        1723    10493056   83  Linux
/dev/sda3            1724       10083    52433920   83  Linux
/dev/sda4           10084       77867   425141248    5  Extended
/dev/sda5           10084       18443    52433892   83  Linux
/dev/sda6           18444       20116    10493028   83  Linux
/dev/sda7           20117       21454     8391908   82  Linux swap / Solaris
/dev/sda8           21455       46533   157295460   83  Linux
/dev/sda9           46534       77867   196526820   83  Linux
root@server [~]# hdparm -i /dev/sda
/dev/sda:
 Model=Hitachi HDS721050CLA362, FwRev=JP2OA50E, SerialNo=JP8522HR3U4SXV
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=56
 BuffType=DualPortCache, BuffSize=14111kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=976773168
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 udma5 *udma6
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive conforms to: unknown:  ATA/ATAPI-2,3,4,5,6,7
 * signifies the current active mode