Harde schijf parameters (cylinders, heads) aanpassen?

Pagina: 1
Acties:
  • 126 views sinds 30-01-2008
  • Reageer

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Hey mensen,

Een tijd geleden is een van de twee harde schijven (februari gekocht) uit een software RAID 1 array stuk gegaan. Inmiddels heb ik de vervangende schijf gekregen (RMA) en erin gezet.

Bij het fdisken kwam ik erachter dat de nieuwe schijf "anders" wordt herkend als de oude, waardoor ik de partities niet 1:1 over kan nemen. Hier de info van fdisk:

Disk /dev/hde: 41.1 GB, 41110142976 bytes
255 heads, 63 sectors/track, 4998 cylinders

Disk /dev/hdg: 41.1 GB, 41110142976 bytes
16 heads, 63 sectors/track, 79656 cylinders

hde is de oude, hdg de nieuwe.

Zoals jullie kunnen zien wordt het aantal heads en cylinders anders herkend. Aangezien de schijven aan een PCI controller kaartje hangen kan ik niet in het BIOS kijken of ik dat kan veranderen.

Mijn vraag is dan hoe dit zo komt en wat je eraan kunt doen.

Ik heb al de tips gekregen om bij de expert opties van fdisk het aantal cylinders te veranderen of hdparm te gebruiken. Beide opties zijn niet echt netjes zegt men.

ASCII stupid question, get a stupid ANSI!


  • Sjonny
  • Registratie: Maart 2001
  • Laatst online: 08-02 20:41

Sjonny

Fratser

je kan de partitie tabel bijvoorbeeld resetten door een lege partitietabel aan te maken:

echo ,0,0 | sfdisk /dev/hde

dan worden ze bij mij in die vorm van: 255 heads, 63 sectors/track, 4998 cylinders

maar aangezien het exact dezelfde harddisks zijn (merk en formaat) kan je ook deze truuk uitvoeren:

sfdisk -d $huidigedisk | sfdisk $nieuwdisk

dat kopieerd de partitie tabel over naar de nieuwe disk, en kan je gelijk de raid weer laten syncen.

The problem is in the part of your brain that handles intelligence.


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
maar aangezien het exact dezelfde harddisks zijn (merk en formaat) kan je ook deze truuk uitvoeren:
sfdisk -d $huidigedisk | sfdisk $nieuwdisk
dat kopieerd de partitie tabel over naar de nieuwe disk, en kan je gelijk de raid weer laten syncen.
Dat leek mij een erg nette oplossing. Daarom heb ik deze eerst getest. Helaas lust sfdisk het niet helemaal:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
asystance:~# sfdisk -d /dev/hde | sfdisk /dev/hdg
Checking that no-one is using this disk right now ...
OK

Disk /dev/hdg: 79656 cylinders, 16 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/hdg: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End   #sectors  Id  System
/dev/hdg1            63   4883759    4883697  fd  Linux raid autodetect
/dev/hdg2       4883760  80292869   75409110   5  Extended
/dev/hdg3             0         -          0   0  Empty
/dev/hdg4             0         -          0   0  Empty
/dev/hdg5       4883823  12691349    7807527  fd  Linux raid autodetect
/dev/hdg6      12691413  20498939    7807527  fd  Linux raid autodetect
/dev/hdg7      20499003  79087994   58588992  fd  Linux raid autodetect
/dev/hdg8      79088058  80292869    1204812  fd  Linux raid autodetect
Warning: partition 2 does not end at a cylinder boundary

sfdisk: I don't like these partitions - nothing changed.
(If you really want this, use the --force option.)

Dit is trouwens de "originele" partition tabel van /dev/hde:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
asystance:~# fdisk -l /dev/hde

Disk /dev/hde: 41.1 GB, 41110142976 bytes
255 heads, 63 sectors/track, 4998 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/hde1               1         304     2441848+  fd  Linux raid autodetect
/dev/hde2             305        4998    37704555    5  Extended
/dev/hde5             305         790     3903763+  fd  Linux raid autodetect
/dev/hde6             791        1276     3903763+  fd  Linux raid autodetect
/dev/hde7            1277        4923    29294496   fd  Linux raid autodetect
/dev/hde8            4924        4998      602406   fd  Linux raid autodetect
Sjonny schreef op donderdag 01 december 2005 @ 19:53:
je kan de partitie tabel bijvoorbeeld resetten door een lege partitietabel aan te maken:

echo ,0,0 | sfdisk /dev/hdg

dan worden ze bij mij in die vorm van: 255 heads, 63 sectors/track, 4998 cylinders
Bij mij niet helaas:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
asystance:~# echo ,0,0 | sfdisk /dev/hdg
Checking that no-one is using this disk right now ...
OK

Disk /dev/hdg: 79656 cylinders, 16 heads, 63 sectors/track

sfdisk: ERROR: sector 0 does not have an msdos signature
 /dev/hdg: unrecognized partition table type
Old situation:
No partitions found
New situation:
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/hdg1          0       -       0          0    0  Empty
/dev/hdg2          0       -       0          0    0  Empty
/dev/hdg3          0       -       0          0    0  Empty
/dev/hdg4          0       -       0          0    0  Empty

asystance:~# fdisk -l /dev/hdg

Disk /dev/hdg: 41.1 GB, 41110142976 bytes
16 heads, 63 sectors/track, 79656 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System



Hoe kan dat nou? Is de harde schijf misschien toch niet identiek?

ASCII stupid question, get a stupid ANSI!


  • Sjonny
  • Registratie: Maart 2001
  • Laatst online: 08-02 20:41

Sjonny

Fratser

die met echo ,0,0 moet je met sfdisk resetten met --force idd, die was ik vergeten.
sfdisk schijnt moete te hebben met disks die net uit het plastic komen. wanneer er al partities zijn kan het zonder de --force

