
Ich suche nach einer Möglichkeit, Speicherplatz in einem AIX-Dateisystem zu belegen, ohne viele E/A-Vorgänge durchzuführen.
Ich habe es versucht dd
und lmktemp
. dd
erstellt eine Sparse-Datei, sperrt aber den Speicherplatz nicht. lmktemp
Funktioniert gut, aber es gibt einige IO und es ist etwas zeitaufwändig. Ich glaube, fallocate
es geht schnell und es gibt keine IO.
Antwort1
Die wörtliche Antwort auf Ihre Frage lautet: Nein, AIX stellt den Befehl fallocate nicht bereit. AIX stellt den Bibliotheksaufruf posix_fallocate() bereit.
Für mehr Details:
root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)64\("
/usr/include/unistd.h: extern int ftruncate64(int, off64_t);
/usr/include/unistd.h: extern int truncate64(const char *, off64_t);
root@x066:[/data/prj/python/python3-3.6.8]find /usr/include -name \*.h | xargs egrep "(fallocate|truncate)\("
/usr/include/fcntl.h:extern int posix_fallocate(int,off_t,off_t);
/usr/include/sys/fp_io.h:fp_ftruncate( struct file *fp,
/usr/include/sys/fp_io.h:extern int fp_ftruncate();
/usr/include/unistd.h: extern int ftruncate();
/usr/include/unistd.h: extern int truncate();
/usr/include/unistd.h: extern int ftruncate(int, off_t);
/usr/include/unistd.h: extern int truncate(const char *, off_t);
Was dd betrifft, das eine „sparse“ Datei bereitstellt und keinen Speicherplatz sperrt. Meines Wissens ist dies die Definition einer „sparse“ Datei – belegter logischer Speicherplatz, nicht physischer Speicherplatz. Außerdem, zu dd: Wenn kein „Seek“-Argument angegeben ist, sollte die Datei nicht spärlich sein – aber die IO-Subsysteme werden Zeit und Aufwand aufwenden.
Ja – mit einer Antwort komme ich erst viel später – aber das liegt daran, dass ich Fallocate unter AIX untersuche – und einen möglichen Fehler, den ich in einer Anwendung gefunden habe, die fallocate() (der Aufruf!, eigentlich posix_fallocate()) unter AIX verwendet.
Hoffe das hilft!
Antwort2
Sie können die Aufrufe der truncate()-Familie (ftruncate() usw.) nicht nur zum Reduzieren, sondern auch zum Erweitern von Dateien verwenden. Kürzen Sie sie einfach auf eine größere Größe als die aktuelle. Auf Dateisystemen, die Dateien mit Lücken unterstützen, geht das schnell, viel schneller als das Anhängen der erforderlichen Nullblöcke an das Ende der Dateien.