Konfigurasi RAID Perangkat Lunak di Linux

Ini adalah skenario umum untuk menggunakan RAID perangkat lunak pada mesin virtual Linux di Azure untuk menyajikan beberapa disk data terlampir sebagai satu perangkat RAID. Biasanya ini dapat digunakan untuk meningkatkan kinerja dan memungkinkan throughput yang lebih baik dibandingkan dengan hanya menggunakan satu disk.

Melampirkan disk data

Dua atau lebih disk data kosong diperlukan untuk mengonfigurasi perangkat RAID. Alasan utama untuk membuat perangkat RAID adalah untuk meningkatkan kinerja IO disk Anda. Berdasarkan kebutuhan IO Anda, Anda dapat memilih untuk melampirkan disk yang disimpan dalam Storage Standar kami, dengan hingga 500 IO /ps per disk atau penyimpanan Premium kami dengan hingga 5000 IO/ps per disk. Artikel ini tidak menjelaskan secara rinci tentang cara menyediakan dan melampirkan disk data ke mesin virtual Linux. Lihat artikel Microsoft Azure melampirkan disk untuk instruksi terperinci tentang cara melampirkan disk data kosong ke komputer virtual Linux di Azure.

Penting

Jangan mencampur disk dengan ukuran berbeda, melakukannya akan menghasilkan kinerja raidset terbatas pada disk paling lambat.

Instal utilitas mdadm

  • Ubuntu

    sudo apt-get update
    sudo apt-get install mdadm
    
  • CentOS & Oracle Linux

    sudo yum install mdadm
    
  • SLES dan openSUSE

    zypper install mdadm
    

Membuat partisi disk

Dalam contoh ini, kita membuat partisi disk tunggal pada /dev/sdc. Partisi disk baru akan disebut /dev/sdc1.

  1. Mulai fdisk membuat partisi

    sudo fdisk /dev/sdc
    Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
    Building a new DOS disklabel with disk identifier 0xa34cb70c.
    Changes will remain in memory only, until you decide to write them.
    After that, of course, the previous content won't be recoverable.
    
    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').
    
  2. Tekan 'n' pada prompt untuk membuat partisi new:

    Command (m for help): n
    
  3. Selanjutnya, tekan 'p' untuk membuat partisi primary:

    Command action
            e   extended
            p   primary partition (1-4)
    
  4. Tekan '1' untuk memilih partisi nomor 1:

    Partition number (1-4): 1
    
  5. Pilih titik awal partisi baru, atau tekan <enter> untuk menerima default untuk menempatkan partisi di awal ruang kosong pada drive:

    First cylinder (1-1305, default 1):
    Using default value 1
    
  6. Pilih ukuran partisi, misalnya ketik '+10G' untuk membuat partisi 10 gigabyte. Atau, tekan <enter> buat partisi tunggal yang mencakup seluruh drive:

    Last cylinder, +cylinders or +size{K,M,G} (1-1305, default 1305): 
    Using default value 1305
    
  7. Selanjutnya, ubah ID dan type partisi dari ID default '83' (Linux) menjadi ID 'fd' (Linux raid auto):

    Command (m for help): t
    Selected partition 1
    Hex code (type L to list codes): fd
    
  8. Terakhir, tulis tabel partisi ke drive dan keluar fdisk:

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

Membuat array RAID

  1. Contoh berikut akan "stripe" (RAID level 0) tiga partisi yang terletak pada tiga disk data terpisah (sdc1, sdd1, sde1). Setelah menjalankan perintah ini, perangkat RAID baru yang disebut /dev/md127 dibuat. Perhatikan juga bahwa jika disk data ini sebelumnya kita bagian dari array RAID lain yang tidak berfungsi, mungkin perlu menambahkan --force parameter ke mdadm perintah:

    sudo mdadm --create /dev/md127 --level 0 --raid-devices 3 \
        /dev/sdc1 /dev/sdd1 /dev/sde1
    
  2. Membuat sistem file di perangkat RAID baru

    CentOS, Oracle Linux, SLES 12, openSUSE, dan Ubuntu

    sudo mkfs -t ext4 /dev/md127
    

    SLES 11

    sudo mkfs -t ext3 /dev/md127
    

    SLES 11 - aktifkan boot.md dan buat mdadm.conf

    sudo -i chkconfig --add boot.md
    sudo echo 'DEVICE /dev/sd*[0-9]' >> /etc/mdadm.conf
    

    Catatan

    Reboot mungkin diperlukan setelah membuat perubahan ini pada sistem SUSE. Langkah ini tidak diperlukan pada SLES 12.

