赞
踩
我们正在研究在SSD磁盘阵列上使用BtrFS,并且我被要求验证BtrFS在删除文件时确实执行TRIM操作.到目前为止,我无法验证TRIM命令是否已发送到磁盘.
我知道BtrFS不被认为是生产准备,但我们喜欢前沿,因此我正在测试它.服务器是Ubuntu 11.04服务器64位版本(mkfs.btrfs版本0.19).我已经安装了Linux 3.0.0内核,因为BtrFS changelog声明批量TRIM在Ubuntu 11.04(2.6.38)附带的内核中不可用.
>在开始之前手动TRIM磁盘:for {in {0..10};让A =“$i * 65536”; hdparm –trim-sector-ranges $A:65535 –please-destroy-my-drive / dev / sda; DONE
>验证驱动器是TRIM的:./ sectors.pl | grep |发球区 – $(日期%s)
>对驱动器进行分区:fdisk / dev / sda
>制作文件系统:mkfs.btrfs / dev / sda1
>装载:sudo mount -t btrfs -o ssd / dev / sda1 / mnt
>创建一个文件:dd if = / dev / urandom of = / mnt / testfile bs = 1k count = 50000 oflag = direct
>验证文件是否在磁盘上:./ sectors.pl |发球区 – $(日期%s)
>删除测试文件:rm / mnt / testfile
>看到测试文件是从磁盘TRIM进行的:./ sectors.pl |发球区 – $(日期%s)
>验证TRIM’d块:区分两个最近的sector- *文件
此时,预删除和删除后验证仍显示正在使用的相同磁盘块.我应该看到使用块数量的减少.删除测试文件后等待一小时(如果需要一段时间才能发出TRIM命令)仍然显示正在使用的相同块.
我也尝试使用-o ssd安装,丢弃选项,但这似乎没有任何帮助.
从上面的fdisk创建的分区(我保持分区小,以便验证更快):
root@ubuntu:~# fdisk -l -u /dev/sda
Disk /dev/sda: 512.1 GB,512110190592 bytes
255 heads,63 sectors/track,62260 cylinders,total 1000215216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x6bb7542b
Device Boot Start End Blocks Id System
/dev/sda1 63 546209 273073+ 83 Linux
我的sector.pl脚本(我知道这是低效的,但它完成了工作):
#!/usr/bin/perl -w
use strict;
my $device = '/dev/sda';
my $start = 0;
my $limit = 655360;
foreach ($start..$limit) {
printf "\n%6d ",$_ if !($_ % 50);
my @sector = `/sbin/hdparm --read-sector $_ $device`;
my $status = '.';
foreach my $line (@sector) {
chomp $line;
next if $line eq '';
next if $line =~ /$device/;
next if $line =~ /^reading sector/;
if ($line !~ /0000 0000 0000 0000 0000 0000 0000 0000/) {
$status = '+';
}
}
print $status;
}
print "\n";
我的测试方法有缺陷吗?我在这里错过了什么吗?
谢谢您的帮助.
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。