AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题

问题[filesystems](unix)

Martin Hope
User051209
Asked: 2025-04-23 00:00:38 +0800 CST

如何根据 Linux“file -s”命令的输出确定分区的文件系统类型?

  • 7

我的问题是在我的系统上解码该命令的输出(与 USB 密钥关联的设备文件在哪里)。 下面我将展示该命令的输出,其中设备文件是一个使用文件系统格式化的分区,而设备是一个使用文件系统格式化的分区。file -s /dev/sdX/dev/sdX
file -s /dev/sdX/dev/sda1FAT32/dev/sdbNTFS

文件系统file命令的输出FAT32

对于FAT32文件系统,该命令的输出file是:

> file -s /dev/sda1
/dev/sda1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 8, Media descriptor 0xf8, sectors/track 62, heads 31, hidden sectors 2048, sectors 1966080 (volumes > 32 MB), FAT (32 bit), sectors/FAT 1920, reserved 0x1, serial number 0x4ba3ff5b, unlabeled

输出中存在的信息, FAT (32 bit), sectors/FAT 1920,足以说明文件系统类型是 FAT32,但在下一段中我将展示在文件系统的情况下该字符串FAT也出现在命令的输出中。fileNTFS

文件系统file命令的输出NTFS

对于NTFS文件系统,该命令的输出file为:

> file -s /dev/sdb 
/dev/sdb: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical drive 0x80, sectors 15654911, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 030fcd5a9fcd56a1c; contains bootstrap BOOTMGR

此输出中不仅存在信息; NTFS,,还存在字符串FAT。

问题

从命令的先前输出中file -s,如何确定两个分区的文件系统?


编辑我添加了分区和分区的命令
的输出。file -sexfatext4

file的输出exfat

> file -s /dev/sdf
/dev/sdf: DOS/MBR boot sector

在这种情况下,exfat输出中不存在。

file的输出ext4

file -s /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=38bc3d5b-381e-4f19-8640-c77d9483882b (needs journal recovery) (extents) (64bit) (large files) (huge files)

在这种情况下,存在信息ext4 filesystem data,。

在这 4 个示例(FAT32、NTFS、EXFAT、EXT4)中,该命令的输出file对于不同的文件系统类型显得非常不同,因此很难找到一个简单的规则来通过此输出来判断文件系统类型。

filesystems
  • 2 个回答
  • 394 Views
Martin Hope
User051209
Asked: 2025-04-22 21:27:11 +0800 CST

如何在挂载 USB 之前找到其分区的文件系统类型?

  • 6

我需要挂载一个使用 FAT 文件系统格式化的旧 USB 闪存盘。挂载过程必须通过udev执行 Bash 脚本的规则自动执行。

当 USB 密钥插入 USB 端口时,脚本将执行以下命令:

blkid -o udev /dev/sda1 

/dev/sda1USB 中的分区在哪里,并且使用 FAT32 文件系统格式化。上一个针对 USB 密钥的命令输出为空。

blkid对于其他 USB 密钥,相同命令 ( ) 的输出包含udev变量ID_FS_TYPE; 的可能值为ID_FS_TYPE:vfat、ntfs、exfat。

mount如果文件系统是vfat

如果变量的值ID_FS_TYPE是vfat脚本则必须执行以下mount命令:

> mount -o rw,relatime,users,gid=100,umask=000,shortname=mixed,utf8=1,flush /dev/sda1 /mount/point

如果文件系统不是,则命令vfat的选项mount可以如下:

mount -o rw,relatime /dev/sda1 /mount/point

对于特定的 USB 密钥(1 GB 且非常旧),脚本无法知道文件系统类型,vfat因此它执行第二条mount命令;结果是挂载点目录(称为/media/sda1)的权限为:

> ls -l /media/    
total 16
drwxr-xr-x 3 root root 16384 Jan  1  1970 sda1

而我需要:

# ls -l /media/    
total 16
drwxrwxrwx 3 root root 16384 Jan  1  1970 sda1

