blockdev命令
blockdev命令可以获取linux下块设备的属性值,以及设置一些块设备的属性值。

命令参数

block -V 输出程序的版本号
blockdev --report [devices] 列举出devices设备信息。
如果没有devices,则输出所有操作系统发现的块设备。
blockdev [-v|-q] commands devices
-v 命令设置后,后面的命令行参数执行,会输出相应的提示信息。
-q 命令设置后,后面的命令行参数执行,不会输出相应的提示信息。默认也是不会输出。

可行的命令
--getsz                   获取512字节的扇区的个数
--setro                   设置只读
--setrw                   设置读写
--getro                   获得只读
--getdiscardzeroes        get discard zeroes support status
--getss                   获得逻辑块(扇区)大小
--getpbsz                 获得物理块(扇区)大小
--getiomin                获得最小 I/O 大小
--getioopt                获得最优 I/O 大小
--getalignoff             获得字节中的对齐偏移量
--getmaxsect              获得每次请求的最大扇区数
--getbsz                  获得块大小
--setbsz <bytes>          设置块大小
--getsize                 获得32位扇区个数(废弃, 使用 --getsz)
--getsize64               获得字节大小
--setra <sectors>         设置 readahead
--getra                   获取 readahead
--setfra <sectors>        设置 文件系统 readahead
--getfra                  获取 文件系统 readahead
--flushbufs               刷新缓存
--rereadpt                重新读取分区表

命令截图

命令实现

linux下可以通过操作文件的方式来操作块设备。
打开块设备后可以通过ioctl系统调用获取块设备的信息。


int ioctl(int fd,int request,unsigned long arg);

参数:
fd          文件描述符
request     传入的命令
arg         传入的参数,类型可变,长整形或者指针
以下是命令参数对应的实现

    左边是传入的命令
    右边是传入的参数

可行的命令

--getsz                   获取512字节的扇区的个数
    BLKGETSIZE64        unsigned long long*

--setro                   设置只读
    BLKROSET            int*

--setrw                   设置读写
    BLKROSET            int*

--getro                   获得只读
    BLKROGET            int *

--getdiscardzeroes        get discard zeroes support status
    BLKDISCARDZEROES    unsigned int *

--getss                   获得逻辑块(扇区)大小
    BLKSSZGET           int *

--getpbsz                 获得物理块(扇区)大小
    BLKPBSZGET          unsigned int*

--getiomin                获得最小 I/O 大小
    BLKIOMIN            unsigned int*

--getioopt                获得最优 I/O 大小
    BLKIOOPT            unsigned int*

--getalignoff             获得字节中的对齐偏移量
    BLKALIGNOFF         int*

--getmaxsect              获得每次请求的最大扇区数
    BLKSECTGET          unsigned short*

--getbsz                  获得块大小
    BLKBSZGET           int*

--setbsz <bytes>          设置块大小
    BLKBSZSET           int*

--getsize                 获得32位扇区个数(废弃, 使用 --getsz)
    BLKGETSIZE          unsigned long*

--getsize64               获得字节大小
    BLKGETSIZE64        unsigned long long*

--setra <sectors>         设置 readahead
    BLKRASET            int

--getra                   获取 readahead
    BLKRAGET            long*

--setfra <sectors>        设置 文件系统 readahead
    BLKFRASET           int

--getfra                  获取 文件系统 readahead
    BLKFRAGET           long*

--flushbufs               刷新缓存
    BLKFLSBUF           none

--rereadpt                重新读取分区表
    BLKRRPART           none
打印出所有操作系统已经获取的块设备可以查看/proc/partitions文件

这里写图片描述

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