Wie formatiere ich ein NTFS-Laufwerk unter CentOS 7, damit ich es auch unter Windows verwenden kann?

532
Blackwood

Wir haben ein LIDAR-System, das Daten vor Ort sammelt. Die Computer, die die Rohdaten verarbeiten, sind Windows-Computer, daher verwenden wir NTFS. Das LIDAR-System selbst führt jedoch CentOS 7 aus. Dies ist normalerweise kein Problem. Wir formatieren die Sammellaufwerke unter Windows NTFS oder verwenden GParted (CentOS oder Ubuntu). CentOS mounten und schreibt gut darauf und Windows kann sie lesen.

Unsere Kunden möchten die Sammellaufwerke im LIDAR-System jedoch mit CentOS formatieren können. Ich dachte, das wäre eine triviale Aufgabe und schrieb ein Skript. Das Skript formatiert die Laufwerke, und CentOS schreibt Daten in diese. Nach Verwendung des Skripts erkennt Windows die Laufwerke jedoch nicht mehr.

Wenn GParted dies funktionieren kann, muss etwas falsch sein, so wie ich sie formatiere. Mein Verfahren ist wie folgt:

umount <mountPoint> 

Dadurch wird sichergestellt, dass das Laufwerk nicht montiert ist.

(echo o; echo n; echo p; echo 1; echo ; echo ; echo w) | fdisk /dev/<driveLetter> 

Dies verwendet fdisk zum Schreiben einer neuen Partitionstabelle, indem die folgenden Aktionen ausgeführt werden:

  • o: Erstellen Sie eine neue leere DOS-Partitionstabelle
  • n: Fügen Sie eine neue Partition hinzu
    • p: Erstellen Sie eine primäre Partition
    • 1: Partition 1
    • Standard erster Sektor (wird als 65535 auf einem 480 GB-Laufwerk angezeigt)
    • voreingestellter letzter Sektor (wird auf einem 480-GB-Laufwerk als 937703087 angezeigt)
  • w: Schreiben Sie die Tabelle auf die Festplatte

Dann...

mkfs.ntfs -f -L <driveLabel> /dev/<driveLetter>1 

Dies formatiert die Laufwerkpartition 1 in NTFS.

mount -a 

Dadurch werden die Speicherlaufwerke aktualisiert.

Windows kann die so formatierten Laufwerke nicht sehen. Wenn ich jedoch AOMEI in Windows verwende, werden die Laufwerke angezeigt, obwohl ich sie nicht verwenden kann. Der einzige Hinweis, den es mir gibt, ist, dass es eine *:Laufwerksbezeichnung hinzufügt . Also anstatt <driveLabel>es zeigt *:<driveLabel>.

Kann mir jemand sagen, ob mein Skript fehlerhaft ist oder ob mir etwas fehlt?

2
Wenige Gedanken; Ich kann sie jetzt nicht testen, also nur einen Kommentar: (1) Der Partitionstyp kann relevant sein, "0x07" für NTFS. (2) Ich denke, eines meiner Windows-Betriebssysteme (alt) war wählerisch und erforderte, dass die erste Partition beim Sektor "63" (Dezimalzahl) anfing. Ich konnte diesen Startsektor nicht direkt verwenden, ich erstellte eine neue Partition mit einer größeren Nummer und verschob dann den Anfang im Expertenmenü (`x`,` b`). Ich kann mich nicht erinnern, ob die Partition als aktiv gesetzt werden musste. Kamil Maciorowski vor 5 Jahren 0
Ich habe [diese Antwort] (https://superuser.com/a/1219639/432690) zurückgerufen, es könnte relevant sein. Kamil Maciorowski vor 5 Jahren 0

1 Antwort auf die Frage

1
Blackwood

Das zugrunde liegende Problem scheint bei dem Partitionstyp zu liegen, den Microsoft (zumindest in Windows 7) sucht. Mit fdisk ist dies möglicherweise immer noch möglich, aber ich hatte keine Zeit mehr zum Testen.

Am Ende habe ich gdisk anstelle von fdisk benutzt und konnte es zum Laufen bringen.

Falls noch jemand interessiert ist, hier mein modifiziertes Skript:

umount <mountPoint>  (echo o; echo y; echo n; echo 1; echo ; echo ; echo 0700; echo w; echo y) | gdisk /dev/<driveLetter>  partprobe  umount <mountPoint>  mkfs.ntfs -f -L <driveLabel> /dev/<driveLetter>1  mount -a 

Die verwendeten gdisk-Optionen lauten wie folgt:

  • o: Neue leere GUID-Partitionstabelle (GPT) erstellen
  • y: Überprüfen Sie
  • n: Fügen Sie eine neue Partitionstabelle hinzu
  • 1: Partitionsnummer
  • Default erster Sektor (als 2048 dargestellt)
  • Default letzter Sektor
  • 0700: GUID für Microsoft-Grunddaten
  • w: Tabelle auf Platte schreiben und beenden
  • y: Überprüfen Sie

Nach mehreren Tests scheint es gut zu funktionieren.

Nun, Sie haben nicht angegeben, an welches Windows Sie gedacht haben. :) Die DOS-Partitionstabelle ist eine sichere Wahl, ein Standard der älteren Version. Ich würde nicht sagen, dass "fdisk" unter Linux veraltet ist. Es ist nur ein Werkzeug, das mit dem alten Partitionsschema arbeitet. GPT hat seine Vorteile, aber für eine einzelne Datenpartition auf einer 480 GB-Festplatte ist eine DOS-Partitionstabelle auch in Ordnung, denke ich. Sie haben "Microsoft-Grunddaten" in GPT angegeben. Haben Sie die DOS-Partitionstabelle mit dem Partitionstyp "0x07" bereits aus Gründen der Neugier ausprobiert? Ich wäre nicht überrascht, wenn es das Einzige wäre, was Sie vermisst haben. Kamil Maciorowski vor 5 Jahren 0
Nach dem Lesen denke ich, dass Sie vielleicht recht haben. Ich werde es testen, wenn ich eine Chance habe, und meine Antwort bearbeiten. Wenn das alles ist, dann ist meine Antwort technisch so falsch wie sie ist. Blackwood vor 5 Jahren 0
Ich habe versucht, Fdisk erneut mit einer DOS-Partitionstabelle, dem Partitionstyp 0x07 und dem Starten von Sektoren sowohl bei Standard als auch bei 63 zu verwenden. Es funktioniert jedoch immer noch nicht. Ich sage nicht, dass es mit fdisk unmöglich ist. Ich konnte es in den 15 Minuten, in denen ich damit spielte, einfach nicht zum Laufen bringen. Ich habe übrigens gehofft, dass die Windows-Version für diese Aufgabe mehrdeutig ist. Microsoft kennen, obwohl ich mir sicher bin, dass es nicht so ist. Ich bin derzeit unter Windows 7, aber in Zukunft werde ich es auch für 10 brauchen. Danke für die Hilfe. Sie haben mir geholfen, mich in die richtige Richtung zu weisen, und ich habe einige Dinge gelernt. Blackwood vor 5 Jahren 0
OK dann. Q & A für Ihre Forschungsanstrengungen verbessert. Kamil Maciorowski vor 5 Jahren 0