Ext4 के साथ संयोजन में पारदर्शी संपीड़न फाइल सिस्टम


26

मैं एक ऐसी परियोजना का परीक्षण करने की कोशिश कर रहा हूं जिसे ext4 फ़ाइल सिस्टम के उपयोग के साथ संपीड़ित भंडारण की आवश्यकता है क्योंकि मैं जिस एप्लिकेशन का उपयोग करता हूं वह ext4 सुविधाओं पर निर्भर करता है।

वहाँ ext4 पर पारदर्शी संपीड़न के लिए किसी भी उत्पादन / स्थिर समाधान कर रहे हैं?

मैंने क्या कोशिश की है:

संपीड़न सक्षम के साथ ZFS मात्रा पर Ext4 । यह वास्तव में एक प्रतिकूल प्रभाव था। मैंने lz4 कम्प्रेशन के साथ एक सक्षम ZFS वॉल्यूम बनाने और / dev / zvol / ... पर एक ext4 फाइल सिस्टम बनाने की कोशिश की, लेकिन zfs वॉल्यूम ने वास्तविक उपयोग को दोगुना कर दिया और संपीड़न का कोई असर नहीं हुआ।

# du -hs /mnt/test
**1.1T**    /mnt/test
# zfs list
NAME        USED  AVAIL  REFER  MOUNTPOINT
pool       15.2T  2.70G   290K  /pool
pool/test  15.2T  13.1T  **2.14T**  -

जेडएफएस क्रिएशन कमांड्स

zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test

Fusecompress: 100% स्थिर नहीं बल्कि काम करने लगा। विकल्प की तलाश है।

LessFS: क्या Ext4 के साथ संयोजन में पाठ का उपयोग करना संभव है? मैंने अभी तक कोशिश नहीं की है, लेकिन उपयोगकर्ता अंतर्दृष्टि में दिलचस्पी होगी।

एक बड़ी समस्या: सच्ची पारदर्शिता नहीं

एक मुद्दा जिसे मैंने fusecompress के साथ देखा था वह कोटा था। उदाहरण के लिए, यदि मैंने फ़ाइल सिस्टम पर संपीड़न सक्षम किया है, तो मैं चाहता हूं कि मेरा सिस्टम संपीड़न से लाभ उठाएगा, जरूरी नहीं कि अंतिम उपयोगकर्ता। यदि मैंने किसी उपयोगकर्ता के लिए 1.5 के संपीड़न अनुपात के साथ 1GB का कोटा सक्षम किया है, तो वे 1GB डेटा के बजाय 1.5GB डेटा और सिस्टम को संपीड़न से लाभान्वित करने में सक्षम होंगे। यह भी df -h पर प्रदर्शित होता है। वहाँ एक समाधान करने के लिए कोटा के लिए पारदर्शी पारदर्शी है?


ज़रूर। क्या आप कृपया उस ओएस / डिस्ट्रो / संस्करण को सूचीबद्ध कर सकते हैं और उस डेटा की प्रकृति के बारे में जानकारी जिसे आप स्टोर करना चाहते हैं?
eWhite

इसके अलावा हार्डवेयर विवरण।
eWhite

1
एक सॉफ्टवेयर RAID6 में @ 8wh3TB। डेटा अन्य सर्वरों से rsynced बैकअप होगा ताकि मिश्रित डेटा प्रकार और विभिन्न अंत उपयोगकर्ता, दस्तावेज, आदि CentOS 6.5 x64।
user235918

क्या आप सुनिश्चित हैं कि आपको इसकी आवश्यकता है? क्या आपके पास कई बड़ी, विरल फाइलें हैं? इन दिनों डिस्क स्पेस सस्ता है।
एंड्रयू शुलमैन

@AndrewSchulman: संपीड़न का लाभ उठाना मेरी गणना से बेहतर विधि है। अतिरिक्त डिस्क और नियंत्रकों की लागत जो उनका समर्थन करते हैं वे सीपीयू की लागत से अधिक हैं।
182 बजे user235918

जवाबों:


27

मैं लिनक्स पर ZFS का उपयोग वॉल्यूम प्रबंधक और पारंपरिक फाइल सिस्टम के लिए अतिरिक्त सुरक्षा और कार्यक्षमता प्रदान करने के साधन के रूप में करता हूं । इसमें ब्लॉक स्तर के स्नैपशॉट, प्रतिकृति, डिडुप्लीकेशन, कम्प्रेशन और एक्सएफएस या एक्सटी 4 सिस्टम के लिए उन्नत कैशिंग लाना शामिल है ।

देखें: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ एक और स्पष्टीकरण के लिए।

