GNU/LinuxВнимание, ЖД с 4КБ секторами.

Всем привет!
Хочу рассказать про проблемы с новыми жёсткими дисками, у которых физические сектора имеют размер 4 КБ вместо обычных 512 Б.

UPD 12.03: Переразбил ЖД в новой версии fdisk (которая идёт в util-linux-ng 2.17.1). fdisk при запуске сам написал, что желательно выключить совместимость с DOS (команда c) и юнитами поставить сектора (команда u). Далее создаём первый раздел, начиная с сектора 2048 (1 МБ). Проверил скорость копирования — около 28 МБ/сек. Так что, жить можно!
Достал внешний ЖД Transcend StoreJet 25M 640 GB (http://www.transcendusa.com/products/ModDetail.asp?ModNo=198&LangNo=0&Func1No=&Func2No=). Реальная ёмкость — около 590 GiB. У этого большого ЖД используются сектора размером 4 КБ.

Справочная информация
Подробнее, почему нужны такие ЖД и как работают новые сектора: http://lwn.net/Articles/322777/
В FreeBSD: http://forums.freebsd.org/showthread.php?t=11337
Большое обсуждение про эти ЖД и Линукс тут: http://thread.gmane.org/gmane.linux.gentoo.user/225974. Там ещё написано про выравнивание разделов.
Ещё про сектора и Linux: http://www.linuxforums.org/forum/misc/5654-linux-disk-block-size-help-please.html
Также можно посмотреть сюда: http://habrahabr.ru/blogs/hardware/83829/, http://blog.fosketts.net/2009/12/23/drobo-xp-beware-4k-advanced-format-drives/
У новых ЖД от WD тоже используются такие сектора, они назвали эту технологию Advanced Format: http://www.fcenter.ru/online.shtml?articles/hardware/hdd/28121#02
upd: В parted 2.2 и util-linux-ng 2.17.1 улучшена поддержка дисков с размером сектора 4 Кб http://www.opennet.ru/opennews/art.shtml?num=25596
«Специалисты из ассоциации IDEMA (International Disk Drive Equipment and Materials Association) предупреждают, что все производители жёстких дисков согласились с января 2011 года перейти на новый формат размера сектора в 4 Кб вместо существующего ныне 512 байт.» http://habrahabr.ru/blogs/hardware/87145/

Ядро Linux
Ядро Linux поддерживает такие ЖД, а вот многие программы — пока не совсем. Лог ядра при подключении (ядро правильно определило 4096-byte hardware sectors):
Mar  6 13:37:47 laptop kernel: [10989.644126] scsi 7:0:0:0: Direct-Access     StoreJet Transcend             PQ: 0 ANSI: 2 CCS
Mar  6 13:37:47 laptop kernel: [10989.645823] sd 7:0:0:0: [sdb] 156282944 4096-byte hardware sectors (640135 MB)
Mar  6 13:37:47 laptop kernel: [10989.646978] sd 7:0:0:0: [sdb] Write Protect is off
Mar  6 13:37:47 laptop kernel: [10989.648575] sd 7:0:0:0: [sdb] 156282944 4096-byte hardware sectors (640135 MB)
Mar  6 13:37:47 laptop kernel: [10989.649573] sd 7:0:0:0: [sdb] Write Protect is off
Mar  6 13:37:47 laptop kernel: [10989.649595]  sdb: sdb1
Mar  6 13:37:47 laptop kernel: [10989.680252] sd 7:0:0:0: [sdb] Attached SCSI disk
Mar  6 13:37:47 laptop kernel: [10989.680342] sd 7:0:0:0: Attached scsi generic sg2 type 0


Для разметки пробовал fdisk, cfdisk, gparted. Все они не до конца понимают новую моду :). Уже не помню, что и в какой последовательности я пробовал, но напишу заметки.

fdisk
fdisk, в общем, понимает, т.к. пишет в начале:
Note: sector size is 4096 (not 512)

Им я создал (пытался создать) таблицу разделов и один раздел на весь диск, создал на нём ext3, но после этого пишет, что есть не распределённые сектора:
Сommand (m for help): p

Disk /dev/sdb: 640.1 GB, 640134938624 bytes
255 heads, 63 sectors/track, 9728 cylinders
Units = cylinders of 16065 * 4096 = 65802240 bytes
Disk identifier: 0x74afb075

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        9728   625121028   83  Linux

