在玩文件系统和分区时,我意识到当我在 USB 驱动器上创建一个 ext 文件系统并将其插入 Windows 时,我不得不对其进行格式化。另一方面,在 Windows 上构建 FAT 分区并将其插入我的虚拟机时,Linux 完全能够读取和挂载我的 FAT 分区。
1 - 为什么 Windows 不能读取 Linux 文件系统?
2 - 允许 Linux 这样做而 Windows 不能这样做的主要区别是什么?
前几天我遇到了一个脚本错误,它向我的主目录写入了 400 万个小文本文件:
我不小心将 400 万个小文本文件写入一个文件夹,如何最好地摆脱它们?
我删除了这些文件,但从那以后,每当我按 Tab 键完成文件名或路径时,在发生任何事情之前都会有半秒的延迟。
虽然文件现在被删除了,但我认为 gpt 或类似的东西有一些持久的损坏?我可以使用任何有用的工具来清理它吗?
文件系统是 ext4(RAID 1 中有两个 3TB 驱动器),我运行的是 CentOS 7。
% ls -ld "$HOME"
drwx------. 8 myname myname 363606016 Nov 18 09:21 /home/myname
Run Code Online (Sandbox Code Playgroud)
谢谢
在安装 Linux 时,我只提到了一个文件系统(/dev/sda1 -> ext4 -> / )。但是对于 dev、run、proc、sys - Linux 正在创建额外的 FS,这可以从mount.
$ mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,noexec,relatime,size=12138104k,nr_inodes=3034526,mode=755)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=2433824k,mode=755)
/dev/sda4 on / type ext4 (rw,relatime,errors=remount-ro)
...
Run Code Online (Sandbox Code Playgroud)
我知道 /proc 是一个虚拟文件系统,位于内存中,而不是在任何 HDD/SSD 上。有人可以解释一下 /dev、/run 和 /sys 的情况吗?它们是否存在于硬盘上(如果存在的话,如果可以有意义地追踪的话,其位置在哪里)。
基于已经问过的问题 -为什么 /dev 和 /run 的 inode 编号与 / 的 inode 编号相同?
我有一个ext4格式化的磁盘,里面有数以千计的文件,这些文件是自动生成的并且是需要的。其中几千个只有一个字节长,有的两个字节。两组小文件中的所有文件都是相同的。
通过定位这些(比如 1000 个)长度为 1 个字节的文件,删除每个文件并硬链接到单个代表性文件,我可以节省多少空间?
像这样:
# ls -l
-rw-r----- 1 john john 1 Feb 25 10:29 a
-rw-r----- 1 john john 1 Feb 25 10:29 b
-rw-r----- 1 john john 1 Feb 25 10:29 c
# du -kcs ?
4 a
4 b
4 c
12 total
Run Code Online (Sandbox Code Playgroud)
尝试巩固:
# rm b c
# ln a b
# ln a c
ll
total 12
-rw-r----- 3 john john 1 Feb 25 10:29 a
-rw-r----- 3 john john …Run Code Online (Sandbox Code Playgroud) 我们有磁盘为 sdb sdc sdd 等的 VM 机器
我们在 sdb 磁盘上创建 ext4 文件系统如下
mkfs.ext4 -j -m 0 /dev/sdb -F
mke2fs 1.42.9 (28-Dec-2013)
Discarding device blocks: done
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
262144 inodes, 1048576 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1073741824
32 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, …Run Code Online (Sandbox Code Playgroud) 是否可以理解文件系统何时在磁盘上创建(日期和时间)
我们尝试以下操作(在 sdb 磁盘上)
tune2fs -l /dev/sdb | grep time
Last mount time: Mon Aug 1 19:17:48 2022
Last write time: Mon Aug 1 19:17:48 2022
Run Code Online (Sandbox Code Playgroud)
但我们只得到最后一次挂载和最后一次写入
我们需要的是通过mkfs命令创建文件系统时
从中lsblk -f我们得到:
lsblk -f | grep sdb
sdb ext4 cc0f5da9-6bbc-42ff-8f5a-847497fd993e /data/sdb
Run Code Online (Sandbox Code Playgroud)
所以我们实际需要的是何时mkfs运行 ( date & time)
2023年10月31日,Bcachefs合并到Linux 6.7内核中:
手册:
https://manpages.ubuntu.com/manpages/impish/man8/bcachefs.8.html
https://web.archive.org/web/20230205131951/https://manpages.ubuntu.com/manpages/impish
https://manpages.ubuntu.com/manpages/impish/man8/bcachefs.8.html
https://web.archive.org/web/20230205131951/https://manpages.ubuntu.com/manpages/impish
bcachefs管理软件bcachefs-tools可通过Linux Mint 21和实际Debian版本的应用程序管理获得,并包含以下相关信息:
bcachefs migrate [options] device 将现有文件系统迁移到 bcachefs
-f fs Root of filesystem to migrate
--encrypted
Enable whole filesystem encryption (chacha20/poly1305)
--no_passphrase
Don't encrypt master encryption key
-F Force, even if metadata file already exists
Run Code Online (Sandbox Code Playgroud)
bcachefs migrate-superblock [options] device 迁移后创建默认超级块
-d device
Device to create superblock for
-o offset
Offset of existing superblock
Run Code Online (Sandbox Code Playgroud)
来源:
评论:
我现在正在寻找答案,它使用 bcachefs-tools、gparted 或类似工具。现有的答案是将数据从旧的 ext4 分区复制到新的 bcachefs 分区,这不是我想要的。
ext4 ×7
filesystems ×4
linux ×2
autocomplete ×1
bcachefs ×1
debian ×1
disk-usage ×1
fat ×1
inode ×1
linux-mint ×1
lsblk ×1
mkfs ×1
mount ×1
partition ×1
proc ×1
rhel ×1
systemd-run ×1
xfs ×1