文件操作

概览

操作(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