Größenangaben beim Verkleinern von Dateisystemen (war: Re: Festplatten verschlüsselt?)
Hi Jochen,
Am Sonntag, 10. März 2013 schrieb Jochen Spieker:
> Martin Steigerwald:
> > Ich lehre mittlerweile in lvreduce und resize2fs die gleiche Größe in
> > der *gewünschten* Einheit anzugeben. Z.B. beidesmal 20G, das bedeutet
> > *auf* 20G verkleinern. Denn seit geraumer Zeit rechnen beide Werkzeuge
> > diese 20G auf das Byte genau identisch aus. .)
>
> Ist das denn irgendwo explizit dokumentiert? Ich habe ja, wie ich
> schrieb, letztens mit sowas hantiert. Da habe ich lieber Verschnitt
> eingeplant, und die jeweilige Ebene drüber am Ende vergrößert, weil das
> ja immer problemlos geht.
>
> IIRC hatte ich im Hinterkopf, dass die Einheiten konsistent verwendet
> werden, fand aber nicht, dass die Dokumentation das zweifelsfrei
> hergibt. Ich glaube, die Manpages haben zu diesem Zeitpunkt zwar
> die Einheiten augenscheinlich konsistent benannt, aber das war mir zu
> wenig. In manchen Dingen ist man doch konservativ. :)
Auszug resize2fs(8):
The size parameter specifies the requested new size of the
filesystem. If no units are specified, the units of the size
parameter shall be the filesystem blocksize of the filesystem.
Optionally, the size parameter may be suffixed by one of the
following the units designators: 's', 'K', 'M', or 'G', for 512
byte sectors, kilobytes, megabytes, or gigabytes, respectively.
The size of the filesystem may never be larger than the size of
the partition. If size parameter is not specified, it will
default to the size of the partition.
Note: when kilobytes is used above, I mean real, power-of-2
kilobytes, (i.e., 1024 bytes), which some politically correct
folks insist should be the stupid-sounding ``kibibytes''. The
same holds true for megabytes, also sometimes known as
``mebibytes'', or gigabytes, as the amazingly silly
``gibibytes''. Makes you want to gibber, doesn't it?
Auszug lvreduce:
-L, --size [-]LogicalVolumeSize[bBsSkKmMgGtTpPeE]
Reduce or set the logical volume size in units of
megabytes. A size suffix of k for kilobyte, m for
megabyte, g for gigabytes, t for terabytes, p for
petabytes or e for exabytes is optional. With the -
sign the value will be subtracted from the logical vol‐
ume's actual size and without it it will be taken as an
absolute size.
Also nö. Schade auch.
ich stimme mit der Meinung von Theodore T'so oder wer auch immer die
Manpage geschrieben hat nicht überein:
Kilo, Mega und Giga sind *metrische* Einheiten. Also 1000nder-Basis.
Genau durch diese Begriffsverwirrung ist nun nämlich nicht klar, was
lvreduce da macht. Ob Kibi, Mibi, Gigi gefallen, lasse ich mal dahin
gestellt – eindeutig sind sie zumindest. Ebenso wie Kilo, Mega, Giga ja
an sich auch eindeutig sind.
Ich lese
302 »·······v = strtod(val, &ptr);
303
304 »·······if (ptr == val)
305 »·······»·······return 0;
306
307 »·······if (*ptr) {
308 »·······»·······for (i = strlen(suffixes) - 1; i >= 0; i--)
309 »·······»·······»·······if (suffixes[i] == tolower((int) *ptr))
310 »·······»·······»·······»·······break;
311
312 »·······»·······if (i < 0) {
313 »·······»·······»·······return 0;
314 »·······»·······} else if (i == 7) {
[…]
329 »·······»·······} else {
330 »·······»·······»·······/* all other units: kmgtpe */
331 »·······»·······»·······while (i-- > 0)
332 »·······»·······»·······»·······v *= 1024;
^^^^
333 »·······»·······»·······v *= 2;
334 »·······»·······}
aus tools/lvmcmdline.c so, als ob lvm aber tatsächlich auf 1024er-Basis
rechnet. Das deckt sich auch mit meiner Erfahrung. Denn das würde
in lvm2 kommt bei den Größen immer weniger raus als bei fdisk :)
Nicht zuletzt habe ich schon desöfteren erfolgreich Dateisysteme genau
so verkleinert. Und meine Schulungsteilnehmer auch. Auch mit zweitem
fsck, *nach* dem Verkleinern :)
--
Martin 'Helios' Steigerwald - http://www.Lichtvoll.de
GPG: 03B0 0D6C 0040 0710 4AFA B82F 991B EAAC A599 84C7
Reply to: