Advanced Format (Türkçe)

From ArchWiki
Çeviri Durumu: Bu makale, Advanced Format makalesinin çevirisidir. Son çeviri tarihi (yıl-ay-gün şeklinde): 2023-12-31. Eğer makalenin İngilizce sürümünde değişiklik yapılmış ise çevirinin senkronize edilmesine yardımcı olabilirsiniz. Çevirmenliğe dair bilgi edinmek için Telegram grubumuzu ziyaret edebilirsiniz. Çevrilmiş tüm makelelere buradan erişebilirsiniz.

Bir sabit disk sürücüsünün (HDD) en küçük fiziksel depolama birimi sektör'dür. Bunun katı hal sürücüleri (SSD) için karşılığı ise page'dir.[1] Depolama aygıtı bellenimi, bu fiziksel sektörleri soyutlayarak üzerinde çalışabildiğimiz mantıksal sektörlere çevirirler. Bu sektörün boyutu, diskteki en küçük adreslenebilir birimin boyutunu ifade eder.

Not: Programlar ve dokümantasyon bazen "sektör" ve "blok" kelimelerini depolama türü farketmeden birbiri yerine kullanabilir.
Fiziksel sektör boyutu
Bu bir fiziksel depolama aygıtının yazabileceği en küçük birimdir. HDD'lerde, bir tabla üzerinde bulunan sektörlerin asıl boyutudur. Geleneksel olarak, HDD'ler için fiziksel sektör boyutu 512 byte'dı, yani her bir sektör 512 byte'lık veri taşıyabilirdi. Ancak, Advanced Format Drive'ların tanıtılmasıyla, daha yüksek depolama yoğunluğu ve geliştirilmiş hata düzeltme kabiliyeti için fiziksel sektör boyutu 4096 byte (4 KiB)'e çıkarıldı. SSD'ler, genelde 4 ile 16 KiB arasında olan, NAND flash belleğinin page boyutunu göstermez. Onun yerine fiziksel sektör boyutu olarak mantıksal mantıksal sektör boyutunu rapor eder. NVMe SSD'ler için ise, eğer mevcutsa, Atomic Write Unit Power Fail (AWUPF) parametresi kullanılır.
Mantıksal sektör boyutu
İşletim sistemi sektör boyutu olarak da bilinen mantıksal sektör boyutu, işletim sistemi ve uygulamalara bildirilen sektör boyutunu ifade eder. Yazılım seviyesinde okuma ve yazma için kullanılan sektör boyutudur. Mantıksal sektör boyutu fiziksel sektör boyutuna göre farklılık gösterebilir. Örneğin, 4096 byte'lık fiziksel sektör boyutuna sahip bir Advanced Format HDD, eski sistem ve uygulamalarla uyumluluk sağlamak için mantıksal sektör boyutunu 512 byte gösterebilir.

Farklı "katman"lar, yani aygıtın kendisi, yığılı blok aygıtı ve dosya sistemleri, hepsi aynı sektör boyutundan faydalanmalı. Eğer yapmazlarsa bellenimdeki haritalama işlemi, genelde farkedilmeyecek kadar da olsa, önlenebilir bir ek yüke sebep olur.

lsblk ile mevcut fiziksel ve mantıksal sektör boyutları listelenebilir:

$ lsblk -td
NAME    ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED       RQ-SIZE  RA WSAME
sda             0   4096      0    4096    4096    1 mq-deadline      64 128    0B
nvme1n1         0   4096      0    4096    4096    0 none           1023 128    0B
nvme0n1         0   4096      0    4096    4096    0 none           1023 128    0B

PHY-SEC fiziksel sektör boyutunu gösterirken LOG-SEC mantıksal sektör boyutunu gösterir.

Alternatif olarak, özel olarak bir sürücünün değerleri aşağıdaki sysfs girişlerinden okunabilir:

$ cat /sys/class/block/sürücü/queue/physical_block_size
$ cat /sys/class/block/sürücü/queue/logical_block_size

Sektör boyutları ayrıca fdisk, smartctl ve hdparm çıktısında da görülebilir.

Sektör boyutunun değiştirilmesi

Uyarı: Bir sürücünün sektör boyutunu değiştirmek geri alınamaz bir şekilde sürücüdeki bütün veriyi siler.

Bazı NVMe sürücüler ve "enterprise" SATA sabit disk sürücüleri bildirilen sektör boyutunu, standart NVMe veya ATA komutları kullanarak değiştirmeye izin verir. (NVM Command Set Specification 1.0 ve daha sonraki sürümlerinde Format NVM, ATA Command Set - 4 ve daha sonraki sürümlerinde (SET SECTOR CONFIGURATION EXT, sırasıyla). Sabit diskler için bu mantıksal sektör boyutunu fiziksel sektör boyutuyla eşitleyerek optimum performansı sağlar. NVMe katı hal sürüclerinde ise hem mantıksal hem fiziksel sektör boyutları değiştirilir.

SATA katı hal sürücüleri genel olarak sektör boyutunun değiştirilmesini destekler. Buna istisna ise bildirilen fiziksel sektör boyutunu değiştirmeye izin veren, ancak mantıksal sektör boyutunu değiştirmeyi izin vermeyen bazı Intel SATA SSD'leridir.[2] Bildirilen fiziksel sektör boyutunu değiştirmek için Advanced Format#Intel'i takip edin.

Bir diskin sektör boyutunu değiştirmek alt düzey biçimlendirme gerektiren kompleks bir işlemdir. Buna altenatif olarak optimum performans almak için dosya sistemi oluştururken istenilen sektör boyutunu belirtebilirsiniz. #dm-crypt ve #Dosya sistemleri'e bakınız.

Advanced Format sabit disk sürücüleri

Bir Advanced Format sabit disk sürücüsünün sektör boyutunun değiştirilip değiştirilmediğini belirlemek için hdparm aracını kullanın:

# hdparm -I /dev/sdX | grep 'Sector size:'
Not: USB ile bağlı sürücüler için, USB köprüsünün SAT yani SCSI/ATA Translation (ANSI INCITS 431-2007) desteklemesi gerekir.

Sektör Yapılandırma Günlüğü birden fazla mantıksal sektör boyutu sıralayan Advanced Format sürücüleri bunun bir listesini gösterir:

        Logical  Sector size:                   512 bytes [ Supported: 512 4096 ]
        Physical Sector size:                  4096 bytes

Mantıksal sektör boyutunu değiştirmeyi desteklemeyen sabit disk sürücüleri ise sadece mevcut sektör boyutunu bildirir. Örneğin bir Advanced Format 512e sürücüsü:

        Logical  Sector size:                   512 bytes
        Physical Sector size:                  4096 bytes

Bu tür sürücülerde optimum performans için #dm-crypt sektör boyutunun veya #Dosya sistemleri blok boyutunun en az 4096 byte olup sürücüyle hizalandığından emin olun.

Bir Advanced Format 4Kn sürücüsü:

        Logical  Sector size:                  4096 bytes
        Physical Sector size:                  4096 bytes

4Kn sürücüleri zaten optimum yapılandırmaya sahiptir ve bölümlendirme ve biçimlendirmede özel bir müdaheleye ihtiyaçları yoktur. Oldukları gibi kullanılabilirler.

SATA HDD'niz birden fazla mantıksal sektör boyutunu destekliyorsa ve de ATA komutu SET SECTOR CONFIGURATION EXT'ı destekliyorsa (örneğin FastFormat destekleyen Seagate sürücüleri), hdparm kullanarak mantıksal sektör boyutları arasında geçiş yapabilirsiniz. Örneğin 4096 byte'a, yani 4Kn ayarlamak için şunu çalıştırın:

# hdparm --set-sector-size 4096 --please-destroy-my-drive /dev/sdX

Bundan sonra, hdparm mantıksal sektör boyutunu 4096 byte olarak bildirmeli:

# hdparm -I /dev/sdX | grep 'Sector size:'
        Logical  Sector size:                  4096 bytes [ Supported: 512 4096 ]
        Physical Sector size:                  4096 bytes

NVMe katı hal sürücüleri

Çoğu katı hal sürücüsü (SSD) fiziksel blokların genelde daha büyük (4, 8 KiB ve daha büyük) olmasına rağmen mantıksal sektör boyutu olarak 512 byte bildirir.

NVMe sürücünün biçimlendirilmiş mantıksal blok adres boyutuna (FLBAS) bakmak için Identify Namespace komutunu kullanın:

# nvme id-ns -H /dev/nvme0n1 | grep "Relative Performance"
LBA Format  0 : Metadata Size: 0   bytes - Data Size: 512 bytes - Relative Performance: 0x2 Good (in use)
LBA Format  1 : Metadata Size: 0   bytes - Data Size: 4096 bytes - Relative Performance: 0x1 Better
  • Metadata Size mantıksal blok adresi (LBA) başına düşen ek önveri byte sayısıdır. Bu Linux'da iyi desteklenmediğinden dolayı, 0 değerinde bir biçimin seçilmesi tavsiye edilir.
  • Relative Performance hangi biçimin nasıl performans sunacağını gösterir.

smartctl de desteklenen mantıksal blok adresi boyutlarını gösterir, ancak kullanıcı dostu açıklamalar sağlamaz. Örneğin:

# smartctl -c /dev/nvme0n1
...
Supported LBA Sizes (NSID 0x1)
Id Fmt  Data  Metadt  Rel_Perf
 0 +     512       0         2
 1 -    4096       0         1

Mantıksal blok adres boyutunu değiştirmek için nvme format kullanın ve --lbaf parametresi ile istenilen değeri belirtin:

# nvme format --lbaf=1 /dev/nvme0n1
You are about to format nvme0n1, namespace 0x1.
WARNING: Format may irrevocably delete this device's data.
You have 10 seconds to press Ctrl-C to cancel this operation.

Use the force [--force] option to suppress this warning.
Sending format operation ... 
Success formatting namespace:1

Bu devam etmeden önce sadece birkaç saniye sürmeli.

Not: Bölümlendirme sırasında #Bölüm hizası'na dikkat etmeyi unutmayın, aksi takdirde elde edilen herhangi bir performans kazancı, boşa gidecektir.


Üreticiye spesifik programlar kullanarak

Eğer yukardaki genel araçlar sektör boyutunu değiştirmeye izin vermezse, yine de sürücünün üreticisinden olan bir programla değiştirmek mümkün olabilir.


Seagate

Seagate için openseachestAUR kullanın.

Doğru olanı bulmak için bütün cihazları tarayın ve bulduğunuzla ilgili bilgi alın:

# openSeaChest_Basics --scan
# openSeaChest_Basics -d /dev/sdX -i

Sürücü hakkında bilgi vermeli. Seri numarasını kontrol ettiğinizden emin olun.

Sürücü tarafından desteklenen mantıksal blok boyutlarını kontrol edin:

# openSeaChest_Format -d /dev/sdX --showSupportedFormats

Eğer listede 4096 varsa, mantıksal sektör boyutunu şu şekilde değiştirebilirsiniz:

# openSeaChest_Format -d /dev/sdX --setSectorSize=4096 --confirm this-will-erase-data

Bu işlem birkaç dakika sürecektir ve işlem sonunda sürücünüz 4K sektör boyutu kullanacaktır.

Bölüm hizası

Bölümlerin doğru şekilde hizalanması gereksiz okuma-düzenleme-yazma döngülerini önler. Kişisel bilgisayarlarda yaygın bir uygulama her bölümü 1 MiB (1 048 576 bytes)'lik parçalara hizalamaktır. Bu yaygın olan bütün page ve blok boyutu senaryolarını kapsar ve kullanılan bütün boyutlara bölünebilir—1 MiB, 512 KiB, 128 KiB, 4 KiB ve 512 B.

Uyarı: Yanlış hizalanmış bölümler dm-crypt/LUKS ile 4096 byte sektörlerin kullanılmasına engel olur. [3].
  • fdisk, cfdisk ve sfdisk hizalamayı otomatik olarak yapar.
  • gdisk ve cgdisk hizalamayı otomatik olarak yapar.
    • sgdisk varsayılan olarak yalnızca bölümlerin başlangıcını hizalar. -I/--align-end seçeneğini kullanarak bölüm boyutunun/sonunun da hizalanmasını sağlayın.
  • Parted yalnızca bölümlerin başını hizalayabilir, boyutunu yani sonunu hizalamaz. Bölüm oluştururken, bölüm sonunun mebibyte ile ya da daha büyük bir IEC binary birimi halinde belirttiğinzden emin olun.

dm-crypt

Cryptsetup 2.4.0 itibariyle, luksFormat LUKS2 biçimi için otomatik olarak optimum şifreleme sektör boyutunu tespit eder.[4].

Ancak, bunun çalışması için cihazın varsayılan sektör boyutunu doğru bildirmesi gerekmektedir, bakınız: #Sektör boyutunun değiştirilmesi.

cryptsetup luksFormat kullanıldıktan sonra, LUKS2 birimi tarafından kullanılan sektör boyutunu şu şekilde kontrol edebilirsiniz:

# cryptsetup luksDump device | grep sector

Eğer varsayılan sektör boyutu yanlışsa, LUKS2 birimini 4K sektör boyutuyla oluşturulmasını zorlayabilirsiniz:

# cryptsetup luksFormat --sector-size=4096 device

Bu komut istenilen boyut cihazınkiyle uyuşmazsa hata verir:

# cryptsetup luksFormat --sector-size 4096 device
(...)
Verify passphrase: 
Device size is not aligned to requested sector size.
Not: Cihaz 4K fiziksel sektör kullanıyorken bu komutun neden başarısız olabileceğini öğrenmek için cryptsetup issue 585'e bakınız.

Aygıtı yanlış sektör boyutuyla şifrelediyseniz aygıt şu komutla yeniden şifrelenebilir:

Uyarı: Barındırılan dosya sisteminin blok boyutu 4096 byte veya 4096'nın katı olmalıdır, aksi takdirde bozulur.
# cryptsetup reencrypt --sector-size=4096 device

Dosya sistemleri

mkfs.bcachefs, mkfs.btrfs(8), mkfs.jfs(8), mkfs.nilfs2(8), mkfs.reiserfs(8) ve mkswap(8) varsayılan olarak 4096 byte sektörler kullanır.

mkfs.ext4(8) varsayılan olarak 512 MiB'den küçük dosya sistemlerinde 1024 byte, 512 MiB ve daha büyük dosya sistemlerinde 4096 byte sektörler kullanır.

mkfs.xfs(8) varsayılan olarak 512 byte sektörler kullanır ancak 512e ve 4Kn diskleri için 4096 kullanır.

mkfs.f2fs(8), mkfs.fat(8), mkfs.ntfs(8) ve mkfs.udf(8) cihazın mantıksal sektör boyutunu kullanır. Yani 512e cihazlarda 512 byte, 4Kn disklerde 4096 byte sektör kullanır.

zpool-create(8) (from ZFS) varsayılan olarak 512 (2⁹) byte sektör kullanır, sektör boyutu advanced format disklerde -o ashift=12 (2¹², 4096 bytes) seçeneği ile pool oluşturulurken belirtilmelidir.

Eğer depolama aygıtı doğru sektör boyutunu bildirmiyorsa fiziksel sektör boyutunu kendiniz belirterek uygun şekilde biçimlendirebilirsiniz.

Özellikle bellenim tarafından yönetilen shingled magnetic recording (SMR) sürücüleri, fiziksel sektör boyutu 4096 byte iken 512 byte'lık mantıksal sektör boyutu kullanıldığında bundan ciddi ve negatif şekilde etkilenir. Bu sürücüler boştayken farklı performans yazma bölgelerine sahiptir ve yeniden-haritalandırma nadiren gerçekleşir. Ancak yük altında (örneğin RAID resilver'lama, yedekleme, çok fazla küçük boyutta dosya yazma, rsync vb.) farklı bir dosya sistemi sektör boyutu yazma hızını tek haneli megabyte/saniye'ye kadar indirebilir, yüksek performanslı yazma alanları bittiğinden ve çeviri katmanı bu küçük parçalarda fazla çalıştığından dolayı.

Not: x86_64 sistemlerde Linux 4 KiB'den büyük blok boyutuna sahip dosya sistemlerini bağlayamaz. Detaylar için ve ilerleme için bakın: Large block sizes (LBS)

4096 byte sektör boyutunu kendiniz belirtmenin birkaç örneği:

  • ext4:
    # mkfs.ext4 -b 4096 /dev/device
  • XFS:
    # mkfs.xfs -s size=4096 /dev/device
  • FAT:
    # mkfs.fat -S 4096 /dev/device
  • NTFS-3G:
    # mkfs.ntfs -Q -s 4096 /dev/device
  • UDF:
    # mkfs.udf -b 4096 /dev/device
  • ZFS:
    # zpool create -o ashift=12 poolname raidz device0deviceN

Ayrıca bakınız