Linux'taki 931.5 GiB harici Gelişmiş Format HDD’de birden fazla bölümün optimum hizalanmasını bulma sorunu


1

ÖZET

1TB dahili diski olan bir Dell Inspiron 17-5767 dizüstü bilgisayarım var Orijinal olarak gönderilen Windows 10'un tamamen kendine gelmesine ve kendilerine hükmetmesine izin verdim (bu benim oyun işletim sistemim). Ek olarak, mevcut ve gelecekteki Linux işletim sistemimi açacağım ve açacağım iki harici sürücüm var. Mevcut kurulumum aşağıdaki gibidir:

  1. USB 3.0 Bağlantı Noktası # 0: Seagate Genişletme + 931.5 GiB (1000204885504 bayt) Harici HDD / dev / sdb olarak tanındı
    • şu anda bir tam boyutlu, boş ext4 bölümü barındırıyor, ancak bunu 12 bölümden oluşan optimum bir hizalanmış bölümleme şemasıyla değiştirmek için mücadele ediyorlar (hizalama ile mücadele noktası)
  2. USB 3.0 Bağlantı Noktası # 1: 238.5 GiB (256060514304 bayt) Samsung SSD 840 Pro / dev / sdc olarak tanınır
    • Fedora LiveCD'nin kurucusu ("özel" seçeneğiyle) kullanılarak bölümlendi ve hem Fedora LXDE hem de Lubuntu linux dağıtımlarını paylaşılan bir takas alanı, paylaşılan kullanıcı alanı, ayrı kökler ve ayrı harici önyükleme bölümleri içeren tek bir LVM içinde barındırıyor dış burada, sadece LVM'de değil, aynı diskte başka bir yerde kendi ayrı birincil bölümlerinde kastediyorum)
    • Bu sürücünün hem fiziksel hem de mantıksal blok boyutu 512'dir ve bölümün 'hizalama-kontrol opt x' yardımcı programına göre en iyi şekilde hizalanmış ve fdisk de hizalamadan memnun (herhangi bir yardımcı programdan hizalama şikayeti yok)
  3. UEFI BIOS dahiliden önce USB'den önyüklemeye çalışır, bu yüzden mevcut tüm seçeneklerimde ortaya çıkar

HEDEF

/ Dev / sdc on / dev / sdb sürücüsü ile olanları, ancak 5 linux dağıtımıyla olanları kopyalamaya çalışıyorum. Projemin bu yönünü ele aldım, çünkü deneyimli bir çok güçlüyüm. Ancak hedefimin diğer kısmı, / dev / sdb'deki bölümlememin en iyi şekilde eşitlenebilmesi için / dev / sdc örneğindeki gibi ve başımın belaya girdiği yer.

ÇEVRE

Şu anda nispeten yeni ve yükseltilmiş Fedora LXDE kurulumumdan çalışıyorum ve elde ettiğim sonuçlar Lubuntu'yu da nispeten yeni ve yükseltilmiş kurulumumda tamamen tekrar ediyor.

RAPORLANMIŞ DİSK PARAMETRELERİ

[root@frank ~]# cat /sys/class/block/sdb/queue/physical_block_size 
4096
[root@frank ~]# cat /sys/class/block/sdb/queue/logical_block_size 
512
[root@frank ~]# cat /sys/class/block/sdb/queue/minimum_io_size 
4096
[root@frank ~]# cat /sys/class/block/sdb/queue/optimal_io_size 
33553920
[root@frank ~]# cat /sys/class/block/sdb/alignment_offset 
0
[root@frank ~]# fdisk -l /dev/sdb
Disk /dev/sdb: 931.5 GiB, 1000204885504 bytes, 1953525167 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 33553920 bytes
Disklabel type: gpt
Disk identifier: 9428D9DB-746C-40CA-B189-060F92A10E3C

Device     Start        End    Sectors   Size Type
/dev/sdb1  65535 1953467279 1953401745 931.5G Linux filesystem

Partition 1 does not start on physical sector boundary.
[root@frank ~]#

SORUN

Bu nedenle, fiziksel blok boyutunun raporlanmasına dayanarak, diskin diğer sürücü gibi 512b yerine 4k (gelişmiş format) olduğu, geriye dönük uyumluluk amaçları için 512b mantıksal bir sektör boyutu kullandığı görülüyor. GNU ayrımlı yardımcı programın 512 blok büyüklüğünü aldığını söyleyebilirim, çünkü optimum IO aralığını hesapladığında

(optimal_io_size + alignment_offset) / physical_block_size = optimal_sector_interval

