Panduan untuk Memasang dan Menggunakan ZFS pada CentOS 7

ZFS, bentuk pendek Zettabyte Filesystem adalah sistem fail maju dan sangat berskala. Ia pada asalnya dibangunkan oleh Sun Microsystems dan kini merupakan sebahagian daripada projek OpenZFS. Dengan begitu banyak sistem fail yang tersedia di Linux, agak wajar untuk bertanya apa yang istimewa mengenai ZFS. Tidak seperti sistem fail yang lain, ia bukan hanya sistem fail tetapi juga pengurus jumlah logik. Antara ciri-ciri ZFS yang menjadikannya popular ialah:

  • Data Integrity – data consistency and integrity are ensured through copy-on-write and checksum techniques
  • Pooling of storage space – available storage drives can be put together into a single pool called zpool
  • Software RAID – Setting up a raidz array is as simple as issuing a single command.
  • Inbuilt volume manager – ZFS acts as a volume manager as well.
  • Snaphots, clones, compression – these are some of the advanced features that ZFS provides.

ZFS adalah sistem fail bit 128 dan mempunyai kapasiti untuk menyimpan bait 256 zetta! Dalam panduan ini, kita akan belajar cara memasang, membuat persediaan dan juga menggunakan beberapa arahan ZFS penting pada pelayan CentOS 7.

NOTA: Bahagian pemasangan adalah khusus untuk pelayan CentOS manakala arahan biasa pada sistem Linux mana pun

Istilah

Sebelum kita beralih, marilah kita faham beberapa terminologi yang biasa digunakan dalam ZFS.

kolam

Pengumpulan logik pemacu logik. Ia adalah blok bangunan dasar ZFS dan dari sini ruang simpanan mendapat peruntukan untuk dataset.

Dataset

Komponen sistem fail ZFS iaitu sistem fail, klon, gambar dan volum dirujuk sebagai dataset.

Cermin

Peranti maya menyimpan salinan data yang sama pada dua atau lebih cakera. Dalam situasi di mana satu cakera gagal, data yang sama boleh didapati pada cakera lain pada cermin tersebut.

Resilvering

Proses menyalin data dari satu cakera dengan yang lain sekiranya memulihkan peranti.

Scrub

Scrub digunakan untuk pemeriksaan konsisten dalam ZFS seperti bagaimana fsck digunakan dalam sistem fail lain

Memasang ZFS

Untuk memasang ZFS pada CentOS, kita perlu terlebih dahulu menyiapkan repositori EPEL untuk menyokong pakej dan kemudian repositori ZFS untuk memasang pakej ZFS yang diperlukan.

Nota: Sila awalan sudo kepada semua arahan jika anda bukan pengguna root.

yum localinstall XCHARXnogpgcheck http://epel.mirror.net.in/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

yum localinstall XCHARXnogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm

Sekarang pasang pembangunan kernel dan pakej zfs. Pakej pengembangan kernel diperlukan kerana ZFS dibina sebagai modul dan dimasukkan ke dalam kernel.

yum pasang kernel-devel zfs

Verify if the zfs module is inserted into the kernel using ‘lsmod’ command and if not, insert it manually using ‘modprobe’ command.

[[E-mel dilindungi] ~]# lsmod |grep zfs

[[E-mel dilindungi] ~]# modprobe zfs

[[E-mel dilindungi] ~]# lsmod |grep zfs
zfs 2790271 0
zunicode 331170 1 zfs
zavl 15236 1 zfs
zcommon 55411 1 zfs
znvpair 89086 2 zfs, zcommon
spl 92029 3 zfs, zcommon, znvpair

Marilah kita semak apakah kita dapat menggunakan perintah zfs:

[[E-mel dilindungi] ~]# zfs list
tiada set data tersedia

Pentadbiran

ZFS mempunyai dua utiliti utama, zpool dan zfs. Walaupun zpool bercanggah dengan penciptaan dan penyelenggaraan kolam menggunakan cakera zfs utiliti bertanggungjawab untuk penciptaan dan penyelenggaraan dataset.

kemudahan zpool

Mewujudkan dan memusnahkan kolam

Mula-mula sahkan cakera yang ada untuk anda untuk membuat kolam penyimpanan.

[[E-mel dilindungi] ~]# ls -l /dev/sd*
brw-rwXCHARX- 1 root disk 8, 0 Mar 16 08:12 /dev/sda
brw-rwXCHARX- 1 root disk 8, 16 Mar 16 08:12 /dev/sdb
brw-rwXCHARX- 1 root disk 8, 32 Mar 16 08:12 /dev/sdc
brw-rwXCHARX- 1 root disk 8, 48 Mar 16 08:12 /dev/sdd
brw-rwXCHARX- 1 root disk 8, 64 Mar 16 08:12 /dev/sde
brw-rwXCHARX- 1 root disk 8, 80 Mar 16 08:12 /dev/sdf

Buat kolam dari satu set pemacu.

zpool create <option> <pool name. <drive 1> <drive 2> XCHARX. <drive n>

[[E-mel dilindungi] ~]# zpool create -f zfspool sdc sdd sde sdf

‘zpool status’ command displays the status of the available pools

[[E-mel dilindungi] ~]# zpool status
kolam: zfspool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
zfspool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Sahkan jika penciptaan kolam berjaya.

[[E-mel dilindungi] ~] # df -h
Penggunaan Filesystem Size Used Use%% Mounted on
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / lari
tmpfs 497M 0 497M 0% / sys / fs / cgroup
tmpfs 100M 0 100M 0% / run / user / 0
zfspool 3.7G 0 3.7G 0% / zfspool

As you can see, zpool has created a pool by name XCHARXzfspoolXCHARX of size 3.7 GB and has also mounted it in /zfspool.

To destroy a pool, use the ‘zpool destroy’ command

zpool memusnahkan <nama kolam>

[[E-mel dilindungi] ~]# zpool destroy zfspool
[[E-mel dilindungi] ~]# zpool status
tiada kolam yang ada

Marilah kita cuba mencipta kolam cermin mudah.

zpool create <option> <pool name> mirror <drive 1> <drive 2>XCHARX <drive n>

Kita juga boleh membuat beberapa cermin pada masa yang sama dengan mengulangi kata kunci cermin diikuti oleh pemacu.

[[E-mel dilindungi] ~]# zpool create -f mpool mirror sdc sdd mirror sde sdf
[[E-mel dilindungi] ~]# zpool status
kolam renang: mpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
mpool ONLINE 0 0 0
cermin-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
cermin-1 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Dalam contoh di atas, kami telah mencipta kolam cermin masing-masing dengan dua cakera.

Begitu juga, kita boleh membuat kolam raidz.

[[E-mel dilindungi] ~]# zpool create -f rpool raidz sdc sdd sde sdf
[[E-mel dilindungi] ~]# zpool status
kolam renang: rpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
rpool ONLINE 0 0 0
raidz1-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Menguruskan peranti di kolam ZFS

Sebaik sahaja kolam dicipta, ada kemungkinan untuk menambah atau mengalih alat ganti dan peranti cache dari kolam, lampirkan atau tanggalkan peranti dari kolam cermin dan gantikan peranti. Tetapi alat yang tidak berlebihan dan raidz tidak boleh dikeluarkan dari kolam. Kami akan melihat bagaimana untuk melaksanakan beberapa operasi ini dalam bahagian ini.

I’m first creating a pool called ‘testpool’ consisting of two devices, sdc and sdd. Another device sde will then be added to this.

[[E-mel dilindungi] ~]# zpool create -f testpool sdc sdd

