Tarkibga o'tish

Fayl tizimi turlari

Bo'lim yoki LVM logical volume tayyor bo'lgach, unda ma’lumot saqlashdan oldin fayl tizimi kerak — bo'sh block qurilmaning o'zida fayl yoki katalog tushunchasi yo'q. Bu maqola eng keng tarqalgan Linux fayl tizimlarini (ext4, XFS, Btrfs, ZFS) solishtiradi, ularni qanday yaratish va ko'zdan kechirishni ko'rsatadi hamda qaysi biri qaysi vaziyatga mos kelishini tushuntiradi. Fayl tizimi mavjud bo'lgach, tabiiy keyingi qadam — uni yo swap sifatida tayyorlash, yo mount qilish orqali foydalanishga tayyorlash.

Nimalarni o'rganasiz

Bu maqola oxirida siz quyidagilarni qila olasiz:

  • ext4, XFS, Btrfs va ZFS o'rtasidagi asosiy farqlarni hamda har birining kuchli va zaif tomonlarini tushuntirish;
  • mkfs (va uning mkfs.ext4, mkfs.xfs kabi front-end’lari) dan foydalanish;
  • mavjud fayl tizimi haqida tune2fs va xfs_info bilan ma’lumot olish;
  • fayl tizimi yorlig'ini (label) o'rnatish va o'zgartirish;
  • fayl tizimi tekshiruvini (fsck) qachon va qanday ishga tushirishni tushuntirish;
  • yangi loyiha yoki server uchun qaysi fayl tizimini tanlashni asoslash.

Fayl tizimi nima va u nega kerak

Bo'lim yoki LV — aniq chegara ichidagi baytlar ketma-ketligi, xolos. Fayl tizimi — uning ustiga qo'yiladigan va quyidagilarni ta’minlaydigan tuzilma:

  • fayl va katalog nomlarini blok raqamlariga (inode’larga) moslash;
  • fayl metama’lumotlarini (egasi, ruxsatlari, o'zgartirilgan vaqti) saqlash;
  • bo'sh joyni boshqarish (qaysi bloklar ishlatilgan, qaysilari bo'sh);
  • ayrim hollarda — kutilmagan o'chishdan keyin journal orqali izchillikni tiklash.

Fayl tizimisiz bo'limdan faqat swap sifatida yoki xom ma’lumotlarni saqlash uchun (ayrim ma’lumotlar bazasi dvigatellari qilganidek) foydalanish mumkin.

Asosiy fayl tizimlarini solishtirish

Xususiyat ext4 XFS Btrfs ZFS
Yetuklik / barqarorlik Juda yuqori, ko'p yillik standart Yuqori, katta fayllar bilan yaxshi tanilgan O'rtacha-yuqori, faol rivojlantirilmoqda Yuqori (Solaris’dan), Linux’da tashqi modul
Fayl tizimining maksimal hajmi ~1 EiB ~8 EiB (nazariy, amalda ~500 TB) ~16 EiB ~256 ZB
Kichraytirish Qo'llab-quvvatlanadi Qo'llab-quvvatlanmaydi Qo'llab-quvvatlanadi (onlayn) Qo'llab-quvvatlanadi (cheklangan, zpool darajasida)
Snapshot’lar Yo'q (LVM kerak) Yo'q (LVM kerak) Ichiga o'rnatilgan Ichiga o'rnatilgan
Checksumming (ma’lumotlar yaxlitligi) Faqat metama’lumotlar Faqat metama’lumotlar Ma’lumotlar + metama’lumotlar Ma’lumotlar + metama’lumotlar
Sukut bo'yicha kernelga kiritilgan Ha Ha Ha Yo'q (litsenziya sababli, DKMS/ZFS-on-Linux orqali)
Odatiy foydalanish Umumiy maqsad, root//home Katta fayllar, ma’lumotlar bazalari, media serverlar Snapshot/COW kerak bo'lgan tizimlar (masalan, Fedora, openSUSE root) Katta saqlash massivlari, NAS, ZFS pool boshqaruvi

ext4

ext2 → ext3 → ext4 zanjirining eng so'nggi bo'g'ini; maxsus Linux uchun yaratilgan va ko'p distributivlarda tarixan sukut bo'yicha tanlov. Journal yuritadigan, barqaror, keng qo'llab-quvvatlanadigan fayl tizimi. Kengaytirish ham, kichraytirish ham qo'llab-quvvatlanadi (ikkalasi ham unmount qilingan holda ishonchliroq, garchi kengaytirishni onlayn ham bajarish mumkin bo'lsa ham).

XFS

Katta fayllar va yuqori parallel I/O uchun optimallashtirilgan va Red Hat Enterprise Linux’da sukut bo'yicha fayl tizimi. Uning kuchli tomoni — katta fayllarni tez yozish/o'qish va katta hajmlarda barqarorlik. Asosiy cheklovi: uni kichraytirib bo'lmaydi — faqat kattalashtirish mumkin.

Btrfs

Copy-on-write (COW) arxitekturasiga qurilgan zamonaviy fayl tizimi; ichiga o'rnatilgan snapshot’lar, checksumming va ko'p diskli (RAID’ga o'xshash) imkoniyatlarga ega. U LVM’siz snapshot olish imkonini beradi. Fedora va openSUSE kabi ayrim distributivlar undan sukut bo'yicha root fayl tizimi sifatida foydalanadi.

ZFS

Dastlab Sun Solaris uchun yaratilgan; juda kuchli ma’lumotlar yaxlitligi (checksumming), o'zining volume boshqaruvi (zpool, LVM’ga o'xshash, lekin fayl tizimi bilan birlashtirilgan) va snapshot imkoniyatlariga ega. Litsenziya nomuvofiqligi sababli u Linux kernelining o'ziga kiritilmagan — zfsutils-linux paketi va DKMS orqali alohida o'rnatiladi. Katta NAS/saqlash serverlarida keng ishlatiladi.

Info

Btrfs va ZFS fayl tizimi va volume boshqaruvini bitta qatlamga birlashtiradi — shu ma’noda ular LVM + ext4/XFS birikmasiga muqobil yondashuv.

Fayl tizimini yaratish: mkfs

mkfs — turli fayl tizimi quruvchilari uchun umumiy front-end:

mkfs -t TYPE DEVICE
sudo mkfs -t ext4 /dev/sdb1

Bu buyruq aslida mos maxsus buyruqni chaqiradi — mkfs -t ext4 va mkfs.ext4 bir xil natija beradi:

sudo mkfs.ext4 /dev/sdb1
sudo mkfs.xfs /dev/sdb2
sudo mkfs.btrfs /dev/sdb3

Har bir fayl tizimi turining o'z qo'shimcha flag'lari bor, masalan:

sudo mkfs.ext4 -L data /dev/sdb1      # -L: create with a label
sudo mkfs.xfs -f /dev/sdb2            # -f: force-replace an existing filesystem

Flag'larning to'liq ro'yxati uchun har bir fayl tizimining o'z man sahifasi bor:

man mkfs.ext4
man mkfs.xfs

Danger

mkfs bo'limdagi (yoki LV’dagi) barcha mavjud ma’lumotlarni qaytarib bo'lmaydigan qilib o'chiradi. Bu buyruqni faqat bo'sh, ishlatilmayotgan bo'limda yoki o'chirib tashlasa bo'ladigan sinov VM’ida ishga tushiring. Buni production diskka qo'llashdan oldin maqsadli bo'limni lsblk, blkid bilan tasdiqlang va zaxira nusxa oling.

Mavjud fayl tizimi haqida ma’lumot olish

tune2fs — ext oilasi uchun

sudo tune2fs -l /dev/sdb1
Filesystem volume name:  data
Filesystem UUID:         1a2b3c4d-5e6f-7890-abcd-ef1234567890
Filesystem state:        clean
Block size:               4096
Inode count:              1310720
Free blocks:               5108000
Mount count:               3
Maximum mount count:      -1

tune2fs -l fayl tizimining barcha metama’lumotlarini (holat, blok hajmi, UUID, oxirgi tekshiruv sanasi) chiqaradi. tune2fs ayrim parametrlarni o'zgartirish uchun ham ishlatiladi (masalan, majburiy fsck tekshiruvi oralig'i):

sudo tune2fs -c 30 /dev/sdb1   # force fsck every 30 mounts

xfs_info — XFS uchun

sudo xfs_info /mnt/data
meta-data=/dev/sdb2              isize=512    agcount=4, agsize=1310720 blks
data     =                       bsize=4096   blocks=5242880, imaxpct=25
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2

