Disque dur interne reconnu comme disque amovible

Tags: #<Tag:0x00007f63f104f950>

@PascalHambourg, je me demande si ça ne vient pas du fait que la carte d’extension a des ports débranchables à chaud et pas ceux de la carte mère.

C’est une hypothèse plausible, mais j’ai une carte mère dont le BIOS permet d’activer le hotplug sur chaque port SATA et ça ne marque pas pour autant le disque comme « removable ».

J’ai cherché la signification des « flags » associés à chaque contrôleur AHCI pour voir si l’un d’eux pouvait être lié. Il a fallu regarder dans les sources du pilote ahci du noyau. Il s’avère que le flag « sxs » qui est présent sur le contrôleur de la carte SATA et absent sur celui de la carte mère signifie « Supports External SATA ». C’est peut-être une piste mais ça ne suffit pas car j’ai un PC portable dont le contrôleur AHCI a ce flag « sxs » (parce qu’il a un port eSATA, je suppose) mais le disque SATA interne n’est pas marqué « removable » pour autant. J’ai lu qu’il y a aussi un flag « External Sata Port » par port mais je ne sais pas comment le voir. Je n’ai pas de câble eSATA pour vérifier si un disque branché sur le port eSATA est marqué « removable ».

J’ai fouillé dans les sources des pilotes ahci et libata du noyau, et voici ce que j’ai trouvé.
En résumé, le périphérique logique SCSI est marqué « amovible » si le périphérique physique ATA s’identifie lui-même comme amovible ou si le contrôleur AHCI supporte eSATA et le port est eSATA.

drivers/ata/ahci.h

/* HOST_CAP bits */
HOST_CAP_SXS		= (1 << 5),  /* Supports External SATA */

/* PORT_CMD bits */
PORT_CMD_ESP		= (1 << 21), /* External Sata Port */
PORT_CMD_HPCP		= (1 << 18), /* HotPlug Capable Port */

include/linux/libata.h

ATA_PFLAG_EXTERNAL	= (1 << 22),  /* eSATA/external port */

drivers/ata/libahci.c

/* mark esata ports */
tmp = readl(port_mmio + PORT_CMD);
if ((tmp & PORT_CMD_ESP) && (hpriv->cap & HOST_CAP_SXS))
	ap->pflags |= ATA_PFLAG_EXTERNAL;

include/linux/ata.h

#define ata_id_removable(id)    ((id)[ATA_ID_CONFIG] & (1 << 7))

drivers/ata/libata.c

/* set scsi removable (RMB) bit per ata bit, or if the
 * AHCI port says it's external (Hotplug-capable, eSATA).
 */
if (ata_id_removable(args->id) ||
    (args->dev->link->ap->pflags & ATA_PFLAG_EXTERNAL))
	hdr[1] |= (1 << 7);

Le commentaire mentionne la condition « hotplug-capable » mais l’indicateur PORT_CMD_HPCP (HotPlug Capable Port) ne semble pas utilisé dans le code.

1 J'aime

Merci a tous pour vos réponses.
Pour ne rien vous cacher, je suis largué dans votre discussion technique :joy: :joy:

Je viens de remanier les branchements Sata et maintenant voila la situation :

  • SSD système (120go, branché en direct à la MB) : reconnu interne (sdb)
  • HDD home (4to, branché en direct à la MB) : reconnu interne (sda)
  • SSD (256go, branché à la carte extension) : reconnu amovible (sdc)
  • HDD (4to, branché à la carte extension) : reconnu amovible (sdd)

Je me retrouve donc avec 2 disque sur les 4 qui sont reconnus amovible.

En soit, est-ce que cela peut poser un problème quelconque que ces 2 disques (qui serviront pour backup) soient reconnus en amovible ?

Car si c’est vraiment compliqué, je suis prêt à les laisser en amovible, vu que ce sont des disques internes, peu de chance que je les débranche à chaud. Je n’ouvrirai jamais mon serveur (ou pratiquement jamais).

Merci d’avance pour vos réponses.

Je ne suis pas sûr, mais il se pourrait que cela autorise à monter et démonter les volumes considérés comme amovibles sans privilèges root. Cela peut être vu comme un avantage ou un inconvénient. La parade, c’est de les monter via /etc/fstab.

En tout cas du point de vue du noyau le fait qu’un disque soit considéré comme amovible n’a rien à voir avec le fait qu’il puisse être branché et débranché à chaud.

J’ai pu disposer d’un câble eSATA-SATA afin de tester avec le port eSATA d’un PC portable (et même deux, tous les deux avec contrôleur SATA Intel en mode AHCI).

Mauvaise surprise, aucun des deux n’est hot-plug. Le disque n’est pas détecté s’il n’est pas branché au démarrage, et le débranchement à chaud n’est pas détecté non plus.

Par contre le disque branché en eSATA a bien removable=1, ce qui confirme que l’indicateur hot-plug n’est pas pris en compte, et il est possible de monter ses partitions dans l’explorateur de fichiers sans privilèges root, comme une clé USB.

Désolé de la réponse tardive. J’ai finalement décidé de laisser mes 2 disques de backups en removable = 1.
Cela ne me pose pas plus de soucis que ça (a vrai dire aucun soucis même) après plus de 2 mois d’utilisation de mon serveur. Je fais mes backups system et home sur chacun des disques quotidiennement et aucun soucis.
Sujet clos.