Menambahkan sistem file baru ke /etc/fstab

Penting

Salah mengedit file /etc/fstab dapat mengakibatkan sistem yang tidak dapat di-boot. Jika tidak yakin, lihat dokumentasi distribusi untuk informasi tentang cara mengedit file ini dengan tepat. Sebaiknya cadangan file /etc/fstab dibuat sebelum mengedit.

  1. Buat titik pemasangan yang diinginkan untuk sistem file baru Anda, misalnya:

    sudo mkdir /data
    
  2. Saat mengedit /etc/fstab, UUID harus digunakan untuk mereferensikan sistem file daripada nama perangkat. blkid Gunakan utilitas untuk menentukan UUID untuk sistem file baru:

    sudo /sbin/blkid
    ...........
    /dev/md127: UUID="aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee" TYPE="ext4"
    
  3. Buka /etc/fstab di editor teks dan tambahkan entri untuk sistem file baru, misalnya:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults  0  2
    

    Atau pada SLES 11:

    /dev/disk/by-uuid/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext3  defaults  0  2
    

    Kemudian, simpan dan tutup /etc/fstab.

  4. Uji bahwa entri /etc/fstab sudah benar:

    sudo mount -a
    

    Jika perintah ini menghasilkan pesan kesalahan, silakan periksa sintaks dalam file /etc/fstab.

    Selanjutnya jalankan mount perintah untuk memastikan sistem file dipasang:

    mount
    .................
    /dev/md127 on /data type ext4 (rw)
    
  5. (Opsional) Parameter Boot Failsafe

    fstab configuration

    Banyak distribusi termasuk nobootwait parameter atau nofail mount yang dapat ditambahkan ke file /etc/fstab. Parameter ini memungkinkan kegagalan saat memasang sistem file tertentu dan memungkinkan sistem Linux untuk terus boot bahkan jika tidak dapat memasang sistem file RAID dengan benar. Lihat dokumentasi distribusi Anda untuk informasi lebih lanjut tentang parameter ini.

    Contoh (Ubuntu):

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,nobootwait  0  2
    

    Parameter boot Linux

    Selain parameter di atas, parameter kernel "bootdegraded=true" dapat memungkinkan sistem untuk boot bahkan jika RAID dianggap rusak atau terdegradasi, misalnya jika drive data secara tidak sengaja dihapus dari mesin virtual. Secara default ini juga bisa menghasilkan sistem yang tidak dapat di-boot.

    Silakan merujuk ke dokumentasi distribusi Anda tentang cara mengedit parameter kernel dengan benar. Misalnya, dalam banyak distribusi (CentOS, Oracle Linux, SLES 11) parameter ini dapat ditambahkan secara manual ke file "/boot/grub/menu.lst". Di Ubuntu parameter ini dapat ditambahkan ke GRUB_CMDLINE_LINUX_DEFAULT variabel pada "/etc/default/grub".

DUKUNGAN TRIM/UNMAP

Beberapa kernel Linux mendukung operasi TRIM/UNMAP untuk membuang blok yang tidak digunakan pada disk. Operasi ini terutama berguna dalam penyimpanan standar untuk memberi tahu Azure bahwa halaman yang dihapus tidak lagi valid dan dapat dibuang. Membuang halaman dapat menghemat biaya jika Anda membuat file besar dan kemudian menghapusnya.

Catatan

RAID mungkin tidak mengeluarkan perintah buang jika ukuran chunk untuk array diatur ke kurang dari default (512KB). Ini karena granularitas unmap pada Host juga 512KB. Jika Anda memodifikasi ukuran chunk array melalui parameter mdadm --chunk= , maka permintaan TRIM/unmap dapat diabaikan oleh kernel.

Ada dua cara untuk mengaktifkan dukungan TRIM di komputer virtual Linux Anda. Seperti biasa, periksa distribusi Anda untuk mengetahui pendekatan yang direkomendasikan:

  • discard Gunakan opsi mount di /etc/fstab, misalnya:

    UUID=aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee  /data  ext4  defaults,discard  0  2
    
  • Dalam beberapa kasus, opsi ini discard mungkin memiliki implikasi kinerja. Alternatifnya, Anda dapat menjalankan perintah fstrim secara manual dari baris perintah, atau menambahkannya ke crontab Anda untuk berjalan secara teratur:

    Ubuntu

    # sudo apt-get install util-linux
    # sudo fstrim /data
    

    RHEL/CentOS

    # sudo yum install util-linux
    # sudo fstrim /data