ilk bölümü otomatik olarak başlatacağı yer olan 65535 değerine sahip olur ve hiza-kontrol alt yardımcı programının bir bölüm hizalamasını optimal olarak geçmesinin tek yolu, 65535'in bir katı ile başlarsa olur. Elde edilen sonuç, eğer fiziksel_iyosunu 4096 yerine 512 olarak kabul ediyorsanız,

(33553920 + 0) / 512 = 65535.

Bununla birlikte, bölümlenmiş 4096 blok boyutunu anlaşılır bir şekilde kullanamazsınız, çünkü o zaman denklem çalışacaktır.

(33553920 + 0) / 4096 = 8191.875.

Bu cevap, bir lise cebir öğretmenini tatmin edecektir, ancak belli bir değerin ayrı bir değer bekleyeceği bir sektör aralığı olarak bir anlam ifade etmemektedir (yani bir tamsayı!). Her durumda, bazıları 256MiB kadar küçük, GNU Partion'da mümkün olmayan yüzdeleri kullanarak yapmak mümkün olmayan 12 bölüm oluşturmak istediğim için ve uzun lafın kısası, sadece optimum hizalama için hizalama kontrollerini gerçekleştirebildim. Bölümlerimin arasına yapıştığım ve bölümlerimin 65535s aralıklarla başladığından emin olmak için kendim modüler aritmetik yapıyorum. Araştırmamdan yola çıkarak, bölümlerimin de bu aralıklarla sona ermesini sağlamanın önemli olduğunu düşünmedim ve bu nedenle bölümlerimin çoğu arasında boşluklar kaldı (açıkçası 65535'ten büyük değil).

Bir kez daha, bölümüm sonucumun en uygun şekilde hizalandığını ve fiziksel blok büyüklüğünün 4096 yerine 512 olarak değerlendirildiğini düşünüyordu. Fakat ayrıldıktan ve 'fdisk -l / dev / sdb' bölümünden ayrıldıktan ve çalışmadan sonra çıktının içine girdim:

Partition 1 does not start on physical sector boundary.
Partition 2 does not start on physical sector boundary.
Partition 3 does not start on physical sector boundary.
Partition 4 does not start on physical sector boundary.
Partition 5 does not start on physical sector boundary.
Partition 6 does not start on physical sector boundary.
Partition 7 does not start on physical sector boundary.
Partition 8 does not start on physical sector boundary.
Partition 9 does not start on physical sector boundary.
Partition 10 does not start on physical sector boundary.
Partition 11 does not start on physical sector boundary.
Partition 12 does not start on physical sector boundary.

Öyleyse, ayrılanın sevdiği şey fdisk değil. Daha sonra gParted'i bölümlendirme şemasını tekrar yapmak için kullandım, birim büyüklüğü olarak 1 MiB kullanmasına izin verdim ve ilk disk bölümümü 2048'lerde, diğer diskimde (/ dev / sdc) gördüğünüz gibi başlattı. fdisk daha sonra mutlu oldu ve sektör uyumu konusunda şikayet etmekten vazgeçti, ancak GNU ayrıldı ve minimum mod için geçse de, optimum mod için hiza-kontrol testlerinde başarısız oldu.

Bununla birlikte, her iki durumda da, mkswap'ın (/ LV / sdb11 üzerine yerleştirdiğim LVM içinde bir takas hacmi oluşturduğum) bana şu uyarıyı verdiğini öğrendim:

[root@frank ~]# mkswap /dev/strange_quark_experimental/swap
mkswap: warning: /dev/strange_quark_experimental/swap is misaligned

Böylece, mkswap, disk bölümünün en uygun hizalanmış mı yoksa minimum hizalanmış mı olduğunu düşünerek takas hacmimin yanlış hizalanmış olduğunu ve mkswap da fdisk'in hizalama konusunda mutlu olup olmadığını takas hacminin yanlış hizalandığını bulur.

TEORİLERİ

Bütün bunlar beni, en az bir disk raporlama veya bölümleme programından gelen uyarıları görmezden gelmem gerektiği izlenimini uyandırıyor, ama hangisinden emin değilim. Ayrıca, HDD içeren USB uyumlu muhafaza, sektör parametrelerinden en az birini yanlış rapor ediyor olabileceğinden, tüm raporlamanın başlaması güvenilmezdir. Örneğin, belki de bir AF sürücüsü değil mi? Ya da belki de optimal G / Ç boyutu yanlış bildiriliyor. Ya da belki ikisi? Ve güven bana, bunun bir PEBKAC olayı olabileceğini de düşündüm, çünkü bölümleri 4k'lik bir sürücüde nasıl hizalayacağımızla ilgili bir şeyi yanlış anlıyor olabilirim. Emin değilim.

Ne olursa olsun, bölümlerimin en uygun hizada olduğuna ve mkswap olduğuna ya da en azından gerçekten en çok güvenmem gereken yardımcı programları, uyum konusunda şikayet etmekten vazgeçtiğime inanıyorum.

YARDIM ET

Lütfen neden ayrılmadığımı ve diğer disk yardımcı programlarını minimum hizalamadan başka bir şey üzerinde anlaşamadığımı anlamama yardımcı olun (yalnızca gParted veya gdisk ile bölümlendirirken elde edilebilir) ve lütfen gerçekten çok fazla endişe duymamın gerekip gerekmediğini söyleyin performans veya disk sağlığında çok önemli bir fark yoksa daha fazla zaman kaybetmeyeceğim için benim durumumda minimum hizalamaya göre optimum hizalamanın avantajları hakkında. Aksi takdirde, diskimin gelişmiş format avantajlarından tam olarak yararlanabilmek isterim.


4096 bayt fiziksel sektör boyutuna sahip bir AF diskinde, bölümler bu boyuta göre başlamalıdır. Yani, 512 baytlık sektör numarasının sekizi sekiz katı olması gerekir. Bu kadar basit.
Johan Myréen

Doğru, ve 8'lerin katlarının ne zaman kullanıldığını belirttiğim gibi, 2048'lerin başlangıç ​​noktası gibi (gParted ile aldığım gibi), sonra ayrılan yardımcı program diski en uygun hizada değil, yalnızca minimum hizada görüyor ve mkswap şikayet ediyor LVM içerisindeki takas hacmimin 2048'lere sadık kalmam ya da en iyi hizalama için 65535'lerin aralığı için partinin tuhaf talebine uyup uymamamın yanlış hizalanmış olması. Sadece sistemin çizdiği sektör parametrelerine bakın. Bu parametrelerin ilk başta doğru bir şekilde rapor edildiğine nasıl güvenebilirim?
gluonman

Dahili sürücüm aynı boyutta bir AF sürücüsüdür. Tek fark, ayrık alanın dışındaki bir sektör aralığını garanti eden tuhaf bir optimal IO boyutuna sahip olmamasıdır. En uygun IO boyutu 4096 minimum IO boyutu ile aynıdır ve 2048'lerde başlar ve bölümlenmiş bölümlerinin en uygun hizalı olduğunu düşünür. Bu nedenle, yardımcı programlarımın yanlış hizalamalardan şikayet etmesinin tek sebebinin ve ayrılanın 65535'i kullanmamı istemesinin merak ediyorum, optimal G / Ç boyutunun yanlış bir sayı olduğudur. Sanırım bu benim en iyi hipotezim. Ama gerçekten optimize edildiğimden emin olmak istiyorum.
gluonman

1
"Optimum IO boyutu" sadece bir tür ipucudur ve 65535 kesinlikle bir bölüm başlatmak için 512 bayt sektör sayısı olarak kullanmak için uygun değildir. GParted el kitabı: "Modern işletim sistemleri için MiB hizalamasını kullan."
Johan Myréen

Tamam. Kafamda ayrılmaya başladığı, sadece Fedora ve Lubuntu'larım için optimal olduğunu düşündüğü şeylerin yanlış olduğu, çünkü bu özel sürücüden gelen optimum IO boyutu "ipucu" onu atıyor. Katılıyor musun? Demek istediğim, rakamların tuhaf olduğunu biliyordum, ancak yıllarca ayrılıma güvenmiştim ve bu ilk kez bana hizalama sorunlarını attığını gördüğümde dürüst. Bu yüzden muhtemelen devam etmeliyim ve 2048'lerin aralıklarına uymalıyım ve partinin şikayetlerini (ve mkswap'in bu konuda) görmezden gelmeliyim, değil mi?
gluonman

Yanıtlar:


0

Halen, 65535'lerin tuhaf numarası ile karıştırılmanız durumunda. Son zamanlarda bu soruyla kafam karıştı. Bir cevap aradım ve bununla karşılaştım: http://gparted-forum.surf4.info/viewtopic.php?id=17839

Kısaca, HD bir USB sata adaptörüyle bir PC'ye bağlandığında optimal_io_size geçersiz olabilir.

Çözüm, bu sayıyı yok saymak ve 1MiB sınır önerisine bağlı kalmaktır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.