Imansible ridimensionare2fs – combinazione di flex_bg e! Resize_inode

Recentemente ho installato il mio primo raid di software con mdadm e dopo aver aggiunto altri dischi al raid non riesco a ridimensionare il filesystem alla dimensione totale del raid. Ho creato un unico file system (~ 16TB) su / dev / md0 tramite:

mkfs.ext4 -v -b 4096 -t huge -E stride=128,stripe-width=256 /dev/md0 

Poi ho aspettato dolorosamente per un paio di giorni in quanto tutti i dati del vecchio raid copiati sul nuovo raid; Mi sono spostato sui dischi e sono cresciuto il raid e poi finalmente io:

 resize2fs -p /dev/md0 

Che mi informa che

 resize2fs 1.42 (29-Nov-2011) resize2fs: /dev/md0: The combination of flex_bg and !resize_inode features is not supported by resize2fs 

Mi manca alcuna comprensione di esattamente quali sono le due caratteristiche o perché la combinazione è fastidiosa, quindi contro il mio giudizio migliore ho cercato di aggiungere resize_inode:

 tune2fs -O +resize_inode /dev/md0 

Ma sono stato sparato:

 Setting filesystem feature 'resize_inode' not supported. 

E non sono abbastanza coraggioso per cercare di rimuovere flex_bg poichè non voglio realmente fare nulla che potrebbe mettere i miei dati a rischio. Sto eseguendo Ubuntu 12.04 con il kernel 3.5.1:

 Linux critter 3.5.1-030501-generic #201208091310 SMP Thu Aug 9 17:11:48 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux 

Ho testato le size di resize2fs con v1.42.5 (l'ultima versione disponibile) senza alcun risultato. Quindi, per essere chiari, la mia domanda è: come posso ridimensionare questo file system ext4 alla dimensione del raid (senza ricreare, preferibilmente)?

Modifica: ecco alcune informazioni sul file system che potrebbero essere utili.

 tune2fs -l /dev/md0 tune2fs 1.42 (29-Nov-2011) Filesystem volume name: <none> Last mounted on: /media/Bigger Filesystem UUID: baecfa03-74c1-42ad-8e19-3b823f05f502 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr dir_index filetype extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl Filesystem state: clean Errors behavior: Continue Filesystem OS type: Linux Inode count: 274700288 Block count: 4395202560 Reserved block count: 219760128 Free blocks: 247712956 Free inodes: 274636266 First block: 0 Block size: 4096 Fragment size: 4096 Blocks per group: 32768 Fragments per group: 32768 Inodes per group: 2048 Inode blocks per group: 128 RAID stride: 128 RAID stripe width: 768 Flex block group size: 16 Filesystem created: Fri Aug 17 02:54:50 2012 Last mount time: Mon Aug 20 02:21:51 2012 Last write time: Mon Aug 20 02:25:07 2012 Mount count: 3 Maximum mount count: -1 Last checked: Fri Aug 17 02:54:50 2012 Check interval: 0 (<none>) Lifetime writes: 16 TB Reserved blocks uid: 0 (user root) Reserved blocks gid: 0 (group root) First inode: 11 Inode size: 256 Required extra isize: 28 Desired extra isize: 28 Journal inode: 8 Default directory hash: half_md4 Directory Hash Seed: b357ba49-60b1-4c55-837f-a70c8285a8f5 Journal backup: inode blocks 

    3 Solutions collect form web for “Imansible ridimensionare2fs – combinazione di flex_bg e! Resize_inode”

    Questo potrebbe aiutarti – http://www.spinics.net/lists/linux-ext4/msg27511.html

    Prendi i backup prima di fare qualsiasi cosa, dato che quello che stai facendo sembra molto rischioso con ext4.

    Vedi questo – https://ext4.wiki.kernel.org/index.php/Ext4_Howto

     WARNING: It is NOT recommended to resize the inodes using resize2fs with e2fsprogs 1.41.0 or later, as this is known to corrupt some filesystems. 

    Fino a 16TB sembra fattibile con un file system ext4 a 64 bit, ma lo stato degli strumenti sembra essere in un stream. Questa è una buona lettura – http://blog.ronnyegner-consulting.de/2011/08/18/ext4-and-the-16-tb-limit-now-solved/

    A less che non si sappia da uno sviluppatore di file di file ext4, si potrebbe chiedere questa domanda sulle mailing list ext4.

    Chida – Avevo precedentemente trovato questi URL, ma sapevo che l'ext4 avrebbe gestito più di 16TB con un kernel aggiornato e strumenti. Ma ancora non funzionava.

    Infine, ho ottenuto una risposta dalla mailing list linux-ext4 – il command mkfs.ext4 che ho usato è stato trattato. Ho mescolato t e -T. Avrebbe dovuto leggere:

     mkfs.ext4 -v -b 4096 -t ext4 -T huge -E stride=128,stripe-width=256 /dev/md0 

    E poi – mi è stato detto – avrebbe incluso resize_inode e funzionava come previsto.

    Grazie per l'aiuto.

    So che questo è un vecchio, ma solo per il fatto che qualcuno lo legga in futuro …

    La flex_bg è (relativamente nuova) una funzionalità che consente al filesystem di dividersi più flessibilmente nei "gruppi di block". Tradizionalmente è diviso in gruppi bloccati con size uguali e predefinite. Il vantaggio di flex_bg è che un gruppo di blocchi virtuale più grande consentirà di avere ad esempio una più grande tabella di inode affollata – e poi la scrittura di file di file potrebbe accadere più velocemente in quanto non avrebbe bisogno di andare a cercare spazio in un altro gruppo di blocchi.

    Il resize_inode è uno spazio pre-assegnato per il caso in cui si potrebbe desiderare di ridimensionare il filesystem in futuro. Viene utilizzato principalmente per cercare di evitare la necessità di spostare fisicamente la tabella inode.

    Il formato resize_inode richiede uno spazio e consente una ridimensionamento più veloce e più veloce di un filesystem e flex_bg riduce i vincoli di count inode (file / dir count) e migliora le performance.

    La cosa triste è che il mkfs non era probabilmente abbastanza potente per poter cambiare questa funzionalità su un filesystem entro il momento della pubblicazione della domanda e potrebbe ancora avere problemi a farlo per alcune funzionalità. Ma cambiando questi non dovresti danneggiare il tuo filesystem, finché è sano. Quindi fsck -f /dev/SD... sempre eseguire fsck -f /dev/SD... prima di tentare di modificare tali funzionalità, e quindi è bene andare.

      Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.