WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Partitionering för att köra webbserver mysql/PHP (https://www.wn.se/forum/showthread.php?t=10702)

Danielos 2005-11-04 17:42

Ska på måndag installera Debian på en maskin med raid 1 på 36 Gb. Hur ska man paritionera bäst? Någon som har erfarenhet över hur /var och /tmp växer på Debian med mysql? Visst har man hållt på en del tidigare, men jag har aldrig kört i kommersiell webbproduktion tidigare. Jag har 2 Gb i minne och tänkt mig:

swap 2 gb

/ 6 gb
/home 18 gb
/var 10gb
/tmp -> (hårdlänk) /var/tmp (Detta för att få bort /tmp från root partitionen)

Tanken är att lägga /var på nya diskar när det blivit för stor.

Hur är det ska man köra med 1024 i block size när det handlar om Mysql? Eller måste kerneln då läsa i 1024 block?
Någon vänlig erfaren själ som har någon idé för eller emot detta?

kullervo 2005-11-04 18:38

Först och främst skulle jag lägga /usr på egen partition monterad ro.

Databasen skulle också få hamna på egen partition dels för att kunna placera den nära centrum på hårddiskarna och dels för allmän flexibilitet. Dessutom är det mest diskaccess för databasen och därför kan det vara bra att filerna inte är utspridda över en större partition.

Om du kan montera /var nosuid,noexec så gör det inget att ha tmp där, men annars skulle jag lägga /tmp på egen partition för att kunna montera nosuid,noexec. Du behöver föresten inte göra en hård länk från /tmp utan en symlink funkar fint.

Vad har du tänk använda /home till? Låter som att den är 100% för stor.

Angående block size så har det helt och hållet med vilket filsystem du använder. Jag kör Reiserfs 3.6 på allt förutom /tmp och planerar snart att gå över till Reiserfs 4 på de stora diskarna. Jag kan inte tänka mig att inte Reiserfs skulle vara det filsystemen som ger bäst prestenda för databaser av de 6 vanligaste filsystemen. Backar inte upp det påståendet med någon fakta.

Om du har ont om diskutrymme så borde du kunna pruta lite på swappartitionen.

Lite allmänna tips:
Montera med noatime på alla partitioner du tycker att det inte gör någon skada på (ger bättre prestanda). Bör ej användas på root.

Montera med nodev,nosuid,noexec överallt du kan.

kullervo 2005-11-04 19:02

Föresten, du frågar om hur /tmp och /var växer med tiden. Jag förstår inte vad du menar. Visst, under /var/log har man ju normalt alla loggfiler och beroende på vad du väljer att logga och om du roterar samt komprimerar eller ej kan de bli rätt stora, men det är ju ingen storlek för en modern hårddisk med många GiB kapacitet. Dessutom känns det rätt menlöst att ha 3 år gamla loggar som man ändå aldrig kommer gå igenom. Loggar bör ju dessutom föras över till en annan burk av säkerhetsskäl. Värt att nämna är att syslogd har stöd för loggning över nätverk. Resten som ligger på /var är ju inte annat än vad du själv väljer att lägga där. Ofta webbroot:en samt email och kanske också databas. Du har bästa koll på det själv vad du behöver.

/tmp bör inte innehålla mycket. En handfull MiB kanske. Hårddisk är billigt så släng på 1GiB så har du så du klarar dig många gånger om.

Jag föredrar att ha två separata partitioner för loggfiler. Den första partitionen ligger alla aktiva loggfiler på. När dessa loggfiler ska roteras komprimerar jag dom först och lägger dem sedan på den andra loggpartitionen. Det finns tre anledningar till att ha separata partitioner för detta. Dels för att det ofta skrivs små mängder till loggfilerna. Det gör att filsystemet blir onödigt fragmenterat. Nu är fragmentation inget större problem på normala filsystem för Linux men man behöver ju jävlas med filsystemen för det. Den andra anledningen är att förhindra att det tar slut på ledigt utrymme på en viktig partition. Anledning tre är att spara diskutrymme. Ganska onödigt att spegla loggpartitionerna.

Danielos 2005-11-04 20:04

Ok, en sammanställning, vad tror ni?

swap 2 gb

/ 400 mb
/tmp 600 mb nosuid,noexec
/var 23 gb nosuid,noexec
/usr 6 gb ro
/usr/local 4 gb nosuid
/home -> /usr/local/home (home kommer knappt att användas)

kullervo 2005-11-04 21:03

Varför skilja på /usr och /usr/local?

Qmail brukar ligga i /var/qmail och den kräver att man inte monterar nosuid eller noexec. Om det blir problem får du helt flytta den till /usr och skapa symlink från /var/qmail

Vad är vitsen med att flytta /home från root till /usr/local?

Danielos 2005-11-04 21:09

Tack, du har rätt

swap 2 gb

/ 400 mb
/tmp 600 mb nosuid,noexec
/var 23 gb suid,exec
/usr 10 gb nosuid

Danielos 2005-11-05 09:27

kullervo, vad tror du om detta?

/ 512MB ext2 mountoption:errors=remount-ro
/usr 5GiB reiserfs mountoption:rw,nodev
/home 512MiB reiserfs mountoption:rw,nosuid,nodev
/var 25GiB reiserfs mountoption:rw,nosuid,nodev
/tmp 512MiB reiserfs mountoption:rw,nosuid,nodev

Vart lägger du public_html på dina sidor, i /var ?

kullervo 2005-11-05 09:37

ext2? Det är ju inte journalförande. Om du nu vill ha stenåldersfilsystem så använd åtminstonde ext3 som är ext2 i grund och botten fast med journalförande egenskaper. Det går t.om. att konvertera ext2 till ext3.

Jag skulle som sagt vilja ha /usr ro. Det tar ju bara en sekund att göra remount till rw på den.

Jag utfår från att det där är den fysiska ordningen på partitionerna. Eftersom /tmp är liten och bör vara snabb borde den ligga högre upp på listan.

Om du har utrymme kan det vara bra att spara en partition på någon GiB för framtida bruk.

Annars ser det bra ut. Är ju inte så kinkigt hur man gör.

/var är till för variabel data. Alltså borde webbrooten ligga där.

Danielos 2005-11-05 10:33

Citat:

Eftersom /tmp är liten och bör vara snabb borde den ligga högre upp på listan.
Är det det inte högre prestanda närmare centrum på disken, allstå /tmp sist närmast centrum?

Danielos 2005-11-05 11:04

Citat:

Eftersom /tmp är liten och bör vara snabb borde den ligga högre upp på listan.
Du har rätt, jag har läst att:
Put each swap partition on the outer tracks.

Innebär längst ner i listan och längst ut på disken.

Citat:

Jag skulle som sagt vilja ha /usr ro. Det tar ju bara en sekund att göra remount till rw på den.
Vad är anledning till ro, hackar någon sig in kan han ju lätt remounta den med rw?


Fast det är en sak som jag undrar över:
Citat:

/var är till för variabel data. Alltså borde webbrooten ligga där.
Eftersom jag inte vill gå in på ftp som root så vill man ju ha ett användarkonto för att uppdatera php-filer. Är det inte bättre då med /home/useraccount/public_html än att ha en webbsidor med username som ägare i /var Eller laddar du upp som user och flyttar över inloggad som root?

Danielos 2005-11-05 11:46

En annan fundering är om man ska köra ext3 eller ReiserFS?
Tittar man på: http://www.namesys.com/benchmarks/v4marks.html
....så är ReiserFS nästan 4 ggr snabbare att skapa en fil och 2 ggr snabbare att läsa än ext3.

På: http://www.gurulabs.com/goodies/ext3_vs_reiserfs-3.php

är ext3 snabbare än ReiserFS.

Vågar man köra ReiserFS4 tror du? Kan det finnas risker?
Kör du ext2 eller ext3 i /tmp ?

Danielos 2005-11-05 12:21

Nu tycker jag att jag har fått häng på filsystem. Antingen tar man risken att köra ReiserFS4 eller så kör man ext3 i write-back mode. Att köra ReiserFS3.6 verkar meningslöst

kullervo 2005-11-05 16:47

Citat:

Originally posted by danielos@Nov 5 2005, 11:04
Citat:

Eftersom /tmp är liten och bör vara snabb borde den ligga högre upp på listan.
Du har rätt, jag har läst att:
Put each swap partition on the outer tracks.

Innebär längst ner i listan och längst ut på disken.

Citat:

Jag skulle som sagt vilja ha /usr ro. Det tar ju bara en sekund att göra remount till rw på den.
Vad är anledning till ro, hackar någon sig in kan han ju lätt remounta den med rw?


Fast det är en sak som jag undrar över:
Citat:

/var är till för variabel data. Alltså borde webbrooten ligga där.
Eftersom jag inte vill gå in på ftp som root så vill man ju ha ett användarkonto för att uppdatera php-filer. Är det inte bättre då med /home/useraccount/public_html än att ha en webbsidor med username som ägare i /var Eller laddar du upp som user och flyttar över inloggad som root?

Början av en HDD är det yttersta spåren på skivorna. Det vore ju dumt om en hårddisk vore långsam i början men snabb i slutet, inte sant?

Att montera /usr ro är för att förhindra intrång.

Känns onödigt att skapa ett shellkonto bara för FTPns skull. För övrigt hänger jag inte med i resonemanget. På min nästa server som jag inte tänker dela med andra kommer jag inte ens ha FTP-server på. Enda portet som kommer vara öppen utifrån kommer vara port 80 som leder till en chroot:ad Apache. Filöverföring etc. kommer jag sköta över SSH på en port som endast släpper igenom trafik från vissa IP-adresser.

Nu är jag inte så hemma på hur filsystem fungerar, men de flesta filsystem använder en lista med filnamn på alla filer som ligger i en katalog. Reiserfs använder en balanserad träd-algoritm vilket gör att det är lika snabbt att läsa en fil som ligger i en katalog med 3 filer som en fil som ligger i en katalog med 1.000.000 filer. Ext2, liksom alla andra filsystem jag känner till, fungerar så att antalet filer i en katalog ökar accesstiden exponensiellt.

Reiserfs4 kom med första gången i vaniljsåsen av Linux förra fredagen. Visst har Reiserfs4 för sig varit stabilt bra länge och många har t.om. använt det till Linux sedan lång tid tillbaka, men det är inte föränn det kommer med i vanilj-utgåvan av Linux som en bred skara börjar använda filsystemet. Nästa gång jag flyttar över innehållet på mina diskar i min arbetsstation kommer jag alla gånger välja resierfs4, men att köra det på en produktionsserver låter lite väl tidigt. Om ett halvår är det nog moget. Reserfs4 ger främst bättre prestanda när man skriver till disken eftersom datat slipper skrivas två gånger (som det gör i de flesta journalförande filsystemen).

Intressant och aktuell intervju med Hans Reisen

kullervo 2005-11-05 16:48

Citat:

Originally posted by danielos@Nov 5 2005, 12:21
Nu tycker jag att jag har fått häng på filsystem. Antingen tar man risken att köra ReiserFS4 eller så kör man ext3 i write-back mode. Att köra ReiserFS3.6 verkar meningslöst

Halva världen kan väl inte ha fel?

Danielos 2005-11-05 19:24

ReiserFS3.6 är ju bara bra om det är många filer i en katalog, annars så är ju ext3 inte så mycket sämre, kanske något.

Danielos 2005-11-06 08:33

kullervo, jag ger mig! Har studerat hela gårdagen och har lurat på det:

Eftersom några databaser innhåller många tabeller (50 000) och eftersom
varje tabell sparas som en fil så kommer det inte fungerar med ext3, då ext3 hanterar många filer
i samma katalog mkt dåligt. Därför valde jag att köra reiserfs på /var och /tmp
Vad tror du?

/tmp 512MB reiserfs rw,nosuid,nodev
/ 512MB ext3 data=journal,defaults
/var 25GB reiserfs rw,nosuid,nodev
/usr 5GB reiserfs ro,nodev
/home 3GB reiserfs rw,nosuid,nodev

kullervo 2005-11-06 09:31

50.000 tabeller i en databas? Omg! Det låter som att du borde se över din databasstruktur. Två tabeller bör i regel inte innehålla samma typ av data. Vore intressant att höra hur strukturen ser ut om du är säker på din sak.

Vet inte om det är du som valt det eller bara glömt bort det, men /tmp bör monteras noexec. Om en obehörig kommer in i systemet så har han åtminstonde skrivrättigheter i /tmp vilket gör att han i första han testar att lägga sina verktyg där för att sedan köra dem.

Sen var det det här med noatime som du inte nämnt något om. Jag tycker det är lagom att ha noatime på allt utom root och /usr.

Danielos 2005-11-06 10:05

Citat:

50.000 tabeller i en databas? Omg! Det låter som att du borde se över din databasstruktur. Två tabeller bör i regel inte innehålla samma typ av data.
Jo jag vet, dock vet jag inte hur man fixar det då jag har phpbb i multiuser. Varje user har en uppsättningar av tabeller i samma databas och det är inget roligt, ska man kanske ta en ny databas för varje user?


Update:
/tmp 512MB reiserfs rw,nosuid,nodev,noexec,noatime
/ 512MB ext3 data=journal,defaults
/var 25GB reiserfs rw,nosuid,nodev,noatime
/usr 5GB ext3 data=journal,ro,nodev
/home 3GB reiserfs rw,nosuid,nodev,noatime


Alla tider är GMT +2. Klockan är nu 01:30.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson