1. 基本文件操作
1.1 文件创建与删除
# 创建文件
touch /mnt/mdfs/test.txt
echo "Hello MDFS" > /mnt/mdfs/hello.txt
# 创建目录
mkdir /mnt/mdfs/testdir
mkdir -p /mnt/mdfs/path/to/deep/dir
# 删除文件
rm /mnt/mdfs/test.txt
# 删除目录
rmdir /mnt/mdfs/testdir
rm -rf /mnt/mdfs/path
1.2 文件复制与移动
# 复制文件
cp /mnt/mdfs/hello.txt /mnt/mdfs/hello_copy.txt
cp -r /mnt/mdfs/source_dir /mnt/mdfs/dest_dir
# 移动文件
mv /mnt/mdfs/hello.txt /mnt/mdfs/newname.txt
mv /mnt/mdfs/file.txt /mnt/mdfs/subdir/
1.3 文件权限管理
# 修改文件权限
chmod 755 /mnt/mdfs/script.sh
chmod u+x /mnt/mdfs/executable
# 修改文件所有者
chown user:group /mnt/mdfs/file.txt
chown -R user:group /mnt/mdfs/directory/
2. 高级文件操作
2.1 文件属性查看
# 查看文件详细信息
ls -la /mnt/mdfs/
stat /mnt/mdfs/file.txt
# 查看文件系统使用情况
df -h /mnt/mdfs
du -sh /mnt/mdfs/*
2.2 文件搜索
# 按名称搜索
find /mnt/mdfs -name "*.txt"
find /mnt/mdfs -type f -name "test*"
# 按大小搜索
find /mnt/mdfs -size +100M
find /mnt/mdfs -size -1K
# 按时间搜索
find /mnt/mdfs -mtime -7 # 7天内修改的文件
find /mnt/mdfs -atime +30 # 30天前访问的文件
2.3 文件内容操作
# 查看文件内容
cat /mnt/mdfs/file.txt
less /mnt/mdfs/large_file.txt
head -n 10 /mnt/mdfs/file.txt
tail -f /mnt/mdfs/log.txt
# 文件内容搜索
grep "pattern" /mnt/mdfs/file.txt
grep -r "search_term" /mnt/mdfs/directory/
3. MDFS专用命令
3.1 文件布局查看
# 查看文件在集群中的分布
mdfs-client getfattr -n mdfs.layout /mnt/mdfs/file.txt
# 查看文件的对象映射
mdfs-client ls -l /mnt/mdfs/file.txt
3.2 目录统计信息
# 查看目录统计
mdfs-client df /mnt/mdfs
mdfs-client quota get /mnt/mdfs/user_dir
# 查看目录布局
mdfs-client getfattr -n mdfs.dir.layout /mnt/mdfs/directory
3.3 文件系统快照
# 创建快照
mdfs-client snap create /mnt/mdfs/.snap/snapshot_name
# 列出快照
mdfs-client snap ls /mnt/mdfs
# 删除快照
mdfs-client snap rm /mnt/mdfs/.snap/snapshot_name
4. 性能优化操作
4.1 文件预分配
# 预分配文件空间
fallocate -l 1G /mnt/mdfs/large_file.dat
# 使用dd创建大文件
dd if=/dev/zero of=/mnt/mdfs/test_file bs=1M count=1024
4.2 并行操作
# 并行复制
rsync -av --progress source/ /mnt/mdfs/dest/
# 并行压缩
tar -czf - source_dir | pv | tar -xzf - -C /mnt/mdfs/
4.3 缓存管理
# 清理页面缓存
echo 3 > /proc/sys/vm/drop_caches
# 同步文件系统
sync
5. 监控与诊断
5.1 I/O监控
# 监控文件系统I/O
iostat -x 1
iotop -o
# 监控特定进程I/O
pidstat -d 1
5.2 性能测试
# 顺序读写测试
dd if=/dev/zero of=/mnt/mdfs/test bs=1M count=1024 oflag=direct
dd if=/mnt/mdfs/test of=/dev/null bs=1M iflag=direct
# 随机读写测试
fio --name=random-rw --ioengine=libaio --iodepth=4 \
--rw=randrw --bs=4k --direct=1 --size=1G \
--filename=/mnt/mdfs/fio_test
5.3 文件系统检查
# 检查文件系统一致性
mdfs-client fsck /mnt/mdfs
# 检查特定文件
mdfs-client verify /mnt/mdfs/important_file.txt
6. 批量操作
6.1 批量文件处理
# 批量重命名
for file in /mnt/mdfs/*.txt; do
mv "$file" "${file%.txt}.bak"
done
# 批量权限设置
find /mnt/mdfs -type f -name "*.sh" -exec chmod +x {} \;
6.2 脚本自动化
#!/bin/bash
# 自动备份脚本
BACKUP_DIR="/mnt/mdfs/backup/$(date +%Y%m%d)"
mkdir -p "$BACKUP_DIR"
rsync -av /important/data/ "$BACKUP_DIR/"
7. 故障处理
7.1 文件恢复
# 从快照恢复文件
cp /mnt/mdfs/.snap/backup_20240101/file.txt /mnt/mdfs/
# 检查文件完整性
md5sum /mnt/mdfs/file.txt
sha256sum /mnt/mdfs/important.dat
7.2 空间清理
# 清理临时文件
find /mnt/mdfs -name "*.tmp" -mtime +7 -delete
find /mnt/mdfs -name "core.*" -delete
# 清理空目录
find /mnt/mdfs -type d -empty -delete
小结
本章介绍了MDFS文件系统的各种操作方法,包括基本文件操作、高级功能使用、性能优化和故障处理。掌握这些操作对于高效使用MDFS至关重要。
下一章将深入介绍MDFS的元数据管理机制。