Mudah untuk mengembangkan perangkat lunak Linux RAID 5 dengan XFS. Praktik terbaik?

13

Saya menggunakan mesin Ubuntu saya sebagai server file untuk klien Windows / Linux / Mac menggunakan share Samba. Saya perlu mudah diperluas dengan hanya menambahkan lebih banyak hard drive tanpa harus memindahkan data bolak-balik.

Inilah yang saya lakukan sejauh ini. Saya telah berhasil menambahkan hard drive keempat. Sekarang akan menyenangkan untuk mengetahui apakah ini bagaimana seharusnya dilakukan? Apa yang saya lakukan salah atau apa yang bisa saya lakukan lebih baik?

Menciptakan 3 drive array awal

Saya mulai dengan tiga drive kosong: / dev / sdb, / dev / sdc dan / dev / sdd.

Pertama saya membuat partisi kosong untuk semua drive:

$ fdisk /dev/sdX
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Ketika partisi RAID kosong telah dibuat untuk ketiga disk, saya membuat array RAID5:

$ mdadm --create --verbose /dev/md0 --level=5 --raid-devices=3 /dev/sdb1 /dev/sdc1 /dev/sdd1

Sekarang array RAID5 dibuat, dan itu sudah dibangun. Butuh waktu, tetapi Anda dapat melanjutkan dengan membuat volume LVM2 fisik baru:

$ pvcreate /dev/md0

Sekarang mari kita buat grup volume baru:

$ vgcreate vd_raid /dev/md0

Maka kita perlu membuat volume logis baru di dalam grup volume itu. Pertama kita perlu mencari tahu ukuran pasti dari grup volume yang dibuat:

$ vgdisplay vg_raid

Ukurannya dapat dilihat dari baris yang menunjukkan "Total PE" dalam luasan fisik. Mari kita bayangkan ini adalah 509. Sekarang buat volume logis baru yang mengambil semua ruang yang tersedia:

$ lvcreate -l 509 vg_raid -n lv_raid

Akhirnya kita dapat membuat sistem file di atas volume logis itu:

$ mkfs.xfs /dev/mapper/vg_raid-lv_raid

Untuk dapat menggunakan array RAID yang baru dibuat, kita perlu membuat direktori dan memasangnya:

$ mkdir /raid
$ mount /dev/mapper/vg_raid-lv_raid /raid

Sekarang siap digunakan. Tetapi untuk itu secara otomatis me-mount setelah reboot, kita perlu menyimpan geometri RAID ke file konfigurasi mdadm:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf

Kemudian tambahkan baris berikut ke / etc / fstab yang me-mount array RAID secara otomatis:

/dev/mapper/vg_raid-lv_raid /raid auto auto,noatime,nodiratime,logbufs=8 0 1

Sekarang array RAID siap digunakan, dan dipasang secara otomatis ke / raid direktori setelah setiap boot.

Menambahkan drive baru ke array

Mari kita bayangkan bahwa sekarang Anda memiliki drive baru, / dev / sde, yang ingin Anda tambahkan ke array yang dibuat sebelumnya tanpa kehilangan data apa pun.

Pertama, drive baru harus dipartisi karena semua drive lain:

$ fdisk /dev/sde
n # Create a new partition
p # Primary
1 # First partition
[enter] # Starting point to first sector (default)
[enter] # Ending point to last sector (default)
t # Change partition type
fd # Type: Linux raid autodetect
w # Write changes to disc

Maka perlu ditambahkan ke array RAID:

$ mdadm --add /dev/md0 /dev/sde1

Sekarang array RAID5 mencakup empat drive, yang hanya tiga yang digunakan saat ini. Array perlu diperluas untuk memasukkan keempat drive:

$ mdadm --grow /dev/md0 --raid-devices=4

Maka volume fisik LVM2 perlu diperluas:

$ pvresize /dev/md0

Sekarang volume fisik diubah ukurannya secara default untuk mencakup semua ruang yang tersedia di array RAID. Kita perlu mengetahui ukuran baru dalam luasan fisik:

$ vgdisplay vg_raid

Mari kita bayangkan bahwa ukuran baru sekarang 764 (dapat dilihat dari "Total PE"). Sekarang perluas volume logis untuk mencakup ini:

$ lvextend /dev/mapper/vg_raid-lv_raid -l 764

Kemudian perluas sistem file XFS. Ini perlu dilakukan selama sistem file online dan terpasang:

$ xfs_grow /raid

Secara default diperluas untuk mencakup semua ruang yang tersedia. Akhirnya geometri array RAID perlu diperbarui karena array sekarang termasuk disk baru. Pertama-tama hapus baris yang ditambahkan dari /etc/mdadm/mdadm.conf dan kemudian tambahkan yang baru:

$ mdadm --detail --scan >> /etc/mdadm/mdadm.conf
Taskinen
sumber
3
Jangan meletakkan partisi pada disk Anda. Tidak perlu - autodetect RAID dalam kernel (tipe partisi fd) sudah usang.
James
Jadi, daripada membuat partisi tipe 'fd' dengan fdisk, saya hanya harus membuat array / dev / md0 ke / dev / sdb, / dev / sdc dan / dev / sdd secara langsung?
Taskinen
1
Saya pernah mendengar bahwa tidak semua disk berukuran sama, jadi jika saya membeli disk terabyte baru, mungkin ukurannya tidak persis sama. Apakah itu menimbulkan beberapa masalah?
Taskinen

Jawaban:

5

Saya pikir Anda sudah benar. Pastikan Anda memahami dan mengindahkan peringatan tentang peningkatan RAID 5 di man 8 mdadm.

Secara pribadi jika saya menumbuhkan volume LVM, saya tidak akan menumbuhkan array RAID yang ada untuk melakukannya. Saya akan membuat array RAID lain, membuat Physvol baru dari itu, dan menambahkannya ke grup volume yang sama. Ini adalah operasi yang jauh lebih aman (tidak melibatkan penulisan ulang seluruh array RAID5 di seluruh set disk baru) dan menjaga ukuran array Anda.

Kamil Kisiel
sumber
Sangat setuju. vgextend adalah teman Anda di sini.
Dan Andreatta
1
Secara umum saya mengerti, tetapi bagaimana dengan situasi di mana saya ingin menumbuhkan tiga disk array yang disebutkan di atas menjadi empat disk array. Saya tidak bisa membuat array RAID baru dari disk keempat saja.
Taskinen
1
Saya tidak akan memperluas disk array server penyimpanan satu disk pada suatu waktu. Beralih dari array disk tiga ke array disk hanya akan memberi Anda penyimpanan 50% lebih banyak, karena Anda harus menggunakan disk dengan ukuran yang sama.
Kamil Kisiel
1
Sepakat. Pada saat Anda kehabisan ruang, disk drive yang lebih besar akan turun harganya. Bangun array RAID kedua pada set drive yang lebih besar, kemudian pvmove data lama Anda ke sana dan nonaktifkan set lama setelah pvmove selesai. Ini semua bisa dilakukan ketika sistem file dalam volume logis yang dipengaruhi oleh pvmove sedang digunakan aktif.
flabdablet