You create bufferpool in memory; you create tablespaces on raw device(or filesystem). When DB2 reads/writes data from a tablespace, it has to come to the bufferpool. If the tablespace is on a filesystem, the OS reads data from the file to filecache(which is OS buffer for filesystem I/O) and then DB2 reads it from filecahe to DB2 bufferpool; if tablespace is raw data goes directly to the DB2 bufferspace. If you use filesystem you have to reserve a good portion (20-30%) for filecache; if you use raw devices filecache can be smaller and bufferpools bigger than in filesystem systems.