Linux中的physical_block_size和logical_block_size

117 篇文章 0 订阅
93 篇文章 1 订阅
[root@rhel63single queue]# pwd
/sys/block/sdj/queue
[root@rhel63single queue]# ls -lrt | grep size
-r--r--r--. 1 root root 4096 Aug 24 21:58 physical_block_size
-r--r--r--. 1 root root 4096 Aug 24 21:58 optimal_io_size
-r--r--r--. 1 root root 4096 Aug 24 21:58 minimum_io_size
-r--r--r--. 1 root root 4096 Aug 24 21:58 max_segment_size
-r--r--r--. 1 root root 4096 Aug 24 21:58 logical_block_size
-r--r--r--. 1 root root 4096 Aug 24 21:58 hw_sector_size
[root@rhel63single queue]# lsblk -o NAME,PHY-SeC
NAME   PHY-SEC
sr0       2048
sdb        512
└─sdb1     512
sdc        512
└─sdc1     512
sda        512
├─sda1     512
├─sda2     512
└─sda3     512
sdd        512
└─sdd1     512
sde        512
└─sde1     512
sdh        512
sdg        512
└─sdg1     512
sdi        512
sdj        512
└─sdj1     512
sdf        512
└─sdf1     512
[root@rhel63single queue]# 
[root@rhel63single queue]# lsblk -o NAME,PHY-SeC,LOG-SEC
NAME   PHY-SEC LOG-SEC
sr0       2048    2048
sdb        512     512
└─sdb1     512     512
sdc        512     512
└─sdc1     512     512
sda        512     512
├─sda1     512     512
├─sda2     512     512
└─sda3     512     512
sdd        512     512
└─sdd1     512     512
sde        512     512
└─sde1     512     512
sdh        512     512
sdg        512     512
└─sdg1     512     512
sdi        512     512
sdj        512     512
└─sdj1     512     512
sdf        512     512
└─sdf1     512     512
[root@rhel63single queue]#

Linux内核可以使用以下函数来创建块设备: 1. register_blkdev:用于分配一个未使用的主设备号,并将其与相应的设备驱动程序关联。 2. blk_alloc_queue:用于为块设备分配一个请求队列。 3. blk_init_queue:用于初始化请求队列。 4. blk_queue_logical_block_size:用于设置逻辑块大小。 5. blk_queue_physical_block_size:用于设置物理块大小。 6. blk_queue_max_hw_sectors:用于设置每个请求的最大扇区数。 7. blk_queue_max_segments:用于设置请求允许的最大段数。 8. blk_queue_max_segment_size:用于设置请求允许的最大段大小。 9. blk_queue_bounce_limit:用于设置数据传输限制。 关于vfs_mknod函数的使用,它是用于在Linux内核创建一个特殊文件的函数,例如块设备或字符设备文件。vfs_mknod函数的原型如下: ``` int vfs_mknod(struct inode *dir, struct dentry *dentry, umode_t mode, dev_t dev); ``` 该函数的参数解释如下: - dir:指向父目录的inode结构体指针。 - dentry:指向新创建特殊文件的dentry结构体指针。 - mode:新创建特殊文件的权限模式。 - dev:新创建特殊文件的设备号。 使用vfs_mknod函数可以在内核态创建块设备或字符设备文件,例如: ``` dev_t dev = MKDEV(250, 0); // 创建设备号 vfs_mknod(dir, dentry, S_IFBLK | 0660, dev); // 创建块设备 ``` 注意:使用vfs_mknod函数创建特殊文件需要具有root权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值