[[E-mel dilindungi] ~]# zpool add testpool sde
[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Seperti yang dinyatakan sebelum ini, saya tidak dapat mengalih keluar peranti baru ini kerana ia bukan kolam berlebihan atau raidz.

[[E-mel dilindungi] ~]# zpool remove testpool sde
tidak dapat mengalih keluar sde: hanya alat ganti panas, cache, tingkat atas, atau peranti log yang tidak aktif boleh dikeluarkan

Tetapi saya boleh menambah cakera ganti ke kolam ini dan mengeluarkannya.

[[E-mel dilindungi] ~]# zpool add testpool spare sdf
[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0
alat ganti
sdf AVAIL

kesilapan: Tiada ralat data yang diketahui
[[E-mel dilindungi] ~]# zpool remove testpool sdf
[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Begitu juga, kita boleh menggunakan perintah lampiran untuk melampirkan cakera ke kolam cermin atau tanpa cermin dan melepaskan arahan untuk melepaskan cakera dari kolam cermin.

zpool lampirkan <options> <pool name> <device> <new device>

zpool lepaskan <pool name> <device>

When a device fails or gets corrupted, we can replace it using the ‘replace’ command.

zpool menggantikan <options> <pool name> <device> <new device>

Kami akan menguji ini dengan merosakkan peranti secara paksa dalam konfigurasi cermin.

[[E-mel dilindungi] ~]# zpool create -f testpool mirror sdd sde

Ini mencipta kolam cermin yang terdiri daripada cakera sdd dan sde. Sekarang, marilah kita memandu memandu sdd dengan sengaja dengan menulis sifar ke dalamnya.

[[E-mel dilindungi] ~]# dd if=/dev/zero of=/dev/sdd
dd: writing to ‘/dev/sdd’: No space left on device
Rekod 2048001 + 0 dalam
Rekod 2048000 + 0
Bait 1048576000 (1.0 GB) disalin, 22.4804 s, 46.6 MB / s

We will use the ‘scrub’ command to detect this corruption.

[[E-mel dilindungi] ~]# zpool scrub testpool
[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
status: Satu atau lebih peranti tidak boleh digunakan kerana labelnya hilang atau
tidak sah. Replikasi yang mencukupi wujud bagi kolam untuk diteruskan
berfungsi dalam keadaan yang terdegradasi.
action: Replace the device using ‘zpool replace’.
lihat: http://zfsonlinux.org/msg/ZFS-8000-4J
imbasan: scrub diperbaiki 0 dalam 0h0m dengan ralat 0 pada Jum Mar 18 09: 59: 40 2016
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
cermin-0 ONLINE 0 0 0
sdd UNAVAIL 0 0 0 data rosak
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Sekarang kita akan menggantikan sdd dengan sdc.

[[E-mel dilindungi] ~]# zpool replace testpool sdd sdc; zpool status
kolam renang: testpool
nyatakan: ONLINE
scan: resilvered 83.5K dalam 0h0m dengan kesalahan 0 pada Jum Mar 18 10: 05: 17 2016
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
cermin-0 ONLINE 0 0 0
menggantikan-0 UNAVAIL 0 0 0
sdd UNAVAIL 0 0 0 data rosak
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
scan: resilvered 74.5K dalam 0h0m dengan kesalahan 0 pada Jum Mar 18 10: 00: 36 2016
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
cermin-0 ONLINE 0 0 0
sdc ONLINE 0 0 0
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

Penghijrahan kolam

Kami boleh memindahkan kolam penyimpanan antara host yang berbeza menggunakan arahan eksport dan import. Untuk ini, cakera yang digunakan di dalam kolam perlu disediakan dari kedua-dua sistem.

[[E-mel dilindungi] ~]# zpool export testpool
[[E-mel dilindungi] ~]# zpool status
tiada kolam yang ada

The command ‘zpool import’ lists all the pools that are available for importing. Execute this command from the system where you want to import the pool.

[[E-mel dilindungi] ~]# zpool import
kolam renang: testpool
id: 3823664125009563520
nyatakan: ONLINE
tindakan: Kolam boleh diimport menggunakan nama atau pengenal angka.
config:

testpool ONLINE
sdc ONLINE
sdd ONLINE
sde ONLINE

Sekarang import kolam yang diperlukan

[[E-mel dilindungi] ~]# zpool import testpool
[[E-mel dilindungi] ~]# zpool status
kolam renang: testpool
nyatakan: ONLINE
imbasan: tiada permintaan
config:

NAMA NAMA NAMA MELAKUKAN CKSUM
testpool ONLINE 0 0 0
sdc ONLINE 0 0 0
sdd ONLINE 0 0 0
sde ONLINE 0 0 0

kesilapan: Tiada ralat data yang diketahui

iostat

Satu boleh mengesahkan statistik io peranti kolam menggunakan arahan iostat.

[[E-mel dilindungi] ~]# zpool iostat -v testpool
lebar jalur operasi kapasiti
pool alloc free read write read write
———- —– —– —– —– —– —–
test pool 1.80M 2.86G 22 27 470K 417K
sdc 598K 975M 8 9 200K 139K
sdd 636K 975M 7 9 135K 139K
sde 610K 975M 6 9 135K 139K
———- —– —– —– —– —– —–

zfs utiliti

Kami kini akan beralih ke utiliti zfs. Di sini kita akan melihat cara membuat, memusnahkan dataset, mampatan sistem fail, kuota dan gambar.

Membuat dan memusnahkan sistem fail

Sistem fail ZFS boleh dibuat menggunakan perintah membuat zfs

zfs membuat <filesystem>

[[E-mel dilindungi] ~]# zfs create testpool/students
[[E-mel dilindungi] ~]# zfs create testpool/professors
[[E-mel dilindungi] ~] # df -h
Penggunaan Filesystem Size Used Use%% Mounted on
/ dev / sda 19G 1.4G 17G 8% /
devtmpfs 488M 0 488M 0% / dev
tmpfs 497M 0 497M 0% / dev / shm
tmpfs 497M 50M 447M 11% / lari
tmpfs 497M 0 497M 0% / sys / fs / cgroup
testpool 2.8G 0 2.8G 0% / testpool
tmpfs 100M 0 100M 0% / run / user / 0
testboy / pelajar 2.8G 0 2.8G 0% / testpool / pelajar
testboy / profesor 2.8G 0 2.8G 0% / testpool / profesor

Dari output di atas, amati bahawa walaupun tidak ada titik gunung yang diberikan pada masa pembuatan sistem fail, titik titik dicipta menggunakan hubungan jalur yang sama seperti kolam.

membuat zfs membolehkan menggunakan -o dengan menggunakannya yang mana kita boleh menentukan pilihan seperti titik titik, mampatan, kuota, dll.

Satu boleh menyenaraikan fail sistem yang tersedia menggunakan senarai zfs:

[[E-mel dilindungi] ~]# zfs list
NAMA MENGGUNAKAN MOUNTPOINT REKAN AVAIL
testpool 100M 2.67G 19K / testpool
testboy / profesor 31K 1024M 20.5K / testpool / profesor
testboy / pelajar 1.57M 98.4M 1.57M / testpool / pelajar

Kita boleh memusnahkan sistem fail menggunakan pilihan memusnahkan

zfs memusnahkan <filesystem>

Mampatan

We will now understand how compression works in ZFS. Before we start using compression, we need to enable it using ‘set compression’

zfs menetapkan <compression = value> <filesystem | volume | snapshot>

Sebaik sahaja ini selesai, mampatan dan penyahmampatan berlaku pada sistem fail secara lalai.

Dalam contoh kami, saya akan membolehkan pemampatan pada direktori pelajar menggunakan algoritma mampatan lz4.

[[E-mel dilindungi] ~]# zfs set compression=lz4 testpool/students

Saya kini akan menyalin fail saiz 15M ke dalam sistem fail ini dan periksa saiz sebaik sahaja ia disalin.

[[E-mel dilindungi] /]# cd /var/log
[[E-mel dilindungi] log]# du -h secure
15M selamat

[[E-mel dilindungi] ~]# cp /var/log/secure /testpool/students/

[[E-mel dilindungi] students]# df -h .
Penggunaan Filesystem Size Used Use%% Mounted on
testboy / pelajar 100M 1.7M 99M 2% / testpool / pelajar

Perhatikan bahawa saiz yang digunakan dalam sistem fail hanya 1.7M manakala saiz fail adalah 15M. Kita boleh menyemak nisbah mampatan juga ..

[[E-mel dilindungi] ~]# zfs get compressratio testpool
SUMBER NILAI HARTA NILAI
testpool compressratio 9.03x XCHARX

Kuota dan tempahan

Let me explain quotas with a real life example. Suppose we have a requirement in a university to limit the disk space used by the filesystem for professors and students. Let us assume that we need to allocate 100MB for students and 1GB for professors. We can make use of XCHARXquotasXCHARX in ZFS to fulfill this requirement. Quotas ensure that the amount of disk space used by a filesystem doesnXCHARXt exceed the limits set. Reservation helps in actually allocating and guaranteeing that the required amount of disk space is available for the filesystem.

zfs set quota = <value> <filesystem | volume | snapshot>

zfs set reservation = <value> <filesystem | volume | snapshot>

[[E-mel dilindungi] ~]# zfs set quota=100M testpool/students
[[E-mel dilindungi] ~]# zfs set reservation=100M testpool/students
[[E-mel dilindungi] ~]# zfs list
NAMA MENGGUNAKAN MOUNTPOINT REKAN AVAIL
testpool 100M 2.67G 19K / testpool
testboy / profesor 19K 2.67G 19K / testpool / profesor
testboy / pelajar 1.57M 98.4M 1.57M / testpool / pelajar

[[E-mel dilindungi] ~]# zfs set quota=1G testpool/professors
[[E-mel dilindungi] ~]# zfs list
NAMA MENGGUNAKAN MOUNTPOINT REKAN AVAIL
testpool 100M 2.67G 19K / testpool
testboy / profesor 19K 1024M 19K / testpool / profesor
testboy / pelajar 1.57M 98.4M 1.57M / testpool / pelajar

In the above example, we have allocated 100MB for students and 1GB for professors. Observe the XCHARXAVAILXCHARX column in XCHARXzfs listXCHARX. Initially they had the size of 2.67GB each and after setting the quota, the values have changed accordingly.

Gambar

Syot kilat adalah salinan baca sahaja sistem fail ZFS pada masa yang diberikan. Mereka tidak menggunakan ruang tambahan di kolam zfs. Kita sama ada boleh kembali ke keadaan yang sama pada peringkat kemudian atau mengekstrak hanya satu atau satu set fail mengikut kehendak pengguna.

I will now create some directories and a file under ‘/testpool/professors’ from our previous example and then take a snapshot of this filesystem.

[[E-mel dilindungi] ~]# cd /testpool/professors/

[[E-mel dilindungi] professors]# mkdir maths physics chemistry

[[E-mel dilindungi] professors]# cat > qpaper.txt
Kertas soalan untuk tahun 2016-17
[[E-mel dilindungi] professors]# ls -la
Jumlah 4
drwxr-xr-x 5 root root 6 Mar 19 10: 34.
drwxr-xr-x 4 root root 4 Mar 19 09: 59 ..
drwxr-xr-x 2 root root 2 Mar 19 10: 33 chemistry
drwxr-xr-x 2 root root 2 Mar 19 10: 32 matematik
drwxr-xr-x 2 root root 2 Mar 19 10: 32 physics
-rw-rXCHARXrXCHARX 1 root root 36 Mar 19 10:35 qpaper.txt

Untuk mengambil gambar, gunakan sintaks berikut:

zfs snapshot <filesystem|[E-mel dilindungi]<snap>>

[[E-mel dilindungi] professors]# zfs snapshot testpool/[E-mel dilindungi]
[[E-mel dilindungi] professors]# zfs list -t snapshot
NAMA MENGGUNAKAN MOUNTPOINT REKAN AVAIL
testpool/[E-mel dilindungi] 0 XCHARX 20.5K XCHARX

I’ll now delete the file that was created and extract it from the snapshots

[[E-mel dilindungi] professors]# rm -rf qpaper.txt
[[E-mel dilindungi] professors]# ls
fizik matematik kimia
[[E-mel dilindungi] professors]# cd .zfs
[[E-mel dilindungi] .zfs]# cd snapshot/03-2016/
[[E-mel dilindungi] 03-2016]# ls
fizik matematik kimia qpaper.txt

[[E-mel dilindungi] 03-2016]# cp -a qpaper.txt /testpool/professors/
[[E-mel dilindungi] 03-2016]# cd /testpool/professors/
[[E-mel dilindungi] professors]# ls
fizik matematik kimia qpaper.txt

Fail yang dipadam kembali di tempatnya.

Kita boleh menyenaraikan semua syot yang tersedia menggunakan senarai zfs:

[[E-mel dilindungi] ~]# zfs list -t snapshot
NAMA MENGGUNAKAN MOUNTPOINT REKAN AVAIL
testpool/[E-mel dilindungi] 10.5K XCHARX 20.5K XCHARX

Finally, let’s destroy the snapshot using the zfs destroy command:

zfs destroy <filesystem|[E-mel dilindungi]<snap>>

[[E-mel dilindungi] ~]# zfs destroy testpool/[E-mel dilindungi]

[[E-mel dilindungi] ~]# zfs list -t snapshot
tiada set data tersedia

kesimpulan

Dalam artikel ini, anda telah belajar cara memasang ZFS pada CentOS 7 dan menggunakan beberapa arahan asas dan penting dari utiliti zpool dan zfs. Ini bukan senarai yang komprehensif. ZFS mempunyai lebih banyak keupayaan dan anda boleh meneroka lebih jauh dari itu Halaman Rasmi.

Post yang berkaitan

Sila tinggalkan balasan anda

Laman web ini menggunakan Akismet untuk mengurangkan spam. Ketahui bagaimana data komen anda diproses.