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文件
联系客服