The problem is in the part of your brain that handles intelligence.


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Sjonny schreef op vrijdag 02 december 2005 @ 15:07:
die met echo ,0,0 moet je met sfdisk resetten met --force idd, die was ik vergeten.
sfdisk schijnt moete te hebben met disks die net uit het plastic komen. wanneer er al partities zijn kan het zonder de --force
Hm, ik heb nu nog eens
code:
1
echo ,0,0 |sfdisk /dev/hdg
uitgevoerd (zonder --force dus). Het werkt wel maar geeft niet het gewenste resultaat. De disk heeft dan nog steeds 16 heads ipv 255:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
asystance:~# echo ,0,0 |sfdisk /dev/hdg
Checking that no-one is using this disk right now ...
OK

Disk /dev/hdg: 79656 cylinders, 16 heads, 63 sectors/track
Old situation:
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/hdg1          0       -       0          0    0  Empty
/dev/hdg2          0       -       0          0    0  Empty
/dev/hdg3          0       -       0          0    0  Empty
/dev/hdg4          0       -       0          0    0  Empty
New situation:
Units = cylinders of 516096 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/hdg1          0       -       0          0    0  Empty
/dev/hdg2          0       -       0          0    0  Empty
/dev/hdg3          0       -       0          0    0  Empty
/dev/hdg4          0       -       0          0    0  Empty
Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
asystance:~# fdisk -l /dev/hdg

Disk /dev/hdg: 41.1 GB, 41110142976 bytes
16 heads, 63 sectors/track, 79656 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System



Of zal ik
code:
1
sfdisk -d $huidigedisk | sfdisk $nieuwdisk --force
uitvoeren? Dat lijkt mij pas goed werken als de disks "hetzelfde" zijn (dus beide 255 heads).

ASCII stupid question, get a stupid ANSI!


  • igmar
  • Registratie: April 2000
  • Laatst online: 31-01 23:50

igmar

ISO20022

JayVee schreef op donderdag 01 december 2005 @ 14:40:
Bij het fdisken kwam ik erachter dat de nieuwe schijf "anders" wordt herkend als de oude, waardoor ik de partities niet 1:1 over kan nemen. Hier de info van fdisk:

Disk /dev/hde: 41.1 GB, 41110142976 bytes
255 heads, 63 sectors/track, 4998 cylinders

Disk /dev/hdg: 41.1 GB, 41110142976 bytes
16 heads, 63 sectors/track, 79656 cylinders

hde is de oude, hdg de nieuwe.

Zoals jullie kunnen zien wordt het aantal heads en cylinders anders herkend. Aangezien de schijven aan een PCI controller kaartje hangen kan ik niet in het BIOS kijken of ik dat kan veranderen.

Mijn vraag is dan hoe dit zo komt en wat je eraan kunt doen.
CHS is een nuttelose waarde tegenwoordig : Men gebruikt uitsluitend nog LBA adressering. CHS wordt alleen nog gebruikt voor oudere systemen die geen LBA ondersteunen. De waarden die moderne disken tegenwoordig teruggeven zijn bogus : Ze komen niet overeen met wat de disk daadwerkelijk aan CHS heeft.
Ik heb al de tips gekregen om bij de expert opties van fdisk het aantal cylinders te veranderen of hdparm te gebruiken. Beide opties zijn niet echt netjes zegt men.
Ik zou niet weten waarom het niet zou werken. De enige reden waarom je dit moet gebruiken is ivm het feit dat partities op een cylinder boundary beginnen.

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
igmar schreef op vrijdag 02 december 2005 @ 16:16:
[...]
CHS is een nuttelose waarde tegenwoordig : Men gebruikt uitsluitend nog LBA adressering. CHS wordt alleen nog gebruikt voor oudere systemen die geen LBA ondersteunen.
Ze komen niet overeen met wat de disk daadwerkelijk aan CHS heeft.
Ah! Ik vond het al langer raar om harde schijven te zien met 255 heads. Wist niet dat het echt totaal bogus is.

Nu heb ik via de expert options van fdisk het aantal cylinders op 4998 gezet en het aantal heads op 255. Vervolgens de optie 'w' om de tabel weg te schrijven naar de hdd. Toch trekt hij zich er niets van aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
asystance:~# fdisk /dev/hdg
Command (m for help): x

Expert command (m for help): h
Number of heads (1-256, default 16): 255

Expert command (m for help): c
Number of cylinders (1-1048576, default 79656): 4998

Expert command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
asystance:~# fdisk -l /dev/hdg

Disk /dev/hdg: 41.1 GB, 41110142976 bytes
16 heads, 63 sectors/track, 79656 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes

   Device Boot      Start         End      Blocks   Id  System
Vergeet ik een stap?

ASCII stupid question, get a stupid ANSI!


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Iemand een idee waarom het niet lukt om met fdisk het aantal heads / cylinders aan te passen?

ASCII stupid question, get a stupid ANSI!


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Nog een trapje dan!

Het werkt! De truc was om het aantal heads/cylinders aan te passen, een partitie aan te maken en dan pas optie w (write table to disk and exit) te gebruiken.

Thx!

//edit:
Het werkt toch niet helemaal. Als ik nu
code:
1
sfdisk -d /dev/hde | sfdisk /dev/hdg --force
gebruik maakt hij toch weer 16 heads van /dev/hgd!

[ Voor 120% gewijzigd door JayVee op 05-12-2005 10:23 ]

ASCII stupid question, get a stupid ANSI!


  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 14-11-2025

JayVee

shibby++!

Topicstarter
Uiteindelijk heb ik het opgelost met:
code:
1
dd if=/dev/hde of=/dev/hdg

ASCII stupid question, get a stupid ANSI!

Pagina: 1