Bueno recien tuve la necesidad de cambiar mis bases de datos de ubicacion fisica ya que la partición donde se encontraba se quedo corta en espacio y no dejaba iniciar el servicio.
Bueno busque mucho y no encontre algo claro, por tanto a partir de la experiencia les dejo mis pasos que segui para lograrlo.
Sistema operativo: Debian GNU/Linux
Postgres 8.1
1.Detener el servicio postgres con el comando
/etc/init.d/postgresql-8.1 stop
2.nos logueamos como postgres con el comando su - postgres y luego se debe copiar todo el directorio postgres ubicado en:
/var/lib a su nueva ubicacion con el comando cp -Rf /var/lib/postgresql/ /nuevaubicacion/ . Este paso les puede llevar bastante tiempo dependiendo del tamaño de sus bases.
3.una vez termine el paso anterior, modificar el archivo postgres.conf ubicado en /etc/postgresql/8.1/main/ alli ubicamos la línea data_directory y la descomentamos, reemplazamos data_directory='ConfigDir' por algo asi:
data_directory = '/nuevaubicacion/postgresql/8.1/main/', en este caso siempre es bueno hacer una copia del archivo postgres.conf por si debe restituirse.
4.Debemos cambiar el vinculo existente para pgdata para ello vamos a/etc/postgresql/8.1/main/ y renombramos el existente con el comando mv pgdata pgdataold, luego procedemos a crear el nuevo vinculo con el comando ln -s /nuevaubicacion/postgresql/8.1/main/ pgdata
5.por último reiniciamos el servicio de postgres con el comando /etc/init.d/postgresql-8.1 start.
y ya esta:
es posible que al iniciar les de errores, en cuyo caso debe revisar que dentro de la nueva ubicacion todos los directorios de postgresql/8.1/main/ pertenezcan al usuario y grupo postgres, si estan con root bastará con cambiar a cada directorio el dueño con el comando chown postgres:postgres /directorio.
Espero le sirva de ayuda ya que en mi caso funciono perfecto de esta manera.