मेरे सबसे सामान्य उपयोग के मामले में, मैं ZFS zvol सुविधा का लाभ मौजूदा ज़ूल पर एक विरल मात्रा बनाने के लिए करता हूँ। Zvol के गुणों को सामान्य ZFS फाइलसिस्टम की तरह ही सेट किया जा सकता है। इस मोड़ पर, आप संपीड़न प्रकार, वॉल्यूम आकार, कैशिंग विधि आदि गुण सेट कर सकते हैं।

इस zvol को बनाना Linux के लिए एक ब्लॉक डिवाइस प्रस्तुत करता है जिसे आपकी पसंद के फाइल सिस्टम के साथ स्वरूपित किया जा सकता है। अपने विभाजन और तैयार मात्रा का उपयोग fdiskया partedबनाने के लिए mkfs

इसे माउंट करें और आपके पास अनिवार्य रूप से एक zvol द्वारा समर्थित और इसके सभी गुणों के साथ एक फाइलसिस्टम है।


यहाँ मेरे कार्यप्रवाह है ...

चार डिस्क से मिलकर एक ज़ूलू बनाएं:
आप ashift=12जिस प्रकार के डिस्क का उपयोग कर रहे हैं, उसके लिए निर्देश चाहते हैं। इस मामले में जूलप का नाम "vol0" है।

zpool create -o ashift = 12 -f vol0 दर्पण scsi-AccOW140403AS1322043 scsi-AccOW140403AS1322042 दर्पण scsi-AccOW140403AS1322013 scsi-AccOW140403AS1322044

आरंभिक ज़ूलू सेटिंग्स सेट करें:
मैं autoexpand=onकभी भी बड़ी ड्राइव के साथ डिस्क को बदलने या ZFS दर्पण सेटअप में पूल का विस्तार करने के मामले में ज़ूल स्तर पर सेट करता हूं । मैं आमतौर पर ZFS raidz1 / 2/3 का उपयोग खराब प्रदर्शन और ज़ुल्फ़ के विस्तार में असमर्थता के कारण नहीं करता।

zpool set autoexpand=on vol0

प्रारंभिक zfs फाइलसिस्टम गुण सेट करें:
कृपया नए ZFS इंस्टॉलेशन के लिए lz4कम्प्रेशन एल्गोरिथ्म का उपयोग करें । इसे हर समय छोड़ना ठीक है।

zfs set compression=lz4 vol0
zfs set atime=off vol0

ZFS zvol बनाएं:
लिनक्स पर ZFS के लिए, यह बहुत महत्वपूर्ण है कि आप एक बड़े ब्लॉक आकार का उपयोग करें। -o volblocksize=128kयहाँ पूरी तरह से आवश्यक है। -sविकल्प के लिए एक विरल zvol बनाता है और पूल अंतरिक्ष का उपभोग नहीं करता है जब तक यह आवश्यक है। यदि आप अपने डेटा को अच्छी तरह से जानते हैं, तो आप यहां ओवरकम कर सकते हैं। इस मामले में, मेरे पास पूल में लगभग 444GB का प्रयोग करने योग्य डिस्क स्थान है, लेकिन मैं XFS को 800GB की मात्रा पेश कर रहा हूं।

zfs create -o volblocksize=128K -s -V 800G vol0/pprovol

विभाजन zvol डिवाइस:
( पहले zvol के लिए / dev / zd0 होना चाहिए; / dev / zd16, / dev / zd32, बाद के zvols के लिए )

fdisk /dev/zd0 # (create new aligned partition with the "c" and "u" parameters)

फाइलसिस्टम बनाएं और माउंट करें:
नए बनाए गए विभाजन पर mkfs.xfs या ext4, / dev / zd0p1।

mkfs.xfs -f -l size=256m,version=2 -s size=4096 /dev/zd0p1

के साथ UUID को पकड़ो blkidऔर संशोधित करें /etc/fstab

UUID=455cae52-89e0-4fb3-a896-8f597a1ea402 /ppro       xfs     noatime,logbufs=8,logbsize=256k 1 2

नया फ़ाइल सिस्टम माउंट करें।

mount /ppro/

परिणाम ...

