作者Gold740716 (項為之強)
看板Linux
標題[問題] ext3 檔案大小上限只有 20G
時間Wed Apr 8 11:36:27 2020
在 8T 的外接硬碟 (My Book) 上格式化了 ext3 ,
但不知道是什麼原因,檔案大小上限只能到 20G 。
truncate -s 19G 還能成功, 20G 就會報錯了。
google 到的說法,
如果 block size 是 4k ,那上限應該是 16T ,
用 tune2fs 列出的 block size 也的確是 4096 ;
但實際上卻只能建立最大 20G (2048000000 byte) 大小的檔案。
不知道為什麼是 20G 這個奇怪的數字。
在掛載的時候,的確是用 ext3 去掛載的,沒有用到 ext2 。
用 tune2fs 列出的屬性:
```
tune2fs 1.44.5 (15-Dec-2018)
Filesystem volume name: <none>
Last mounted on: /mnt/backup
Filesystem UUID: xxxx
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype sparse_super large_file
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 488382464
Block count: 1953506299
Reserved block count: 97675313
Free blocks: 1274808137
Free inodes: 487903751
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 558
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Filesystem created: Fri Aug 2 18:49:51 2019
Last mount time: Wed Apr 8 10:13:34 2020
Last write time: Wed Apr 8 10:46:48 2020
Mount count: 93
Maximum mount count: -1
Last checked: Sat Aug 3 08:03:15 2019
Check interval: 0 (<none>)
Lifetime writes: 2774 GB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 32
Desired extra isize: 32
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: 1430fead-0972-4ab8-90aa-784a0b48e68d
Journal backup: inode blocks
```
--
一位記者問總理:「請問總理先生,現在的中國人都窮吧?」不少人納悶:怎麼提這種問題?大家都關注總理怎樣回答。總理肯定地說:「不是的!」全場嘩然,議論紛紛。總理看出了大家的疑惑,補充說了一句:「當官的不窮。」頓時掌聲雷動。總理的機智打動了在場的所有人,掌聲經久不息。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.127.95 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1586316991.A.0EF.html
1F:→ bitlife: 主機是cpu和os是幾bit的作業系統? truncate理論上是用 04/08 13:17
2F:→ bitlife: truncate system call去實作,而trucate的長度參數是off_t 04/08 13:17
3F:→ bitlife: ,所以不同機器的上限可能會因為cpu,os的限制而有所不同 04/08 13:18
4F:→ bitlife: man 2 truncate 04/08 13:18
5F:→ bitlife: 寫個c程式 printf("%d", sizeof(off_t)); 就可以知道 04/08 13:21
我機器是 debian buster 64bit ,off_t 是 8 byte ,
256^8 = 18446744073709552000 ,
應該是遠超 20G 了。
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 13:50:06
早上是用 scp 下載檔案到超過大小限制。
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 13:50:48
6F:→ bitlife: 不能改用ext4嗎? ext3的年代硬碟真的很小,大容量硬碟出來 04/08 15:12
7F:→ bitlife: 的年代預設都是ext4,遇到了詭異問題如何可以先閃就閃 04/08 15:12
8F:→ bitlife: 如果可以 04/08 15:13
之前倒是用 ext4 常碰到問題,
筆電格式化的 ext4 拿到伺服器上,
結果筆電格式化的 ext4 裡,
有伺服器 os 不支援的新屬性不能讀。
所以後來就保險一點改用 ext3 。
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 15:56:30
9F:推 kdjf: 那就XFS吧,幾乎大家都能掛,頂多沒有修復工具 04/08 16:46
也不是很常有超過 20G 的檔案,
只是偶爾碰到會覺得麻煩,要用 split 切。
所以沒有換的打算。
比較好奇是為什麼我的 ext3 的大小上限和其它人不一樣。
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 20:35:15
後來夢到是我在 /etc/security/limits.conf 裡自己設了大小上限。
```
* soft fsize 20000000
```
當初應該是覺得完全沒有限制不太好,
至少設一個很大的值,
想不到後來用了一顆大容量硬碟很容易就超過了。
要繞過的方法是切換為 root ,
只有 root 用 bash 指令 ulimit ,
可以放鬆自己的限制,一般使用者只能調緊。
似乎也不能調整其它執行中程序的限制?
```
# ulimit -f $((100 * 1000 * 1000 * 1000))
```
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 22:34:07
10F:→ bitlife: XD 你應該沒在用虛擬機器,隨便一個虛擬機器的虛擬硬碟都 04/08 23:13
11F:→ bitlife: 幾十GB上百GB的 04/08 23:13
我是窮人,每天都在煩惱硬碟不夠用。
最近在煩惱 windows 的 qcow2 映像檔越長越大怎麼辦。
linux 的虛擬機比較小,幾十G可以打發,
lxc 的話還可以壓到 10G 內。
忽然又發現 soft 是可以被 ulimit 提升的。
※ 編輯: Gold740716 (140.113.127.95 臺灣), 04/08/2020 23:33:36
12F:推 Debian: 為了避免等一下被叫出來踹共,先自行出來跪算盤。 04/09 03:22