文件操作
概览
操作(command) | 功能 | 选项(options) | 备注 |
---|---|---|---|
touch | 创建文件 | 无 | — |
write | 写文件 | -o : 写偏移。-l : 操作长度。 |
从stdin中读取数据 |
read | 读取文件 | -o : 读偏移。-l : 操作长度。 |
— |
truncate | 调整文件大小 | -l : 文件大小 |
不会分配真实的物理block |
fallocate | 分配存储空间 | -o : 分配偏移。-l : 分配长度。 |
分配真实的物理块 |
map | 显示文件block索引表 | -o : 文件偏移 |
— |
touch
- 功能描述:创建文件,如果文件已存在,则创建失败。
- 命令选项:无
- 示例:
#在nvme1n1的/mydir目录中创建myfile
$sudo pfs -C disk touch /nvme1n1/mydir/myfile
write
- 功能描述:从stdin中读取数据后,写入文件,可指定写操作的起始偏移或写入长度。
- 如果未设置偏移,则从文件头部开始写。
- 如果未设置长度,则从指定偏移处写入所有读取到的数据。
- 如果两者均未设置,则从文件开头写入所有读取到的数据。
- 命令选项:
-o
:写操作的起始偏移,默认值是0,可选。-l
:写入的数据长度,未设置的话,则写入所有读取到的数据,可选。
- 示例:
#从偏移2处写入3个字节的数据(写入'012')
$sudo echo "012345" | pfs -C disk write -o 2 -l 3 /nvme1n1/mydir/myfile
read
- 功能描述:读取文件,可指定读操作的起始偏移或长度。
- 如果未设置偏移,则从文件头部开始读。
- 如果未设置长度,则从指定偏移处读到文件尾。
- 如果两者均未设置,则读取完整文件内容。
- 命令选项:
-o
:读操作的起始偏移,默认值是0,可选。-l
:读取的数据长度,未设置的话,则从偏移处读到文件尾,可选。
- 示例:
#从偏移2处读取10个字节的文件内容
$sudo pfs -C disk read -o 2 -l 10 /nvme1n1/mydir/myfile
012
truncate
- 功能描述:调整文件长度,如果文件变大,新增区域不会分配物理block。
- 命令选项:
-l
:新的文件长度。
- 示例:
# 将myfile的长度调整未100MB
$sudo pfs -C disk truncate -l 104857600 /nvme1n1/mydir/myfile
fallocate
- 功能描述:为文件分配指定长度的存储空间,可指定起始偏移。操作成功后,文件长度可能发生变更。
- 偏移+长度<=操作前文件长度:文件长度不变。
- 偏移+长度>操作前文件长度:文件长度变大。
- 命令选项:
-o
:起始偏移,默认值是0,可选。-l
:存储空间大小,必填。
- 示例:
#从偏移4处,预分配100字节的存储空间,新文件长度是104字节
$sudo pfs -C disk fallocate -o 4 -l 100 /nvme1n1/mydir/myfile
$sudo pfs -C disk stat /nvme1n1/mydir/myfile
file: /1/mydir/myfile
size: 104 blocks: 8192
device: dev-20 inode: 4103 links: 1
access: 0, Thu Jan 1 08:00:00 1970
modify: 1532953314, Mon Jul 30 20:21:54 2018
change: 1532953314, Mon Jul 30 20:21:54 2018