linux命令(二) blockdev命令

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文件

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值