Perbedaan perangkat keras:Anda baru saja membeli drive 1 TB baru yang bagus, tetapi alat disk sistem Linux Anda melaporkannya sebagai 977 GB. Hei, kemana perginya 23 GB itu?
Tidak ada tempat, dan tergantung pada pendapat Anda, apakah itu masih atau tidak pernah ada! Perbedaan ini berasal dari produsen disk dan pemrogram sistem operasi yang menggunakan unit pengukuran yang berbeda. Produsen disk menggunakan pengukuran metrik yang sebenarnya, jadi 1000 GB =1 TB. Namun, di dunia komputer, kami tidak beroperasi dengan kekuatan 10, kami beroperasi dengan kekuatan dua, jadi bagi kami, 1024 GB =1 TB. Perbedaan dalam satuan ukuran ini adalah perbedaan antara 1 TB atau 977 GB.
Wow, itu sangat menjengkelkan! Belum lagi tidak benar-benar berbasis standar, yang merupakan sesuatu tentang komunitas open-source, bukan? Pada dasarnya, di industri komputer, kita telah menyalahgunakan fakta bahwa 1024 hampir mendekati 1000. Namun, seiring kita mendapatkan file, memori, drive, paket, dll. yang semakin besar, perbedaan ini semakin terlihat.
Jadi apa yang harus dilakukan? Badan standar internasional, seperti International Electrotechnical Commission (IEC) dan International Organization for Standardization (ISO), telah membuat unit pengukuran untuk memperhitungkan perbedaan penggunaan antara metrik yang sebenarnya dan perkiraan kasar yang telah kami gunakan dalam komputasi. Masukkan GiB dan TiB (unit lain yang lebih kecil dan lebih besar mengikuti nomenklatur yang sama). Pada dasarnya, 1024 GiB =1 TiB. Ini berarti Anda masih dapat membeli drive 1 TB, tetapi utilitas disk harus melaporkannya sebagai 977 GiB untuk menunjukkan bahwa utilitas disk menggunakan faktor 1024 untuk pengukuran, bukan metrik, 1000, faktor pengukuran.
Versi modern alat sudah mulai menggunakan metode ini. Misalnya, lihat fdisk
saya keluaran utilitas dari sistem Red Hat Enterprise Linux 8.2 di bawah ini:
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Berikut ini artikel tentang awalan biner jika Anda menginginkan lebih banyak detail.
Perbedaan sistem file
Konten di bawah ini didasarkan pada sistem file tradisional yang diperluas yang digunakan di banyak Linux yang berbeda, khususnya ext4. Namun, Red Hat Enterprise Linux sekarang menggunakan XFS sebagai sistem file default. Menjelang akhir bagian ini, ada diskusi khusus tentang bagaimana topik ini memengaruhi XFS. Untuk saat ini, mari kita fokus pada ext4.
Situasi:Seorang pengguna melaporkan bahwa sistem file penuh, tetapi ketika saya melihat disk kosong (df
) output, saya melihat yang berikut:
[root@somehost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vdb1 991M 924M 0 100% /mnt
Dari output di atas, Anda melihat bahwa Ukuran dilaporkan sebesar 991 MB, tetapi Bekas adalah 924 MB, jelas tidak penuh. Namun, ketika pengguna menjalankan perintah untuk menghabiskan lebih banyak ruang disk, seperti dd
perintah, mereka mendapatkan pesan berikut:
[user@somehost mnt]$ dd if=/dev/zero of=bigfile2
dd: writing to 'bigfile2': No space left on device
Namun, jika mereka menggunakan touch
untuk membuat file, mereka melihat ini:
[user@somehost mnt]$ touch file3
[user@somehost mnt]$ ls
bigfile file3 lost+found
Selain itu, jika root membuat file dengan menggunakan dd
, ia bekerja tanpa masalah, seperti yang ditunjukkan di bawah ini:
[root@somehost mnt]# dd if=/dev/zero of=root-file count=100
100+0 records in
100+0 records out
51200 bytes (51 kB, 50 KiB) copied, 0.000748385 s, 68.4 MB/s
[root@somehost mnt]# ls
bigfile file3 lost+found root-file
Jelas, membuat file berhasil melalui dd or touch
jika Anda adalah akar! Apa yang terjadi?
Alasannya touch
bekerja adalah bahwa sistem file kehabisan blok data untuk menyimpan file konten . Namun, sistem file memiliki banyak inode (penunjuk file) yang tersedia. Itu dikonfirmasi dengan menggunakan opsi lain dengan df
perintah:
[root@somehost mnt]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/vdb1 65536 14 65522 1% /mnt
touch
perintah membuat file kosong, yang berarti menggunakan inode untuk menyimpan metadata file tetapi tidak menggunakan blok data terkait.
Pembuatan file pengguna root berfungsi karena sistem file ext4 menyimpan ruang khusus yang tidak dapat diakses oleh pengguna yang tidak memiliki hak istimewa. Hanya root, atau proses yang dimiliki root, yang dapat menulis file untuk menggunakan ruang disk ini. Untuk sistem file ext2, ext3, dan ext4, Anda dapat memeriksa data ini, yang disimpan di superblok sistem file, dengan menggunakan tune2fs
memerintah. Pada output di bawah, saya telah menghapus sebagian besar data yang dilaporkan oleh tune2fs
sehingga saya dapat menunjukkan total dan ruang yang dipesan:
[root@somehost mnt]# tune2fs -l /dev/vdb1
tune2fs 1.45.4 (23-Sep-2019)
Filesystem volume name: <none>
Last mounted on: /mnt
<<< OUTPUT ABRIDGED >>>
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 65536
Block count: 261888
Reserved block count: 13094
Free blocks: 253029
Free inodes: 65525
First block: 0
Block size: 4096
<< OUTPUT ABRIDGED>>
Pada output di atas, perhatikan jumlah blok yang dicadangkan parameter. Menurut mkfs.ext4
halaman manual, defaultnya adalah lima persen dari ruang sistem file. Pada sistem file ini, ruangnya kira-kira 51 MiB.
Jumlah blok yang dicadangkan x Ukuran blok =jumlah dalam Byte
13094 x 4096 =53633024 Bytes
Anda kemudian dapat mengonversi Bytes hingga KiB atau MiB dengan membagi angka yang dihasilkan dengan 1024 untuk meningkatkan ukuran unit pengukuran sesuai keinginan Anda. Ini contohnya:
53633024 Byte / 1024 =52376 KiB
52376 KiB / 1024 =51,15 MiB
Sistem file secara keseluruhan kira-kira 1 GiB, jadi jumlah blok yang dicadangkan sebesar lima persen akan membuat ruang blok cadangan sekitar 50 MiB.
Kumpulan blok yang dicadangkan ini adalah dd
milik root digunakan untuk menyimpan data dalam contoh di atas yang berfungsi sementara pengguna terus tidak menyimpan file pada sistem file yang tampaknya "penuh". Administrator dapat menggunakan tune2fs
untuk menambah atau mengurangi jumlah blok yang dicadangkan pada sistem file. Namun, jika Anda meningkatkan jumlah ini saat sistem file aktif, perlu tersedia ruang kosong yang berdekatan dengan area blok cadangan yang ada pada disk untuk mengakumulasi lebih banyak blok cadangan. Umumnya, jika Anda ingin memesan lebih dari default, sebaiknya lakukan ini saat Anda memformat sistem file dengan menggunakan opsi ke mkfs.ext4
memerintah. Proses ini memastikan bahwa ada ruang berdekatan yang memadai untuk mengalokasikan jumlah blok cadangan yang Anda inginkan.
Terakhir, tergantung pada sistem file, alat yang Anda gunakan untuk memeriksa sistem file, atau distro Anda, Anda mungkin melihat alat melaporkan penggunaan sistem file lebih dari 100%. Jika Anda melihat laporan alat yang digunakan 102%, ini memberi tahu Anda bahwa 100% ruang disk yang dapat diakses pengguna di sistem file digunakan, dan Anda juga telah menggunakan beberapa blok yang dicadangkan tersebut.
Lalu bagaimana dengan XFS? Sebelumnya di bagian ini, saya menyebutkan bahwa Red Hat Enterprise Linux 7 dan 8 menggunakan XFS sebagai format sistem file default mereka. XFS memang menggunakan blok yang dicadangkan, tetapi cadangannya kurang dari format sistem file yang diperluas dan tidak mengizinkan akses pengguna ke ruang itu. Ruang dicadangkan untuk sistem file XFS itu sendiri untuk digunakan. Karena ruang yang dicadangkan memiliki tujuan yang berbeda—untuk memungkinkan sistem file memanfaatkan ruang untuk operasi sistem file dan untuk mengaburkan ruang dari sistem—maka akan lebih mudah untuk melaporkan penggunaan utilitas XFS. Namun, itu dapat dilakukan dengan menggunakan kombinasi xfs_info
, melihat jumlah dan ukuran blok, mengubahnya menjadi KiB, dan membandingkannya dengan output df
.
Selesai
Jadi di mana ruang disk Anda yang "hilang"? Itu tersembunyi di berbagai unit ukuran yang digunakan untuk melaporkan kapasitas disk. Cara ruang ini dilaporkan dan digunakan berbeda-beda menurut sistem file dan alat.
[ Ingin mencoba Red Hat Enterprise Linux? Unduh sekarang secara gratis. ]