A.
Mass-storage Structur
1. Gambaran Umum
1.1 Magnetic Disks
Disk magnetik menyediakan sebagian besar penyimpanan
sekunder untuk sistem komputer modern. Secara konseptual, magnetic
disk relatif sederhana (Gambar 1). Setiap piringan disk memiliki bentuk
melingkar datar, seperti CD. Diameter platter umum berkisar antara 1,8
hingga 3,5 inci. Dua permukaan piring dilapisi dengan bahan magnet. Kita
menyimpan informasi dengan merekam secara magnetis di atas pirina
jaringan
(Gambar 1 Mekanisme Moving-Head Disk )
Sebuah head read-write "melayang" tepat di atas setiap permukaan
setiap piring. Head melekat pada lengan disk yang menggerakkan semua
head sebagai satu unit. Permukaan piring secara logis dibagi menjadi trek
melingkar, yang dibagi menjadi beberapa sektor. Set trek yang pada satu
posisi lengan membentuk silinder. Mungkin ada ribuan silinder konsentris
dalam disk drive, dan setiap track dapat berisi ratusan sektor. Kapasitas
penyimpanan disk drive umum diukur dalam gigabyte.
Ketika disk sedang digunakan, motor penggerak berputar dengan
kecepatan tinggi. Kebanyakan drive berputar 60 hingga 250 kali per detik,
yang ditentukan dalam bentuk rotasi per menit (RPM). Drive umum
berputar pada 5.400, 7.200, 10.000, dan 15.000 RPM. Kecepatan disk
memiliki dua bagian. Transfer rate adalah laju di mana data mengalir
antara drive dan komputer. Waktu pemosisian, atau waktu akses acak,
terdiri dari dua bagian: waktu yang diperlukan untuk memindahkan lengan
disk ke silinder yang diinginkan, yang disebut waktu pencarian, dan waktu
yang diperlukan untuk sektor yang diinginkan untuk memutar ke head
disk, yang disebut latensi rotasi. Disk yang khas dapat mentransfer
beberapa megabyte data per detik, dan mereka memiliki waktu pencarian
dan latensi rotasi beberapa milidetik
Karena head disk melayang di atas bantalan udara yang sangat
tipis (diukur dalam mikron), ada bahaya bahwa head akan melakukan
kontak dengan permukaan disk. Meskipun piringan disk dilapisi dengan
lapisan pelindung tipis, head terkadang akan merusak permukaan
magnetik. Kecelakaan ini disebut kecelakaan head. Kecelakaan head
biasanya tidak dapat diperbaiki; seluruh disk harus diganti.
Disk dapat dilepas, memungkinkan disk yang berbeda dipasang
sesuai kebutuhan. Disk magnetik yang dapat dilepas umumnya terdiri dari
satu piring, yang disimpan dalam wadah plastik untuk mencegah
kerusakan saat tidak dalam disk drive. Bentuk lain dari removable disk
termasuk CD, DVD, dan Blu-ray disc serta removable flash-memory
device yang dikenal sebagai flash drive (yang merupakan tipe solid-state
drive).
Sebuah disk drive terpasang ke komputer oleh satu set kabel yang
disebut bus I / O. Beberapa jenis bus tersedia, termasuk advanced
technology attachment (ATA), serial ATA (SATA), eSATA, universal serial
bus (USB), dan Fibre Channel (FC). Transfer data pada bus dilakukan
oleh prosesor elektronik khusus yang disebut pengendali (Controllers.
Kontroler host adalah pengontrol di ujung komputer bus. Kontroler disk
dibangun ke setiap disk drive. Untuk melakukan operasi I / O disk,
komputer menempatkan perintah ke pengontrol host, biasanya
menggunakan port I / O yang dipetakan memori. Kontroler host kemudian
mengirimkan perintah melalui pesan ke pengontrol disk, dan pengontrol
disk mengoperasikan perangkat keras penggerak disk untuk menjalankan
perintah. Kontroler disk biasanya memiliki cache built-in. Transfer data
pada disk drive terjadi antara cache dan permukaan disk, dan transfer
data ke host, pada kecepatan elektronik cepat, terjadi antara cache dan
kontroler host.
1.2 Solid-State Disk (SSD)
Terkadang teknologi lama digunakan dengan cara baru ketika
ekonomi berubah atau teknologi berkembang. Contohnya adalah semakin
pentingnya hard disk solid state, atau SSD. Secara sederhana dijelaskan,
SSD adalah memori nonvolatile yang digunakan seperti harddisk. Ada
banyak variasi teknologi ini, dari DRAM dengan baterai untuk
memungkinkannya mempertahankan statusnya dalam kegagalan daya
melalui teknologi flash-memory seperti sel-sel satu tingkat / single-level
cell (SLC) dan multilevel cell (MLC) chip. SSD memiliki karakteristik yang
sama dengan hard disk tradisional tetapi dapat lebih diandalkan karena
mereka tidak memiliki bagian yang bergerak dan lebih cepat karena
mereka tidak memiliki waktu mencari atau latensi. Selain itu, mereka
mengonsumsi lebih sedikit daya. Namun, mereka lebih mahal per
megabyte daripada hard disk tradisional, memiliki kapasitas yang lebih
kecil daripada hard disk yang lebih besar, dan mungkin memiliki rentang
hidup yang lebih pendek daripada hard disk, jadi penggunaannya agak
terbatas. Salah Satu penggunaan untuk SSD adalah dalam array
penyimpanan, di mana mereka menyimpan metadata sistem file yang
membutuhkan kinerja tinggi. SSD juga digunakan di beberapa komputer
laptop untuk membuatnya lebih kecil, lebih cepat, dan lebih hemat energi.
Karena SSD dapat jauh lebih cepat daripada disk drive magnetik,
antarmuka bus standar dapat menyebabkan batas besar pada throughput.
Beberapa SSD dirancang untuk terhubung langsung ke bus sistem (PCI,
misalnya). SSD juga mengubah aspek tradisional lainnya dari desain
komputer. Beberapa sistem menggunakannya sebagai pengganti
langsung untuk disk drive, sementara yang lain menggunakannya sebagai
tier cache baru, memindahkan data antara disk magnetik, SSD, dan
memori untuk mengoptimalkan kinerja.
1.3 Pita Magnetik / Magnetic Tapes
Pita magnetik digunakan sebagai media penyimpanan sekunder
awal. Meskipun relatif permanen dan dapat menyimpan data dalam jumlah
besar, waktu aksesnya lambat dibandingkan dengan memori utama dan
disk magnetik. Selain itu, akses acak ke pita magnetik sekitar seribu kali
lebih lambat daripada akses acak ke disk magnetik, jadi pita tidak sangat
berguna untuk penyimpanan sekunder
Kaset digunakan terutama untuk cadangan, untuk penyimpanan
informasi yang jarang digunakan, dan sebagai media untuk mentransfer
informasi dari satu sistem ke sistem lainnya.
Rekaman disimpan dalam kumparan dan dililitkan atau diputar
melewati read-write head. memindahkan ke tempat yang benar pada
kaset dapat mengambil waktu, tetapi setelah diposisikan, tape drive dapat
menulis data dengan kecepatan yang sebanding dengan disk drive.
Kapasitas pita sangat bervariasi, tergantung pada jenis tape drive tertentu,
dengan kapasitas saat ini melebihi beberapa terabyte. Beberapa kaset
memiliki kompresi bawaan yang dapat melipatgandakan penyimpanan
efektif. Kaset dan driver mereka biasanya dikategorikan berdasarkan
lebar, termasuk 4, 8, dan 19 milimeter dan 1/4 dan 1/2 inci. Beberapa
dinamai menurut teknologi, seperti LTO-5 dan SDLT
2. Struktur Disk
Disk drive magnetik modern dialamatkan sebagai susunan blok
logis satu dimensi besar, di mana blok logis adalah unit transfer terkecil.
Ukuran blok logis biasanya 512 byte, meskipun beberapa disk bisa
diformat tingkat rendah untuk memiliki ukuran blok logis yang berbeda,
seperti 1.024 byte. Susunan satu dimensi dari blok-blok logis dipetakan ke
sektor-sektor disk secara berurutan. Sektor 0 adalah sektor pertama dari
trek pertama pada silinder terluar. Pemetaan berlangsung dalam urutan
melalui jalur itu, kemudian melalui sisa trek di silinder itu, dan kemudian
melalui sisa silinder dari terluar ke terdalam.
Dengan menggunakan pemetaan ini, kita dapat - paling tidak
secara teori - mengonversi nomor blok logis ke alamat disk gaya lama
yang terdiri dari nomor silinder, nomor lintasan dalam silinder itu, dan
nomor sektor dalam lintasan itu. Dalam prakteknya, sulit untuk melakukan
terjemahan ini, karena dua alasan. Pertama, sebagian besar disk memiliki
beberapa sektor yang rusak, tetapi pemetaan menyembunyikan ini
dengan mengganti sektor cadangan dari tempat lain pada disk. Kedua,
jumlah sektor per track tidak konstan pada beberapa drive.
Pada media yang menggunakan kecepatan linier konstan (CLV),
kerapatan bit per track seragam. Semakin jauh sebuah track berasal dari
pusat disk, semakin besar panjangnya, sehingga semakin banyak sektor
yang dapat dipegangnya. Ketika kita bergerak dari zona luar ke zona
dalam, jumlah sektor per track menurun. Trek di zona terluar biasanya
memiliki 40 persen lebih banyak sektor daripada trek di zona terdalam.
Drive meningkatkan kecepatan putarannya saat head bergerak dari luar
ke trek dalam untuk menjaga laju data yang sama bergerak di bawah
head. Metode ini digunakan dalam CD-ROM dan drive DVD-ROM. Atau,
kecepatan putaran disk dapat tetap konstan; dalam hal ini, kerapatan bit
menurun dari trek dalam ke trek luar (inner tracks to outer tracks ) untuk
menjaga data tetap konstan. Metode ini digunakan dalam hard disk dan
dikenal sebagai Constant Angular Velocity (CAV).
Jumlah sektor per track telah meningkat seiring dengan
meningkatnya teknologi disk, dan zona terluar dari disk biasanya memiliki
beberapa ratus sektor per track. Demikian pula, jumlah silinder per disk
telah meningkat; disk besar memiliki puluhan ribu silinder.
3. Disk Attachment
Komputer mengakses penyimpanan dalam dua cara. Salah satu
caranya adalah melalui port I / O (atau Host-Attached Storage); ini biasa
terjadi pada sistem kecil. Cara lain adalah melalui remote host dalam
sistem file terdistribusi; ini disebut sebagai Network-Attached Storage.
3.1 Host-Attached Storage
Penyimpanan host-attached adalah penyimpanan yang diakses
melalui port I / O lokal. Port ini menggunakan beberapa teknologi. PC
desktop yang khas menggunakan arsitektur bus I / O yang disebut IDE
atau ATA. Arsitektur ini mendukung maksimal dua drive per I / O bus.
Protokol yang lebih baru dan serupa yang telah menyederhanakan
pengkabelan adalah SATA.
Workstation dan server high-end umumnya menggunakan
arsitektur I / O yang lebih canggih seperti fibre channel (FC), arsitektur
serial berkecepatan tinggi yang dapat beroperasi melalui serat optik atau
kabel tembaga empat-konduktor. Ia memiliki dua varian. Salah satunya
adalah large switches fabric yang mempunyai ruang alamat 24-bit. Varian
ini diperkirakan akan mendominasi di masa depan dan merupakan dasar
dari jaringan area penyimpanan / storage area network (SAN). Karena
ruang alamat yang besar dan sifat komunikasi yang terputus, multiple host
dan perangkat penyimpanan (storage) dapat melekat pada struktur,
memungkinkan fleksibilitas yang besar dalam komunikasi I / O. Varian FC
lainnya adalah Arbitrated Loop (FC-AL) yang dapat menangani 126
perangkat (drive dan pengontrol).
Berbagai macam perangkat penyimpanan cocok untuk digunakan
sebagai penyimpanan yang terpasang di host. Di antaranya adalah hard
disk drive, array RAID, dan CD, DVD, dan drive tape. Perintah I / O yang
memprakarsai transfer data ke perangkat penyimpanan terpasang-host
membaca dan menulis blok data logis yang diarahkan ke unit
penyimpanan yang diidentifikasi secara spesifik (seperti ID bus atau unit
logis target).
3.2 Network-Attached Storage
Network-Attached Storage (NAS) device adalah sistem
penyimpanan dengan tujuan khusus yang diakses dari jarak jauh melalui
jaringan data (Gambar 2). Klien mengakses penyimpanan yang terhubung
ke jaringan melalui antarmuka remote-procedure-call seperti NFS untuk
sistem UNIX atau CIFS untuk mesin Windows. Panggilan prosedur jarak
jauh (RPC) dilakukan melalui TCP atau UDP melalui jaringan IP -
biasanya jaringan area lokal yang sama (LAN) yang membawa semua lalu
lintas data ke klien. Dengan demikian, mungkin lebih mudah untuk
menganggap NAS hanya sebagai protokol akses penyimpanan. Unit
penyimpanan yang terhubung ke jaringan biasanya diimplementasikan
sebagai larik RAID dengan perangkat lunak yang mengimplementasikan
antarmuka RPC.
(Gambar 2 Network-Attached Storage)
Penyimpanan yang terhubung ke jaringan menyediakan cara yang
nyaman untuk semua komputer di LAN untuk berbagi kumpulan
penyimpanan dengan kemudahan penamaan dan akses yang sama
dengan menikmati penyimpanan terpasang host lokal. Namun, cenderung
kurang efisien dan memiliki kinerja yang lebih rendah daripada beberapa
opsi penyimpanan yang terhubung langsung.
iSCSI adalah protokol penyimpanan jaringan-terpasang terbaru.
Intinya, ia menggunakan protokol jaringan IP untuk membawa protokol
SCSI. Dengan demikian, jaringan - bukan kabel SCSI - dapat digunakan
sebagai interkoneksi antara host dan penyimpanannya. Akibatnya, host
dapat memperlakukan penyimpanan mereka seolah-olah terpasang
langsung, meskipun penyimpanan jauh dari host.
3.3 Storage-Area Network
Salah satu kelemahan sistem penyimpanan yang terhubung ke
jaringan adalah bahwa operasi penyimpanan I / O mengkonsumsi
bandwidth pada jaringan data, sehingga meningkatkan latensi komunikasi
jaringan. Masalah ini bisa sangat akut dalam instalasi klien-server besar -
komunikasi antara server dan klien bersaing untuk bandwidth dengan
komunikasi antar server dan perangkat penyimpanan.
Sebuah jaringan area penyimpanan / Storage-Area Network (SAN)
adalah jaringan pribadi (menggunakan protokol penyimpanan daripada
protokol jaringan) yang menghubungkan server dan unit penyimpanan,
seperti yang ditunjukkan pada Gambar 3. Kekuatan SAN terletak pada
fleksibilitasnya. Beberapa host dan beberapa penyimpanan array dapat
melampirkan ke SAN yang sama, dan penyimpanan dapat secara dinamis
dialokasikan ke host. Sakelar SAN memungkinkan atau melarang akses
antara penghuni dan penyimpanan. Sebagai salah satu contoh, jika host
kehabisan ruang disk, SAN dapat dikonfigurasi untuk mengalokasikan
lebih banyak penyimpanan ke host tersebut. SAN memungkinkan klaster
server untuk berbagi penyimpanan yang sama dan untuk array
penyimpanan untuk menyertakan beberapa koneksi host langsung. SAN
biasanya memiliki lebih banyak port - serta port yang lebih mahal -
daripada array penyimpanan.
FC adalah interkoneksi SAN yang paling umum, meskipun
kesederhanaan iSCSI meningkatkan penggunaannya. Interkoneksi SAN
lainnya adalah InfiniBand - arsitektur bus tujuan khusus yang
menyediakan dukungan perangkat keras dan perangkat lunak untuk
jaringan interkoneksi berkecepatan tinggi untuk server dan unit
penyimpanan.
(Gambar 3)
4. Disk Scheduling
Salah satu tanggung jawab sistem operasi adalah dengan
menggunakan perangkat keras secara efisien. Untuk disk drive,
memenuhi tanggung jawab ini memerlukan waktu akses cepat dan
bandwidth disk yang besar. Untuk disk magnetik, waktu akses memiliki
dua komponen utama, seperti yang disebutkan dalam Bagian 10.1.1.
Waktu pencarian adalah waktu untuk lengan disk untuk memindahkan
head ke silinder yang berisi sektor yang diinginkan. Latency rotasi adalah
waktu tambahan untuk disk untuk memutar sektor yang diinginkan ke
head disk. Bandwidth disk adalah jumlah total byte yang ditransfer, dibagi
dengan total waktu antara permintaan pertama untuk layanan dan
penyelesaian transfer terakhir. Kita dapat meningkatkan waktu akses dan
bandwidth dengan mengelola urutan di mana permintaan I / O disk
dilayani.
Setiap kali suatu proses membutuhkan I / O ke atau dari disk, ia
mengeluarkan panggilan sistem ke sistem operasi. Permintaan tersebut
menentukan beberapa bagian informasi:
Apakah operasi ini merupakan input atau output
Apa alamat disk untuk transfer tersebut
Apa alamat memori untuk transfer itu
Berapa jumlah sektor yang akan ditransfer.
Jika drive disk dan kontroler yang diinginkan tersedia, permintaan
dapat segera dilayani. Jika drive atau pengendali sibuk, setiap permintaan
baru untuk layanan akan ditempatkan dalam antrian permintaan tertunda
untuk drive itu.
Untuk sistem multiprogramming dengan banyak proses, antrian
disk mungkin sering memiliki beberapa permintaan yang tertunda. Jadi,
ketika satu permintaan selesai, sistem operasi memilih permintaan yang
menunggu untuk layanan berikutnya. Bagaimana sistem operasi membuat
pilihan ini? Salah satu dari beberapa algoritma penjadwalan disk dapat
digunakan, dan kami mendiskusikannya selanjutnya.
4.1 FCFS Scheduling
(FCFS) algoritma. Algoritma ini secara intrinsik adil, tetapi pada
umumnya tidak memberikan layanan tercepat. Pertimbangkan,
misalnya, antrian disk dengan permintaan untuk I / O untuk memblok
silinder dalam urutan itu. Jika head disk awalnya pada silinder 53,
pertama-tama akan bergerak dari 53 ke 98, kemudian ke 183, 37, 122,
14, 124, 65, dan akhirnya menjadi 67, untuk gerakan head total 640
silinder. Jadwal ini digambarkan pada Gambar.4.
Wild swing dari 122 ke 14 dan kemudian kembali ke 124
menggambarkan masalah dengan jadwal ini. Jika permintaan untuk
silinder 37 dan 14 bisa dilayani bersama-sama, sebelum atau setelah
permintaan untuk 122 dan 124, yang total pergerakan head dapat
menurun secara substansial, dan kinerja bisa demikian ditingkatkan.
(Gambar 4 FCFS Disk Scheduling).
4.2 SSTF Scheduling.
Tampaknya masuk akal untuk melayani semua permintaan
dekat dengan posisi head saat ini sebelum memindahkan head jauh
untuk melayani permintaan lain. Asumsi ini adalah dasar untuk
algoritma shortest-seek-time-first(SSTF). Algoritma SSTF memilih
permintaan dengan waktu pencarian paling sedikit dari posisi head
saat ini. Dengan kata lain, SSTF memilih permintaan yang tertunda
paling dekat dengan posisi head saat ini.
Untuk contoh antrian permintaan , permintaan paling dekat
dengan posisi head awal (53) adalah pada silinder 65. Setelah kita
berada di silinder 65, permintaan terdekat berikutnya adalah pada
silinder 67. Dari sana, permintaan di silinder 37 lebih dekat daripada
satu di 98, jadi 37 dilayani berikutnya. Melanjutkan, kami melayani
permintaan di silinder 14, kemudian 98, 122, 124, dan akhirnya 183
(Gambar 5). Metode penjadwalan ini menghasilkan gerakan head total
hanya 236 silinder — sedikit lebih dari sepertiga jarak yang diperlukan
untuk penjadwalan FCFS antrean permintaan ini. Jelas, algoritma ini
memberikan peningkatan kinerja yang substansial.
Penjadwalan SSTF pada dasarnya adalah bentuk penjadwalan
shortest-job-first (SJF); dan seperti SJF penjadwalan, dapat
menyebabkan kelaparan dari beberapa permintaan. Ingat bahwa
permintaan dapat datang kapan saja. Misalkan kita memiliki dua
permintaan dalam antrian, untuk silinder 14 dan 186, dan sementara
permintaan dari 14 sedang dilayani, permintaan baru di dekat 14 tiba.
permintaan baru ini akan dilayani berikutnya, yang membuat
permintaan di 186 menunggu. Sementara permintaan ini sedang
dilayani, permintaan lain yang mendekati 14 dapat tiba. Secara teori,
aliran permintaan yang terus-menerus dekat satu sama lain dapat
menyebabkan permintaan silinder 186 untuk menunggu tanpa batas.
Skenario ini menjadi semakin mungkin sebagai antrian tertunda-
permintaan tumbuh lagi.
(Gambar 5 Penjadwalan disk SSTF)
Meskipun algoritma SSTF adalah perbaikan substansial atas
algoritma FCFS, itu tidak optimal. Dalam contoh, kita bisa melakukan
lebih baik dengan menggerakkan head dari 53 ke 37, meskipun yang
terakhir tidak terdekat, dan kemudian ke 14, sebelum berbalik ke
layanan 65, 67, 98, 122, 124, dan 183. Strategi ini mengurangi total
pergerakan head 208 silinder.
4.3 SCAN Scheduling
Dalam algoritma SCAN, lengan disk mulai di salah satu ujung disk
dan bergerak menuju ujung yang lain, melayani permintaan saat
mencapai setiap silinder, sampai mencapai ujung disk yang lain. Di
ujung lain, arah gerakan head dibalik, dan servis berlanjut. head terus
scan bolak-balik melintasi disk. Algoritma SCAN kadang-kadang
disebut algoritma lift, karena lengan disk berperilaku persis seperti lift
di gedung, pertama-tama melayani semua permintaan yang naik dan
kemudian berbalik ke permintaan layanan dengan cara lain.
Mari kembali ke contoh kita untuk mengilustrasikan. Sebelum
menerapkan SCAN untuk menjadwalkan permintaan pada silinder 98,
183, 37, 122, 14, 124, 65, dan 67, kita perlu mengetahui arah gerakan
head di samping posisi head saat ini. Dengan asumsi bahwa lengan
disk bergerak ke arah 0 dan bahwa posisi head awal adalah 53, head
akan layanan berikutnya 37 dan kemudian 14. Pada silinder 0, lengan
akan mundur dan akan bergerak ke arah ujung disk yang lain,
menservis permintaan pada 65, 67, 98, 122, 124, dan 183 (Gambar 6).
Jika sebuah permintaan tiba di antrian hanya di depan head, itu akan
segera dilayani; permintaan tiba tepat di belakang head harus
menunggu sampai lengan bergerak ke ujung disk, membalik arah, dan
kembali.
(Gambar 6 SCAN disk scheduling)
Dengan asumsi distribusi permintaan silinder yang seragam,
pertimbangkan kepadatan permintaan ketika head mencapai satu
ujung dan membalik arah. Pada titik ini, relatif sedikit permintaan
segera di depan head, karena silinder-silinder ini baru saja diservis.
Kerapatan permintaan terbesar ada di ujung disk. Permintaan ini juga
telah menunggu terpanjang, jadi mengapa tidak pergi ke sana
pertama? Itu adalah gagasan dari algoritma berikutnya.
4.4 C-SCAN Scheduling
Circular SCAN (C-SCAN) scheduling adalah varian SCAN yang
dirancang untuk memberikan waktu tunggu yang lebih seragam.
Seperti SCAN, C-SCAN memindahkan head dari salah satu ujung disk
ke yang lain, melayani permintaan di sepanjang jalan. Ketika head
mencapai ujung yang lain, bagaimanapun, segera kembali ke awal
disk tanpa melayani permintaan apapun pada perjalanan pulang
Gambar 7). Algoritma penjadwalan C-SCAN pada dasarnya
memperlakukan silinder sebagai daftar melingkar yang membungkus
dari silinder terakhir ke yang pertama.
(Gambar .7 C-SCAN disk scheduling)
4.5 LOOK Scheduling
Seperti yang kami jelaskan, SCAN dan C-SCAN memindahkan
lengan disk melintasi lebar penuh disk. Dalam prakteknya, algoritma
tidak sering diimplementasikan dengan cara ini. Lebih umum lagi,
lengan hanya berjalan sejauh permintaan terakhir di setiap arah.
Kemudian, ia membalikkan arah dengan segera, tanpa pergi ke ujung
disk. Versi SCAN dan C-SCAN yang mengikuti pola ini disebut LOOK
dan penjadwalan C-LOOK, karena mereka mencari permintaan
sebelum melanjutkan untuk bergerak ke arah tertentu (Gambar 8).
(Gambar 8 C-LOOK disk scheduling.)
4.6 Selection of a Disk-Scheduling Algorithm
Mengingat begitu banyak algoritma penjadwalan disk,
bagaimana kita memilih yang terbaik? SSTF lebih umum dan memiliki
daya tarik alami karena meningkatkan kinerja dari FCFS. SCAN dan C-
SCAN berfungsi lebih baik untuk sistem yang menempatkan beban
berat pada disk, karena mereka cenderung menyebabkan masalah
kelaparan. Untuk daftar permintaan tertentu, kami dapat menentukan
urutan pengambilan yang optimal, tetapi perhitungan yang diperlukan
untuk menemukan jadwal optimal mungkin tidak membenarkan
penghematan atas SSTF atau SCAN. Namun, dengan algoritma
penjadwalan apa pun, kinerja sangat bergantung pada jumlah dan
jenis permintaan. Sebagai contoh, anggaplah bahwa antrian biasanya
hanya memiliki satu permintaan yang luar biasa. Kemudian, semua
algoritma penjadwalan berperilaku sama, karena mereka hanya
memiliki satu pilihan tempat untuk memindahkan head disk: semuanya
berperilaku seperti penjadwalan FCFS.
Permintaan untuk layanan disk dapat sangat dipengaruhi oleh
metode alokasi file. Sebuah program yang membaca file yang
dialokasikan secara berdekatan akan menghasilkan beberapa
permintaan yang berdekatan pada disk, menghasilkan gerakan head
yang terbatas. File yang terhubung atau diindeks, sebaliknya, mungkin
termasuk blok yang tersebar luas di disk, menghasilkan gerakan head
yang lebih besar. Lokasi direktori dan blok indeks juga penting. Karena
setiap file yang harus dibuka untuk digunakan, dan membuka file
membutuhkan mencari struktur direktori, direktori akan sering diakses.
Misalkan entri direktori berada di silinder pertama dan data file ada di
silinder terakhir. Dalam hal ini, head disk harus memindahkan seluruh
lebar disk. Jika entri direktori berada di silinder tengah, head harus
bergerak hanya setengah lebar. Caching direktori dan blok indeks di
memori utama juga dapat membantu mengurangi gerakan disk-arm,
terutama untuk permintaan baca. Karena kerumitan ini, algoritma
penjadwalan disk harus ditulis sebagai modul terpisah dari sistem
operasi, sehingga dapat diganti dengan algoritme yang berbeda jika
diperlukan. Entah SSTF atau LOOK adalah pilihan yang masuk akal
untuk algoritma default.
5 Disk Management
Sistem operasi bertanggung jawab untuk beberapa aspek lain dari
manajemen disk, juga. Di sini kita membahas inisialisasi disk, boot dari
disk, dan pemulihan blok buruk.
5.1 Disk Formatting
Disk magnetik baru adalah batu tulis kosong: itu hanya sebuah
piring dari bahan perekam magnetik. Sebelum disk dapat menyimpan
data, itu harus dibagi menjadi beberapa sektor yang dapat dibaca dan
ditulis oleh pengontrol disk. Proses ini disebut format tingkat rendah,
atau format fisik. Pemformatan tingkat rendah mengisi disk dengan
struktur data khusus untuk setiap sektor. Struktur data untuk sektor
biasanya terdiri dari header, area data (biasanya berukuran 512 byte),
dan sebuah trailer. Header dan trailer berisi informasi yang digunakan
oleh pengontrol disk, seperti nomor sektor dan kode koreksi kesalahan
(ECC) .Ketika pengontrol menulis sektor data selama I / O normal,
ECC diperbarui dengan nilai yang dihitung dari semua byte di area
data. Ketika sektor ini dibaca, ECC dihitung ulang dan dibandingkan
dengan nilai yang disimpan. Jika nomor yang disimpan dan dihitung
berbeda, ketidaksesuaian ini menunjukkan bahwa area data sektor
tersebut telah rusak dan sektor disk mungkin buruk (Bagian 10.5.3).
ECC adalah kode pengoreksi kesalahan karena berisi informasi yang
cukup, jika hanya beberapa bit data yang telah rusak, untuk
memungkinkan pengontrol untuk mengidentifikasi bit mana yang telah
berubah dan menghitung berapa nilai yang seharusnya. Ini kemudian
melaporkan kesalahan lunak yang dapat dipulihkan. Kontroler secara
otomatis melakukan pemrosesan ECC setiap kali suatu sektor dibaca
atau ditulis.
Sebagian besar hard disk memiliki format tingkat rendah di pabrik
sebagai bagian dari proses manufaktur. Format ini memungkinkan
pabrikan untuk menguji disk dan menginisialisasi pemetaan dari nomor
blok logis ke sektor bebas cacat pada disk. Untuk banyak cakram
keras, ketika pengontrol disk diinstruksikan untuk memformat disk
tingkat rendah, dapat juga diberi tahu berapa banyak bita ruang data
yang tersisa di antara tajuk dan cuplikan semua sektor. Biasanya
mungkin untuk memilih di antara beberapa ukuran, seperti 256, 512,
dan 1.024 byte. Memformat disk dengan ukuran sektor yang lebih
besar berarti lebih sedikit sektor yang dapat dimuat di setiap trek;
tetapi itu juga berarti lebih sedikit header dan trailer yang ditulis di
setiap trek dan lebih banyak ruang tersedia untuk data pengguna.
Beberapa sistem operasi hanya dapat menangani ukuran sektor 512
byte. Sebelum dapat menggunakan disk untuk menyimpan file, sistem
operasi masih perlu merekam struktur datanya sendiri pada disk. Ia
melakukannya dalam dua langkah. Langkah pertama adalah
mempartisi disk menjadi satu atau beberapa grup silinder. Sistem
operasi dapat memperlakukan setiap partisi seolah-olah itu adalah disk
yang terpisah. Misalnya, satu partisi dapat menyimpan salinan kode
eksekusi sistem operasi, sementara yang lain menyimpan file
pengguna. Langkah kedua adalah pemformatan logis, atau pembuatan
sistem file. Pada langkah ini, sistem operasi menyimpan struktur file
sistem-file awal ke dalam disk. Struktur data ini mungkin termasuk peta
ruang gratis dan dialokasikan dan direktori kosong awal.
5.2 Boot Block
Agar komputer dapat mulai berjalan — misalnya, ketika komputer
dinyalakan atau di-boot ulang — komputer harus memiliki program
awal untuk dijalankan. Program bootstrap awal ini cenderung
sederhana. Ini menginisialisasi semua aspek sistem, dari register CPU
ke pengendali perangkat dan isi dari memori utama, dan kemudian
memulai sistem operasi. Untuk melakukan tugasnya, program
bootstrap menemukan kernel sistem operasi pada disk, memuat kernel
itu ke dalam memori, dan melompat ke alamat awal untuk memulai
eksekusi sistem operasi. Untuk kebanyakan komputer, bootstrap
disimpan dalam memori hanya-baca (ROM). Lokasi ini nyaman, karena
ROM tidak perlu inisialisasi dan berada di lokasi tetap yang dapat
mulai dijalankan prosesor saat dihidupkan atau disetel ulang. Dan,
karena ROMis hanya membaca, itu tidak dapat terinfeksi oleh virus
komputer. Masalahnya adalah bahwa mengubah kode bootstrap ini
membutuhkan perubahan chip perangkat keras ROM. Untuk alasan ini,
kebanyakan sistem menyimpan program bootstrap loader kecil di ROM
boot yang tugas satu-satunya adalah memasukkan program bootstrap
penuh dari disk. Program bootstrap penuh dapat diubah dengan
mudah: versi baru hanya ditulis ke dalam disk. Program bootstrap
penuh disimpan di "blok boot" di lokasi tetap pada disk. Disk yang
memiliki partisi boot disebut disk boot atau disk sistem. Mari kita
pertimbangkan sebagai contoh proses boot di Windows. Pertama,
perhatikan bahwa Windows memungkinkan hard disk dibagi menjadi
partisi, dan satu partisi — diidentifikasi sebagai partisi boot — berisi
sistem operasi dan driver perangkat. Sistem Windows menempatkan
kode bootnya di sektor pertama pada hard disk, yang diistilahkan
dengan catatan boot master, atau MBR. Booting dimulai dengan
menjalankan kode yang bertempat tinggal di memori ROM sistem.
Kode ini mengarahkan sistem untuk membaca kode boot dari MBR.
Selain berisi kode boot, MBR berisi tabel daftar partisi untuk hard disk
dan bendera yang menunjukkan partisi mana sistem akan di-boot,
seperti yang diilustrasikan pada Gambar 9. Setelah sistem
mengidentifikasi partisi boot, ia membaca sektor pertama dari partisi itu
(yang disebut sektor boot) dan berlanjut dengan sisa proses boot, yang
meliputi memuat berbagai subsistem dan layanan sistem.
(Gambar 9 Booting dari disk pada Windows.)
5.3 Bad Block
Karena disk memiliki bagian yang bergerak dan toleransi kecil
(ingat bahwa head diska melayang tepat di atas permukaan disk),
mereka rentan terhadap kegagalan. Terkadang kegagalannya selesai;
dalam hal ini, disk perlu diganti dan kontennya dipulihkan dari media
cadangan ke disk baru. Lebih sering, satu atau lebih sektor menjadi
rusak. Kebanyakan disk bahkan berasal dari pabrik dengan blok buruk.
Tergantung pada disk dan pengontrol yang digunakan, blok ini
ditangani dengan berbagai cara. Disk yang lebih canggih lebih pintar
tentang pemulihan blok buruk. Pengontrol menyimpan daftar blok
buruk pada disk. Daftar ini diinisialisasi selama pemformatan tingkat
rendah di pabrik dan diperbarui selama masa pakai disk. Pemformatan
tingkat rendah juga menyisihkan sektor cadangan yang tidak terlihat
oleh sistem operasi. Kontroler dapat diberitahu untuk mengganti setiap
sektor buruk secara logis dengan salah satu sektor cadangan. Skema
ini dikenal sebagai sparing sektor atau forwarding.
Transaksi sektor buruk yang tipikal mungkin adalah sebagai berikut:
Sistem operasi mencoba membaca blok logis 87.
Controller menghitung ECC dan menemukan bahwa sektor
buruk. Ini melaporkan temuan ini ke sistem operasi.
Waktu berikutnya sistem reboot, perintah khusus dijalankan
untuk memberitahu controller untuk menggantikan sektor buruk
dengan cadangan.
Setelah itu, setiap kali sistem meminta blok logis 87, permintaan
tersebut diterjemahkan ke dalam alamat sektor pengganti oleh
controller.
Perhatikan bahwa pengalihan tersebut oleh controller bisa
membatalkan optimasi apapun dengan algoritma penjadualan disk
sistem operasi! Untuk alasan ini, sebagian besar disk diformat untuk
menyediakan beberapa sektor cadangan di setiap silinder dan silinder
cadangan juga. Ketika sebuah blok buruk dipetakan, controller
menggunakan sektor cadang dari silinder yang sama, jika
memungkinkan. Sebagai alternatif untuk menghemat sektor, beberapa
pengendali dapat diinstruksikan untuk mengganti blok yang buruk oleh
sektor yang tergelincir. Berikut ini sebuah contoh: Misalkan blok logis
17 menjadi rusak dan cadangan pertama yang tersedia mengikuti
sektor 202. Sektor tergelincir kemudian memetakan kembali semua
sektor dari 17 hingga 202, memindahkan semuanya ke satu titik.
Artinya, sektor 202 disalin ke cadangan, kemudian sektor 201 menjadi
202, lalu 200 menjadi 201, dan seterusnya, hingga sektor 18 disalin ke
sektor 19. Mengelompokkan sektor dengan cara ini membebaskan
ruang sektor 18 sehingga sektor 17 dapat dipetakan untuk itu.
6 SWAP-SPACE Management
Swap-space management adalah tugas tingkat rendah lainnya dari
sistem operasi. Memori virtual menggunakan ruang disk sebagai
perpanjangan dari memori utama. Karena akses disk jauh lebih lambat
daripada akses memori, menggunakan ruang swap secara signifikan
mengurangi kinerja sistem. Tujuan utama untuk desain dan
implementasi ruang swap adalah untuk memberikan throughput terbaik
untuk sistem memori virtual. Di bagian ini, kita membahas bagaimana
ruang swap digunakan, di mana ruang swap terletak di disk, dan
bagaimana ruang swap dikelola.
6.1 Swap-space Use
Ruang swap digunakan dalam berbagai cara oleh sistem
operasi yang berbeda, tergantung pada algoritma manajemen memori
yang digunakan. Sebagai contoh, sistem yang mengimplementasikan
swapping dapat menggunakan ruang swap untuk menyimpan
keseluruhan gambar proses, termasuk kode dan segmen data. Sistem
paging hanya dapat menyimpan halaman yang telah dikeluarkan dari
memori utama. Jumlah ruang swap yang diperlukan pada suatu sistem
dapat bervariasi dari beberapa megabyte ruang disk hingga gigabyte,
tergantung pada jumlah memori fisik, jumlah memori virtual yang
didukungnya, dan cara memori virtual digunakan.
Perhatikan bahwa mungkin lebih aman untuk melebih-lebihkan
daripada meremehkan jumlah ruang swap yang diperlukan, karena jika
sistem kehabisan ruang swap, ia mungkin terpaksa membatalkan
proses atau mungkin macet sepenuhnya. Terlalu melebih-lebihkan
membuang ruang disk yang dapat digunakan untuk file, tetapi tidak
membahayakan lainnya. Beberapa sistem merekomendasikan jumlah
yang harus disisihkan untuk ruang swap. Solaris, misalnya,
menyarankan pengaturan ruang swap yang sama dengan jumlah di
mana memori virtual melebihi memori fisik yang dapat diganti. Di masa
lalu, Linux telah menyarankan pengaturan ruang swap untuk
menggandakan jumlah memori fisik. Hari ini, keterbatasan itu hilang,
dan sebagian besar sistem Linux menggunakan ruang swap yang jauh
lebih sedikit. Beberapa sistem operasi — termasuk Linux —
memungkinkan penggunaan beberapa ruang swap, termasuk file dan
partisi swap khusus. Ruang swap ini biasanya ditempatkan pada disk
terpisah sehingga beban yang ditempatkan pada sistem I / O dengan
paging dan swapping dapat tersebar di bandwidth I / O sistem.
6.2 Swap-space location
Ruang swap dapat berada di salah satu dari dua tempat: dapat
dipahat dari sistem file normal, atau dapat berada di partisi disk yang
terpisah. Jika ruang swap hanyalah file besar dalam sistem file,
rutinitas sistem-file normal dapat digunakan untuk membuatnya, beri
nama, dan alokasikan ruangnya. Pendekatan ini, meskipun mudah
dilaksanakan, tidak efisien. Menavigasi struktur direktori dan struktur
data diskallokasi membutuhkan waktu dan (mungkin) akses disk
tambahan. Fragmentasi eksternal dapat sangat meningkatkan waktu
pertukaran dengan memaksa banyak usaha selama membaca atau
menulis gambar proses. Kita dapat meningkatkan kinerja dengan
menyimpan informasi lokasi blok dalam memori fisik dan dengan
menggunakan alat khusus untuk mengalokasikan blok berdekatan
secara fisik untuk file swap, tetapi biaya untuk melintasi struktur data
sistem file tetap ada.
Atau, ruang swap dapat dibuat dalam partisi mentah terpisah. Tidak
ada sistem file atau struktur direktori yang ditempatkan di ruang ini.
Sebaliknya, pengelola penyimpanan swap-space yang terpisah
digunakan untuk mengalokasikan dan mengalihkan blok dari partisi
mentah. Manajer ini menggunakan algoritma yang dioptimalkan untuk
kecepatan daripada untuk efisiensi penyimpanan, karena ruang swap
diakses lebih sering daripada sistem file (ketika digunakan).
Fragmentasi internal dapat meningkat, tetapi trade-off ini dapat
diterima karena umur data dalam ruang swap umumnya jauh lebih
pendek daripada data dalam sistem file. Karena ruang swap
diinisialisasi ulang pada saat boot, setiap fragmentasi berumur pendek.
Pendekatan baku-partisi menciptakan ruang swap dalam jumlah tetap
selama partisi disk. Menambahkan lebih banyak ruang swap
memerlukan baik partisi ulang disk (yang melibatkan pemindahan
partisi sistem file lain atau menghancurkannya dan memulihkannya
dari cadangan) atau menambahkan ruang swap lain di tempat lain.
Beberapa sistem operasi bersifat fleksibel dan dapat bertukar baik
dalam partisi mentah maupun di ruang file sistem. Linux adalah
contoh: kebijakan dan implementasi terpisah, yang memungkinkan
administrator mesin untuk memutuskan jenis pertukaran mana yang
akan digunakan. Trade-off adalah antara kemudahan alokasi dan
manajemen dalam sistem file dan kinerja pertukaran dalam partisi
mentah.
7 RAID Structure
Disk drive terus menjadi lebih kecil dan lebih murah, sehingga
sekarang secara ekonomis layak untuk memasang banyak disk ke sistem
komputer. Memiliki sejumlah besar disk dalam suatu sistem memberikan
peluang untuk meningkatkan laju di mana data dapat dibaca atau ditulis,
jika disk dioperasikan secara paralel. Lebih jauh lagi, pengaturan ini
menawarkan potensi untuk meningkatkan keandalan penyimpanan data,
karena informasi yang berlebihan dapat disimpan pada banyak disk.
Dengan demikian, kegagalan satu disk tidak menyebabkan hilangnya
data. Berbagai teknik disk-organisasi, secara kolektif disebut array
redundant dari disk independen (RAID), biasanya digunakan untuk
mengatasi masalah kinerja dan keandalan. Di masa lalu, RAID terdiri dari
disk kecil, murah dipandang sebagai alternatif hemat biaya ke disk yang
besar dan mahal. Hari ini, RAID digunakan untuk
keandalan mereka yang lebih tinggi dan tingkat transfer data yang lebih
tinggi, bukan karena alasan ekonomi. Oleh karena itu, I in RAID, yang
dulunya berarti "tidak mahal," sekarang berarti "independen."
7.1 Peningkatan Keandalan melalui Pengulangan (Improvement of
Reliability via Redundancy)
Pertama-tama, pertimbangkan keandalan RAID. Kemungkinan
bahwa beberapa disk yang keluar dari satu set disk N akan gagal jauh
lebih tinggi daripada kemungkinan bahwa satu disk tunggal akan
gagal. Misalkan waktu rata-rata kegagalan satu disk adalah 100.000
jam. Maka waktu rata-rata kegagalan beberapa disk dalam susunan
100 disk akan menjadi 100.000 / 100 = 1.000 jam, atau 41.66 hari,
yang tidak lama sekali! Jika kita hanya menyimpan satu salinan data,
maka setiap kegagalan disk akan mengakibatkan hilangnya sejumlah
besar data - dan tingkat kehilangan data yang tinggi tidak dapat
diterima.
Solusi untuk masalah keandalan adalah untuk memperkenalkan
redundansi; kami menyimpan informasi tambahan yang biasanya tidak
diperlukan tetapi yang dapat digunakan dalam hal kegagalan disk
untuk membangun kembali informasi yang hilang. Jadi, bahkan jika
disk gagal, data tidak hilang.
Pendekatan paling sederhana (tetapi paling mahal) untuk
memperkenalkan redundansi adalah menduplikasi setiap disk. Teknik
ini disebut mirroring. Dengan mirroring, disk logis terdiri dari dua disk
fisik, dan setiap penulisan dilakukan pada kedua disk. Hasilnya disebut
volume cermin. Jika salah satu disk dalam volume gagal, data dapat
dibaca dari yang lain. Data akan hilang hanya jika disk kedua gagal
sebelum disk gagal pertama diganti
Waktu rata-rata kegagalan volume cermin - di mana kegagalan
adalah hilangnya data - bergantung pada dua faktor. Salah satunya
adalah waktu rata-rata kegagalan disk individu. Yang lain adalah waktu
rata-rata untuk memperbaiki, yaitu waktu yang diperlukan (rata-rata)
untuk mengganti disk yang gagal dan untuk memulihkan data di
dalamnya. Anggaplah bahwa kegagalan kedua disk bersifat
independen; yaitu, kegagalan satu disk tidak terhubung dengan
kegagalan yang lain. Kemudian, jika waktu rata-rata kegagalan satu
disk adalah 100.000 jam dan waktu rata-rata untuk memperbaiki
adalah 10 jam, waktu rata-rata kehilangan data dari sistem disk
bercermin adalah 100, 0002 / (2 ∗ 10) = 500 ∗ 106 jam, atau 57.000
tahun!
Anda harus menyadari bahwa kita tidak dapat benar-benar
menganggap bahwa kegagalan disk akan menjadi independen.
Kegagalan daya dan bencana alam, seperti gempa bumi, kebakaran,
dan banjir, dapat mengakibatkan kerusakan pada kedua disk pada
saat yang bersamaan. Juga, cacat manufaktur dalam batch disk dapat
menyebabkan kegagalan yang berkorelasi. Ketika usia disk,
probabilitas kegagalan tumbuh, meningkatkan kemungkinan bahwa
disk kedua akan gagal sementara yang pertama sedang diperbaiki.
Terlepas dari semua pertimbangan ini, bagaimanapun, sistem
mirrored-disk menawarkan keandalan yang jauh lebih tinggi daripada
sistem disk tunggal.
Kegagalan daya adalah sumber kekhawatiran khusus, karena
mereka terjadi jauh lebih sering daripada bencana alam. Bahkan
dengan pencerminan disk, jika menulis sedang berlangsung ke blok
yang sama di kedua disk, dan daya gagal sebelum kedua blok
sepenuhnya ditulis, dua blok dapat berada dalam keadaan yang tidak
konsisten. Satu solusi untuk masalah ini adalah menulis satu salinan
terlebih dahulu, lalu yang berikutnya. Lainnya adalah menambahkan
cache solid-state nonvolatile RAM (NVRAM) ke susunan RAID. Cache
write-back ini dilindungi dari kehilangan data selama gangguan listrik,
sehingga penulisan dapat dianggap lengkap pada titik itu, dengan
asumsi NVRAM memiliki semacam perlindungan dan koreksi
kesalahan, seperti ECC atau mirroring.
7.2 Peningkatan Kinerja melalui Paralelisme (Improvement in
Performance via Parallelism)
Sekarang mari kita pertimbangkan bagaimana akses paralel ke
beberapa disk meningkatkan kinerja. Dengan disk mirroring, tingkat di
mana permintaan baca dapat ditangani berlipat ganda, karena
permintaan baca dapat dikirim ke salah satu disk (selama kedua disk
dalam pasangan berfungsi, karena hampir selalu demikian).
Kecepatan transfer setiap pembacaan sama dengan sistem disk
tunggal, tetapi jumlah pembacaan per satuan waktu telah berlipat
ganda.
Dengan banyak disk, kita dapat meningkatkan kecepatan transfer
(atau sebaliknya) dengan menggores data di seluruh disk. Dalam
bentuk yang paling sederhana, striping data terdiri dari membagi bit
dari setiap byte di beberapa disk; striping seperti ini disebut striping bit-
level. Sebagai contoh, jika kita memiliki array delapan disk, kita
menulis bit i dari setiap byte ke disk i. Array delapan disk dapat
diperlakukan sebagai disk tunggal dengan sektor-sektor yang delapan
kali ukuran normal dan, yang lebih penting, yang memiliki delapan kali
tingkat akses. Setiap disk berpartisipasi di setiap akses (baca atau
tulis); sehingga jumlah akses yang dapat diproses per detik hampir
sama dengan pada satu disk, tetapi setiap akses dapat membaca
delapan kali lebih banyak data dalam waktu yang sama seperti pada
satu disk.
Striping bit-level dapat digeneralisasikan untuk menyertakan
sejumlah disk yang merupakan kelipatan 8 atau membagi 8. Sebagai
contoh, jika kita menggunakan array dari empat disk, bit i dan 4 + i
setiap byte pergi ke disk i. Lebih lanjut, striping tidak perlu terjadi pada
level bit. Pada strip-level striping, misalnya, blok-blok dari suatu file di-
strip di beberapa disk; dengan n disk, blok i dari sebuah file masuk ke
disk (i mod n) + 1. Level-level lain dari striping, seperti byte suatu
sektor atau sektor-sektor blok, juga dimungkinkan. Strip-level striping
adalah yang paling umum.
Paralelisme dalam sistem disk, seperti yang dicapai melalui
striping, memiliki dua tujuan utama:
Tingkatkan throughput dari beberapa akses kecil (yaitu, akses
halaman) dengan load balancing.
Kurangi waktu respons dari akses besar.
7.3 Tingkat RAID
Pencerminan memberikan keandalan yang tinggi, tetapi mahal.
Striping memberikan tingkat transfer data yang tinggi, tetapi tidak
meningkatkan keandalan. Banyak skema untuk menyediakan
redundansi dengan biaya lebih rendah dengan menggunakan disk
striping dikombinasikan dengan bit "paritas" (yang kami gambarkan
dengan singkat) telah diusulkan. Skema ini memiliki trade-off biaya-
kinerja yang berbeda dan diklasifikasikan menurut level yang disebut
level RAID. Kami menggambarkan berbagai tingkatan di sini; (Gambar
11) menunjukkannya secara bergambar (dalam gambar, P
menunjukkan bit yang mengoreksi kesalahan dan C menunjukkan
salinan data yang kedua). Dalam semua kasus yang digambarkan
dalam gambar, data senilai empat disk disimpan, dan disk ekstra
digunakan untuk menyimpan informasi yang berlebihan untuk
pemulihan kegagalan.
Level RAID 0. Level RAID 0 mengacu pada array disk dengan
striping pada tingkat blok tetapi tanpa redundansi (seperti mirroring
atau bit paritas), seperti yang ditunjukkan pada Gambar 11 (a).
Level RAID 1. Level RAID 1 mengacu pada mirroring disk. Gambar
11 (b) menunjukkan organisasi cermin.
(Gambar 11)
Level RAID 2. Level RAID 2 juga dikenal sebagai organisasi error-
correcting-code (ECC) gaya memori. Sistem memori telah lama
mendeteksi kesalahan tertentu dengan menggunakan bit paritas.
Setiap byte dalam sistem memori mungkin memiliki bit paritas
terkait dengan itu yang mencatat apakah jumlah bit dalam byte
yang diset ke 1 adalah genap (parity = 0) atau ganjil (parity = 1).
Jika salah satu bit dalam byte rusak (baik 1 menjadi 0, atau 0
menjadi 1), paritas dari perubahan byte dan dengan demikian tidak
sesuai dengan paritas yang tersimpan. Demikian pula, jika bit
paritas yang disimpan rusak, itu tidak sesuai dengan paritas yang
dihitung. Dengan demikian, semua kesalahan bit tunggal dideteksi
oleh sistem memori. Skema koreksi kesalahan menyimpan dua
atau lebih bit tambahan dan dapat merekonstruksi data jika satu bit
rusak.
Ide ECC dapat digunakan secara langsung dalam array disk
melalui striping byte di disk. Sebagai contoh, bit pertama dari setiap
byte dapat disimpan dalam disk 1, bit kedua dalam disk 2, dan
seterusnya sampai bit kedelapan disimpan dalam disk 8; bit koreksi
kesalahan disimpan dalam disk lebih lanjut. Skema ini ditunjukkan
pada Gambar 11 (c), di mana disk yang berlabel P menyimpan bit-
bit koreksi kesalahan. Jika salah satu disk gagal, bit-bit sisa dari
byte dan bit-bit koreksi kesalahan terkait dapat dibaca dari disk lain
dan digunakan untuk merekonstruksi data yang rusak. Perhatikan
bahwa RAID level 2 hanya membutuhkan tiga overhead disk untuk
empat disk data, tidak seperti RAID level 1, yang membutuhkan
empat disk overhead.
Level RAID 3. Level RAID 3, atau organisasi bit-interleaved parity,
meningkat pada level 2 dengan mempertimbangkan fakta bahwa,
tidak seperti sistem memori, pengendali disk dapat mendeteksi
apakah sektor telah dibaca dengan benar, sehingga bit paritas
tunggal dapat digunakan untuk koreksi kesalahan serta untuk
deteksi. Idenya adalah sebagai berikut: Jika salah satu sektor
rusak, kita tahu persis sektor mana itu, dan kita dapat mengetahui
apakah setiap bit di sektor ini adalah 1 atau 0 dengan menghitung
paritas bit yang sesuai dari sektor di disk lainnya. Jika paritas bit
yang tersisa sama dengan paritas yang disimpan, bit yang hilang
adalah 0; sebaliknya, ini adalah 1. RAID level 3 sama baiknya
dengan level 2 tetapi lebih murah dalam jumlah disk ekstra yang
diperlukan (hanya memiliki satu-disk overhead), jadi level 2 tidak
digunakan dalam praktek. Level 3 ditunjukkan secara bergambar
pada Gambar 11 (d).
RAID level 3 memiliki dua keunggulan di atas level 1. Pertama,
penyimpanan over-head dikurangi karena hanya satu parity disk yang
diperlukan untuk beberapa disk reguler, sedangkan satu mirror disk
diperlukan untuk setiap disk di level 1. Kedua, sejak membaca dan
menulis dari satu byte tersebar di beberapa disk dengan striping data
N-way, kecepatan transfer untuk membaca atau menulis satu blok
adalah N kali secepat dengan level RAID 1. Di sisi negatif, RAID level
3 mendukung lebih sedikit I / Os per detik, karena setiap disk harus
berpartisipasi dalam setiap permintaan I / O.
Masalah kinerja lebih lanjut dengan RAID 3 - dan dengan
semua tingkat RAID berbasis paritas - adalah biaya komputasi dan
menulis paritas. Hasil overhead ini secara signifikan lebih lambat
menulis daripada dengan array RAID non-paritas. Untuk memoderasi
hukuman kinerja ini, banyak array penyimpanan RAID termasuk
pengontrol perangkat keras dengan perangkat keras paritas khusus.
Kontroler ini akan mematikan komputasi paritas dari CPU ke array.
Array memiliki cache NVRAM juga, untuk menyimpan blok sementara
paritas dihitung dan untuk buffer penulisan dari pengontrol ke spindle.
Kombinasi ini dapat membuat RAID paritas hampir secepat non-
paritas. Bahkan, sebuah array caching yang melakukan paritas RAID
dapat mengungguli RAID non-paritas non-caching.
Level RAID 4. Level RAID 4, atau organisasi paritas blok-interleaved,
menggunakan strip-level striping, seperti pada RAID 0, dan sebagai
tambahan membuat blok paritas pada disk terpisah untuk blok yang
sesuai dari N disk lain. Skema ini digambarkan pada Gambar 11 (e).
Jika salah satu disk gagal, blok paritas dapat digunakan dengan blok
yang sesuai dari disk lain untuk memulihkan blok dari disk yang gagal.
Blok baca hanya mengakses satu disk, memungkinkan
permintaan lain untuk diproses oleh disk lain. Dengan demikian, tingkat
transfer data untuk setiap akses lebih lambat, tetapi akses baca ganda
dapat dilanjutkan secara paralel, yang mengarah ke tingkat I / O
keseluruhan yang lebih tinggi. Kecepatan transfer untuk pembacaan
besar tinggi, karena semua disk dapat dibaca secara paralel. Tulisan
besar juga memiliki tingkat transfer tinggi, karena data dan paritas
dapat ditulis secara paralel. Tulisan independen kecil tidak dapat
dilakukan secara paralel. Suatu sistem operasi menulis data yang lebih
kecil dari satu blok mengharuskan pemblokiran dibaca, dimodifikasi
dengan data baru, dan ditulis kembali. Blok paritas juga harus
diperbarui. Ini dikenal sebagai siklus baca-ubah-tulis. Jadi, satu tulisan
membutuhkan empat akses disk: dua untuk membaca dua blok tua
dan dua untuk menulis dua blok baru. WAFL (yang kita bahas pada
Bab 12) menggunakan RAID level 4 karena level RAID ini
memungkinkan disk untuk ditambahkan ke set RAID secara mulus.
Jika disk yang ditambahkan diinisialisasi dengan blok yang hanya
berisi angka nol, maka nilai paritas tidak berubah, dan set RAID masih
benar.
Level RAID 5. Level RAID 5, atau paritas didistribusikan blok-
interleaved, berbeda dari level 4 di mana ia menyebarkan data dan
paritas di antara semua disk N +1, daripada menyimpan data dalam
disk N dan paritas dalam satu disk. Untuk setiap blok, salah satu disk
menyimpan paritas dan yang lain menyimpan data. Misalnya, dengan
array lima disk, paritas untuk blok n disimpan dalam disk (n mod 5) +1.
Blok n dari empat disk lainnya menyimpan data aktual untuk blok itu.
Pengaturan ini ditunjukkan pada Gambar 11 (f), di mana Ps
didistribusikan di semua disk. Blok paritas tidak dapat menyimpan
paritas untuk blok dalam disk yang sama, karena kegagalan disk akan
mengakibatkan hilangnya data serta paritas, dan karenanya kerugian
tidak dapat dipulihkan. Dengan menyebarkan paritas di semua disk di
set, RAID 5 menghindari potensi berlebihan dari paritas disk tunggal,
yang dapat terjadi dengan RAID 4. RAID 5 adalah sistem RAID paritas
yang paling umum
Level RAID 6. Level RAID 6, juga disebut skema redundansi P + Q,
sangat mirip dengan RAID level 5 tetapi menyimpan informasi yang
berlebihan untuk menjaga terhadap beberapa kegagalan disk. Alih-alih
paritas, kode koreksi kesalahan seperti kode Reed-Solomon
digunakan. Dalam skema yang ditunjukkan pada Gambar 11 (g), 2 bit
data redundan disimpan untuk setiap 4 bit data - dibandingkan dengan
1 bit paritas di level 5 - dan sistem dapat mentoleransi dua kegagalan
disk.
Level RAID 0 + 1 dan 1 + 0. Level RAID 0 + 1 mengacu pada
kombinasi level RAID 0 dan 1. RAID 0 menyediakan kinerja,
sementara RAID 1 memberikan keandalan. Secara umum, level ini
memberikan kinerja yang lebih baik daripada RAID 5. Hal ini biasa
terjadi di lingkungan di mana kinerja dan reliabilitas penting.
Sayangnya, seperti RAID 1, itu menggandakan jumlah disk yang
diperlukan untuk penyimpanan, jadi itu juga relatif mahal. Dalam RAID
0 + 1, satu set disk bergaris, dan kemudian garis itu dicerminkan ke
garis lain yang setara.
Opsi RAID lain yang menjadi tersedia secara komersial adalah
RAID level 1 + 0, di mana disk dipantulkan secara berpasangan dan
kemudian pasangan cermin yang dihasilkan bergaris-garis. Skema ini
memiliki beberapa keunggulan teoritis atas RAID 0 + 1. Sebagai
contoh, jika satu disk gagal dalam RAID 0 + 1, seluruh garis tidak
dapat diakses, hanya menyisakan garis lainnya. Dengan kegagalan
dalam RAID 1 + 0, satu disk tidak tersedia, tetapi disk yang
mencerminkan itu masih tersedia, seperti semua sisa disk (Gambar 12)
Banyak variasi telah diusulkan ke skema RAID dasar yang dijelaskan
di sini. Akibatnya, beberapa kebingungan mungkin ada tentang definisi
yang tepat dari level RAID yang berbeda.
(Gambar 12RAID 0 + 1 and 1 + 0.)
Implementasi RAID adalah bidang variasi lainnya.
Pertimbangkan lapisan berikut di mana RAID dapat
diimplementasikan.
Perangkat lunak manajemen volume dapat mengimplementasikan
RAID di dalam kernel atau pada lapisan perangkat lunak sistem.
Dalam hal ini, perangkat keras penyimpanan dapat menyediakan
fitur minimal dan masih menjadi bagian dari solusi RAID penuh.
Parity RAID cukup lambat ketika diimplementasikan dalam
perangkat lunak, jadi biasanya RAID 0, 1, atau 0 + 1 digunakan.
RAID dapat diimplementasikan dalam perangkat host bus-adapter
(HBA). Hanya disk yang terhubung langsung ke HBA yang dapat
menjadi bagian dari set RAID yang diberikan. Solusi ini murah
tetapi tidak terlalu fleksibel.
RAID dapat diimplementasikan dalam perangkat keras dari array
penyimpanan. Array penyimpanan dapat membuat set RAID dari
berbagai level dan bahkan dapat mengiris set ini menjadi volume
yang lebih kecil, yang kemudian disajikan ke sistem operasi. Sistem
operasi hanya perlu menerapkan sistem file pada masing-masing
volume. Array dapat memiliki beberapa koneksi tersedia atau dapat
menjadi bagian dari SAN, memungkinkan beberapa host untuk
memanfaatkan fitur array.
RAID dapat diimplementasikan pada layer SAN interkoneksi oleh
perangkat virtualisasi disk. Dalam hal ini, perangkat diletakkan di
antara penghuni dan penyimpanan. Ini menerima perintah dari
server dan mengelola akses ke penyimpanan. Ini bisa memberikan
pencerminan, misalnya, dengan menulis setiap blok ke dua
perangkat penyimpanan terpisah.
Fitur lain, seperti snapshot dan replikasi, dapat diimplementasikan
pada masing-masing level ini juga. Snapshot adalah tampilan sistem
file sebelum pembaruan terakhir terjadi. Replikasi melibatkan duplikasi
otomatis dari penulisan antara situs terpisah untuk redundansi dan
pemulihan bencana. Replikasi bisa sinkron atau asinkron. Dalam
replikasi sinkron, setiap blok harus ditulis secara lokal dan jauh
sebelum penulisan dianggap lengkap, sedangkan dalam replikasi
asynchronous, penulisan dikelompokkan bersama dan ditulis secara
berkala. Replikasi asynchronous dapat mengakibatkan kehilangan
data jika situs utama gagal, tetapi lebih cepat dan tidak memiliki
batasan jarak. Implementasi fitur-fitur ini berbeda tergantung pada
lapisan di mana RAID diimplementasikan. Misalnya, jika RAID
diimplementasikan dalam perangkat lunak, maka setiap host mungkin
perlu melakukan dan mengelola replikasi sendiri. Jika replikasi
diimplementasikan dalam larik penyimpanan atau di interkoneksi SAN,
bagaimanapun, maka apa pun sistem operasi host atau fiturnya, data
host dapat direplikasi. Salah satu aspek lain dari sebagian besar
implementasi RAID adalah disk atau disk cadangan panas. Sebuah
cadangan panas tidak digunakan untuk data tetapi dikonfigurasi untuk
digunakan sebagai pengganti jika terjadi kegagalan disk. Misalnya,
cadangan panas dapat digunakan untuk membangun kembali
sepasang cermin jika salah satu disk dalam pasangan gagal. Dengan
cara ini, tingkat RAID dapat dibangun kembali secara otomatis, tanpa
menunggu disk yang gagal untuk diganti. Mengalokasikan lebih dari
satu cadangan panas memungkinkan lebih dari satu kegagalan
diperbaiki tanpa intervensi manusia.
7.4 Memilih Level RAID
Mengingat banyak pilihan yang mereka miliki, bagaimana
perancang sistem memilih tingkat RAID? Salah satu pertimbangan
adalah membangun kembali kinerja. Jika sebuah disk gagal, waktu
yang dibutuhkan untuk membangun kembali datanya dapat menjadi
signifikan. Ini mungkin merupakan faktor penting jika pasokan data
yang berkelanjutan diperlukan, seperti dalam sistem database kinerja
tinggi atau interaktif. Lebih jauh lagi, membangun kembali kinerja
mempengaruhi waktu rata-rata untuk kegagalan. Rebuild kinerja
bervariasi dengan tingkat RAID yang digunakan. Membangun kembali
paling mudah untuk RAID level 1, karena data dapat disalin dari disk
lain. Untuk level lainnya, kita perlu mengakses semua disk lain dalam
array untuk membangun kembali data dalam disk yang gagal.
Membangun kembali kali bisa menjadi jam untuk RAID 5 membangun
kembali set disk besar. Level RAID 0 digunakan dalam aplikasi
berkinerja tinggi di mana kehilangan data tidak penting. RAID level 1
populer untuk aplikasi yang membutuhkan keandalan tinggi dengan
pemulihan cepat. RAID 0 + 1 dan 1 + 0 digunakan di mana kinerja dan
keandalan keduanya penting - misalnya, untuk database kecil. Karena
overhead ruang tinggi RAID 1, RAID 5 sering lebih disukai untuk
menyimpan volume data yang besar. Level 6 saat ini tidak didukung
oleh banyak implementasi RAID, tetapi harus menawarkan keandalan
yang lebih baik daripada level 5. Perancang sistem RAID dan
administrator penyimpanan harus membuat beberapa keputusan lain
juga. Sebagai contoh, berapa banyak disk yang harus di set RAID
yang diberikan? Berapa banyak bit yang harus dilindungi oleh setiap
bit paritas? Jika lebih banyak disk berada dalam array, kecepatan
transfer data lebih tinggi, tetapi sistem lebih mahal. Jika lebih banyak
bit dilindungi oleh bit paritas, ruang overhead karena bit paritas lebih
rendah, tetapi kemungkinan bahwa disk kedua akan gagal sebelum
disk gagal pertama diperbaiki lebih besar, dan itu akan menghasilkan
kehilangan data.
7.5 Ekstensi
Konsep RAID telah digeneralisasikan ke perangkat
penyimpanan lain, termasuk susunan pita, dan bahkan ke penyiaran
data melalui sistem nirkabel. Ketika diterapkan ke array kaset, struktur
RAID dapat memulihkan data bahkan jika salah satu kaset dalam array
rusak. Ketika diterapkan untuk penyiaran data, blok data dibagi
menjadi unit pendek dan disiarkan bersama dengan unit paritas. Jika
salah satu unit tidak diterima karena alasan apa pun, itu dapat
direkonstruksi dari unit lain. Umumnya, robot penggerak pita yang
berisi beberapa drive tape akan menggores data di semua drive untuk
meningkatkan throughput dan mengurangi waktu cadangan.
7.6 Masalah dengan RAID
Sayangnya, RAID tidak selalu menjamin bahwa data tersedia
untuk sistem operasi dan penggunanya. Penunjuk ke file bisa salah,
misalnya, atau pointer dalam struktur file bisa salah. Tulisan yang tidak
lengkap, jika tidak dipulihkan dengan benar, dapat menghasilkan data
yang korup. Beberapa proses lain secara tidak sengaja dapat menulis
ulang struktur sistem file juga. RAID melindungi terhadap kesalahan
media fisik, tetapi bukan kesalahan perangkat keras dan perangkat
lunak lainnya. Besarnya lanskap perangkat lunak dan bug perangkat
keras, itulah berapa banyak potensi bahaya untuk data pada suatu
sistem.
Sistem file ZFS Solaris mengambil pendekatan inovatif untuk
memecahkan masalah ini melalui penggunaan checksum - teknik yang
digunakan untuk memverifikasi integritas data. ZFS mempertahankan
checksum internal dari semua blok, termasuk data dan metadata.
Checksum ini tidak disimpan dengan blok yang sedang diperiksa.
Sebaliknya, mereka disimpan dengan pointer ke blok itu. (Lihat
Gambar 13.) Pertimbangkan sebuah inode - struktur data untuk
menyimpan metadata sistem file - dengan pointer ke datanya. Di
dalam inode adalah checksum dari setiap blok data. Jika ada masalah
dengan data, checksum akan salah, dan sistem file akan
mengetahuinya. Jika data dicerminkan, dan ada blok dengan
checksum yang benar dan satu dengan checksum yang salah, ZFS
akan secara otomatis memperbarui blok buruk dengan yang buruk.
Demikian pula, entri direktori yang menunjuk ke inode memiliki
checksum untuk inode. Setiap masalah dalam inode terdeteksi ketika
direktori diakses. Pemeriksaan ini berlangsung di semua struktur ZFS,
memberikan tingkat konsistensi, deteksi kesalahan, dan koreksi
kesalahan yang jauh lebih tinggi daripada yang ditemukan di set disk
RAID atau sistem file standar. Overhead tambahan yang dibuat oleh
perhitungan checksum dan siklus baca-modifikasi-tulis ekstra tidak
terlihat karena keseluruhan kinerja ZFS sangat cepat.
Gambar 13
Masalah lain dengan sebagian besar implementasi RAID
adalah kurangnya fleksibilitas. Pertimbangkan array penyimpanan
dengan dua puluh disk dibagi menjadi empat set lima disk. Setiap set
lima disk adalah set RAID level 5. Akibatnya, ada empat volume
terpisah, masing-masing memegang sistem file. Tapi bagaimana jika
satu sistem file terlalu besar untuk muat pada lima-disk RAID level 5
set? Dan bagaimana jika sistem file lain membutuhkan ruang yang
sangat sedikit? Jika faktor-faktor tersebut diketahui sebelumnya,
maka disk dan volume dapat dialokasikan dengan benar. Sangat
sering, bagaimanapun, penggunaan disk dan persyaratan berubah
seiring waktu. Bahkan jika array penyimpanan memungkinkan
seluruh set 20 disk untuk dibuat sebagai satu set RAID besar,
masalah lain bisa muncul. Beberapa volume berbagai ukuran bisa
dibuat di lokasi. Tetapi beberapa pengelola volume tidak
mengizinkan kami mengubah ukuran volume. Dalam hal ini, kita akan
ditinggalkan dengan masalah yang sama yang dijelaskan di atas -
ukuran sistem file yang tidak cocok. Beberapa manajer volume
memungkinkan perubahan ukuran, tetapi beberapa sistem file tidak
memungkinkan untuk pertumbuhan atau penyusutan sistem file.
Volume dapat mengubah ukuran, tetapi sistem file perlu dibuat ulang
untuk memanfaatkan perubahan tersebut.
ZFS menggabungkan manajemen file-sistem dan manajemen
volume ke dalam unit yang menyediakan fungsionalitas lebih besar
daripada pemisahan tradisional dari fungsi-fungsi tersebut. Disk, atau
partisi disk, dikumpulkan bersama melalui set RAID ke dalam kolam
penyimpanan. Sebuah pool dapat menyimpan satu atau lebih file
sistem ZFS. Ruang gratis seluruh kolam tersedia untuk semua sistem
file di dalam kolam itu. ZFS menggunakan model memori malloc ()
dan gratis () untuk mengalokasikan dan melepaskan penyimpanan
untuk setiap sistem file karena blok digunakan dan dibebaskan dalam
sistem file. Akibatnya, tidak ada batasan buatan pada penggunaan
penyimpanan dan tidak perlu merelokasi sistem file antara volume
atau mengubah ukuran volume. ZFS memberikan kuota untuk
membatasi ukuran sistem file dan reservasi untuk memastikan
bahwa sistem file dapat tumbuh dengan jumlah tertentu, tetapi
variabel-variabel tersebut dapat diubah oleh pemilik sistem file kapan
saja. Gambar 14 (a) menggambarkan volume tradisional dan sistem
file, dan Gambar 14 (b) menunjukkan model ZFS.
(Gambar 14).
8 Stable- Storage Implementation
Menurut definisi, informasi yang berada dalam penyimpanan yang
stabil tidak pernah hilang. Untuk mengimplementasikan penyimpanan
seperti itu, kita perlu mereplikasi informasi yang diperlukan pada
beberapa perangkat penyimpanan (biasanya disk) dengan mode
kegagalan independen. Kita juga perlu mengkoordinasikan penulisan
update dengan cara yang menjamin bahwa kegagalan selama update
tidak akan meninggalkan semua salinan dalam keadaan rusak dan
bahwa, ketika kita pulih dari kegagalan, kita bisa memaksa semua
salinan ke konsisten dan nilai yang benar, bahkan jika kegagalan lain
terjadi selama pemulihan. Pada bagian ini, kita membahas bagaimana
untuk memenuhi kebutuhan tersebut.
Hasil penulisan disk di salah satu dari tiga hasil:
1. Selesainya penyelesaian. Data ditulis dengan benar pada disk.
2. Kegagalan sebagian. Kegagalan terjadi di tengah transfer,
sehingga hanya beberapa sektor yang ditulis dengan data baru,
dan sektor yang ditulis selama kegagalan mungkin telah rusak.
3. Kegagalan total. Kegagalan terjadi sebelum penulisan disk dimulai,
jadi nilai data sebelumnya pada disk tetap utuh.
Setiap kali kegagalan terjadi saat menulis blok, sistem perlu
mendeteksi dan memohon prosedur pemulihan untuk mengembalikan
blok ke keadaan yang konsisten. Untuk melakukan itu, sistem harus
mempertahankan dua blok fisik untuk setiap blok logis. Operasi output
dijalankan sebagai berikut:
1. Tulis informasi ke blok fisik pertama.
2. Ketika penulisan pertama selesai dengan sukses, tulis informasi
yang sama ke blok fisik kedua.
3. Deklarasikan operasi selesai hanya setelah penulisan kedua
selesai dengan sukses.
Selama pemulihan dari kegagalan, setiap pasangan blok fisik
diperiksa. Jika keduanya sama dan tidak ada kesalahan yang terdeteksi,
maka tidak diperlukan tindakan lebih lanjut. Jika salah satu blok berisi
kesalahan terdeteksi maka kita ganti isinya dengan nilai blok lainnya. Jika
blok tidak mengandung kesalahan terdeteksi, tetapi blok berbeda dalam
konten, maka kita mengganti isi dari blok pertama dengan yang kedua.
Prosedur pemulihan ini memastikan bahwa penulisan ke penyimpanan
yang stabil berhasil atau tidak menghasilkan perubahan. Kita dapat
memperluas prosedur ini dengan mudah untuk memungkinkan
penggunaan sejumlah besar salinan dari setiap penyimpanan stabil.
Meskipun memiliki sejumlah besar salinan lebih lanjut mengurangi
kemungkinan kegagalan, biasanya masuk akal untuk mensimulasikan
penyimpanan stabil hanya dengan dua salinan. Data dalam penyimpanan
stabil dijamin aman kecuali kegagalan menghancurkan semua salinan.
Karena menunggu penulisan disk untuk menyelesaikan (sinkron I / O)
memakan waktu, banyak array penyimpanan menambahkan NVRAM
sebagai cache. Karena memori tidak menyala (biasanya memiliki daya
baterai untuk mencadangkan daya unit), memori dapat dipercaya untuk
menyimpan data dalam perjalanan ke disk. Dengan demikian dianggap
sebagai bagian dari penyimpanan stabil. Tulisannya jauh lebih cepat
daripada disk, jadi kinerjanya sangat meningkat.