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 / 问题 / 512945
Accepted
Bret Joseph
Bret Joseph
Asked: 2019-04-18 00:32:27 +0800 CST2019-04-18 00:32:27 +0800 CST 2019-04-18 00:32:27 +0800 CST

/proc/partitions 和 /sys/dev/block/<block>/size 中的值是什么单位?

  • 772

我有一个来自 android 设备的示例 emmc 块信息

从/proc/partitions

major minor  #blocks  name
 179    1    5120    mmcblk0p1

使用我的小智慧我假设/proc/partitions使用块,因为它说分区 1 有 5120 个块

从/sys/dev/block/179:0/mmcblk0p1/size

10240

/sys/…/size 中的分区值似乎是 /proc/partitions 值的两倍。因此,为什么它们不同,因此它们中的单位是什么?

partition filesystems
  • 1 1 个回答
  • 2029 Views

1 个回答

  • Voted
  1. Best Answer
    mosvy
    2019-04-18T02:13:26+08:002019-04-18T02:13:26+08:00

    /proc/partitions显示 1024 字节块的大小。

    /sys/dev/block/*/*/size显示 512 字节扇区的大小。

    两者都与设备的逻辑/物理块/扇区大小无关。


    首先,您可以查看proc(5)手册页:

    /proc/partitions

    包含每个分区的主次编号以及 1024 字节块的数量和分区名称。

    对于第二个,它当然应该记录在某个地方,但您也可以直接查看以下 Linux 源代码block/partition-generic.c:

    ssize_t part_size_show(struct device *dev,
                           struct device_attribute *attr, char *buf)
    {
            struct hd_struct *p = dev_to_part(dev);
            return sprintf(buf, "%llu\n",(unsigned long long)part_nr_sects_read(p));
    ...
    static DEVICE_ATTR(size, 0444, part_size_show, NULL);
    

    以及它与生成/proc/partitions信息的代码的关系block/genhd.c:

    static int show_partition(struct seq_file *seqf, void *v)
    {
            ...
            while ((part = disk_part_iter_next(&piter)))
                    seq_printf(seqf, "%4d  %7d %10llu %s\n",
                               MAJOR(part_devt(part)), MINOR(part_devt(part)),
                               (unsigned long long)part_nr_sects_read(part) >> 1,
                               disk_name(sgp, part->partno, buf));
            disk_part_iter_exit(&piter);
    ...
    static const struct seq_operations partitions_op = {
            ...
            .show   = show_partition
    

    两者都使用part_nr_sects_read()which/proc/partitions除以 2 (with >> 1)。

    part_nr_sects_read()检索 的nr_sects字段,该字段struct hd_struct始终位于 512 字节扇区中,与设备的扇区/块大小无关。例如,您可以查看如何drivers/block/nbd.c使用字节大小除以 512的set_capacity()函数(设置相同的字段)(使用):nr_sects>> 9

    static void nbd_size_update(struct nbd_device *nbd)
    {
            ...
            set_capacity(nbd->disk, config->bytesize >> 9);
    
    • 4

相关问题

  • 如何正确分区 SSD 以进行双启动设置

  • 并行安装多个 linux 发行版

  • fdisk 没有看到 resize2fs 缩小未挂载的分区

  • du/df 和 ls 报告不同的磁盘使用情况

  • Linux 内核开发人员如何处理数百万行代码的工作?他们是一种方法吗?[关闭]

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