我需要这些权限,因为所有用户都必须能够在 USB 上写入,而不仅仅是专有用户(在root我的上下文中)。

通过其他命令查找文件系统类型

此链接提供了其他获取此特定 USB 闪存盘文件系统类型的技巧。因此,我尝试了其他命令:

  • lsblk -n -o FSTYPE /dev/sda1:同样在这种情况下,对于我的特定 USB 密钥,命令的输出为空
  • 该命令的输出file -sL /dev/sda1反而很长;我在下面显示了此输出:
> file -sL /dev/sda1
/dev/sda1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MSDOS5.0", sectors/cluster 32, reserved sectors 8, root entries 512, Media descriptor 0xf8, sectors/FAT 240, sectors/track 63, heads 255, hidden sectors 2048, sectors 1966080 (volumes > 32 MB), reserved 0x1, serial number 0xa4906b9d, unlabeled, FAT (16 bit)

此输出中显示了信息FAT (16 bit),但不清楚 USB 闪存盘分区的文件系统是否已格式化vfat。如果我在 NTFS 文件系统格式化的 USB 闪存盘上执行上述file -sL命令,则该命令的输出为:

> file -sL /dev/sda
/dev/sda: DOS/MBR boot sector, code offset 0x52+2, OEM-ID "NTFS    ", sectors/cluster 8, Media descriptor 0xf8, sectors/track 63, heads 255, dos < 4.0 BootSector (0x0), FAT (1Y bit by descriptor); NTFS, sectors/track 63, physical drive 0x80, sectors 15654911, $MFT start cluster 786432, $MFTMirror start cluster 2, bytes/RecordSegment 2^(-1*246), clusters/index block 1, serial number 030fcd5a9fcd56a1c; contains bootstrap BOOTMGR

在这个输出中存在字符串NTFS,但还存在字符串FAT,因此通过这个输出不容易确定文件系统是vfat还是不是ntfs。

问题

除了上述命令之外,是否还有其他命令可以在挂载分区之前提供分区的文件系统?

filesystems
  • 3 个回答
  • 143 Views
Martin Hope
Liric Ramer
Asked: 2025-04-16 21:59:49 +0800 CST

使用用户命名空间将两个用户映射到主机

  • 7

我想了解是否可以将用户命名空间中的两个用户映射到主机上的两个不同用户。

目标是在rootfs(ubuntu 基础,因为我正在尝试从头开始构建一个容器)内复制我在主机上拥有的相同权限。

例如:

  • 之下的一切/都应属于root。
  • /home/user应该属于常规的user。

为了实现这一点,我考虑在用户命名空间中使用 UID 映射,如下所示:

UID in user namespace      ---> UID on host
      1000 (admin)         ->       0 (root)
      1001 (bob)           ->    1001 (bob)

这种映射可能吗?

以下是我已经尝试过的方法:

  • 运行echo -e "1000 0 1\n1001 1001 1" > /proc/[PID]/uid_map以定义映射,但出现错误。
  • 尝试为每个用户手动修改/proc/[PID]/uid_map使用。newuidmap

但是,我从来无法映射多个用户,而且我似乎根本无法映射 UID 0(根)。

更新:

我已阅读手册页并遵循其中提到的限制,但仍然收到错误消息。

例如:

# terminal 1

unshare --user bash
echo $$ # 11591
# terminal 2 as user 'alex' (uid = 1000)

newuidmap 11591 0 0 1
# newuidmap: uid range [0-1) -> [0-1) not allowed

newuidmap 11591 1001 1001 1
# newuidmap: uid range [1001-1002) -> [1001-1002) not allowed

即使使用 运行,这些命令也会失败sudo。

我也尝试映射到我声明的 subuid,但它仍然不起作用:

cat /etc/subuid

alex:100000:65536
root:200000:65536
self:300000:65536

cat /etc/subgid

alex:100000:65536
root:200000:65536
self:300000:65536
filesystems
  • 1 个回答
  • 67 Views
