Cloning 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.
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
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
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 -ahP /var/ /mnt/var/ root@server [~]# rsync -ahP /usr/ /mnt/usr/ root@server [~]# rsync -ahP /tmp/ /mnt/tmp/ root@server [~]# rsync -ahP /home/ /mnt/home/ root@server [~]# rsync -ahP /backup/ /mnt/backup/
Informasi tambahan, penggunakan perintah “rsync -ahP sumber_data/ tujuan_data/” dengan “rsync -ahP 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
sumber:chrootid.com