RHEL5: Imansible creare file scarsetti più grandi di 256GB in tmpfs

/var/log/lastlog viene scritto quando si accede. La dimensione di questo file è basata sul più grande UID del sistema. Maggiore è l'UID massimo, più grande è questo file. Fortunatamente è un file scadente in modo che la dimensione del disco sia molto più piccola rispetto alle size dei report ls -s ( ls -s riport le size sul disco).

Nel nostro sistema stiamo autenticando contro un server Active Directory e gli utenti UID sono assegnati finiscono per essere veramente, veramente grandi. Come, ad esempio, UID 900.000.000 per il primo utente AD, 900.000.001 per il secondo, ecc.

  • Come registrare i comandi / login in linux?
  • Il server Debian ha degradato l'arrays mdadm su each avvio
  • Dell Perc 6 / i Raid Monitoraggio sui kernel Linux 2.6.32-2x
  • Qual è la differenza tra una shell di login e una interazione?
  • Come spostare i file tra due secchi S3 con un costo minimo?
  • Logrotate: rotazione di file non di log?
  • È strano ma va bene. Risulta in /var/log/lastlog essere huuuuuge, anche se – una volta che un utente di AD registra in lastlog presenta come 280GB. Il suo formato reale è ancora piccolo, per fortuna.

    Questo funziona bene quando il file /var/log/lastlog è memorizzato sul disco rigido di un filesystem ext3. Tuttavia, si interrompe se il lastlog è memorizzato in un file system tmpfs. Quindi appare che la dimensione massima del file per each file sul tmpfs è di 256 GB, quindi il programma sessreg fuori errori cercando di scrivere in lastlog .

    Dov'è questo limite da 256 GB da e da come posso aumentarlo?

    Come semplice prova per la creazione di file scarsissimi che ho fatto:

     dd if=/dev/zero of=sparse-file bs=1 count=1 seek=300GB 

    Ho provato Googling per la dimensione del file "tmpfs max", "il limite dei file system 256", "la dimensione del file linux max", cose del genere. Non sono stato in grado di trovare molto. La sola menzione di 256GB che posso trovare è che i filesystem ext3 con blocchi 2KB sono limitati ai file da 256 GB. Ma i nostri dischi rigidi sono formattati con blocchi da 4K in modo che non sembra essere – per non parlare di questo sta accadendo in un tmpfs montato sopra il disco rigido in modo che la partizione ext3 non dovrebbe essere un fattore.

    Questo succede tutto su un sistema a 64 bit di Red Hat Enterprise Linux 5.4. È interessante notare che, sulla mia macchina per lo sviluppo personale, che è una scatola Fedora Core 6 a 32 bit, posso creare file da 300 GB + in file system tmpfs senza problemi. Nei sisthemes RHEL5.4 non è andata.

  • Managed Hosting vs Co-location
  • Fare un rm-rf su un tree di directory enorme richiede ore
  • Modo più veloce per spostare un file di grandi size da un host ESXi ad un altro
  • I migliori parametri per il filesystem ext4 per la memorizzazione di immagini del disco virtuale
  • In * nix, come determinare quale file system è un file specifico?
  • Come bloccare "Ricorda questa password" del Finder nei computer client?
  • 2 Solutions collect form web for “RHEL5: Imansible creare file scarsetti più grandi di 256GB in tmpfs”

    La risposta è trovata nella sorgente Linux, in particolare, /usr/src/linux/mm/shmem.c , partendo dalla linea 70 del mio sistema (Gentoo 2.6.31-ish):

     /* * The maximum size of a shmem/tmpfs file is limited by the maximum size of * its triple-indirect swap vector - see illustration at shmem_swp_entry(). * * With 4kB page size, maximum file size is just over 2TB on a 32-bit kernel, * but one eighth of that on a 64-bit kernel. With 8kB page size, maximum * file size is just over 4TB on a 64-bit kernel, but 16TB on a 32-bit kernel, * MAX_LFS_FILESIZE being then more restrictive than swap vector layout. 

    Un ottavo di 2 TB è esattamente 256 GB. Le size più grandi sono possibili con un kernel a 32 bit, come è stato scoperto con il tuo sistema di test a 32 bit FC6.

    Sembra che la modifica della dimensione della pagina potrebbe essere correlata all'abilitazione del supporto dei filesystem HugeTLB nel kernel. Tuttavia, non so abbastanza circa le intestine del kernel per dire come o perché, o quali passi che devi prendere per approfittarne di esso, o quali altre implicazioni potrebbero avere. Per abilitarlo, eseguire make menuconfig , passare a File systems e quindi Pseudo filesystems . L'opzione in questione è il supporto del sistema di file HugeTLB . La guida online afferma:

     CONFIG_HUGETLBFS: hugetlbfs is a filesystem backing for HugeTLB pages, based on ramfs. For architectures that support it, say Y here and read <file:Documentation/vm/hugetlbpage.txt> for details. If unsure, say N. 

    Potrebbe valere la pena di eseguire questo anche con StackOverflow. Spero che aiuti.

    Un suggerimento … potresti fare un'image ext3 in tmpfs e montarla, e metteresti l'ultimo file dentro? Qualcosa di simile a:

     cd /tmp dd if=/dev/zero of=lastlog.img bs=1024k count=10 losetup /dev/loop1 lastlog.img mkfs.ext3 /dev/loop1 mount /dev/loop1 /var/lastlog 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.