Urutan RAID, LVM dan LUKS terbaik

13

Saya akan menginstal file server dengan Debian GNU / Linux 8.

Saya ingin memiliki perangkat lunak RAID-1 menggunakan mdadm serta disk terenkripsi menggunakan LUKS. Saya juga suka fleksibilitas memiliki LVM.

Ada berbagai cara untuk melakukan ini. Salah satu caranya adalah: Pertama mengatur RAID-1 menggunakan mdadm. Kemudian atur LVM PV untuk mencakup / dev / mdX yang dibuat. Kemudian mengatur LVs dan mengenkripsi mereka yang menggunakan LUKS. Kemudian format ini dengan sistem file, katakan ext4. Ini menghasilkan tata letak seperti ini:

RAID --> LVM --> LUKS --> ext4

Atau saya bisa melakukannya dengan urutan yang berbeda:

RAID --> LUKS --> LVM --> ext4

Atau bahkan mungkin:

LVM --> RAID --> LUKS --> ext4

Dan mungkin bahkan urutannya berbeda.

Apa manfaat dan kelemahan dari pendekatan yang berbeda? Apa yang memberikan kinerja terbaik, keamanan, pemeliharaan, dll.

Apakah ada "Cara Terbaik" untuk melakukan ini?

Thomas
sumber

Jawaban:

18

Pertama, urutan LUKS dan LVM tergantung pada apakah Anda ingin memiliki kata sandi LUKS yang berbeda atau pengaturan lain untuk LV yang berbeda. Jika mengatakan, Anda perlu mengatur kata sandi yang berbeda untuk LV yang berbeda, Anda pasti harus meletakkan LUKS di atas LVM. Di sisi lain, jika semua LV berbagi kata sandi dan pengaturan yang sama seperti keylen, Anda ingin memiliki LUKS di bawah LVM, sehingga Anda tidak harus berurusan dengan overhead memiliki lebih dari satu partisi LUKS (pikirkan apa yang Anda harus lakukan ketika Anda perlu mengubah kata sandi).

Kedua, Anda hampir selalu ingin RAID menjadi level terendah, sehingga ketika satu disk mati, ia dapat ditukar dengan mudah dan transparan. Jika Anda mengatur RAID di atas LVM, Anda harus mengganti PV ketika satu disk mati, itu akan sangat menyakitkan di leher. Juga RAID di atas LVM akan benar-benar mengalahkan fleksibilitas LVM. Maka Anda mungkin perlu mengatur lapisan kedua LVM di atas RAID lagi!

Karena itu, karena dalam kebanyakan kasus orang hanya perlu menggunakan satu kata sandi, ini sudah cukup:

RAID -> LUKS -> LVM -> ext4

Dalam beberapa kasus, Anda mungkin perlu menggunakan LVM untuk menggabungkan beberapa perangkat RAID menjadi volume yang besar, maka Anda dapat melakukannya:

RAID -> LVM -> LUKS (-> LVM) -> ext4

Secara teoritis urutannya seharusnya tidak terlalu mempengaruhi kinerja, jika setiap lapisan diatur dengan benar , dan dalam praktiknya saya belum melihat pengaturan ini memiliki kinerja yang sangat buruk. Yang paling penting mungkin adalah perataan:

  1. pastikan partisi Anda selaras 1MB (sangat penting untuk SSD);
  2. untuk lapisan RAID, pilih ukuran chunk dengan bijak;
  3. untuk LVM, pastikan Anda mengatur --dataalignmentagar sesuai dengan ukuran potongan RAID ( ini mungkin membantu).

Juga jika pada SSD, pastikan Anda mengaktifkan LUKS TRIM / HAPUS pass-through dengan menambahkan rd.luks.options=discardke /etc/default/grubdan discardke /etc/crypttab(Ini adalah apa yang saya lakukan pada Red Hat / Fedora Linux. Mungkin sedikit berbeda pada Debian.) LVM dan RAID harus secara otomatis dukungan discard jika Anda menggunakan kernel new-ish.

Tentu saja, ini hanya panduan umum. Jika Anda memiliki kebutuhan khusus, silakan memperbarui pertanyaan atau komentar Anda di sini.

Yan Li
sumber
Terima kasih atas balasan cepatnya. Poin bagus! Bisakah Anda mengomentari perbedaan kinerja jika itu non-sepele?
Thomas
Diperbarui dengan beberapa catatan kinerja.
Yan Li
1
Ini juga harus menunjukkan bahwa Anda tidak selalu perlu menggunakan MDADM (walaupun saya berharap ini akan menjadi solusi yang paling khas). - LVM menawarkan RAID (alias mirroring)
davidgo
@davidgo Ya. Saya berpikir untuk menyebutkan itu juga tetapi tidak melakukannya, karena saya tidak yakin apakah itu cara yang tepat untuk pergi. Saya belum mencobanya secara pribadi (kebanyakan saya menggunakan tingkat RAID yang lebih tinggi seperti 5 atau 6), dan telah membaca umpan balik campuran pada mirroring LVM, seperti yang disebutkan oleh beberapa jawaban dalam pertanyaan ini .
Yan Li
@ Ya, saya setuju. Saya juga selalu menggunakan RAID mdadm (1)
davidgo
4

Jika Anda ingin semua RAID, LUKS dan LVM saya akan merekomendasikan RAID -> LUKS -> LVM -> FS. RAID --> LVM --> LUKS --> LVM --> FStidak lebih baik dari RAID -> LUKS -> LVM- untuk memperpanjang volume cukup tambahkan lebih banyak RAID -> LUKSperangkat ke grup volume.

RAID --> LVM --> LUKS --> FS - mengenkripsi hanya volume Logical tertentu memiliki fitur tidak mengenkripsi semuanya secara default (dapat dilihat sebagai keuntungan atau kerugian) tetapi akan membuat perluasan root FS lebih mudah.

Memperluas LUKS di atas volume logis adalah sumber masalah yang umum ketika pengguna memperpanjang / mengubah ukurannya dalam urutan yang salah. Memiliki LUKS di seluruh perangkat RAID md akan menyederhanakan mengubah ukuran - menambahkan perangkat md baru, membuat LUKS di atas itu, menambahkan perangkat ke / etc / crypttab (setidaknya pada klon Fedora dan RHEL) dan memperluas grup volume Anda. Jika root FS ada di grup volume, Anda perlu menambahkan rd.luks.uuidentri lain ke kernel cmdline (edit / etc / default / grub dan buat ulang grub.cfg.)

LUKS -> RAIDbiasanya salah - data akan dienkripsi beberapa kali, menghabiskan lebih banyak siklus CPU tanpa keuntungan. Ada juga kemungkinan salah mengganti disk yang gagal dengan yang baru tanpa mengatur LUKS ketika disk gagal.

Memperluas dan menyusut:

Ketika memanjang selalu pergi dari bagian bawah tumpukan, ketika menyusut dari atas.

Contoh:

Memperluas RAID -> LVM -> LUKS -> FS (dua langkah pertama adalah opsional jika ada cukup ruang kosong di grup volume):

  1. Tambahkan disk baru dan buat md RAID.
  2. Tambahkan perangkat mdX ke grup volume.
  3. Perpanjang volume logis.
  4. Perpanjang perangkat LUKS.
  5. Perpanjang FS.

Menyusut RAID -> LVM -> LUKS -> FS :

  1. Kecilkan FS.
  2. Kecilkan perangkat LUKS.
  3. Kecilkan volume logis.
Orang Mars
sumber