Martin Hope
User051209
Asked: 2025-03-25 01:50:41 +0800 CST

在我的 yocto 发行版中,USB 密钥的 ntfs 文件系统是以只读方式安装的吗?

  • 6

为了能够挂载使用文件系统格式化的 USB 密钥,ntfs我创建了以下fragment.cfg文件:

CONFIG_NTFS_FS=m
# CONFIG_NTFS_DEBUG is not set
CONFIG_NTFS_RW=y

我已经使用以下命令编译了内核:

bitbake -C compile virtual/kernel

通过对内核配置进行修改,我的发行版能够ntfs通过以下命令执行 USB 的挂载:

> mount /dev/sda /media/sda

其中/dev/sda是与 USB 密钥关联的设备,/media/sda是挂载点。

文件系统已安装但为只读。以下命令显示此信息:

# mount | grep media
/dev/sda on /media/sda type ntfs (ro,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1,errors=continue,mft_zone_multiplier=1)

在我已经设置的片段文件中CONFIG_NTFS_RW=y,为什么ntfsUSB 密钥的文件系统是以只读方式安装的?


编辑

如果我执行该命令,dmesg我会收到以下消息:

> dmesg
...
(device sda): load_system_files(): Volume is dirty.  Mounting read-only.  Run chkdsk and mount in Windows.

我已遵循上一条消息中写的信息:

  • 我已将 USB 插入 Windows 系统
  • Windows 系统已对 USB 执行了扫描修复

此后,我在 Linux 系统上正确执行了 USB 的挂载 R/W:

> mount -t ntfs /dev/sda /media/sda
> mount | grep media
/dev/sda on /media/sda type ntfs (rw,relatime,uid=0,gid=0,fmask=0177,dmask=077,nls=iso8859-1,errors=continue,mft_zone_multiplier=1)

此时,如果我尝试在 USB 上写入,我会收到以下错误:

> touch /media/sda/write_ntfs.txt
touch: cannot touch '/media/sda/write_ntfs.txt': Permission denied

如果我尝试更改 USB 上文件的权限,也会发生同样的情况:

> chmod 777 /media/sda/filename.csv
chmod: changing permissions of '/media/sda/filename.csv': Operation not supported

因此,尽管命令输出了mount,但 USB 的挂载似乎仍然是只读的!

filesystems
  • 1 个回答
  • 40 Views
Martin Hope
peterh
Asked: 2025-02-18 16:14:01 +0800 CST

最小 btrfs 扇区大小是多少?

  • 5

我正在考虑使用 Btrfs 来存储包含许多小文件的数据卷。文档中关于最小块大小的说明不太清楚。

看来,他们和我们处在截然不同的现实边缘。他们的想法是增加块大小,而我的想法是减少块大小。他们想浪费磁盘空间,而我想节省空间。我还想减少 SSD 卷上不必要的丢弃重写操作。

他们似乎走得太远了,他们的文档实际上并不清楚最小的 btrfs 集群大小。

它是什么?4k?16k?64k?

例如,我可以有 512 字节的块吗?

filesystems
  • 1 个回答
  • 72 Views
Martin Hope
gcb
Asked: 2025-02-07 00:50:17 +0800 CST

我应该在 LUKS 中使用物理还是逻辑扇区大小?

  • 6

我有一个外部硬盘 (不是固态硬盘),它报告:

Sector Sizes:     512 bytes logical, 4096 bytes physical

我应该使用 --sector-size 512还是 --sector-size 4096使用cryptosetup LuksFormat?使用默认参数(不确定它是否会尝试自动检测或始终使用 512)最终得到 512。

如果重要的话,设置将是[disk]->[gpt]->[physical partition]->[LUKSv2]->[btrfs]


继续使用这两种方式来收集基准:

512

# sysbench fileio prepare
2147483648 bytes written in 34.28 seconds (59.75 MiB/sec).