[root@Testa ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde2        20G  8.9G  9.9G  48% /
tmpfs            32G     0   32G   0% /dev/shm
/dev/sde1       485M   63M  397M  14% /boot
/dev/sde7       2.0G   68M  1.9G   4% /tmp
/dev/sde3        12G  2.6G  8.7G  24% /usr
/dev/sde6       6.0G  907M  4.8G  16% /var
/dev/zd0p1      800G  398G  403G  50% /ppro  <-- Compressed ZFS-backed XFS filesystem.
vol0            110G  256K  110G   1% /vol0

ZFS फाइल सिस्टम लिस्टिंग

[root@Testa ~]# zfs list
NAME           USED  AVAIL  REFER  MOUNTPOINT
vol0           328G   109G   272K  /vol0
vol0/pprovol   326G   109G   186G  -   <-- The actual zvol providing the backing for XFS.
vol1           183G   817G   136K  /vol1
vol1/images    183G   817G   183G  /images

ZFS zpool सूची।

[root@Testa ~]# zpool list -v
NAME   SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
vol0   444G   328G   116G    73%  1.00x  ONLINE  -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322043      -      -      -         -
    scsi-AccOW140403AS1322042      -      -      -         -
  mirror   222G   164G  58.1G         -
    scsi-AccOW140403AS1322013      -      -      -         -
    scsi-AccOW140403AS1322044      -      -      -         -

ZFS zvol गुण ( ध्यान दें referenced, compressratioऔरvolsize )।

[root@Testa ~]# zfs get all vol0/pprovol
NAME          PROPERTY               VALUE                  SOURCE
vol0/pprovol  type                   volume                 -
vol0/pprovol  creation               Sun May 11 15:27 2014  -
vol0/pprovol  used                   326G                   -
vol0/pprovol  available              109G                   -
vol0/pprovol  referenced             186G                   -
vol0/pprovol  compressratio          2.99x                  -
vol0/pprovol  reservation            none                   default
vol0/pprovol  volsize                800G                   local
vol0/pprovol  volblocksize           128K                   -
vol0/pprovol  checksum               on                     default
vol0/pprovol  compression            lz4                    inherited from vol0
vol0/pprovol  readonly               off                    default
vol0/pprovol  copies                 1                      default
vol0/pprovol  refreservation         none                   default
vol0/pprovol  primarycache           all                    default
vol0/pprovol  secondarycache         all                    default
vol0/pprovol  usedbysnapshots        140G                   -
vol0/pprovol  usedbydataset          186G                   -
vol0/pprovol  usedbychildren         0                      -
vol0/pprovol  usedbyrefreservation   0                      -
vol0/pprovol  logbias                latency                default
vol0/pprovol  dedup                  off                    default
vol0/pprovol  mlslabel               none                   default
vol0/pprovol  sync                   standard               default
vol0/pprovol  refcompressratio       3.32x                  -
vol0/pprovol  written                210M                   -
vol0/pprovol  snapdev                hidden                 default

Zvol का विभाजन क्यों? क्या यह सीधे तौर पर इस्तेमाल नहीं किया जा सकता है?
माइकल हैम्पटन

3
@Michael Hampton मुख्य रूप से संरेखण और स्थिरता के लिए। इसके अलावा, अगर मुझे अंतर्निहित वॉल्यूम का विस्तार करना है, तो मुझे लचीलापन चाहिए। यहां अमूर्तता की कई परतें हैं। यह /dev/sdbबनाम का उपयोग करने के तर्क के समान है /dev/sdb1
14

1
आपकी जानकारी के लिए धन्यवाद। यहाँ बहुत सारी अच्छी सलाह। मैं इसका परीक्षण करने जा रहा हूं।
user235918

2
@Michael Hampton BTW, इन दिनों, मैं अब और विभाजन नहीं करता ... विशेष रूप से आभासी मशीनों के साथ।
ewwhite

1
क्या आप इस सेटअप (RAM, CPU) में ZFS परत के लिए अतिरिक्त संसाधन लागत के बारे में बता सकते हैं?
एस.जे.

4

तुम भी ext4 फाइल सिस्टम पर त्याग को सक्षम करने की जरूरत है। त्याग के बिना, zfs फ़ाइलों को हटाए जाने पर स्थान को पुनः प्राप्त नहीं करता है। यह ext4 फाइल सिस्टम रिपोर्ट और zfs वॉल्यूम रिपोर्ट के बीच बड़े स्थान की विसंगतियों के लिए अग्रणी हो सकता है।


4
Red Hat यह सलाह नहीं देता है कि प्रदर्शन के विकल्प (ext4 या xfs के साथ) को छोड़ दें, क्योंकि प्रदर्शन प्रभाव है। यह समय-समय पर fstrimकमांड चलाने के लिए क्लीनर है ।
ewwhite

प्रदर्शन को प्रभावित करने वाले मतों को खारिज करने के बारे में टिप्पणी: यह पुराने, निम्न गुणवत्ता वाले एसएसडी के साथ सच है। यह नए लोगों के साथ सच नहीं है।
स्टोअट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.