Fiziksel sektör boyutu 4096 HDD için mantıksal sektör boyutunu optimize etme


20

Birçok yeni sabit disk diskinde fiziksel sektör boyutu 4096'dır. Sistemin 512 mantıksal sektör boyutu yerine aynı boyutta bir mantıksal sektör boyutu kullanması mümkün müdür?

Toplu okuma ve yazma işlemlerini hızlandıracak mı? Nerede yapılandırılabilir?


Hizalama sorunları hakkında yorumlar için unix.stackexchange.com/a/18542/1131 adresine bakın . Son sürümleri mkfs.*otomatik olarak en uygun sektör boyutunu kullanmalıdır. Bazı mkfs.*testler yapabilir ve sonucu inceleyebilirsiniz (mkfs'nin ayrıntılı çıktısında veya ilgili bir fs yardımcı programında).
maxschlepzig

Teşekkürler ama hizalama sorunu yok
Matan

Yanıtlar:


29

512 bayt gerçekten varsayılan sektör boyutu değildir. Donanımınıza bağlıdır.

/sysSözde dosya sistemi aracılığıyla disk raporlarınızı hangi fiziksel / mantıksal sektör boyutlarını görüntüleyebilirsiniz , örneğin:

# cat /sys/block/sda/queue/physical_block_size
4096
# cat /sys/block/sda/queue/logical_block_size
512

Bu iki değer arasındaki fark nedir?

  • physical_block_sizeSürücü bir atomik operasyonda yazabildiği bir bloğun en az boyutudur.
  • logical_block_sizeSürücü yazma yapabiliyor en küçük boyut (Linux çekirdek belgelerine karşılaştırınız) 'dir.

Bu nedenle, bir 4k sürücünüz varsa, depolama yığınınızın (dosya sistemi vb.) Fiziksel sektör boyutuna eşit veya daha büyük bir şey kullandığı mantıklıdır.

Bu değerler, fdiskörneğin, son sürümlerinde de görüntülenir :

# fdisk -l /dev/sda
[..]
Sector size (logical/physical): 512 bytes / 4096 bytes

Mevcut linux dağıtımlarında, (en uygun sektör boyutunu önemsemesi gereken) programlar mkfs.xfsvarsayılan olarak en uygun sektör boyutunu seçecektir (örneğin 4096 bayt).

Ancak bunu bir seçenek aracılığıyla da açıkça belirtebilirsiniz, örneğin:

# mkfs.xfs -f -s size=4096 /dev/sda

Veya:

# mkfs.ext4 -F -b 4096 /dev/sda

Her durumda, çoğu mkfsvaryasyon yürütme sırasında kullanılan blok boyutunu da görüntüler.

Mevcut bir dosya sistemi için blok boyutu aşağıdaki gibi bir komutla belirlenebilir:

# xfs_info /mnt
[..]
meta-data=                       sectsz=4096
data     =                       bsize=4096
naming   =version 2              bsize=4096
log      =internal               bsize=4096
         =                       sectsz=4096
realtime =none                   extsz=4096

Veya:

# tune2fs -l /dev/sda
Block size:               4096
Fragment size:            4096

Veya:

# btrfs inspect-internal dump-super /dev/sda | grep size
csum_size             4
sys_array_size        97
sectorsize            4096
nodesize              16384
leafsize              16384
stripesize            4096
dev_item.sector_size  4096

Bir bölüm üzerinde dosya sistemi oluştururken, denetlenecek başka bir şey, bölüm başlangıç ​​adresinin gerçekten fiziksel blok boyutuna hizalanmış olup olmadığıdır. Örneğin, fdisk -lçıktıya bakın, başlangıç ​​adreslerini bayta dönüştürün, bunları fiziksel blok boyutuna bölün - bölümler hizalanmışsa hatırlatıcı sıfır olmalıdır.


Teşekkürler, Linux'un mantıksal ve fiziksel blok boyutları olarak neyi tanımladığına dair açıklamanız çok yardımcı oldu. Son zamanlarda aynı 8 TB sabit sürücünün bir USB muhafazasında 512 bayt blok ve diğerinde hem mantıksal hem de fiziksel 4K blok olarak göründüğü bir durumla karşılaştım. Bir şeylerin yanlış olduğunu düşündüm, çünkü kasaları değiştirdiğimde Linux bölüm haritasını görmedi, ama sonra GPT'nin ikinci mantıksal blokta başladığını gördüm, bu yüzden yeni hizalama için yanlış yerdeydi. Tek bir büyük bölümü yeniden oluşturmak için gdisk'i kullandım ve tüm verilerim hala oradaydı (4K bloklarla ext4).
Raptor007

Hizalamayı kontrol etmek için tarif ettiğiniz yöntem güvenilir midir? "Ayrılmış" yardımcı programını kullandım ve bir hdd bölümünün hizalandığını bildirdi, ancak yaklaşımla fiziksel blok boyutunu sorguladım, 512'yi aldım, sonra bölümün başlangıç ​​adresini aldım fdisk -l, 8'e ve sonra 512'ye bölündüm. kalan 0 değildi, bu yüzden bölüm hizalanmış gibi görünmüyor
user907860

1
@ user907860 Neden 8'e bölüyorsunuz? Linux sistemlerimden birinde bir fdisk -lrapor Units = sectors of 1 * 512 = 512 bytes- böylece, 2048 ve 1026048'de başlayan 2 bölümlü bir 512/4096 mantıksal / fiziksel sürücü için 2048*512%4096ve 1026048*512%4096örneğin bir python kabuğunda. Her iki ifade de sıfıra eşit olduğundan, bu bölümler 4k ile hizalanır.
maxschlepzig

Açıklama için çok teşekkür ederim, sayının bit değil sektör olduğunu fark etmedim. Birkaç ay önce cevabını iptal ettim, ne yazık ki, bir daha yapamam
user907860

2

Hayır, mümkün değil, olsaydı da önemli değil. IO tipik olarak en azından 4096 baytlık birimlerde ve genellikle çok daha fazlasında yapılır.


2
Bu ifadenin sorumla nasıl ilişkili olduğundan emin değilim .. mantıksal sektör boyutu, IO boru hattının bazı kısımlarında daha küçük parçalar ve HDD sabit yazılımında gereksiz öykünme anlamına gelebilir. Açıklığa kavuşturmak ister misiniz?
Matan

2
@Matan, yorumundan hiç anlam ifade edemiyorum. IO'nun bir seferde 512 bayt gerçekleştirilmediğini açıkladım, bu nedenle diskin 512 bayt sektörlerde ele alınması önemli değil. Sürücünün herhangi bir öykünme yapması gereken tek zaman, 4k hizalı olmayan bir yazma yapmaya çalışırsanız ve IO normalde 4k'ın katları halinde yapıldığından ve modern bölümleme araçları bölümün 4k sınırında başladığından emin olur, bu olmayacak.
psusi

1
Bu "cevap" hem iddialarında hem de sonuçlarında tamamen yanlıştır. Bir birim biçimlendirildiğinde mantıksal boyut ayarlanır. Mantıksal ve fiziksel boyut arasındaki uyumsuzluklar, flash tabanlı depolama gibi teknolojilerde belirli bir maliyete sahiptir.
Chris Stratton

@ChrisStratton, hayır, dosya sistemi bloğu / küme boyutunu düşünüyorsunuz. Mantıksal sektör boyutu, sürücünün işletim sistemine rapor ettiği bir sektörün boyutudur ve yalnızca bu boyuttaki birimleri veya bu boyutun katlarını okuyabilir ve yazabilir ve sektörler bu boyuttaki birimler halinde numaralandırılabilir. Bazı sürücülerin dahili olarak 4k sektörleri okuyup yazdığı fiziksel sektör boyutu ile karşılaştırın, ancak 4k mantıksal sektörlerle başa çıkamayan eski işletim sistemleriyle geriye dönük uyumluluk için 512 bayt sektörler kullandıklarını varsayalım.
psusi

Yanlış. Sorun, depolama sisteminin fiziksel boyutundan daha küçük birimlerde çalışmaya çalışan yazılımınız olduğunda ortaya çıkar. Bu, özellikle flaş silme blok boyutundan daha küçük mantık birimleri için geçerlidir - yazılım, dokunulmamış kısımları yeni bir fiziksel bloğa çoğaltmak zorunda kalır ve işletim sistemi dosya sistemi kodu veya kodla yapılsa da, silme ömrü maliyeti sürücünün dahili.
Chris Stratton

1

Evet mümkündür, ancak bunu yapmak sürücünün olması gerekenden daha hızlı dolmasına neden olur. 512K'dan küçük dosyalar için, her dosya tam bir 4096K (4 MB) alır ve çoğu dosya sisteminin (NTFS ve benzeri) dosyaların sektörleri paylaşmasına izin verememesi nedeniyle sektörün geri kalanını 0'larla doldurur. Bir dosya sistemi için en iyi seçenek, değişken sektör boyutlarına izin vermek olacaktır, ancak bu, MFT'nin (ana dosya tablosu) boyutunu artırır ve verileri kolayca kurtarma yeteneğini azaltırken veri bozulması riskini artırır. Başka bir deyişle, sınırlar kurtarma yazılımı tarafından tam olarak bilinmeyecektir. Yani, 4096K mantıksal sektör boyutu büyük dosyalar için harika olsa da, normal günlük kullanım PC'leri için sadece 0'lık bir grup. Şimdi, dedi ki, mantıksal sektör boyutundan daha küçük veriler söz konusu olduğunda MFT'nin kendisinde veri saklama seçeneği vardır. Ancak bu, MFT'nizin çok büyük olduğu ve verilerin iki kez yazılacağı anlamına gelir (HDD'nizde MFT'nin iki kopyası vardır). Ayrıca, maksimum değerine ulaştığınızda veya sürücü kullanımı MFT'nin kullanabileceği boşluğu aştığında sorunlara neden olabilecek maksimum MFT boyutunu belirtmeniz gerekir. Tüm bunlar bir NTFS dosya sisteminin kullanımına dayanmaktadır. İşlerin daha parlak tarafında, NTFS 4MB veya daha küçük herhangi bir mantıksal sektör boyutu için blok düzeyinde dosyalar için yerel sıkıştırma kullanmanıza izin verir. Bu sınırlama, NTFS sıkıştırmasının çalışma biçimi nedeniyle uygulanır. 4MB blokları mantıksal sektör boyutuna bakılmaksızın okunur ve sıkıştırılır. Bu, elbette,

Öyleyse, bu sizin için biraz netleşiyor mu?


Ben (işler son birkaç yıl içinde değişti sürece) o kadar, örnek dosya sistemi olarak NTFS kullanmak olmasaydı bu cevabı iyi veya Unix ve arkadaşları altında hiç desteklenmez daha iyi olacağını düşünüyorum
Fox

K, bin anlamına gelen bir metrik birim öneki olan Kilo anlamına gelir. 4 MiB, önerdiğiniz gibi 1 değil 1024 sektördür. 4096 bayt, 4 KiB veya 0,00390625 MiB'dir.
Aeyoun

Bu bir cevap değil. OP, dosya sisteminin boyutunu engellemekten değil, HDD'nin sektör boyutundan bahsediyor. Bu farklı bir katman.
德里克 薯条 德里克

-1
Sector:

1) Logical Sector: Called Native Sector.

Manufacture default setting. user cannot change.

Before 2010 year: 512b/sector

After 2010 year: 4k/sector.

Few manufacture provide HDD tool to change native sector.

2) Physical Sector: Called Cluster(or allocation unit - FAT windows) or Block(Linux/Unix)

User can change physical sector size 512b,1k,2k,4k,... by format or partition tool. Physical sector contains one or few more native sectors.

(example1: if you have HDD 512b/native sector: user can set 4K/Physical sector. this mean 1 cluster = 4 native sector)

(example2: if you have HDD 4K/native sector: user can set 4K/Physical sector. this mead 1 cluster = 1 native sector)

3) File system deal with Physical sector(or block or Cluster) only.

Bu teklifin kaynağını yazmayı kaçırdınız. Diğer taraftan, bunun önceki yorumunuzun bir kopyası olduğunu düşünüyorum: superuser.com/a/1372494/141252
andras.tim
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.