Gibt es in AIX einen Befehl, der dem von fallocate in Linux ähnelt?

Gibt es in AIX einen Befehl, der dem von fallocate in Linux ähnelt?

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 ddund lmktemp. dderstellt eine Sparse-Datei, sperrt aber den Speicherplatz nicht. lmktempFunktioniert gut, aber es gibt einige IO und es ist etwas zeitaufwändig. Ich glaube, fallocatees 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.

verwandte Informationen