Command (m for help): v
1093983294 unallocated sectors


cfdisk
С cfdisk хуже:
cfdisk (util-linux-ng 2.13.1)

                                      Disk Drive: /dev/sdb
                               Size: 640134938624 bytes, 640.1 GB
                      Heads: 255   Sectors per Track: 63   Cylinders: 77825

    Name           Flags        Part Type     FS Type             [Label]           Size (MB)
 -----------------------------------------------------------------------------------------------
    sdb1                         Primary      Linux                                  80015.53
                                 Pri/Log      Free Space                            560116.90

Как видите, неправильно определён размер раздела. Кстати, на нём записано 89 ГБ.

gparted
Gparted до этой разметки определял размер диска в 74 ГБ. После разметки Gparted вообще падает, но в начале работы честно пишет, что ещё не всё допилено:
Warning: Device /dev/sdb has a logical sector size of 4096.  Not all parts of GNU Parted support this at the moment, and the working
code is HIGHLY EXPERIMENTAL.

Gparted был с последней версии SysRescCD 1.4.0.

Другие программы
После разметки записал образы диска 81 и 8.8 ГБ. Скорость дампа была около 28 МБ/с.
df и konqueror правильно показывают, что раздел занимает 587 ГБ:
$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sdb1             587G   90G  468G  17% /media/disk

А вот lshw считает также, как и gparted:
*-usb
                   description: Generic USB device
                   product: StoreJet Transcend
                   vendor: StoreJet Transcend
                   physical id: 2
                   bus info: usb@5:2
                   logical name: scsi9
                   version: 1.00
                   serial: 27D110445FFF
                   capabilities: usb-2.00 emulated scsi-host
                   configuration: driver=usb-storage maxpower=2mA speed=480.0MB/s
                 *-disk
                      description: SCSI Disk
                      product: Transcend
                      vendor: StoreJet
                      physical id: 0.0.0
                      bus info: scsi@9:0.0.0
                      logical name: /dev/sdb
                      serial: 801130168383
                      size: 596GiB (640GB)
                      capabilities: partitioned partitioned:dos
                      configuration: ansiversion=2 signature=74afb075
                    *-volume
                         description: Linux filesystem partition
                         physical id: 1
                         bus info: scsi@9:0.0.0,1
                         logical name: /dev/sdb1
                         logical name: /media/disk
                         capacity: 74GiB
                         capabilities: primary
                         configuration: mount.fstype=ext3 mount.options=rw,nosuid,nodev,relatime,data=ordered state=mounted


Вывод
К сожалению, пока не все программы умеют правильно работать с такими новинками.
Надеюсь, что вы хоть что-то поняли, и будете внимательны с такими ЖД. Пишите свои вопросы, комментарии и мысли по теме. Спасибо.
  • +9
  • pluton
  • 11 марта 2010, 18:07

Комментарии (8)

спасибо за ссылку. операции, описанные в статье, делал в последнем sysresccd 1.4.0. сейчас проверил, там старые версии этих утилит.
зато есть sysreccd 1.5.0-beta7, там уже новые версии, скачаю, проверю и напишу результат
да не зачто, у меня было хуже- сначала взял «зеленый» винт на терабайт от wd, а потом пытался понять почему на нем система местами так дико тормозит.
вот еще обзорчик
… а я собирался взять зеленый wd на терабайт… что посоветуете?
я переразбил диск с самой новой версией fdisk, и выровнял раздел по границе 1МБ. делал образ с внутреннего ЖД, скорость была 28МБ/с.
так что, я думаю, брать можно, тем более, скоро многие будут такими.
кстати
все производители жёстких дисков согласились с января 2011 года перейти на новый формат размера сектора в 4 Кб вместо существующего ныне 512 байт


кстати
The odd alignment trick only works if the partition tables are laid out that way — for a while now, Windows has been starting the partition table at a 1MB boundary instead. H. Peter Anvin says "this is a disaster". Check out that whole thread from last month for more info.
  • avatar
  • fog
  • 12 марта 2010, 22:35
  • #
  • 0
Спасибо за хороший пост. Не знал, что с новыми винтами может быть такая проблема. :-/
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.