# sysbench fileio --file-test-mode=rndrw run
Extra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      14.42
    writes/s:                     9.62
    fsyncs/s:                     31.25

Throughput:
    read, MiB/s:                  0.23
    written, MiB/s:               0.15

General statistics:
    total time:                          12.4778s
    total number of events:              562

Latency (ms):
         min:                                    0.00
         avg:                                   17.84
         max:                                  365.73
         95th percentile:                       84.47
         sum:                                10024.98

Threads fairness:
    events (avg/stddev):           562.0000/0.00
    execution time (avg/stddev):   10.0250/0.00


# sysbench fileio --file-test-mode=seqrewr run
Extra file open flags: (none)
128 files, 16MiB each
2GiB total file size
Block size 16KiB
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing sequential rewrite test
Initializing worker threads...

Threads started!


File operations:
    reads/s:                      0.00
    writes/s:                     815.93
    fsyncs/s:                     1045.19

Throughput:
    read, MiB/s:                  0.00
    written, MiB/s:               12.75

General statistics:
    total time:                          10.0488s
    total number of events:              18576

Latency (ms):
         min:                                    0.00
         avg:                                    0.54
         max:                                  433.66
         95th percentile:                        0.02
         sum:                                 9996.57

Threads fairness:
    events (avg/stddev):           18576.0000/0.00
    execution time (avg/stddev):   9.9966/0.00

4096年

# sysbench fileio prepare
2147483648 bytes written in 28.85 seconds (70.99 MiB/sec).


# sysbench --test=fileio --file-test-mode=rndrw run
File operations:
    reads/s:                      26.17
    writes/s:                     17.45
    fsyncs/s:                     58.35

Throughput:
    read, MiB/s:                  0.41
    written, MiB/s:               0.27

General statistics:
    total time:                          11.4636s
    total number of events:              1041

Latency (ms):
         min:                                    0.00
         avg:                                    9.63
         max:                                  370.49
         95th percentile:                       44.98
         sum:                                10021.97

Threads fairness:
    events (avg/stddev):           1041.0000/0.00
    execution time (avg/stddev):   10.0220/0.00



# sysbench fileio --file-test-mode=seqrewr run
File operations:
    reads/s:                      0.00
    writes/s:                     1229.02
    fsyncs/s:                     1574.44

Throughput:
    read, MiB/s:                  0.00
    written, MiB/s:               19.20

General statistics:
    total time:                          10.0071s
    total number of events:              27929

Latency (ms):
         min:                                    0.00
         avg:                                    0.36
         max:                                  471.49
         95th percentile:                        0.02
         sum:                                 9997.75

Threads fairness:
    events (avg/stddev):           27929.0000/0.00
    execution time (avg/stddev):   9.9978/0.00

对于人工小文件,4K 的读取速度似乎快两倍,写入速度快 0.25 倍。


另一次编辑。进行了同样的测试,但复制了 110G 的文件包,大小从 2.5Mb(95%tile)到 300Mb 不等。

512 和 4096 格式化驱动器均耗时 20 分 30 秒 +-4 秒

filesystems
  • 1 个回答
  • 41 Views
Martin Hope
Harimbola Santatra
Asked: 2025-01-11 21:33:07 +0800 CST

Linux 有标准输出的缓存吗?

  • 10

我知道最近访问的文件会被缓存到 RAM 中,但是是否有用于频繁执行的命令的缓存?

例如,如果我运行cat file.txt多次,file.txt则会在第一个命令后缓存。

  1. 但是如果我运行ps aux多次,第一个命令的输出会被缓存在某处吗?
  2. 每个应用程序是否都有自己的常用命令缓存;例如git log?

阅读完这个相关问题后,我认为正确的术语是memoization。

filesystems
  • 3 个回答
  • 1378 Views
Martin Hope
Pietro Battiston
Asked: 2025-01-04 07:23:18 +0800 CST

我实际上该如何修复严重损坏(但硬件正常)的 ext4 系统?

  • 7

