Apakah ukuran sektor fisik 512 byte default sesuai untuk disk SSD di Linux?


10

GSmartControl dan alat baris perintah lainnya (seperti fdisk, smartctl, cat /sys/block/sd*/queue/hw_sector_size, cat /sys/block/sd*/queue/physical_block_size) saya telah menggunakan laporan yang sama untuk kedua disk saya:

Sector Size: 512 bytes logical/physical

Ini adalah instalasi default Ubuntu 18.10 (kemudian ditingkatkan menjadi 19.04). Namun, stat -fperintah pada kedua disk melaporkan:

Block size: 4096       Fundamental block size: 4096

Kedua disk saya adalah SSD dan disk AFAIK SSD membutuhkan ukuran sektor 4K . Apakah ini OK atau saya melewatkan sesuatu? Apakah informasi yang dikembalikan oleh stat(= 4K) memastikan bahwa OS akan selalu mengirim IO ke disk dalam kelipatan 4K dan blok ini tidak akan pernah melewati batas 4K (blok IO akan selalu disejajarkan dengan 4K)?

Harap perhatikan output berikut ( sdb2adalah partisi root saya , sdaadalah /homedisk saya ):

# fdisk -l /dev/sd?
Disk /dev/sda: 465.8 GiB, 500107862016 bytes, 976773168 sectors
Disk model: SanDisk SDSSDH35
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdb: 238.5 GiB, 256060514304 bytes, 500118192 sectors
Disk model: ADATA SU800NS38 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: xxxx....

Device       Start       End   Sectors  Size Type
/dev/sdb1     2048   1050623   1048576  512M EFI System
/dev/sdb2  1050624 500117503 499066880  238G Linux filesystem

# df / /home
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sdb2      244568380  17799136 214276188   8% /
/dev/sda       479670976 129685112 325550152  29% /home

Iya. Itu memang mengandung informasi bermanfaat. Tapi, saya belum menemukan jawaban resmi untuk pertanyaan: Apakah informasi yang dikembalikan oleh stat (4K) memastikan bahwa OS akan selalu mengirim IO ke disk dalam kelipatan 4K dan blok ini tidak akan pernah melewati batas 4K (blok IO akan selalu disejajarkan dengan 4K)?
FedonKadifeli

Saya tidak tahu apa itu "stat (4K)". Tetapi sebagian besar OS modern tahu bagaimana menangani transfer 4K I / O asli. Dan tidak, itu tidak berarti bahwa blok tidak akan pernah melewati batas 4K pada disk kecuali partisi diselaraskan dengan benar. Gunakan fdisk -luntuk memeriksa masalah keberpihakan. Dan ternyata pekerjaan SSD sedikit berbeda, karena konstruksi fisik mereka, tetapi saya bukan ahli di bidang itu.
heynnema

Jawaban:


7

Di masa lalu, sektor 512 byte adalah norma untuk disk. Sistem yang digunakan untuk membaca / menulis sektor hanya satu sektor pada satu waktu, dan itu yang terbaik yang bisa dilakukan oleh hard drive lama.

Sekarang, dengan drive modern yang begitu padat, dan begitu cepat, dan begitu cerdas, sektor membaca / menulis hanya satu sektor pada suatu waktu yang benar-benar memperlambat total throughput.

Caranya adalah ... bagaimana Anda mempercepat throughput total, tetapi tetap mempertahankan kompatibilitas dengan subsistem disk lama / standar? Anda membuat ukuran blok 4096 yang terdiri dari delapan sektor fisik 512 byte. 4096 sekarang adalah transfer baca / tulis minimum ke / dari disk, tetapi dialihkan ke chuck 512 byte yang kompatibel ke OS.

Ini berarti bahwa walaupun sistem hanya membutuhkan satu sektor informasi 512 byte, drive tersebut membaca delapan sektor byte 512 untuk mendapatkannya. Namun, jika sistem membutuhkan tujuh sektor berikutnya, itu sudah membacanya, jadi tidak ada disk I / O yang perlu terjadi ... maka peningkatan kecepatan total throughput.

Sistem operasi modern sepenuhnya dapat memanfaatkan ukuran asli blok 4K dari drive modern.


+1 tetapi 4096/512 = 8, jadi saya pikir harus ada 8 (logis) sektor 512 b dalam satu sektor fisik 4096 b. Saya menggunakan parteduntuk menunjukkan ukuran sektor logis dan fisik.
sudodus

@sudodus Tangkapan yang bagus. Edit dilakukan.
heynnema

Inilah sebabnya mengapa penting untuk menyelaraskan partisi Anda ke batas 4k, jika tidak setiap blok / toko 4k benar-benar menyentuh dua sektor perangkat keras. (Filesystem di dalam partisi sering menggunakan blok 4k disejajarkan dengan awal partisi). Beberapa alat pemformatan menyelaraskan partisi pertama dengan 1MiB, meninggalkan seluruh MiB yang tidak digunakan kecuali untuk tabel partisi. Drive modern yang melaporkan ukuran sektor fisik mereka sebagai 4k, terpisah dari ukuran sektor logis mereka yang masih 512B.
Peter Cordes

