Tag Archives: Over-provisioning

Tentang SSD di Server

:: Solid State Disk (SSD) akhir-akhir ini makin menjadi alternatif HDD (hard disk drive) yang menarik. Performa yang sangat tinggi, berbagai masalahnya sudah dibereskan oleh para vendor, harganya makin murah, dukungan dari OS (operating system) makin baik, hemat listrik, bebas getaran (bisa dipasang dalam jumlah sangat banyak), dst. Namun, perkembangannya yang terlalu pesat & perbedaannya yang sangat fundamental (dibanding HDD) seringkali membuat bingung.

Terlampir adalah berbagai pertanyaan seputar SSD, berikut jawabannya. Semoga bermanfaat.

—————
Q: Buat apa pakai SSD ? Kan ada drive HDD tipe SAS kelas Enterprise 15K RPM ? Speednya sampai 300 MB/s lho !

A: HDD dikira cepat karena biasanya diukur dengan metode #Sequential read/write. Yaitu proses baca/tulis yang berurutan. Dan ini memang bisa cepat sekali jadinya. Di Linux biasanya menggunakan tool bernama dd. 

Namun, beban kerja di server jarang sekali yang Sequential. Mayoritas adalah Random / acak.

Nah, untuk beban kerja acak ini, performa HDD sangat rendah, karena sifatnya yang mekanik. Sehingga butuh waktu (seek time) untuk menuju ke lokasi baca/tulis berikutnya. SSD, karena sifatnya yang murni elektronik seperti RAM, sangat cepat disini.

Kecepatan proses operasi baca/tulis dikenal dengan istilah IOPS (Input Output Per Second). HDD paling cepat bisa mencapai sekitar 200 IOPS : https://en.wikipedia.org/wiki/IOPS#Mechanical_hard_drives

Sedangkan SSD kelas konsumen (retail) saja sudah bisa mencapai 20.000 IOPS. 100x lebih kencang, dan harganya malah lebih murah. 
Apalagi SSD yang kelas Enterprise, bisa mencapai 1.000.000 IOPS.

Karena itu, pada server dengan beban I/O yang besar, penggunaan SSD perlu untuk mulai dipertimbangkan.

—————
Q: Tapi, katanya kan SSD umurnya pendek? Bisa mati mendadak?

A: Secara ringkas, sebetulnya umur SSD malah bisa lebih panjang daripada HDD yang sifatnya mekanis. Karena firmware SSD terbaru sudah makin cerdas dibanding SSD generasi awal dulu. 

Salah satu review soal ini (daya tahan SSD) bisa dibaca disini : http://techreport.com/review/27909/the-ssd-endurance-experiment-theyre-all-dead/2

Dengan beban baca/tulis yang maksimal di endurance test tersebut, drive SSD ada yang bisa bertahan sampai nyaris 2 tahun. Dan jauh melebihi daya tahan yang dinyatakan oleh pembuatnya. 

Untuk penggunaan normal / server, bisa jauh lebih lama daripada itu. Apalagi untuk desktop.

—————
Q: Apakah TRIM itu ?

A: Di SSD, jika block yang akan ditulisi sudah ada sebagian terisi, maka perlu dihapus terlebih dahulu, baru kemudian ditulis lagi. Sehingga ini memperlambat proses Write : http://www.maximumpc.com/white-paper-the-trim-command/

Fitur TRIM memungkinkan OS (operating system) untuk memberitahu SSD, block mana saja yang sudah tidak digunakan. Maka, kemudian bisa dihapus oleh SSD. 

Sehingga ketika akan ditulis, tidak perlu melakukan proses penghapusan dulu.

Fitur TRIM membantu menjaga agar performa Write di drive SSD terus terjaga baik.

—————
Q: Bagaimana dukungan OS (Linux) terhadap SSD ?

A: Linux mulai bergerak cepat mendukung SSD sejak sekitar 2011. Berikut adalah daftar berbagai dukungan komponennya :

Filesystem  ext4, Btrfs, XFS, JFS : mendukung SSD. ext4 dianggap yang paling aman.
Filesystem F2FS : paling baik mendukung SSD. Namun dianggap masih eksperimental, belum cocok untuk production server.

Kernel Linux 3.12 (Nov 2013) : mendukung "queued TRIM"

Software RAID : dm, md, dan lvm sudah mendukung TRIM sejak 2013.

—————
Q: Apakah ada panduan Best Practices untuk SSD di Linux ?

A: Terlampir beberapa yang dapat kami temukan, silakan ditambahkan :

# Perlu dipertimbangkan untuk #tidak menggunakan opsi "discard" (automatic TRIM) pada filesystem, karena dapat mengganggu stabilitas performa I/O, terutama di saat beban tinggi (peak hours). Sebagai gantinya, jalankan tool "fstrim" di saat off peak.

# Gunakan I/O scheduler Noop atau Deadline. Linux secara default menggunakan I/O scheduler CFQ, yang di optimize untuk HDD. Namun kurang optimal untuk SSD.

echo deadline > /sys/block/sdXXX/queue/scheduler

# Parameter "atime" cukup banyak menyebabkan proses Write ke SSD. Gunakan "relatime", contoh: 

mount – o remount,relatime /
di /etc/fstab : /dev/sda1 / ext4 relatime,errors=remount-ro 0 1

# Atur agar tidak terlalu banyak melakukan swapping : sysctl -w vm.swappiness=10

# File log terlalu sering ditulis, ukurannya bisa besar sekali, dan bisa signifikan memperpendek umur SSD. Pindahkan saja ke HDD.

mkdir /mnt/hdd/log
cp -R /var/log/* /mnt/hdd/log/
mv /var/log /var/log-original
ln -s /mnt/hdd/log /var/log

# Pantau kondisi SDD via SMART : sudo smartctl -data -A /dev/sda

Perhatikan parameter Media_Wearout_Indicator (mungkin berbeda namanya pada produk yang berbeda), awalnya bernilai 100, dan terus berkurang. Jika sudah sekitar 10, pertimbangkan untuk mengganti SSD tersebut.

Reallocated_Sector_Count juga baik diperhatikan, jika mendadak jumlahnya naik drastis, ini adalah pertanda bahwa SSD tersebut mulai perlu diganti.

# Saat ini ada 3 jenis SSD (tipe NAND), yaitu SLC, MLC, dan TLC. Biasanya SLC adalah yang paling reliable, namun harganya juga paling mahal. TLC (Triple Level Cell) biasanya kapasitasnya paling besar, biasanya paling rendah lifetime nya. 
Namun, dengan makin baiknya firmware SSD, memang perbedaan antara SLC MLC TLC ini makin menipis.

# Jangan upgrade firmware SSD kecuali jika jelas sangat dibutuhkan : http://www.guru3d.com/news-story/after-samsung-840-evo-issues-now-the-850-pro-has-issues-too.html 

—————
Q: Apakah baik jika setup RAID (hardware) dengan menggunakan SSD ?

A: Ada beberapa potensi masalah yang perlu diperhatikan : 

(1) Performa : karena performa SSD sangat tinggi, banyak card RAID malah membuat lambat (menjadi bottleneck) : http://www.brentozar.com/archive/2013/08/load-testing-solid-state-drives-raid/ 

Satu SSD saja sudah sukses membuat overload card RAID di server Dell R720 di artikel tersebut. 
Apalagi jika ada banyak SSD dengan konfigurasi RAID0 atau RAID10.

Jangan sampai investasi SSD Anda menjadi percuma dan server tetap lambat, gara-gara card RAID nya.

(2) TRIM : Waspada, masih ada RAID hardware yang belum mendukung TRIM. Contoh: di server Dell, card RAID nya yaitu PERC Hx00 belum mendukung TRIM. Ganti menjadi PERC Hx30 (H730, H830, dst)

—————
Q: Card RAID di server saya tidak mendukung TRIM 🙁 dan sulit untuk menggantinya karena kendala budget / pengadaan / dst.

A: Lakukan teknik over-provisioning : https://en.wikipedia.org/wiki/Write_amplification#Over-provisioning

Over-provisioning adalah menyisakan sebagian kapasitas SSD / tidak digunakan. 
Contoh: pada drive 1 TB, over-provisioning 20% berarti kita hanya menggunakan kapasitas sebesar 800 GB.

Maka, sisa space 20% itu bisa dimanfaatkan oleh SSD untuk bad-block remapping, wear-leveling, dan GC (garbage collection). Semua ini membantu menjaga agar performa SSD tetap optimal.

—————
Q: Bagaimana cara mengukur performa HDD / SSD yang lebih menyerupai beban server yang sebenarnya ?

A: Tool bernama "fio" di Linux bisa menghitung kapasitas IOPS drive Anda. 

Untuk mengukur kinerja Random Write di drive Anda, jalankan perintah sbb :

fio –randrepeat=1 –ioengine=libaio –direct=1 –gtod_reduce=1 –name=test –filename=test –bs=4k –iodepth=64 –size=1G –readwrite=randwrite

Lalu perhatikan output "iops", disitu akan ditampilkan berapa kapasitas IOPS drive Anda yang sebenarnya.

—————

Semoga membantu mencerahkan. Koreksi / masukan silakan disampaikan melalui komentar. Terimakasih.

Post imported by Google+Blog for WordPress.