Summary: | Неправильно выравниваются логические разделы на hdd c 4K сектором | ||||||
---|---|---|---|---|---|---|---|
Product: | Sisyphus | Reporter: | Sergey Y. Afonin <asy> | ||||
Component: | alterator-vm | Assignee: | Michael Shigorin <mike> | ||||
Status: | CLOSED FIXED | QA Contact: | qa-sisyphus | ||||
Severity: | major | ||||||
Priority: | P3 | CC: | aen, alxste, anubix, berkut_174, boyarsh, cas, dd1email, jackie.rosen, mcpain, mike, real.altlinux.org, rider, sbolshakov, sem, stanv, timonbl4, zerg | ||||
Version: | unstable | ||||||
Hardware: | all | ||||||
OS: | Linux | ||||||
URL: | http://altlinux.org/BigSector | ||||||
Bug Depends on: | 23848 | ||||||
Bug Blocks: | 23155, 27685, 30940, 32650, 16000 | ||||||
Attachments: |
|
Description
Sergey Y. Afonin
2012-02-13 00:27:02 MSK
Вообще, у него 4K сектор http://storage.toshiba.eu/cms/en/hdd/multimedia/product_detail.jsp?productid=382 1. Кто диски разбивал??? 2. Какие шаги были в инсталяторе VM ? 3. Ну и скажите mount хотябы или cat /proc/mounts 4. Ставили на чистый диск? 1. Я. Ну и инсталлятор. :-) 2. Ручной режим и последовательное создание разделов. 3. А это на что-то влияет ? # cat /proc/mounts rootfs / rootfs rw 0 0 udevfs /dev devtmpfs rw,relatime,size=5120k,nr_inodes=351886,mode=755 0 0 /dev/sda5 / ext4 rw,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 proc /proc proc rw,relatime 0 0 sysfs /sys sysfs rw,relatime 0 0 runfs /run tmpfs rw,relatime,size=5120k,mode=755 0 0 devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0 shmfs /dev/shm tmpfs rw,relatime 0 0 /dev/sda1 /boot ext4 rw,nosuid,nodev,noexec,relatime,user_xattr,acl,barrier=1,stripe=4,data=ordered 0 0 /dev/sda9 /home ext4 rw,nosuid,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sda6 /usr ext4 rw,nodev,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sda7 /var ext4 rw,nosuid,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 /dev/sda9 /tmp ext4 rw,relatime,user_xattr,acl,barrier=1,data=ordered 0 0 rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs rw,relatime 0 0 (хм, а что это за rpc_pipefs ? впрочем, к этой проблеме не относится) /dev/sda10 создан уже потом, собственно, в момент разметки оставшегося пространства и заметил проблему. 4. На пустой. Правда вот не помню, на изначально пустой, или я имеющиеся до того разделы от MeeGo сносил в эту же загрузку инсталлятора. Это нотебук Acer Aspire 5733Z с предустановленной MeeGo. Мог снести и сразу разметить, без записи пустой таблицы и перезагрузки... (In reply to comment #2) > 1. Кто диски разбивал??? А ведь уже было: https://bugzilla.altlinux.org/16000#c5 Из отчета Сергея Афонина, видно, что проблема всплывает только для LOGICAL разделов. Т.е. разделы которые внутри EXTENDED. Primary разделы как и должны выровнены на 2048. А в EVMS для создания LOGICAL раздела идет вызов особенной фунцкии: segs.c: int create_logical_partition( LOGICALDISK *ld, DISKSEG *seg, DLA_Entry *dla, DISKSEG *freespace ){ Которая и начинает вносить свои коррективы, и выранивать на сегмент, дорожку и т.д. а не на сектор. Вот ее и нужно исследовать. Я думаю если откатить мои патчи для выравнивания primary - разделов, вам не полегчает. Выход: делайте Primary разделы. (In reply to comment #5) > Выход: делайте Primary разделы. Их слишком мало... На сколько сложно дофиксить ещё и segs.c ? Сергей, вы научились воспроизводить ошибку? Вы можете протестировать новый evms до того как он попадет в Sisyphus? http://git.altlinux.org/people/stanv/packages/?p=evms.git;a=shortlog;h=refs/heads/sisyphus 2.5.5-alt23.1 (In reply to comment #7) > Сергей, вы научились воспроизводить ошибку? Я даже не помню, чтобы меня кто-то об этом просил, или что есть проблемы с воспроизведением. :-) > Вы можете протестировать новый evms до того как он попадет в Sisyphus ? Пока не знаю. Если hdd найду с 4K, попробую. Переставлять систему на нотебуке - это надо время выбрать, всё же для работы использую. Хотя и надо бы переставить. Если не получится, тогда мне нужен HDD диск как у вас. У меня сейчас все логические сектора выравниваются на 4K. Я не могу воспроизвести на диске с сектором 512b ошибку. Вот этот: http://www.citilink.ru/catalog/parts/hdd/hdd_in/653474/?mrkt=msk_cl ? Если точно этот, то скажите, купим. Да, этот. На всякий случай даже ноут вскрыл. Отличается только серийным номером. :-) Но я ещё не потерял надежду HDD с 4K сектором у себя найти, так что покупать имеет смысл, если в нём есть какая-то другая необходимость. Сергей, попробуйте сначала исправления. Покупать\искать HDD стоит только тогда когда мои исправления не помогли. Нашёлся WD10EARX, с последним KDesktop проблема воспроизвелась сходу. Но исправленный evms сегодня попробовать не смогу наверное. Собрал evms, теперь вопрос - как попроще воспроизвести те действия, которые через alterator-vm делаются ? У меня на рабочей станции ничего этого не стоит пока... Попробовал evmsn запустить, но там что-то много всего, и всё больше про evms-тома. (В ответ на комментарий №14) > Собрал evms, теперь вопрос - как попроще воспроизвести те действия, которые > через alterator-vm делаются ? У меня на рабочей станции ничего этого не стоит > пока... Попробовал evmsn запустить, но там что-то много всего, и всё больше про > evms-тома. alterator-vm можно запустить и на установленной системе. Проблема осталась. Вообще, думаю, могу собрать какой-нибудь компьютер с этим hdd и дать ssh с root туда. пинг. Так что, стенд надо ? В полку мелких hdd прибыло: Device Model: ST500DM002-1BD142 Firmware Version: KC45 User Capacity: 500,107,862,016 bytes [500 GB] Sector Sizes: 512 bytes logical, 4096 bytes physical 2stanv@: ping Третий: Device Model: HITACHI HTS545032A7E380 Firmware Version: GGBZB6C0 User Capacity: 320 072 933 376 bytes [320 GB] Sector Sizes: 512 bytes logical, 4096 bytes physical Для разрешения этой баги нужно, видимо, купить соответствующий hdd (в обсуждении они упомянуты). 2cas@: прошу найти такой и представить спецификацию smi@ и мне. (In reply to comment #20) > Для разрешения этой баги нужно, видимо, купить соответствующий hdd (в > обсуждении они упомянуты). > 2cas@: прошу найти такой и представить спецификацию smi@ и мне. У меня такое ощущение, что они в любом современном нотебуке уже могут встретиться c большой степенью вероятности, так что, если, вдруг, какой-то нотебук в офисе у Вас покупался недавно, имеет смысл посмотреть. У меня есть некоторое количество WD15EARS, в этой же сетии (WD Green) были WD10EARS и WD20EARS. Сейчас вместо них EARX, как понимаю ("Advanced format"): http://www.nix.ru/autocatalog/hdd_western_digital/HDD_Tb_SATA_6Gb_Western_Digital_Caviar_Green_WD10EARX_118707.html И предлагаю перевешивать на сизиф, а в p6 бэкпортить уже потом. (В ответ на комментарий №23) > И предлагаю перевешивать на сизиф, а в p6 бэкпортить уже потом. В p6 уже смысла не будет, т.к. это в установщике. Т.е. перевешивать на сизиф, убрав все блокеры кроме >= p7. Кстати, вот ещё что. Возможно, имеет смысл сделать чекбокс для включения режима учёта 4K-сектора. А то встречаются ещё и такие вот: Model Family: Seagate Barracuda Green (Adv. Format) Device Model: ST2000DL003-9VT166 Serial Number: 5YD57KJT LU WWN Device Id: 5 000c50 03d777f09 Firmware Version: CC32 User Capacity: 2,000,398,934,016 bytes [2.00 TB] Sector Size: 512 bytes logical/physical То есть, он тоже, как бы, с 4K-сектором, только про это не написано в нужном месте. (In reply to comment #25) > Возможно, имеет смысл сделать чекбокс для включения режима учёта 4K-сектора. Ни к чему, лучше сразу выравнивать и не на 4k, а на ~1M (учтёт RAID-ы): http://www.altlinux.org/BigSector http://freesource.info/wiki/HCL/XranenieDannyx/SoftwareRAID http://www.pythian.com/news/411/aligning-asm-disks-on-linux/ Отправил в сизиф evms 2.5.5-alt29, который решает данную проблему. Просьба проверить При установке на SSD c LiveCD образа регулярной сборки (проверялось на KDE, сборка от 17.06.2015) автоматическая разбивка диска не выравнивает создаваемые разделы по границе Mib (выравнивает по цилиндру) Проверить можно parted-м: align-check opt [0..N] стабильно возвращает not aligned Указать в установщике выравнивание вручную при разбивке диска из установщика тоже возможность отсутствует. Если раздел создается через gparted c указанием выровнять по Mib то align-check opt [0..N] стабильно возвращает aligned Проверено на 3-х различных моделях SSD. (В ответ на комментарий №27) > Отправил в сизиф evms 2.5.5-alt29, который решает данную проблему. > Просьба проверить Не совсем: выровненным оказывается _extended_, а не logical'ы -- надо наоборот, поскольку для логических разделов важно, для расширенного -- нет (как совершенно верно указано в комментарии 5). (В ответ на комментарий №4) > > 1. Кто диски разбивал??? > А ведь уже было: https://bugzilla.altlinux.org/16000#c5 Мало того, https://bugzilla.altlinux.org/23848 (В ответ на комментарий №7) > http://git.altlinux.org/people/stanv/packages/?p=evms.git;a=shortlog;h=refs/heads/sisyphus > 2.5.5-alt23.1 Этот коммит в сизифную сборку не добрался, Тимур в -alt29 сделал иначе. Вне зависимости от того, применены ли коммиты a9444d7d7085f4281da36a242992c6e787b6ed7d и 587974e96e3fe550a450cb9d678b6c0cf3321fae (timonbl4@, 4K / 8s) или 17c75b88aab508b40d3c3afb43f587eea77df944 (stanv@, 1M / 2048s) или все вместе -- выравнивается контейнер (extended), а не нужные логические разделы внутри его (logical): (parted) print Модель: ASMT 2115 (scsi) Диск /dev/sdb: 120GB Размер сектора (логич./физич.): 512B/512B Таблица разделов: msdos Флаги диска: Номер Начало Конец Размер Тип Файловая система Флаги 1 1049kB 10,7GB 10,7GB primary 4 10,7GB 21,5GB 10,7GB extended 5 10,7GB 21,5GB 10,7GB logical (parted) align-check opt 1 1 выровнен (parted) align-check opt 5 5 not aligned: 20971528s % 2048s != 0s Бишь смещение на 8 секторов от оптимального (20971520 == 10240*2048). Похоже, надо extended-раздел создавать с запасом, а выравнивать logical: --- Note that the GPT/MBR issues are unrelated to the Advanced Format issues -- that is, if you're using an Advanced Format disk, you should align your partitions using the same rules for either partition table type. (One partial exception: Alignment is unimportant for MBR extended partitions, just for primary and logical partitions. GPT doesn't use the primary/extended/logical partition distinction.) --- https://forums.gentoo.org/viewtopic-p-7361710.html Надо выяснить, как вычислить эту разницу и насколько безопасно тут вычитать. Created attachment 6847 [details] выравниваем и логические разделы Запасной вариант без вычитаний: выравнивать на мегабайт начало _любого_ раздела, включая logical. Это некрасиво и потеря ещё почти метра на каждый логический раздел, зато должно быть проще и надёжней в реализации (гарантия от перехлёстов с другими разделами). Ну и в выводе fdisk выровненным будет показывать всё, включая ненужный extended. Спасибо imz@ за обсуждение, приведшее к этому соображению :) Просьба ко всем заинтересованным: проверить логику и патч, для этого сперва: git revert a9444d7d7085f4281da36a242992c6e787b6ed7d git revert 587974e96e3fe550a450cb9d678b6c0cf3321fae git cherry-pick 17c75b88aab508b40d3c3afb43f587eea77df944 Мои тесты на досовой таблице пока не показывают косяков: # dmsetup remove_all; wipefs -a /dev/sdb; acc (рисую primary и один-два logical, сняв галку про основной раздел) # parted /dev/sdb print; parted /dev/sdb align-check opt 5 Модель: ASMT 2115 (scsi) Диск /dev/sdb: 120GB Размер сектора (логич./физич.): 512B/512B Таблица разделов: msdos Флаги диска: Номер Начало Конец Размер Тип Файловая система Флаги 1 1049kB 1074MB 1073MB primary 4 1074MB 4293MB 3219MB extended 5 1075MB 2146MB 1072MB logical 6 2147MB 3219MB 1072MB logical 7 3221MB 4293MB 1072MB logical 5 выровнен Вот с GPT пока плохо, но это отдельный баг -- см. тж.: https://bugzilla.altlinux.org/show_bug.cgi?id=23848#c9 Задание с проверенным мной и imz@ объездом желающие тоже могут посмотреть: http://webery.altlinux.org/task/171541 PS: следом ожидается ещё одно с экспериментальной правкой для GPT, см. https://bugzilla.altlinux.org/32679 (повесил отдельно). Зерг, проверишь задание? (В ответ на комментарий №32) > Зерг, проверишь задание? В VirtualBox после разбивки: # fdisk -l /dev/sda Диск /dev/sda: 25 GiB, 26834665472 байт, 52411456 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x00000000 Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sda1 2048 3065855 3063808 1,5G 82 Linux своп / Solaris /dev/sda2 3065856 52402175 49336320 23,5G 83 Linux Надо вручную создать extended раздел, потом загрузиться и проверить на align в parted # fdisk -l /dev/sda Диск /dev/sda: 25 GiB, 26834665472 байт, 52411456 секторов Единицы: секторов по 1 * 512 = 512 байт Размер сектора (логический/физический): 512 байт / 512 байт Размер I/O (минимальный/оптимальный): 512 байт / 512 байт Тип метки диска: dos Идентификатор диска: 0x00000000 Устр-во Загрузочный начало Конец Секторы Размер Идентификатор Тип /dev/sda1 2048 3065855 3063808 1,5G 82 Linux своп / Solaris /dev/sda2 3065856 28788479 25722624 12,3G 83 Linux /dev/sda3 28788736 37289983 8501248 4,1G 83 Linux /dev/sda4 37289984 52402175 15112192 7,2G 5 Расширенный /dev/sda5 37292032 43857919 6565888 3,1G 83 Linux /dev/sda6 43859968 48328703 4468736 2,1G 83 Linux /dev/sda7 48330752 52402175 4071424 2G 83 Linux [root@localhost ~]# parted /dev/sda GNU Parted 3.2.46-e4ae Используется /dev/sda Добро пожаловать в GNU Parted! Наберите 'help' для просмотра списка команд. (parted) align-check optimal 1 1 выровнен (parted) align-check optimal 2 2 выровнен (parted) align-check optimal 3 3 выровнен (parted) align-check optimal 4 4 выровнен (parted) align-check optimal 5 5 выровнен (parted) align-check optimal 6 6 выровнен (parted) align-check optimal 7 7 выровнен (parted) (В ответ на комментарий №35) > # fdisk -l /dev/sda [...] > Тип метки диска: dos Спасибо; и ещё бы для gpt мои тесты продублировать (#32679). > (parted) align-check optimal 5 > 5 выровнен (In reply to comment #35) > Размер сектора (логический/физический): 512 байт / 512 байт > Размер I/O (минимальный/оптимальный): 512 байт / 512 байт А разве в такой ситуации проверка правильная получается ? Не надо ли проверять в ситуации Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes ? Это fdisk написал на обычном диске evms-2.5.5-alt35.3 -> sisyphus: * Fri Oct 28 2016 Michael Shigorin <mike@altlinux> 2.5.5-alt35.3 - gpt plugin: just round_up_to_min_boundary() of 1MB/2048s either (closes: #32679) * Fri Oct 28 2016 Michael Shigorin <mike@altlinux> 2.5.5-alt35.2 - dos plugin: just round_up_to_min_boundary() of 1MB/2048s * Thu Oct 27 2016 Michael Shigorin <mike@altlinux> 2.5.5-alt35.1 - revert 2.5.5-alt29 patches by timonbl4@ to avoid collisions * Thu Oct 27 2016 Michael Shigorin <mike@altlinux> 2.5.5-alt35 - apply stanv@'s patch, see #26925 comment 5 (closes: #26925) (В ответ на комментарий №36) > ещё бы для gpt мои тесты продублировать (#32679). Продублировал. А на 4K-секторном не надо ли проверить? (В ответ на комментарий №40) > А на 4K-секторном не надо ли проверить? Можно, хотя поскольку на размер физического сектора код всё так же не смотрит при расчёте выравнивания -- разве что в плане итоговой производительности. Кстати, тошибовская 500-ка с 4K-секторами в офисе всё же нашлась (и на ней пока можно экспериментировать). |