@PeterCordes, Tidak hanya sektor boot dan tabel partisi (dalam 512 byte pertama) yang disimpan dalam Mibibyte pertama. Dalam tabel partisi MSDOS, grubmasukkan kode tambahan ke dalam Mibibyte pertama untuk boot dalam mode BIOS. (Dalam GPT, grubperlu partisi kecil dengan bios_grubtanda agar kode tersebut dapat boot dalam mode BIOS).
sudodus

4

Menurut Wikipedia "Format Lanjutan (AF) adalah format sektor disk apa pun yang digunakan untuk menyimpan data dalam disk drive yang melebihi 512, 520, atau 528 byte per sektor, seperti sektor 4.096 byte dari Advanced Format Drive (AFD)." Advanced Format (AF) adalah format disk yang secara asli menggunakan ukuran sektor 4.096 byte, bukan 512 byte. Untuk menjaga kompatibilitas dengan sistem lawas, disk AF mengemulasi ukuran sektor sebesar 512 byte.

Saya mendapat hasil yang sama seperti yang Anda dapatkan dengan menjalankan stat -fdan smartctlmenggunakan dua SSD. Kedua SSD secara otomatis dikenali oleh OS ketika mereka diinstal dan diperlukan konfigurasi nol, sehingga tampak bahwa data yang Anda dapatkan adalah pengaturan default untuk ukuran blok dan ukuran sektor.


@heynnema Saya tidak bisa berbuat apa-apa tentang "sektor 4096-byte" karena disalin dari Wikipedia, jadi saya harus membiarkannya sama seperti di Wikipedia.
karel

2
@heynnema: Ukuran fisik jauh lebih besar. SSD dibangun dari memori flash NAND, "yang secara fisik dipartisi dalam apa yang disebut" blok hapus ". Itu bisa jauh lebih besar, 4MB sudah pasti mungkin.
MSalters

1

Apakah ukuran sektor fisik 512 byte default sesuai untuk disk SSD di Linux?

Kedua disk saya adalah SSD dan disk AFAIK SSD membutuhkan ukuran sektor 4K. Apakah ini OK atau saya melewatkan sesuatu?

Perangkat keras lama dan Sistem Operasi menggunakan sektor 512 byte, sejak 2011 (hampir) semua perangkat keras penyimpanan memiliki 4096 (atau lebih besar ) sektor byte; tetapi beberapa perangkat keras mendukung emulasi sektor 512 byte untuk sistem lawas. Ada pengecualian, Samsung 840 EVO SSD memiliki blok ukuran 2048 KB .

Sebuah Kesalahan Mengoreksi Kode (ECC) dihitung untuk setiap 512 byte potongan, dan karena Anda bisa bayangkan, data yang ECC juga membutuhkan ruang penyimpanan. Tak perlu dikatakan bahwa satu sektor 4096 byte membutuhkan informasi ECC kurang dari delapan potongan 512 byte jika algoritma ECC tetap tidak berubah. Pada akhirnya, total kapasitas penyimpanan hard drive meningkat sebagai akibat lebih sedikit ECC data overhead.

Menggunakan sektor 4K masuk akal dari sudut pandang arsitektur, karena tokoh kunci lainnya (seperti halaman memori x86 dan banyak cluster sistem file) juga menggunakan ukuran 4 KB. Format Lanjutan memungkinkan untuk algoritma ECC yang lebih kuat, yang penting mengingat kapasitas yang terus meningkat. Pengendali menggunakan teknik tambahan di luar koreksi kesalahan melalui pemahaman tentang karakteristik kesalahan memori flash NAND dan perilaku beban kerja.

Advanced Format (AF) adalah format sektor disk apa pun yang digunakan untuk menyimpan data pada disk magnetik dalam hard disk drive (HDD) yang melebihi 512, 520, atau 528 byte per sektor, seperti 4096, 4112, 4160, dan 4224-byte ( 4 KB) sektor dari Advanced Format Drive (AFD). Sektor yang lebih besar memungkinkan integrasi algoritma koreksi kesalahan yang lebih kuat untuk menjaga integritas data pada kepadatan penyimpanan yang lebih tinggi.

Untuk disk SCSI (SAS) ukuran blok RAID lebih besar dari ukuran blok JBOD karena bidang integritas data standar SCSI T10 bersama dengan pemeriksaan blok buruk logis yang disimpan pada setiap blok dengan data. Adaptor SAS RAID mendukung blok disk yang didasarkan pada 512 Bytes data atau 4K Bytes data. Ukuran blok RAID untuk disk 512 adalah 528 Bytes per sektor dan ukuran blok RAID untuk disk 4K adalah 4224 byte per sektor.

Karena Anda menulis ke memori dan bukan ukuran sektor fisik disk pemintalan memiliki efek lebih kecil daripada memastikan bahwa partisi Anda selaras dengan ukuran blok hapus . Meski begitu yang terbaik adalah memiliki perangkat lunak dan perangkat keras terbaru, dan menggunakan ukuran sektor 4K.

Ukuran sektor yang lebih besar direkomendasikan oleh Intel - " Dapatkan Kinerja Optimal dengan Mengubah Ukuran Sektor Fisik SSD ".

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.