xfs_info faqat mount qilingan fayl tizimida ishlaydi (mount nuqtasi yoki qurilma yo'li orqali chaqiriladi) — u XFS’ning ichki tuzilmasi (allocation group’lar, journal hajmi) haqida ma’lumot beradi.

Umumiy maqsadli vositalar: blkid, lsblk -f, df -T

sudo blkid /dev/sdb1
lsblk -f
df -Th
NAME   FSTYPE LABEL UUID                                 MOUNTPOINT
sdb1   ext4   data  1a2b3c4d-5e6f-7890-abcd-ef1234567890  /mnt/data

Fayl tizimi yorliqlari

Yorliq (label) — UUID o'rniga ishlatish mumkin bo'lgan, odam o'qiy oladigan nom. /etc/fstab UUID’ga ham, yorliqqa ham murojaat qila oladi.

sudo e2label /dev/sdb1 data          # set a label for ext2/3/4
sudo e2label /dev/sdb1               # show the current label

XFS uchun:

sudo xfs_admin -L data /dev/sdb2     # set a label (while unmounted)
sudo xfs_admin -l /dev/sdb2          # show the current label

Fayl tizimini tekshirish: fsck

fsck (file system check) fayl tizimidagi izchillik xatolarini (masalan, kutilmagan elektr uzilishidan keyin) tekshiradi va imkoni bo'lgan joyda ularni tuzatadi. mkfs kabi fsck ham fayl tizimiga xos buyruqqa yo'naltiradi (fsck.ext4, xfs_repair).

sudo umount /mnt/data
sudo fsck /dev/sdb1
fsck from util-linux 2.38
e2fsck 1.46.5 (30-Dec-2021)
data: clean, 11/1310720 files, 133589/5242880 blocks

Warning

fsck ni mount qilingan fayl tizimida ishga tushirish tavsiya etilmaydi — ayrim tekshirish/tuzatish amallari faol yozishlar bilan ziddiyatga kirib, ma’lumotlarni shikastlashi mumkin. Iloji boricha avval unmount qiling; root fayl tizimi kabi unmount qilib bo'lmaydigan fayl tizimlari uchun tekshiruv odatda qayta yuklash paytida, boot’ning eng boshida bajariladi.

XFS uchun tekshiruv boshqa buyruq bilan bajariladi:

sudo xfs_repair /dev/sdb2

xfs_repair ham unmount qilingan fayl tizimida ishlaydi; jiddiy shikastlanish holatlarida avval xfs_repair -L (log'ni tozalash) kerak bo'lishi mumkin — bu oxirgi yozilmagan tranzaksiyalarni tashlab yuboradi, shuning uchun u boshqa iloj bo'lmagandagina ishlatiladi.

Amaliy vaziyat: yangi bo'limda ext4 yaratish va tekshirish

Vaziyat. Bo'limlar (partitions) maqolasida yaratilgan /dev/sdb2 (20 GiB) da hali fayl tizimi yo'q. Uni ext4 bilan tayyorlash, yorliq berish va natijani tekshirish kerak.

1. Bo'limda fayl tizimi yo'qligini tasdiqlang

sudo blkid /dev/sdb2

Agar buyruq hech narsa qaytarmasa (bo'sh chiqish), bo'lim tayyor — davom etish xavfsiz.

2. Fayl tizimini yarating

sudo mkfs.ext4 -L appdata /dev/sdb2
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 5242880 4k blocks and 1310720 inodes
Filesystem UUID: 9f8e7d6c-5b4a-3210-fedc-ba0987654321
...

3. Natijani tekshiring

sudo blkid /dev/sdb2
sudo tune2fs -l /dev/sdb2 | head -10
/dev/sdb2: LABEL="appdata" UUID="9f8e7d6c-5b4a-3210-fedc-ba0987654321" TYPE="ext4"

4. Mount qiling va tasdiqlang

sudo mkdir -p /mnt/appdata
sudo mount /dev/sdb2 /mnt/appdata
df -hT /mnt/appdata
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb2      ext4   20G   24K   19G   1% /mnt/appdata

Xulosa. Fayl tizimi muvaffaqiyatli yaratildi va yorliq hamda UUID orqali tasdiqlandi. Doimiy ulash uchun keyingi qadam — /etc/fstab ga UUID orqali yozuv qo'shish, chunki qo'lda bajarilgan mount faqat joriy sessiya uchun amal qiladi.

Zaxira bloklar: nega "to'la" ext fayl tizimida hali ham joy bor

Intervyuda junior’larni qoqiltiradigan tafsilot: ext2/3/4 sukut bo'yicha fayl tizimining 5% ini root uchun zaxiraga oladi. df oddiy foydalanuvchi uchun 100% band deb ko'rsatganda root ko'pincha hali ham yoza oladi — va bu 5% ataylab qilingan. U muhim daemon’larga (ular odatda root sifatida ishlaydi) foydalanuvchilar diskni to'ldirib qo'yganda ham log yozish va yozishda davom etish imkonini beradi hamda blok taqsimlovchisiga og'ir fragmentatsiyadan qochish uchun yetarli joy qoldiradi.

sudo tune2fs -l /dev/sdb1 | grep -i "reserved block"
Reserved block count:     262144

Katta ma’lumotlar volume’ida (root fayl tizimida emas) 5% — juda ko'p behuda joy: 1 TiB diskda 50 GiB. U yerda uni kamaytirish xavfsiz:

sudo tune2fs -m 1 /dev/sdb1     # reserve 1% instead of 5%

Warning

Root (/) fayl tizimida zaxirani hech qachon 0 ga tushirmang. Bu disk to'lganda root’ga tegishli xizmatlarga yozishda davom etish imkonini beradigan xavfsizlik chegarasini olib tashlaydi va haqiqatan 100% to'lgan root fayl tizimi tizimni boot qila olmaydigan yoki tizimga kirib bo'lmaydigan holatda qoldirishi mumkin. -m ni kamaytirish / uchun emas, alohida ma’lumotlar//home volume’lari uchun. XFS’da foydalanuvchi bo'yicha bunday zaxira yo'q — to'lgan XFS fayl tizimi bosim ostida boshqacha ishlashining sabablaridan biri shu.

Qaysi fayl tizimini va qachon tanlash kerak

Vaziyat Tavsiya etilgan fayl tizimi
Umumiy maqsadli server, root//home, sinalgan barqarorlik muhim ext4
Katta media fayllar, ma’lumotlar bazasi fayllari, yuqori parallel I/O XFS
LVM’siz snapshot va checksumming kerak, tez-tez ortga qaytarish Btrfs
Katta NAS/saqlash massivi, kuchli ma’lumotlar yaxlitligi, birlashtirilgan volume boshqaruvi ZFS
Keyinchalik volume’ni kichraytirish ehtimoli yuqori ext4 yoki Btrfs (XFS emas)

Keng tarqalgan xatolar

XFS’ni kichraytirishga urinish

xfs_growfs faqat kattalashtiradi. Agar XFS bo'limini kichraytirish kerak bo'lsa, yagona yo'l — yangi, kichikroq fayl tizimini yaratib, ma’lumotlarni rsync bilan ko'chirish.

mkfs ni noto'g'ri qurilmaga qo'llash

mkfs hech qachon butun diskka (/dev/sdb) emas, mo'ljallangan bo'limga (/dev/sdb1) yoki LV’ga (/dev/vg_data/lv_app) qaratilishi kerak — aks holda bo'limlar jadvali ustidan yoziladi va undagi har bir bo'lim yo'q qilinadi.

Mount qilingan fayl tizimida fsck yoki mkfs dan foydalanish

Ikkalasi ham faol yozishlar bilan ziddiyatga kiradi. mkfs ko'pincha mount qilingan qurilmada ishlashni rad etadi, lekin -f kabi majburlash flag'lari bu himoyani chetlab o'tishi mumkin — ataylab niyat qilmasdan ulardan foydalanmang.

Yorliq va UUID’ni bir xil narsa deb hisoblash

Yorliq — odam tanlagan, o'zgartirilishi mumkin bo'lgan nom; UUID esa tizim yaratgan, deyarli hech qachon takrorlanmaydigan identifikator. fstab da UUID’dan foydalanish tavsiya etiladi, chunki yorliq ikki fayl tizimi o'rtasida tasodifan to'qnash kelishi mumkin.

Mashqlar

  1. O'chirib tashlasa bo'ladigan VM’da bitta bo'sh bo'limda ext4, boshqasida XFS yarating, ikkalasini ham yorliq bilan.
  2. tune2fs -l va xfs_info chiqishlarini solishtiring — qaysi ma’lumot umumiy (UUID, blok hajmi) va qaysi biri fayl tizimiga xos ekanini qayd qiling.
  3. ext4 bo'limini unmount qilib, uni fsck bilan tekshiring; natijada "clean" holatini tasdiqlang.
  4. Bitta bo'limda avval ext4 yarating, so'ng uning o'rniga XFS yaratish uchun uni tozalang (mkfs.xfs -f) — blkid orqali TYPE maydoni o'zgarishini kuzating.

Mashqni bajardim deyish uchun: yuklama tavsifi (katta media fayllar, tez-tez ortga qaytarishni talab qiladigan ma’lumotlar bazasi, keyinchalik kichraytirish kerak bo'lishi mumkin bo'lgan root fayl tizimi) berilganda fayl tizimini tavsiya qila olishingiz va nega ekanini asoslab bera olishingiz kerak.

Xulosa

Fayl tizimi bo'lim yoki LV ustiga fayl va katalog tuzilmasini qo'shadi; ext4 — universal, barqaror standart, XFS katta fayllarda kuchli, lekin kichraytirib bo'lmaydi, Btrfs va ZFS esa snapshot va checksumming'ni o'z ichiga olgan zamonaviy, birlashtirilgan yondashuvlar. mkfs.* oilasi fayl tizimlarini yaratadi, tune2fs/xfs_info esa mavjud fayl tizimini ko'zdan kechirishning asosiy vositalari. Fayl tizimi tayyor bo'lgach, keyingi qadam — agar u swap uchun mo'ljallangan bo'lsa, Swap fayl va partition maqolasida ko'riladigan mkswap/swapon jarayoni, oddiy fayl tizimi uchun esa mount va umount.

Manbalar