Các kích thước ngành trên Mac OS X là gì?


15

Tôi đọc trên trang Wikipedia HFS Plus rằng kích thước cung mặc định trên máy Mac là 512 b. Tuy nhiên, tôi cũng đọc rằng máy Mac hỗ trợ các lĩnh vực 4kb. Làm cách nào để xác định những gì tôi có, các lĩnh vực 512 b hoặc 4 kb? Tôi nghĩ 512 là câu trả lời đúng, nhưng tôi muốn chắc chắn.

Câu trả lời:


27

Trong thiết bị đầu cuối, bạn có thể sử dụng Diskutil để lấy thông tin về ổ đĩa, bao gồm kích thước khối thiết bị:

$ diskutil info / | grep "Block Size"
  Device Block Size:        512 Bytes

1
Cảm ơn Timothy - không biết về lệnh này. Trông giống như một kho báu cho thông tin / thao tác trên đĩa trong OS X.
kalaracey

Thận trọng: câu trả lời này không phân biệt giữa kích thước khối thiết bị và kích thước khối phân bổ. Chúng có thể rất khác nhau và kích thước khối phân bổ có thể là thứ mà OP đang tìm kiếm, vì đó là thứ mà hệ thống tập tin sử dụng. Xem câu trả lời của Mike.
LarsH

12

Đầu tiên, lưu ý rằng Kích thước khối thiết bị khác với kích thước khối được sử dụng bởi hệ thống tệp. Giá trị trước đây được báo cáo bởi Diskutil đề cập đến kích thước khối thô được sử dụng bởi phần cứng. Tôi chưa tìm thấy một cách dễ dàng để kiểm tra giá trị sau bằng dòng lệnh, nhưng bạn chỉ cần tạo một tệp 0 byte sau đó thực hiện Nhận thông tin từ Finder. Nó sẽ nói 0 byte, nhưng 4k được sử dụng trên đĩa.

Thứ hai, bạn có thể tạo một hệ thống tệp HFS + với kích thước khối lớn hơn 4k bằng chương trình dòng lệnh newfs_hfs. Cách dễ nhất là sử dụng Disk Utility để phân vùng ổ đĩa và tạo phân vùng với định dạng mặc định, sau đó sử dụng /bin/dfđể xác định thiết bị khối (chỉ một ví dụ /dev/disk0s2:). Sau đó ngắt kết nối phân vùng đó (sử dụng umount /dev/diskXXXhoặc Disk Utility) và định dạng lại thành HFS + với các khối 64k:

newfs_hfs -v VolumeName -b 65536 /dev/disk0s2

Sử dụng mẹo Nhận thông tin ở trên để xác minh rằng một tệp nhỏ hiện chiếm 64k trên đĩa (có thể là 65 nghìn cho đơn vị quyền hạn 10).

Hiệu suất là lý do chính mà bạn có thể muốn làm điều này, nếu hầu hết dữ liệu được lưu trữ là các tệp lớn (như tệp MP3, ảnh, video, tệp .zip, v.v.) và nó cũng giúp giảm phân mảnh đĩa. Rõ ràng đừng bận tâm nếu bạn có kế hoạch lưu trữ hầu hết các tệp nhỏ.

Tôi đã thấy rằng trên các ổ đĩa lớn (> 1 TB) được định dạng là HFS với kích thước khối 4k mặc định, khi ổ đĩa gần hết dung lượng, hiệu suất ghi bị suy giảm khủng khiếp. Tôi đoán đó là do phân vùng bị phân mảnh và phải tìm và mổ các khối miễn phí để ghi ra 1% dữ liệu cuối cùng. Tôi hy vọng rằng kích thước khối lớn hơn sẽ giảm bớt vấn đề này.


Kích thước khối hệ thống tập tin được đưa ra bởi stat -f %k ..
lhf

Ngoài ra: trên ổ đĩa sẽ dễ dàng hơn nếu kích thước khối hệ thống tệp của bạn khớp với kích thước khối vật lý của ổ đĩa. Mặt khác, mỗi lần ghi phải thực sự là một chu trình đọc-sửa-ghi, (dĩ nhiên, bộ nhớ đệm sẽ giúp.)
Edward Falk

Re: "Tôi chưa tìm thấy một cách dễ dàng để kiểm tra giá trị sau bằng dòng lệnh" Tôi không biết về các phiên bản cũ hơn, nhưng trên macOS Sierra 10.12.6, diskutil infođôi khi sẽ cho bạn biết kích thước khối phân bổ: Allocation Block Size: 32768 Bytescũng như kích thước khối thiết bị. Tôi thấy điều này là đúng khi sử dụng thiết bị thô rdisk2s0có thẻ SD trong đầu đọc thẻ. Tôi không biết làm thế nào để nó hoạt động cho ổ cứng.
LarsH

9

Kích thước khối thiết bị OS X có thể được xác định bằng cách thực hiện lệnh sau từ dấu nhắc cửa sổ Terminal:

diskutil info / | grep "Block Size"

Mà sẽ xuất ra các thông tin sau:

Device Block Size: 512 Bytes

Kích thước khối hệ thống tệp có thể được xác định bằng cách sử dụng stattiện ích:

stat -f %k .

Nó sẽ hiển thị cho bạn kích thước khối hoạt động I / O của hệ thống tệp tối ưu theo byte:

4096

4

Với hệ thống tệp HFS cũ hơn, lần thử thứ hai của Apple tại một hệ thống tệp cho Macintosh, chỉ có thể có tối đa 65.535 khối phân bổ trên một đĩa. Kích thước khối là một hàm của kích thước đĩa tính theo byte chia cho số khối phân bổ tối đa là 65,535. Đối với các đĩa nhỏ, điều này là tốt, nhưng khi kích thước đĩa bắt đầu đạt tới kích thước 1GB, kích thước khối phân bổ tối thiểu là 16 KB (1073741824/ 65535) = 16384.25, nhưng bạn cần cắt ngắn thành 16384.

Điều này có nghĩa là một tệp 1 byte trên đĩa HFS 1GB cần 16.384 byte để lưu trữ trên ổ cứng, do đó có quá nhiều dung lượng bị lãng phí. Vì vậy, Apple đã tạo ra trình bao bọc HFS + để giảm không gian lãng phí.

Có thể có một cách để đặt kích thước khối cao hơn, nhưng tại sao bạn lại muốn?

Dưới đây là một tập lệnh bash nhanh sẽ liệt kê tất cả các đầu ra của đĩa cho tất cả các đĩa hiện được kết nối của bạn.

#!/bin/bash

for disk in /dev/disk*s*
do
    diskutil info $disk
    echo "**************************************************************************************"
    echo " "
done

Cảm ơn bạn đã trả lời, Mark, nhưng tôi nghĩ rằng bạn có thể đã hiểu nhầm câu hỏi của tôi. Tôi đang tìm kích thước của một khối trên HFS Plus (hệ thống tệp mặc định hiện tại cho máy Mac). Đó là điều thú vị về những thất bại của HFS, mặc dù.
kalaracey

Vấn đề là nó thay đổi, nhưng dường như thường là 512 byte.
Ɱark

0

Có vẻ như kích thước khối thiết bị hiện là 4096 byte trong iMac 2017 (iMac18,1), gây ra sự cố cho những người sử dụng ntfspross.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.