在创建安装 USB 磁盘时,我犯了一个小错误,指示了错误的设备,最终覆盖了 230 GB 磁盘的初始几百兆字节。

数据不是特别重要,但我仍然想恢复我能恢复的数据。第一个明显的尝试是,photorec它确实找到了一些东西。但后来,我希望我可以“修复”文件系统的剩余部分(毕竟,我覆盖了不到 0.5%)。

因此,我尝试使用多种参数组合运行e2fsck,包括使用备份超级块(类似于相关问题的答案中所建议的方式),最终在“lost+found”中出现了一堆文件夹 - 还算公平。问题是其中一些文件夹仍然会出现错误,例如

ls: cannot access 'lost+found/#26128': Structure needs cleaning

...但如果我现在再次运行e2fsck -f(如其他答案所建议的那样),我不会发现任何奇怪的事情

e2fsck 1.47.0 (5-Feb-2023)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
EData: 191504/15269888 files (0.1% non-contiguous), 48227460/61049344 blocks

... 顺便说一句,这只需要几秒钟,所以很明显它实际上并没有检查磁盘的所有内容。我尝试检查其他选项,例如尝试-E discard,但没有任何变化:检查仍然非常快,但里面的一些文件夹lost+found仍然出现相同的错误。

我该如何修复那些显示“结构需要清理”的文件夹错误?

请注意,从硬件角度来看,该设备运行完美。

filesystems
  • 1 个回答
  • 38 Views
Martin Hope
Enlico
Asked: 2025-01-04 03:53:05 +0800 CST

将 8GB 文件复制到 30GB Apple 设备(无标签的 USB 棒)时出现“文件太大”

  • 5

我的磁盘上有这个文件:

$ ls -lh /path/to/some.mkv
-rwxr-xr-x 1 enrico enrico 7.4G Dec 17 18:54 /path/to/some.mkv

所以它小于 8 GB,但是当我尝试将它复制到 30GiB 闪存驱动器上时,出现此错误:

cp: error writing '/path/to/some.mkv': File too large

这是驱动器:

$ sudo fdisk -l | tail -n 16

Disk /dev/sdc: 29.3 GiB, 31457280000 bytes, 61440000 sectors
Disk model: USB DISK        
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: dos
Disk identifier: 0x6f20736b

Device     Boot      Start        End    Sectors   Size Id Type
/dev/sdc1        778135908 1919645538 1141509631 544.3G 72 unknown
/dev/sdc2        168689522 2104717761 1936028240 923.2G 65 Novell Netware 386
/dev/sdc3       1869881465 3805909656 1936028192 923.2G 79 unknown
/dev/sdc4       2885681152 2885736650      55499  27.1M  d unknown

Partition table entries are not in disk order.
$ sudo mount /dev/sdc /mnt/foo
$ cd /mnt/foo
$ df . -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sdc         30G   16K   30G   1% /mnt/foo
filesystems
  • 2 个回答
  • 89 Views
Martin Hope
blockchain200
Asked: 2024-12-14 17:45:34 +0800 CST

/mnt 有什么用途,它与 /media 有何不同?[重复]

  • 4
这个问题已经有答案了:
/mnt 和 /media 之间有什么区别? (1 个回答)
昨天休息。

我是 Linux 新手。

正在阅读有关 Linux 文件系统的文章,偶然发现了目录/mnt和/media。据我所知,它们都用于挂载,我听说/media是“新”的,它是所有热插拔设备(例如 USB 棒)的存放位置。所以,我决定尝试一下...

我插入我的 USB 棒然后执行ls /media,发现 Linux 已经创建了一个以我的用户名命名的目录!真贴心。所以我执行ls /media/foo(以 foo 为我的用户名)并在那里找到了我的 USB 棒的名称。。'SanDisk 12.8.0 amd64 n'不知道那是什么意思。

出于好奇,我决定去尝试一下ls /mnt,但却一无所获!

那么...它/mnt又有什么用途呢?

filesystems
  • 1 个回答
  • 52 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve