Mailinglist Archive: opensuse-es (1097 mails)

< Previous Next >
[opensuse-es] Limitación a SÓLO 16 particiones [Era: Zend-Zmd]
  • From: "Carlos E. R." <robin.listas@xxxxxxxxxxxxxx>
  • Date: Tue, 11 Sep 2007 13:00:23 +0200 (CEST)
  • Message-id: <Pine.LNX.4.64.0709111220070.5954@xxxxxxxxxxxxxxxx>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


El 2007-09-11 a las 08:45 +0200, Camaleón escribió:

> El 10/09/07, Carlos E. R. escribió:
> 
> > Pues iros preparando si teneis sistemas con discos de interfaz paralelo
> > (pata) con más de 16 particiones, porque no podreis instalar la 10.3. La
> > 10.3 puede que la arreglen, pero para las 10.4 no funcionará. Nos quedará
> > usar la 10.3 pa' los restos :-/
> 
> En la lista inglesa ha salido el tema en varias ocasiones, pero no me
> queda claro lo siguiente:
> 
> 1) ¿Afecta a todo tipo de dispositivos de almacenamiento? Discos duros
> fijos, memorias flash (usb, sd, mmc...).

Sí.

Sí mientras usen nombres como sda, sdb, sdc...

> 2) ¿Afecta a todas las interfaces de conexión? S-ata, ide/pata, scsi,
> sas, fibra...

Sí.

Sí porque se unifican todas las interfaces en la scsi.


> 3) ¿Cuál es el motivo técnico de esta limitación "ahora"?

Que unifican el acceso a todos los discos a través de la interfaz scsi, y 
ésta está definida en Linux para usar sólo 16 particiones y no es 
cambiable.


> 4) ¿Es a nivel de kernel (todos los kernel de la versión 2.6.x) es
> decir, todas las distribuciones Linux que utilicen ese kernel se verán
> afectadas?

Sí.

A no ser que decidan mantener por su cuenta el código ide pata clásico.

> 
> 5) ¿Qué pasará con los sistemas actuales con más de 16 particiones?
> ¿Imposible acceder a las particiones 17, 18...?

Exacto, imposible. Te jodes. :-/

La instalación de la 10.3 te saca una ventana diciendo que si continuas 
instalando esas particiones no serán visibles. Que puedes reparticionar 
tus discos con menos particiones, o usar LVM, que también supone 
reparticionar.

O rebotar con la opción "hwprobe=-modules-pata" para seguir usando el 
módulo antiguo ide pata, por el momento. En la 10.4 lo quitarán del todo, 
y te quedas en bragas. Perdón por el lenguaje, pero tengo un mosqueo...



El motivo de que scsi en linux sólo soporte 16 particiones es que el 
número "minor" de los devices es un byte. Es que alguien pensó en su día 
que 8 bits eran bastante.

Si haces "ls -l /dev/hd?" ves:

brw-r-----  1 root disk  3,  0 2007-09-10 15:29 /dev/hda
brw-r-----  1 root disk  3, 64 2007-09-10 15:29 /dev/hdb
brw-rw----+ 1 root disk 22,  0 2007-09-10 15:30 /dev/hdc
brw-r-----  1 root disk 22, 64 2007-09-10 15:29 /dev/hdd
                            ^^\
                        ^^\     minor
                            major

Si miras en /usr/src/linux/Documentation/devices.txt, ves que los discos 
hda, hdb, están definidos así:

  3 block       First MFM, RLL and IDE hard disk/CD-ROM interface
                  0 = /dev/hda          Master: whole disk (or CD-ROM)
                 64 = /dev/hdb          Slave: whole disk (or CD-ROM)

                For partitions, add to the whole disk device number:
                  0 = /dev/hd?          Whole disk
                  1 = /dev/hd?1         First partition
                  2 = /dev/hd?2         Second partition
                    ...
                 63 = /dev/hd?63        63rd partition

                For Linux/i386, partitions 1-4 are the primary
                partitions, and 5 and above are logical partitions.
                Other versions of Linux use partitioning schemes
                appropriate to their respective architectures.

Comprobemos ahora hda* y hdb*:

brw-r----- 1 root disk 3,  0 2007-09-10 15:29 /dev/hda
brw-r----- 1 root disk 3,  1 2007-09-10 15:29 /dev/hda1
brw-r----- 1 root disk 3,  2 2007-09-10 15:29 /dev/hda2
brw-r----- 1 root disk 3,  5 2007-09-10 15:29 /dev/hda5
brw-r----- 1 root disk 3,  6 2007-09-10 15:29 /dev/hda6
brw-r----- 1 root disk 3,  7 2007-09-10 15:29 /dev/hda7
brw-r----- 1 root disk 3,  8 2007-09-10 15:29 /dev/hda8
brw-r----- 1 root disk 3,  9 2007-09-10 15:30 /dev/hda9
brw-r----- 1 root disk 3, 10 2007-09-10 15:30 /dev/hda10
brw-r----- 1 root disk 3, 11 2007-09-10 15:29 /dev/hda11
brw-r----- 1 root disk 3, 12 2007-09-10 15:30 /dev/hda12
brw-r----- 1 root disk 3, 13 2007-09-10 15:29 /dev/hda13
brw-r----- 1 root disk 3, 14 2007-09-10 15:29 /dev/hda14
brw-r----- 1 root disk 3, 15 2007-09-10 15:29 /dev/hda15
brw-r----- 1 root disk 3, 16 2007-09-10 15:30 /dev/hda16
brw-r----- 1 root disk 3, 17 2007-09-10 15:29 /dev/hda17
brw-r----- 1 root disk 3, 18 2007-09-10 15:30 /dev/hda18
brw-r----- 1 root disk 3, 19 2007-09-10 15:30 /dev/hda19
brw-r----- 1 root disk 3, 20 2007-09-10 15:29 /dev/hda20

