3. ¿Que particións necesito?
3.1 ¿Cantas particións necesito?
Moi ben,
así que ¿cantas particións necesitas? Ben, algúns sistemas
operativos non cren en arrancar desde particións lóxicas por motivos que van
máis aló do alcande de calquera mente sana. Así que ti probablemente quererás
reservar as particións primarias como particións de arranque para MS-DOS, OS/2
e Linux ou calquera que esteas usando. Lembra que se necesita unha partición
primaria como partición extendida que fai de contedora para o resto do teu
disco con particións lóxicas.
Arrancar SOs é unha cousa real que implica a
BIOS e as limitacións de 1024 cilindros, así que seguramente quererás poñer
todas as túas particións de arranque nos primeiros 1024 cilindros do teu disco
duro, para evitar problemas. De novo, le o Large-Disks mini-HOWTO para máis
detalles.
Para instalar Linux necesitarás polo menos unha partición. Se
o kernel se carga desde esta partición (por exemplo por LILO), esta
partición debe poder lela a BIOS. Se estás usando outros medios
para cargar o kernel (por exemplo un disco de inicio ou o cargador de Linux
LOADLIN.EXE baseado en MS-DOS) a partición pode estar en calquera
sitio. Neste caso esta partición será do tipo 0x83 "Linux
native".
O teu sistema necesitará algún espacio
de intercambio (swap). A non ser que intercambies con ficheiros necesitarás
unha partición de intercambio adicada. Como a esta partición só accede o
kernel de Linux e este non adoece das deficiencias das BIOS do PC, a partición
de intercambio pode estar en calquera lado. Recomendo usar unha partición
lóxica para ela (/dev/?d?5 e para arriba). As particións de intercambio de
Linux adicadas son do tipo 0x82 "Linux swap".
Estes son requisitos mínimos. Pode ser útil crear máis particións para
Linux. Sigue lendo.
3.2 ¿Como debe ser o meu espacio de intercambio de grande?
Se decides usar unha partición de intercambio (swap) adicada, que polo xeral é
unha Boa Idea [tm] (NdT: esta é unha coña do autor, "Good Idea [tm]", Boa Idea
[marca rexistrada]), sigue estes principios xerais para estimar o seu tamaño:
-
En Linux RAM e espacio de intercambio súmanse (Isto non é certo para todos os
UNIX). Por exemplo, se tes 8 MB de RAM e 12 MB de espacio de intercambio, tes
un total duns 20 MB de memoria virtual.
-
Cando asignes tamaño ao espacio de intercambio, deberás ter polo menos 16 MB
de memoria virtual en total; así que para 4 MB de RAM pensa en polo menos 12
MB de intercambio, para 8 MB de RAM pensa en polo menos 8 MB.
-
En Linux, unha única partición de intercambio non pode ser máis grande de 128
MB. Isto é, a partición pode ser máis grande de 128 MB, pero o espacio
sobrante nunca será usado. Se queres máis de 128 MB, tes que crear máis dunha
partición de intercambio.
-
Cando asignes tamaño ao espacio de intercambio, ten en conta que demasiado
espacio de intercambio non será útil de todo. Cada proceso ten un "entorno de
traballo" ("working set"). Este é un conxunto de páxinas en memoria ás que se
referirá o procesador nun futuro moi próximo. Linux tenta predicir estes
accesos á memoria (asumindo que páxinas usadas recentemente voltarán a ser
usadas moi pronto) e mantén esas páxinas na RAM se é posible. Se o programa
ten unha boa localidade de referencia ("locality of reference") esta
suposición será certa e o algoritmo de predicción funcionará. Só se pode
manter o entorno de traballo na memoria principal cando hai a suficiente
memoria principal. Se tes demasiados procesos traballando nunha máquina,
forzas ao kernel a poñer as páxinas ás que fará referencia moi pronto no disco
(forzando a saída de páxina dunha páxina doutro entorno de traballo e logo
unha entrada de páxina da páxina á que fai referencia). Normalmente isto acaba
nun incremento moi forte na actividade de paxinamento e nunha substancial
caída do rendemento. Neste estado dise que unha máquina
está "¿emborcallándose?" ("thrashing") e non
"¿lixándose?" ("trashing") (NdT: non traduzo unhas
aclaracións feitas para lectores alemáns). Nunha máquina
"emborcallándose" esencialmente os procesos estan executándose
desde o disco e non desde a RAM. Espera do rendemento que baixe
aproximadamente a razón entre a velocidade de acceso á memoria e
a velocidade de acceso ao disco. Unha medida a ollo moi vella, da era do PDP e
do Vax era que o tamaño do entorno de traballo dun programa é de
arredor dun 25% do seu tamaño virtual. Deste xeito é
probablemente unha tontería proporcionar máis espacio de
intercambio ca tres veces a RAM. Pero ten en conta que isto só é
unha medida a ollo. É facilmente posible crear escenarios onde onde os programas teñan uns entornos
de traballo extremadamente grandes ou pequenos. Por exemplo, un programa de
simulación cun grande conxunto de datos aos que se accede dun xeito moi
aleatorio terán unha localidade de referencia no seu segmento de datos casi
imperceptible, así que o seu entorno de traballo será bastante grande. Por
outra banda, un xv con varios JPEGs abertos simultaneamente, todos
iconificados agás un, terá un segmento de datos moi grande; pero todas as
tranformacións de imaxes se fan nunha única imaxe, a maioría da memoria
ocupada polo xv nunca se toca. Isto mesmo tamén é certo para un editor con
moitas fiestras abertas e onde só se está a editar unha á vez. Estes programas
teñen -se están deseñados apropiadamente- unha localidade
de referencia moi precisa e grandes partes deles poden manterse intercambiadas no disco (swapped
out) sen demasiado impacto no rendemento. Un sospeita que o 25% dos números da
época (NdT: o autor refírese ás estatísticas que escribiu por aquí arriba) da
liña de comandos non se cumpre para os modernos programas GUI (Interfaz
Gráfica de Usuario) editando múltiples documentos, pero non teño noticia de
novos papeis tentando verificar estes números.
Así que para unha configuración con 16 MB de RAM, non se necesita espacio de
intercambio nunha configuración mínima, e máis de 48 MB é probablemente un
desperdicio. A cantidade exacta de memoria que necesitas depende da mistura de
aplicacións na máquina (¿canto calculas ti?).
3.3 ¿Onde debo poñer o meu espacio de intercambio?
-
A mecánica é lenta, a electrónica é rápida. Os discos duros modernos teñen
moitas cabezas. Moverse entre cabezas da mesma pista é rápido, porque é pura
electrónica. Moverse entre pistas é lento, porque implica o problema de
moverse no mundo real. Así que se tes un disco con moitas cabezas e outro con
menos e son os dous idénticos nos outros parámetros, o disco con máis cabezas
será máis rápido. Sen embargo, dividir o espacio de intercambio e poñelo nos
dous discos será incluso máis rápido.
-
Os discos vellos teñen o mesmo número de sectores en todas as pistas. Con
estes discos será máis rápido poñer o espacio de intercambio no medio do
disco, supoñendo que a cabeza do disco se mova dunha pista aleatoria cara a
área de intercambio.
-
Os discos máis novos usan ZBR (zone bit recording, zona de grabación de
bit). Estes teñen máis sectores nas pistas exteriores. Cun número constante de
rpms (revolucións por minuto), isto produce un rendemento moito máis grande
nas pistas exteriores que nas interiores. Pon o espacio de intercambio nas
pistas máis rápidas.
-
Por suposto, a cabeza do disco non se moverá aleatoriamente. Se tes o espacio
de intercambio no medio dun disco entre unha partición "home" constantemente
ocupada e unha partición de ficheiros case sen usar, farás mellor poñendo a
área de intercambio no medio da partición "home" para que os movementos da
cabeza sexa aínda máis pequeno. Sen embargo, sería aínda mellor que puxeses a
área de intercambio en calquera outro disco sen usar.
Resumo: Pon o a partición de intercambio nun disco rápido con moitas
cabezas que non está ocupado facendo outras cousas. Se tes máis dun disco:
divide o espacio de intercambio e dispérsao por todos os teus discos ou
incluso deferentes controladores. Incluso mellor: Compra máis RAM.
3.4 Algunhas afirmacións sobre sistemas de ficheiros
e fragmentación
O sistema operativo administra o espacio no disco en unidades de bloque e
fragmentos de bloque. En ext2, fragmentos e bloque teñen o mesmo tamaño, así
que podemos limitar a discusión a bloques.
Os ficheiros son de calquera tamaño, non rematan nos límites de
bloque. Así, con cada ficheiro, desperdíciase unha parte do seu último
bloque. Supoñendo que os tamaños dos ficheiros son aleatorios, desperdíciase
aproximadamente medio bloque por cada ficheiro no disco. Tanebaum chama a isto
"fragmentación interna" no seu libro "Sistemas Operativos".
Podes saber o número de ficheiros que hai no teu disco polo número de
inodos aloxados no disco. No meu
# df -i
Filesystem Inodes IUsed IFree %IUsed Mounted on
/dev/hda3 64256 12234 52022 19% /
/dev/hda5 96000 43058 52942 45% /var
hai uns 12000 ficheiros en / e outros 44000 en /var. Cun
tamaño de bloque de 1 KB, pérdense sobre 6 + 22 = 28 MB de espacio no disco nos
bloques da cola dos ficheiros. Se escollín un tamaño de bloque de 4 KB, perdín
4 veces ese espacio.
Sen embargo a transferencia de datos é máis rápida para grandes cachos
continuos de datos. Iso é o motivo polo que ext2 tenta reservar espacio en
unidades de 8 bloques contiguos para ficheiros crecentes. A reserva non usada
libérase cando se pecha o ficheiro, así que non se perde ningún espacio.
O emprazamento dun ficheiro en bloques non contiguos é malo para o
rendemento, porque polo xeral accédese ao ficheiro dun xeito secuencial. Iso
forza ao sisteta operativo a repartir o acceso ao disco e o disco para mover a
cabeza. Isto chámase "fragmentación externa" ou simplemente "fragmentación" e
é un problema común nos sistemas de ficheiros DOS.
ext2 sigue varias estratexias para evitar a fragmentación
externa. Normalmente a fragmentación non é un grande problema en ext2, incluso
en particións usadas excesivamente como un contedor (spool) de novas de
USENET. Se ben hai unha ferramenta para defragmentar sistemas de ficheiros
ext2, ninguén a usa e incluso non está ao día con respecto á versión actual de
ext2. Podes usalo, pero faino baixo a túa propia responsabilidade.
O sistema de ficheiros de MS-DOS é ben coñecido pola súa patolóxica
administración do espacio no disco. Conxuntamente co abismal caché de buffer
que usa MS-DOS os efectos da fragmentación de ficheiros son moi evidentes no
rendemento. Os usuarios de DOS están afeitos a defragmentar os discos cada
poucas semanas e algúns xa adquiririon algunhas crenzas rituais con respecto á
defragmentación. Ningún deses hábitos debe trasladarse a Linux e ext2. Os
sistemas de ficheiros nativos de Linux non necesitan defragmentación se se lles
dá un uso normal e isto inclúe en calquera condición con polo menos o 5% de
espacio libre no disco.
Tamén é ben coñecido que o sistema de ficheiros de MS-DOS perde grandes
cantidades de espacio no disco debido á fragmentación interna. Para particións
máis grandes ca 256 MB, os tamaños de bloque medran tanto que non son útiles
(isto correxiuse ata certo punto con FAT32).
ext2 non te forza a escoller grandes bloques para grandes sistemas de
ficheiros, agás para os moi grandes do rango de 0.5 TB (iso é TeraBytes, con 1
TB = 1024 GB) para arriba, onde bloques de tamaño pequeno son pouco
eficientes. Así que ao contrario que no DOS non hai necesidade de repartir
grandes discos en múltiples particións para manter un tamaño de bloque
baixo. Usa o tamaño de bloque por defecto de 1 KB se é posible. Quizais
queiras experimentar con tamaños de 2 KB para algunhas particións, pero conta
con atoparte con algúns fallos rara vez experimentados: a maioría da xente usa
o tamaño por defecto.
3.5 Tempos de vida de ficheiros e ciclos de copias de seguridade como criterio para facer particións
Con ext2, as decisións de facer particións deben de determinarse por
consideracións de copias de seguridade e para evitar a fragmentación externa
por motivos de diferentes tempos de vida dos ficheiros.
Os ficheiros teñen tempos de vida. Despois de crear un ficheiro,
permanecerá algún tempo no sistema anter de ser eliminado. Os
tempos de vida dos ficheiros varían moito en todo o sistema, e en parte
dependen do nome de ruta (pathname) do ficheiro. Por exemplo os ficheiros en
/bin, /sbin, /usr/sbin, /usr/bin e
directorios similares presumen ter unha longa vida: moitos meses e incluso
máis. Os ficheiros de /home terán unha vida media:
varias semanas ou así. O ficheiro de /var normalmente
terá unha vida curta: casi ningún de /var/spool/news
permanecerá máis duns poucos días, e os de
/var/spool/lpd minutos ou menos.
Para copias de seguridade é útil que o tamaño da copia diaria caiba nun
único medio. Unha copia diaria pode ser completa ou incremental.
Podes decidir manter o tamaño da partición o suficientemente pequeno como
para que caiba por completo nun medio de copia (escolle copias diarias
completas). En calquera caso a partición debe ser o suficientemente pequena
como para que a súa delta diaria (todos os ficheiros modificados -NdT: o autor
refírese con delta a unha copia de seguridade incremental: facer só copia dos
ficheiros modificados desde a última copia de seguridade completa-) caiba nun
medio de copia de seguridade (escolle unha copia incremental e conta con
cambiar o medio da copia para un volcado completo cada semana ou mes
-operación que non se pode deixar de facer-).
A estratexia da copia de seguridade depende desa decisión.
¡Cando planifiques e merques espacio de disco, lembra reservar o suficiente
diñeiro para copias de seguridade! ¡Os datos sen copia de
seguridade non valen nada! ¡Os costes de reproducción dos datos son moito máis grandes que os
costes en copias de seguridade para virtualmente todo o mundo!
Por cuestións de rendemento é útil manter os ficheiros
con diferentes tempos de vida en particións diferentes. Deste xeito os ficheiros de curta vida na
partición de novas poden estar vastamente fragmentados. Isto non ten impacto
no rendemento da partición / ou /home.