Mit Solaris 9 8/03 (SPARC 64-bit) wurde für UFS ein Filesystem Limit von 16 TB eingeführt (vorher 1 TB). Die Einschränkung auf 64-bit SPARC Systeme wurde mit Solaris 10 auf 64-bit X86 Systeme erweitert. Das Root-FS darf jedoch die Größe von 1 TB weiterhin nicht überschreiten. Für alle Benutzer eines älteren Solaris-Standes ist es nicht zu empfehlen, Disk-Devices dieser Größe einzusetzen! Da im professionellen Rechenzentrum die Kapazitäten aber schon lange in Bereiche jenseits der TB-Grenze gehen, wollte OSL testen, wie sich diese LUNs/Volumes im täglichen Umgang "anfühlen" und wie lange typische Tätigkeiten (wie newfs, fsck) für Volumes dieser Größe dauern.
Zu diesem Zweck wurde ein LUN mit ca. 5 TB auf einem RAID-System erstellt und mittels OSL Storage Cluster (ab Load 39) für Solaris verfügbar gemacht. Als Testbetriebssystem wurde Solaris 10 Update 2 X86 verwendet. Der Host ist eine SunFire X2200 M2. Das VTOC der Platte (ohne Filesystem) wurde ausgelesen:
# prtvtoc /dev/rdsk/c4t207000C0FF0A5ECFd0s0
* /dev/rdsk/c4t207000C0FF0A5ECFd0s0 partition map
*
* Dimensions:
* 512 bytes/sector
* 10744142463 sectors
* 4001724 accessible sectors
*
* Flags:
* 1: unmountable
* 10: read-only
*
* First Sector Last
* Partition Tag Flags Sector Count Sector Mount Directory
1 15 01 34 3985339 3985372
8 11 00 3985373 16384 4001756
Die Größe der LUN ist mit 10744142463 Sektoren (512 Byte/Sektor) angegeben. Das entspricht also genau 5 TB.
Dieses Volume wurde als OSL Physical Volume initialisiert, um dann ein Application Volume darauf zu erstellen. Darauf wurde dann ein "newfs" abgesetzt und mit "time" die Zeit gestoppt.
# time newfs /dev/av0/rbla
newfs: /dev/av0/rbla last mounted as /mnt
newfs: construct a new file system /dev/av0/rbla: (y/n)? y
Warning: 2048 sector(s) in last cylinder unallocated
/dev/av0/rbla: 10737418240 sectors in 1747627 cylinders of 48 tracks, 128 sectors
5242880.0MB in 12222 cyl groups (143 c/g, 429.00MB/g, 448 i/g)
super-block backups (for fsck -F ufs -o b=#) at:
32, 878752, 1757472, 2636192, 3514912, 4393632, 5272352, 6151072, 7029792,
7908512,
Initializing cylinder groups:
...............................................................................
...............................................................................
...............................................................................
.......
super-block backups for last 10 cylinder groups at:
10729372192, 10730250912, 10731129632, 10732008352, 10732887072, 10733765792,
10734644512, 10735523232, 10736401952, 10737280672
real 2m14.837s
user 0m18.598s
sys 0m0.720s
Das Anlegen des Filesystems hat etwa 2 Minuten und 15 Sekunden gedauert. Als nächster Schritt wurden diverse Dateien (gemischt groß und klein) in das gemountete Filesystem hineinkopiert. Dann wurde ein Filesystem-Check mit "fsck" angestoßen und wieder mit "time" die Zeit gemessen. Etwa 52 % des Volumes waren mit diesen Dateien ausgenutzt.
# time fsck -y /dev/av0/rbla ** /dev/av0/rbla ** Last Mounted on /mnt ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3a - Check Connectivity ** Phase 3b - Verify Shadows/ACLs ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cylinder Groups 2172458 files, 345636535 used, 325529890 free (0 frags, 325529890 blocks, 0.0% fragmentation) real 55m22.34s user 2m3.41s sys 0m13.55s
Der Filesystem Check dauerte ca. 55 Minuten bei etwa 2 Millionen Files. Nun wurden 5 große Files (7 % genutzt) auf das gemountete Volume gespielt und wieder ein "fsck" abgesetzt:
# time fsck -y /dev/av0/rbla ** /dev/av0/rbla ** Last Mounted on /mnt ** Phase 1 - Check Blocks and Sizes ** Phase 2 - Check Pathnames ** Phase 3a - Check Connectivity ** Phase 3b - Verify Shadows/ACLs ** Phase 4 - Check Reference Counts ** Phase 5 - Check Cylinder Groups FILE SYSTEM STATE IN SUPERBLOCK IS WRONG; FIX? yes 7 files, 41282247 used, 629910130 free (0 frags, 629910130 blocks, 0.0% fragmentation) real 8m39.90s user 2m56.19s sys 0m2.06s
Diesmal wurden 8 Minuten und 40 Sekunden für den "fsck" benötigt.
Die Benutzung von extra großen Volumes (größer als 2 TB) ist mit Solaris 64-bit kein Problem. Es sollte jedoch darauf geachtet werden, dass das System unter Solaris 10 läuft, um eventuell noch vorhandene Probleme mit Solaris 9 zu umgehen. Solaris 8 oder Solaris 7 sollten bei diesen Volumegrößen nicht benutzt werden, da UFS bei diesen Versionen noch auf 1 TB limitiert ist.
Unter Solaris 10 64-bit ist das Handling wie bei kleineren Volumes völlig unkompliziert. Die Geschwindigkeit des "newfs" ist mit etwa 2 Minuten bei einer 5 TB LUN im erträglichen Bereich. Ein "fsck" kann bei vielen Files schon mehrere Stunden in Anspruch nehmen, dies ist aber aufgrund der auftretenden Häufigkeit solcher Aufgaben in Ordnung, so dass dieser Punkt nicht störend ins Gewicht fällt.