ZFS, bentuk singkat dari Zettabyte Filesystem adalah sistem file yang canggih dan sangat skalabel. Ini awalnya dikembangkan oleh Sun Microsystems dan sekarang menjadi bagian dari proyek OpenZFS. Dengan begitu banyak sistem file yang tersedia di Linux, wajar untuk bertanya apa yang istimewa dari ZFS. Tidak seperti sistem file lain, ini bukan hanya sistem file tetapi juga manajer volume logis. Beberapa fitur ZFS yang membuatnya populer adalah:
- Integritas Data - konsistensi dan integritas data dipastikan melalui teknik copy-on-write dan checksum
- Pengumpulan ruang penyimpanan - drive penyimpanan yang tersedia dapat digabungkan menjadi satu kumpulan yang disebut zpool
- RAID Perangkat Lunak - Menyiapkan array raidz semudah mengeluarkan satu perintah.
- Pengelola volume bawaan - ZFS juga berfungsi sebagai pengelola volume.
- Snaphot, clone, kompresi - ini adalah beberapa fitur lanjutan yang disediakan ZFS.
ZFS adalah sistem file 128-bit dan memiliki kapasitas untuk menyimpan 256 zetta byte! Dalam panduan ini, kita akan mempelajari cara menginstal, menyiapkan, dan juga menggunakan beberapa perintah ZFS penting di server CentOS 7.
CATATAN:Bagian instalasi khusus untuk server CentOS sedangkan perintahnya umum di sistem Linux apa pun
Terminologi
Sebelum kita melanjutkan, mari kita pahami beberapa terminologi yang umum digunakan di ZFS.
Kolam
Pengelompokan logis dari drive penyimpanan. Ini adalah blok bangunan dasar ZFS dan dari sinilah ruang penyimpanan dialokasikan untuk kumpulan data.
Set Data
Komponen sistem file ZFS yaitu sistem file, kloning, snapshot, dan volume disebut sebagai kumpulan data.
Cermin
Perangkat virtual yang menyimpan salinan data yang identik pada dua atau lebih disk. Dalam situasi di mana satu disk gagal, data yang sama tersedia di disk lain dari mirror tersebut.
Mengubah ulang
Proses menyalin data dari satu disk ke disk lain saat memulihkan perangkat.
Gosok
Scrub digunakan untuk pemeriksaan konsistensi di ZFS seperti bagaimana fsck digunakan di sistem file lain
Menginstal ZFS
Untuk menginstal ZFS di CentOS, pertama-tama kita perlu menyiapkan repositori EPEL untuk paket pendukung dan kemudian repositori ZFS untuk menginstal paket ZFS yang diperlukan.
Catatan:Harap awali sudo ke semua perintah jika Anda bukan pengguna root.
yum localinstall --nogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpmyum localinstall --nogpgcheck http:// archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm
Sekarang instal paket pengembangan kernel dan zfs. Paket pengembangan kernel diperlukan karena ZFS dibangun sebagai modul dan dimasukkan ke dalam kernel.
yum install kernel-devel zfs
Verifikasi apakah modul zfs dimasukkan ke dalam kernel menggunakan perintah 'lsmod' dan jika tidak, masukkan secara manual menggunakan perintah 'modprobe'.
[root@li1467-130 ~]# lsmod |grep zfs[root@li1467-130 ~]# modprobe zfs[root@li1467-130 ~]# lsmod |grep zfszfs 2790271 0zunicode 331170 1 zfszavl 15236 1 zfszcommon 55411 1 zfsznvpair 89086 2 zfs,zcommonspl 92029 3 zfs,zcommon,znvpair
Mari kita periksa apakah kita dapat menggunakan perintah zfs:
[root@li1467-130 ~]# zfs listtidak ada set data yang tersedia
Administrasi
ZFS memiliki dua utilitas utama, zpool dan zfs. Sementara zpool berurusan dengan pembuatan dan pemeliharaan kumpulan menggunakan disk, utilitas zfs bertanggung jawab untuk pembuatan dan pemeliharaan kumpulan data.
utilitas zpool
Membuat dan menghancurkan kolam
Verifikasi terlebih dahulu disk yang tersedia bagi Anda untuk membuat kumpulan penyimpanan.
[root@li1467-130 ~]# ls -l /dev/sd*brw-rw---- 1 root disk 8, 0 16 Mar 08:12 /dev/sdabrw-rw--- - 1 root disk 8, 16 Mar 16 08:12 /dev/sdbbrw-rw---- 1 root disk 8, 32 Mar 16 08:12 /dev/sdcbrw-rw---- 1 root disk 8, 48 Mar 16 08:12 /dev/sddbrw-rw---- 1 root disk 8, 64 Mar 16 08:12 /dev/sdebrw-rw---- 1 root disk 8, 80 Mar 16 08:12 /dev/sdf
Buat kumpulan dari sekumpulan drive.
zpool buat
[root@li1467-130 ~]# zpool create -f zfspool sdc sdd sde sdf
Perintah 'zpool status' menampilkan status pool yang tersedia
[root@li1467-130 ~]# zpool statuspool:zfspoolstate:ONLINEscan:none requestconfig:NAME NEGARA BACA TULIS CKSUMzfspool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0kesalahan :Tidak ada kesalahan data yang diketahui
Verifikasi apakah pembuatan kumpulan berhasil.
[root@li1467-130 ~]# df -hfileSystem Ukuran digunakan tersedia digunakan% dipasang pada/dev/sda 19g 1.4g 17g 8%/devtmpfs 488m 0 488m 0%/devtmpfs 497m 0 497m 0%/ dev/shmtmpfs 497m 50m 447m 11%/runtmpfs 497m 0 497m 0%/sys/fs/cgroUptmpfs 100m 0 100m 0%/run/user/0zfspool 3.7g 0 3.7g 0%/zfspool
Seperti yang Anda lihat, zpool telah membuat kumpulan dengan nama 'zfspool' berukuran 3,7 GB dan juga memasangnya di /zfspool.
Untuk menghancurkan kolam, gunakan perintah 'zpool destroy'
zpool menghancurkan [root@li1467-130 ~]# zpool menghancurkan zfspool[root@li1467-130 ~]# status zpooltidak ada pool yang tersedia
Sekarang mari kita coba membuat kolam cermin sederhana.
zpool buat
Kami juga dapat membuat beberapa mirror secara bersamaan dengan mengulangi kata kunci mirror diikuti oleh drive.
[root@li1467-130 ~]# zpool create -f mpool mirror sdc sdd mirror sde sdf[root@li1467-130 ~]# zpool statuspool:mpoolstate:ONLINEscan:none requestconfig:NAME STATE READ WRITE CKSUMmpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0mirror-1 ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
Pada contoh di atas, kami telah membuat kumpulan cermin masing-masing dengan dua disk.
Demikian pula, kita dapat membuat kumpulan raidz.
[root@li1467-130 ~]# zpool create -f rpool raidz sdc sdd sde sdf[root@li1467-130 ~]# zpool statuspool:rpoolstate:ONLINEscan:none requestconfig:NAME NEGARA BACA TULIS CKSUMrpool ONLINE 0 0 0raidz1-0 ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sdf ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
Mengelola perangkat di kumpulan ZFS
Setelah kumpulan dibuat, dimungkinkan untuk menambah atau menghapus suku cadang panas dan perangkat cache dari kumpulan, memasang atau melepaskan perangkat dari kumpulan cermin dan mengganti perangkat. Tetapi perangkat non-redundan dan raidz tidak dapat dihapus dari kumpulan. Kita akan melihat bagaimana melakukan beberapa operasi ini di bagian ini.
Saya pertama kali membuat kumpulan yang disebut 'testpool' yang terdiri dari dua perangkat, sdc dan sdd. Perangkat lain akan ditambahkan ke ini.
[root@li1467-130 ~]# zpool create -f testpool sdc sdd[root@li1467-130 ~]# zpool add testpool sde[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan :none requestconfig:NAMA NEGARA BACA MENULIS CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
Seperti yang disebutkan sebelumnya, saya tidak dapat menghapus perangkat yang baru ditambahkan ini karena ini bukan kumpulan redundan atau raidz.
[root@li1467-130 ~]# zpool remove testpool sdecannot remove sde:hanya hot spares, cache, top-level, atau perangkat log yang tidak aktif yang dapat dihapus
Tapi saya bisa menambahkan disk cadangan ke kumpulan ini dan menghapusnya.
[root@li1467-130 ~]# zpool add testpool spare sdf[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:none requestconfig:NAME NEGARA BACA TULIS CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0sparessdf AVAILerrors:Tidak ada kesalahan data yang diketahui[root@li1467-130 ~]# zpool hapus testpool sdf[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:none requestconfig:NAME STATE Baca tulis cksumtestpool online 0 0 0sdc online 0 0 0sdd Online 0 0 0SDE Online 0 0 0rors:Tidak ada kesalahan data yang diketahui
Demikian pula, kita dapat menggunakan perintah attach untuk melampirkan disk ke kumpulan cermin atau non-cermin dan perintah detach untuk melepaskan disk dari kumpulan cermin.
zpool lampirkan zpool detach
Saat perangkat gagal atau rusak, kita dapat menggantinya menggunakan perintah 'ganti'.
zpool ganti
Kami akan mengujinya dengan merusak perangkat secara paksa dalam konfigurasi yang dicerminkan.
[root@li1467-130 ~]# zpool create -f testpool mirror sdd sde
Ini menciptakan kumpulan cermin yang terdiri dari disk sdd dan sde. Sekarang, mari kita dengan sengaja merusak drive sdd dengan menulis angka nol ke dalamnya.
[root@li1467-130 ~]# dd if=/dev/zero of=/dev/sdddd:menulis ke '/dev/sdd':Tidak ada ruang tersisa di perangkat2048001+0 catatan di2048000+0 catatan out1048576000 byte (1,0 GB) disalin, 22,4804 detik, 46,6 MB/s
Kami akan menggunakan perintah 'scrub' untuk mendeteksi kerusakan ini.
[root@li1467-130 ~]# zpool scrub testpool[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEstatus:Satu atau beberapa perangkat tidak dapat digunakan karena label tidak ada atau tidak valid. Replika yang memadai tersedia agar kumpulan dapat terus berfungsi dalam keadaan terdegradasi. Tindakan:Ganti perangkat menggunakan 'zpool replace'. Lihat:http://zfsonlinux.org/msg/ZFS-8000-4Jscan:scrub diperbaiki 0 dalam 0 jam dengan 0 kesalahan pada Jum 18 Mar 09:59:40 2016config:NAMA NEGARA BACA TULIS CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdd UNAVAIL 0 0 0 datasde rusak ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
Sekarang kita akan mengganti sdd dengan sdc.
[root@li1467-130 ~]# zpool ganti testpool sdd sdc; zpool statuspool:testpoolstate:ONLINEscan:reslivered 83.5K dalam 0 jam dengan 0 kesalahan pada Jumat Mar 18 10:05:17 2016config:NAMA NEGARA BACA TULIS CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0mengganti-0 UNAVAIL 0 0 0sdd UNAVAIL 0 0 0 datasdc rusak ONLINE 0 0 0sde ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui[root@li1467-130 ~]# zpool statuspool:testpoolstate:ONLINEscan:reslivered 74.5K dalam 0j0m dengan 0 kesalahan pada Jum 18 Mar 10:00:36 2016config :NAMA NEGARA BACA TULIS CKSUMtestpool ONLINE 0 0 0mirror-0 ONLINE 0 0 0sdc ONLINE 0 0 0sde ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
Migrasi kumpulan
Kami dapat memigrasikan kumpulan penyimpanan antara host yang berbeda menggunakan perintah ekspor dan impor. Untuk ini, disk yang digunakan di kumpulan harus tersedia dari kedua sistem.
[root@li1467-130 ~]# zpool export testpool[root@li1467-130 ~]# zpool statustidak ada pool yang tersedia
Perintah 'zpool import' mencantumkan semua kumpulan yang tersedia untuk diimpor. Jalankan perintah ini dari sistem tempat Anda ingin mengimpor kumpulan.
[root@li1467-131 ~]# zpool importpool:testpoolid:3823664125009563520state:ONLINEaction:Pool dapat diimpor menggunakan nama atau pengenal numeriknya.config:testpool ONLINEsdc ONLINEsdd ONLINEsde ONLINE
Sekarang impor kumpulan yang diperlukan
[root@li1467-131 ~]# zpool import testpool[root@li1467-131 ~]# zpool statuspool:testpoolstate:ONLINEscan:none requestconfig:NAME NEGARA BACA TULIS CKSUMtestpool ONLINE 0 0 0sdc ONLINE 0 0 0sdd ONLINE 0 0 0sde ONLINE 0 0 0kesalahan:Tidak ada kesalahan data yang diketahui
iostat
Seseorang dapat memverifikasi statistik io dari perangkat kumpulan menggunakan perintah iostat.
----- baca[root@li1467-130 ~]# zpool iostat -v testpoolcapacity operasi bandwidthpool ----- alloc gratis --- ----- ----- ----- testpool 1.80m 2.86g 22 27 470K 417KSDC 598K 975M 8 9 200K 139KSDD 636K 975M 7 9 135K 139KSDE 610K 975M 6 9 135K 139K- ----- ----- ----- ----- ----- ----- -----
utilitas zfs
Sekarang kita akan beralih ke utilitas zfs. Di sini kita akan melihat cara membuat, menghancurkan kumpulan data, kompresi sistem file, kuota, dan snapshot.
Membuat dan menghancurkan sistem file
Sistem file ZFS dapat dibuat menggunakan perintah zfs create
zfs membuat
[root@li1467-130 ~]# zfs create testpool/students[root@li1467-130 ~]# zfs create testpool/professors[root@li1467-130 ~]# df -hFilesystem Ukuran Digunakan % Mounted on / dev / sda 19 G 1.4G 17G 8% / devtmpfs 488M 0 488M 0% / devtmpfs 497M 0 497M 0% / dev / shmtmpfs 497M 50M 447M 11% / runtmpfs 497M 0 497M 0% / sys / fs / cgrouptestpool 2,8 G 0 2.8G 0%/testpooltmpfs 100m 0 100m 0%/run/user/0testpool/siswa 2.8g 0 2.8G 0% /testpool/studentstestpool/professors 2.8G 0 2.8G
Dari output di atas, amati bahwa meskipun tidak ada titik mount yang diberikan pada saat pembuatan sistem file, mountpoint dibuat menggunakan hubungan jalur yang sama dengan kumpulan.
zfs create memungkinkan penggunaan -o dengan itu kita dapat menentukan opsi seperti mountpoint, kompresi, kuota, exec dll.
Seseorang dapat membuat daftar sistem file yang tersedia menggunakan daftar zfs:
[root@li1467-130 ~]# ZFS ListName Digunakan Tersedia Referensi MountPointTestPool 100m 2.67G 19K/TestPoolTestPool/Profesor 31k 1024m 20.5k/TestPool/Profesorstestpool/Siswa 1.57M 98.4M 1.57M/TestPool/TestPool/Siswa 1.57M 98.4M 1.57M/TestPOOL/TestPool/Siswa 1.57M 98M 1.57M/TestPool/Siswa /kode>
Kami dapat menghancurkan sistem file menggunakan opsi penghancuran
zfs menghancurkan
Kompresi
Sekarang kita akan memahami bagaimana kompresi bekerja di ZFS. Sebelum kita mulai menggunakan kompresi, kita harus mengaktifkannya menggunakan 'setel kompresi'
zfs mengatur
Setelah ini selesai, kompresi dan dekompresi terjadi pada sistem file dengan cepat secara transparan.
Dalam contoh kita, saya akan mengaktifkan kompresi pada direktori siswa menggunakan algoritma kompresi lz4.
[root@li1467-130 ~]# zfs set compression=lz4 testpool/students
Sekarang saya akan menyalin file berukuran 15M ke dalam sistem file ini dan memeriksa ukurannya setelah disalin.
[root@li1467-130 /]# cd /var/log[root@li1467-130 log]# du -h secure15M secure[root@li1467-130 ~]# cp /var/log/secure /testpool/students/[root@li1467-130 Students]# df -h .Filesystem Ukuran Digunakan Tersedia Gunakan% Dipasang di atas kolam/siswa 100 juta 1.7 juta 99 juta
Perhatikan bahwa ukuran yang digunakan dalam sistem file hanya 1,7M sedangkan ukuran file adalah 15M. Kami dapat memeriksa rasio kompresi juga..
[root@li1467-130 ~]# zfs get compressratio testpoolNAME PROPERTY VALUE SOURCEtestpool compressratio 9.03x
-
Kuota dan reservasi
Mari saya jelaskan kuota dengan contoh kehidupan nyata. Misalkan kita memiliki persyaratan di universitas untuk membatasi ruang disk yang digunakan oleh sistem file untuk profesor dan mahasiswa. Mari kita asumsikan bahwa kita perlu mengalokasikan 100MB untuk siswa dan 1GB untuk profesor. Kami dapat menggunakan 'kuota' di ZFS untuk memenuhi persyaratan ini. Kuota memastikan bahwa jumlah ruang disk yang digunakan oleh sistem file tidak melebihi batas yang ditetapkan. Reservasi membantu dalam mengalokasikan dan menjamin bahwa jumlah ruang disk yang diperlukan tersedia untuk sistem file.
zfs mengatur kuota= zfs mengatur reservasi=
[root@li1467-130 ~]# zfs set quota=100M testpool/students[root@li1467-130 ~]# zfs set reservation=100M testpool/students[root@li1467-130 ~]# zfs ListName Digunakan Tersedia Referensi MountPointTestPool 100m 2.67G 19K/TestPoolTestPool/Profesor 19K 2.67G 19K/TestPool/Profesorstestpool/Siswa 1.57m 98.4m 1.57m/testpool/Siswa [root@LI1467-130 ~]# ZFS Set Quota =1g Tes [root@li1467-130 [root@li1467-130 ~]# ZFS ListName Digunakan Tersedia Referensi MountTestPool 100M 2.67G 19K/TestPoolTestPool/Profesor 19K 1024M 19K/TestPool/Profesorstestpool/Siswa 1.57m 98.4m 1.57M/Testpool/Siswa
Dalam contoh di atas, kami telah mengalokasikan 100MB untuk siswa dan 1GB untuk profesor. Amati kolom 'AVAIL' di 'daftar zfs'. Awalnya mereka memiliki ukuran masing-masing 2,67GB dan setelah menetapkan kuota, nilainya berubah.
Snapshot
Snapshots adalah salinan read-only dari sistem file ZFS pada titik waktu tertentu. Mereka tidak mengkonsumsi ruang ekstra di kolam zfs. Kami dapat memutar kembali ke status yang sama pada tahap selanjutnya atau mengekstrak hanya satu atau sekumpulan file sesuai kebutuhan pengguna.
Sekarang saya akan membuat beberapa direktori dan file di bawah '/testpool/professors' dari contoh kita sebelumnya dan kemudian mengambil snapshot dari sistem file ini.
[root@li1467-130 ~]# cd /testpool/professors/[root@li1467-130 profesor]# mkdir matematika fisika kimia[root@li1467-130 profesor]# cat> qpaper.txtKertas pertanyaan untuk tahun 2016-17[root@li1467-130 profesor]# ls -latotal 4drwxr-xr-x 5 root root 6 19 Mar 10:34 .drwxr-xr-x 4 root root 4 19 Mar 09:59 ..drwxr- xr-x 2 root root 2 19 Mar 10:33 chemistrydrwxr-xr-x 2 root root 2 19 Mar 10:32 mathsdrwxr-xr-x 2 root root 2 19 Mar 10:32 fisika-rw-r--r-- 1 root root 36 19 Mar 10:35 qpaper.txt
Untuk mengambil snapshot, gunakan sintaks berikut:
snapshot zfs
>
[root@li1467-130 Profesor]# ZFS Snapshot TestPool/Profesor@03-2016 [root@li1467-130 Profesor]# Daftar ZFS -T Snapshotname Digunakan Referensi MountPointTestPool/Profesor@03-2016 0- 20.5K -
Sekarang saya akan menghapus file yang telah dibuat dan mengekstraknya dari snapshot
[root@li1467-130 profesor]# rm -rf qpaper.txt[root@li1467-130 profesor]# lskimia matematika fisika[root@li1467-130 profesor]# cd .zfs[root@li1467- 130 .zfs]# cd snapshot/03-2016/[root@li1467-130 03-2016]# lschemistry maths physics qpaper.txt[root@li1467-130 03-2016]# cp -a qpaper.txt /testpool/professors /[root@li1467-130 03-2016]# cd /testpool/professors/[root@li1467-130 profesor]# lskimia matematika fisika qpaper.txt
File yang dihapus kembali ke tempatnya.
Kami dapat membuat daftar semua snapshot yang tersedia menggunakan daftar zfs:
[root@li1467-130 ~]# zfs list -t snapshotNAME DIGUNAKAN TERSEDIA RUJUKAN 0.
Terakhir, mari kita hancurkan snapshot menggunakan perintah zfs destroy:
zfs menghancurkan
>
[root@li1467-130 ~]# zfs menghancurkan testpool/professors@03-2016[root@li1467-130 ~]# daftar zfs -t snapshottidak ada set data yang tersedia
Kesimpulan
Pada artikel ini, Anda telah mempelajari cara menginstal ZFS di CentOS 7 dan menggunakan beberapa perintah dasar dan penting dari utilitas zpool dan zfs. Ini bukan daftar lengkap. ZFS memiliki lebih banyak kemampuan dan Anda dapat menjelajahinya lebih jauh dari halaman resminya.
Cent OS