brw-r----- 1 root disk 3, 64 2007-09-10 15:29 /dev/hdb
brw-r----- 1 root disk 3, 65 2007-09-10 15:29 /dev/hdb1
brw-r----- 1 root disk 3, 66 2007-09-10 15:29 /dev/hdb2
brw-r----- 1 root disk 3, 67 2007-09-10 15:29 /dev/hdb3
brw-r----- 1 root disk 3, 69 2007-09-10 15:29 /dev/hdb5
brw-r----- 1 root disk 3, 70 2007-09-10 15:30 /dev/hdb6
brw-r----- 1 root disk 3, 71 2007-09-10 15:29 /dev/hdb7
brw-r----- 1 root disk 3, 72 2007-09-10 15:29 /dev/hdb8
brw-r----- 1 root disk 3, 73 2007-09-10 15:29 /dev/hdb9
brw-r----- 1 root disk 3, 74 2007-09-10 15:29 /dev/hdb10
brw-r----- 1 root disk 3, 75 2007-09-10 15:29 /dev/hdb11
brw-r----- 1 root disk 3, 76 2007-09-10 15:30 /dev/hdb12
brw-r----- 1 root disk 3, 77 2007-09-10 15:29 /dev/hdb13


O sea, los minor del 0 al 63 son el hda y del 64 al 126 son la hdb. Eso es 
porque han divido el byte del minor en dos partes: dos bits para el disco 
(¡o uno!), y seis para la partición.

Y me falta contabilizar un bit, la cosa no encaja del todo. Como no sea 
para distinguir dispositivos de caracter o de bloque :-?

Luego el hdc y hdd hacen lo mismo, pero con el major 22; el 33 para 
hde, hdf... etc.


Ese es el motivo de que los discos ide clásicos tuvieran 64 particiones 
máximo en linux. Es una limitación arbitraria por diseño, no porque los 
discos duros tengan esa limitación realmente.


¿Y los scsi?

Pues tienen menos bits para las particiones, 4 solamente. Veamos la 
definición:

  8 block       SCSI disk devices (0-15)
                  0 = /dev/sda          First SCSI disk whole disk
                 16 = /dev/sdb          Second SCSI disk whole disk
                 32 = /dev/sdc          Third SCSI disk whole disk
                    ...
                240 = /dev/sdp          Sixteenth SCSI disk whole disk

                Partitions are handled in the same way as for IDE
                disks (see major number 3) except that the limit on
                partitions is 15.


Hay más dispositivos con un mismo major (16 en vez de 2), pero sólo 16 
particiones. Reservan 4 bits para cada cosa.

¿Comprendes la cosa? Alguien decidió que con 8 bits para el minor eran 
bastante, como alguien decidió en su dia que un mega era bastante memoria.


Ahora, lo más sangrante es que ese límite en el minor ya no existe, según 
me han dicho en la contestación del bugzilla. Hace años que lo cambiaron a 
un word. Falta que la gente del kernel o quien sea se ponga las pilas y 
cambie la definición del scsi, y dejen de jorobarnos con limitaciones 
absurdas:

] Since the limit for minor device numbers to be only up to 255 is gone 
] since years, it would not be a problem to support more than 15 
] partitions on any SCSI disk. This could even be compatible to current 
] major/minor layout of SCSI disk. Just use current minor number for 
] partitions up to 15 as is and use minor numbers above 255 for partition 
] numbers above 15.
]
] But as long as this is not done in the kernel there is not much userland 
] can do to work around this. The plan to use kpartx to create DM maps 
] instead of kernel partitions create IMHO more problems than it solves.


No es el único problema que tiene scsi... A más de uno le pasará ahora que 
de repente todos los discos se le pongan en sólo lectura y tendrá que 
resetear el sistema. Pero eso, eso es otra historia.

- -- 
Saludos
       Carlos E.R.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)
Comment: Made with pgp4pine 1.76

iD8DBQFG5nVQtTMYHG2NR9URAnCvAKCCSubfJktpYTeuDT/u4inHspZflACfUyql
jJ8kLEmlgzWfE8bviREvNj8=
=96y6
-----END PGP SIGNATURE-----
< Previous Next >