การแบ่งพาร์ติชันและระบบไฟล์ของ Unix Server


29

มีข้อมูลที่ขัดแย้งกันมากมายเกี่ยวกับการแบ่งเซิร์ฟเวอร์ Unix ออกทางอินเทอร์เน็ตดังนั้นฉันต้องการคำแนะนำเกี่ยวกับวิธีดำเนินการต่อ

จนถึงตอนนี้บนเซิร์ฟเวอร์ที่ฉันอยู่ในสภาพแวดล้อมการทดสอบของฉันฉันไม่ได้สนใจเรื่องการแบ่งพาร์ติชันและฉันกำหนดค่าเสาหิน/บวกพาร์ติชัน swap เดียว รูปแบบการแบ่งพาร์ติชันนี้ดูเหมือนจะไม่เป็นความคิดที่ดีสำหรับเซิร์ฟเวอร์ที่ใช้งานจริงของเรา ฉันพบจุดเริ่มต้นที่ดีที่นี่แต่ดูเหมือนว่าคลุมเครือในรายละเอียด


โดยทั่วไปฉันมีเซิร์ฟเวอร์ที่ฉันจะใช้ LAMP stack พื้นฐาน (Apache, PHP และ MySQL) มันจะต้องจัดการกับการอัปโหลดไฟล์ (สูงสุด 2GB) ระบบมีอาร์เรย์ 2TB RAID 1

ฉันวางแผนที่จะตั้ง:

/         100GB 
/var     1000GB (apache files and mysql files will be here), 
/tmp      800GB (handles the php tmp file)
/home      96GB
swap        4GB

เสียงนี้มีสติหรือว่าเป็นสิ่งที่ทำให้สับสนมากเกินไป?


1
เป้าหมายสุดท้ายของคุณคืออะไร คุณพยายามทำอะไรให้สำเร็จ
Scott Pack

9
อย่างไรก็ตามคุณตัดสินใจที่จะทำมันขึ้นมาฉันแนะนำให้ใช้ LVM เพื่อกำหนดพาร์ติชั่นของคุณแล้วจัดสรรพื้นที่อย่างระมัดระวังปล่อยให้พื้นที่ดิสก์บางส่วนไม่ได้ถูกจัดสรร จากนั้นเมื่อคุณตัดสินใจว่าคุณต้องการพื้นที่มากขึ้นคุณสามารถขยาย LV และระบบไฟล์ได้
ktower

คำตอบ:


33

สิ่งหนึ่งที่ต้องจำไว้เมื่อวางพาร์ติชันของคุณคือโหมดความล้มเหลว โดยทั่วไปแล้วคำถามนั้นอยู่ในรูปแบบ: "จะเกิดอะไรขึ้นเมื่อพาร์ติชันxเติมเต็ม" voretaq7 ที่รักนำสถานการณ์ขึ้นมาอย่างเต็มที่/ทำให้เกิดปัญหาในการวินิจฉัยปัญหาได้ยาก ลองดูสถานการณ์ที่เฉพาะเจาะจงมากขึ้น

จะเกิดอะไรขึ้นถ้าพาร์ติชันของคุณจัดเก็บบันทึกเต็ม? คุณสูญเสียข้อมูลการตรวจสอบ / การรายงานและบางครั้งผู้โจมตีใช้เพื่อซ่อนกิจกรรมของพวกเขา ในบางกรณีระบบของคุณจะไม่ตรวจสอบผู้ใช้ใหม่หากไม่สามารถบันทึกเหตุการณ์การเข้าสู่ระบบได้

จะเกิดอะไรขึ้นกับระบบที่ใช้ RPM เมื่อ/varเต็ม? ผู้จัดการแพ็คเกจจะไม่ติดตั้งหรืออัปเดตแพ็คเกจและอาจล้มเหลวอย่างเงียบ ๆ ทั้งนี้ขึ้นอยู่กับการกำหนดค่าของคุณ

การเติมพาร์ติชันนั้นง่ายมากโดยเฉพาะเมื่อผู้ใช้สามารถเขียนลงไปได้ เพื่อความสนุกให้เรียกใช้คำสั่งนี้และดูว่าคุณสามารถสร้างไฟล์ขนาดใหญ่cat /dev/zero > zerofileได้เร็วเพียงใด:

มันเกินกว่าจะเติมพาร์ติชั่นด้วยเช่นกันเมื่อคุณวางตำแหน่งบนจุดเมานท์ที่แตกต่างกันคุณสามารถปรับแต่งตัวเลือกเมานท์ได้

เกิดอะไรขึ้นเมื่อ/dev/ไม่ได้รับการติดตั้งที่มีnoexec? เนื่องจาก/devโดยทั่วไปแล้วสันนิษฐานว่าจะได้รับการดูแลโดยระบบปฏิบัติการและมีเพียงอุปกรณ์ที่ใช้เป็นประจำ (และบางครั้งยังคงเป็น) ใช้เพื่อซ่อนโปรแกรมที่เป็นอันตราย การปล่อยทิ้งไว้noexecอนุญาตให้คุณเปิดไบนารีที่เก็บไว้ที่นั่น

ด้วยเหตุผลทั้งหมดเหล่านี้และอื่น ๆ คำแนะนำในการชุบแข็งจำนวนมากจะกล่าวถึงการแบ่งพาร์ติชันเป็นหนึ่งในขั้นตอนแรกที่ต้องดำเนินการ ในความเป็นจริงหากคุณกำลังสร้างเซิร์ฟเวอร์ใหม่วิธีแบ่งพาร์ติชันดิสก์นั้นเกือบจะเป็นสิ่งแรกที่คุณต้องตัดสินใจและบ่อยครั้งที่ยากที่สุดที่จะเปลี่ยนแปลงในภายหลัง มีกลุ่มหนึ่งที่เรียกว่าศูนย์การรักษาความปลอดภัยอินเทอร์เน็ตที่ให้คำแนะนำการกำหนดค่าที่อ่านง่าย คุณอาจพบคำแนะนำสำหรับระบบปฏิบัติการเฉพาะของคุณและดูข้อมูลเฉพาะที่อาจกล่าวได้

หากเราดูที่ RedHat Enterprise Linux 6 รูปแบบการแบ่งพาร์ติชันที่แนะนำคือ:

# Mount point           Mount options
/tmp                    nodev,nosuid,noexec
/var                    
/var/tmp                bind (/tmp)
/var/log
/var/log/audit
/home                   nodev
/dev/shm                nodev,nosuid,noexec

หลักการที่อยู่เบื้องหลังการเปลี่ยนแปลงเหล่านี้คือการป้องกันไม่ให้ส่งผลกระทบต่อกันและกันและ / หรือ จำกัด สิ่งที่สามารถทำได้ในพาร์ติชันเฉพาะ ใช้ตัวเลือกสำหรับการ/tmpยกตัวอย่างเช่น สิ่งที่กล่าวคือไม่มีโหนดอุปกรณ์ที่สามารถสร้างขึ้นได้ไม่มีโปรแกรมไม่สามารถดำเนินการจากที่นั่นและบิต set-uid ไม่สามารถตั้งค่าได้ โดยธรรมชาติแล้ว/tmpมักจะเขียนได้ทั่วโลกและมักเป็นระบบไฟล์ชนิดพิเศษที่มีอยู่ในหน่วยความจำเท่านั้น ซึ่งหมายความว่าผู้โจมตีสามารถใช้เป็นจุด staging ง่าย ๆ ในการปล่อยและเรียกใช้รหัสที่เป็นอันตรายจากนั้น crashing (หรือเพียงแค่เริ่มระบบใหม่) ระบบจะล้างข้อมูลหลักฐานทั้งหมด เนื่องจากฟังก์ชั่นของ/tmpไม่ต้องการฟังก์ชั่นใด ๆ เราจึงสามารถปิดการใช้งานคุณสมบัติและป้องกันสถานการณ์นั้นได้อย่างง่ายดาย

ตำแหน่งที่เก็บบันทึก/var/logและ/var/log/auditถูกแกะสลักออกเพื่อช่วยบัฟเฟอร์จากทรัพยากรหมด นอกจากนี้ auditd สามารถทำสิ่งพิเศษบางอย่าง (โดยทั่วไปจะอยู่ในสภาพแวดล้อมการรักษาความปลอดภัยที่สูงขึ้น) เมื่อที่เก็บข้อมูลบันทึกเริ่มเต็ม โดยการวางไว้บนพาร์ติชั่นการตรวจจับทรัพยากรนี้จะทำงานได้ดีขึ้น

หากต้องการเป็น verbose ที่มากขึ้นและเสนอราคาmount(8)นี่คือสิ่งที่ตัวเลือกที่ใช้ข้างต้นคือ:

noexecไม่อนุญาตให้เรียกใช้งานไบนารีโดยตรงบนระบบไฟล์ที่เมาท์ (จนกระทั่งเมื่อไม่นานมานี้มีความเป็นไปได้ที่จะรันไบนารีโดยใช้คำสั่งเช่น /lib/ld*.so / mnt / binary เคล็ดลับนี้ล้มเหลวตั้งแต่ Linux 2.4.25 / 2.6.0)

nodev อย่าตีความอักขระหรือบล็อกอุปกรณ์พิเศษในระบบไฟล์

nosuidไม่อนุญาตให้บิต set-user-identifier หรือ set-group-identifier มีผล (ดูเหมือนว่าจะปลอดภัย แต่จริงๆแล้วค่อนข้างไม่ปลอดภัยหากคุณติดตั้ง suidperl (1))

จากมุมมองด้านความปลอดภัยนี่เป็นตัวเลือกที่ดีที่ควรทราบเนื่องจากมันจะช่วยให้คุณสามารถป้องกันระบบไฟล์ได้ ในสภาพแวดล้อมที่มีความปลอดภัยสูงคุณอาจจะเพิ่มตัวเลือกในการnoexec /homeมันจะทำให้ผู้ใช้มาตรฐานของคุณยากที่จะเขียนเชลล์สคริปเพื่อประมวลผลข้อมูลพูดวิเคราะห์ไฟล์บันทึก แต่มันจะป้องกันไม่ให้พวกเขาเรียกใช้ไบนารี่ที่จะยกระดับสิทธิ์

/rootนอกจากนี้ยังเก็บไว้ในใจว่าไดเรกทอรีแรกเริ่มต้นผู้ใช้รากคือ ซึ่งหมายความว่ามันจะอยู่ใน/ระบบแฟ้มไม่ได้/homeใน

จำนวนเงินที่คุณมอบให้แต่ละพาร์ติชันอาจแตกต่างกันมากขึ้นอยู่กับปริมาณงานของระบบ เซิร์ฟเวอร์ทั่วไปที่ฉันจัดการมักไม่ค่อยต้องการการมีปฏิสัมพันธ์กับบุคคลและ/homeพาร์ติชั่นดังกล่าวไม่จำเป็นต้องมีขนาดใหญ่มากเลย เช่นเดียวกับ/varเนื่องจากมันมีแนวโน้มที่จะเก็บข้อมูลชั่วคราวที่ได้รับการสร้างและลบบ่อยครั้ง อย่างไรก็ตามเว็บเซิร์ฟเวอร์มักใช้/var/wwwเป็นสนามเด็กเล่นซึ่งหมายความว่าอาจต้องอยู่ในพาร์ติชันแยกต่างหากเช่นกันหรือ/var/ต้องมีขนาดใหญ่

ในอดีตที่ผ่านมาฉันแนะนำดังต่อไปนี้เป็นพื้นฐาน

# Mount Point       Min Size (MB)    Max Size (MB)
/                   4000             8000
/home               1000             4000
/tmp                1000             2000
/var                2000             4000
swap                1000             2000
/var/log/audit       250

จำเป็นต้องได้รับการตรวจสอบและปรับเปลี่ยนตามวัตถุประสงค์ของระบบและสภาพแวดล้อมของคุณทำงาน ฉันจะแนะนำให้ใช้ LVM และไม่ให้จัดสรรดิสก์ทั้งหมด สิ่งนี้จะช่วยให้คุณเติบโตหรือเพิ่มพาร์ติชันได้ง่ายหากจำเป็นต้องใช้สิ่งเหล่านี้


1
การnoexecสังเกตเป็นสิ่งสำคัญโดยทั่วไป - ถือว่าเป็นการปฏิบัติที่ดีในการติดตั้ง/tmpด้วยการnoexecตั้งค่าสถานะเพื่อหลีกเลี่ยงผู้ใช้ที่เป็นอันตรายอัปโหลดรูทคิทผ่านช่องโหว่ความปลอดภัยของเบราว์เซอร์ ในทำนองเดียวกัน/homeมักจะติดตั้งnosuidเนื่องจากไม่มีเหตุผลที่ setuid ไบนารีจะอยู่ที่นั่น Re: /devและnoexecในหลาย ( แต่ไม่ใช่ทั้งหมด) ระบบที่ทันสมัย/devมักจะเป็นdevfsระบบแฟ้มและจะไม่ให้ผู้ใช้สร้าง / จัดเก็บไฟล์ปกติที่ทุกคน (ใน FreeBSD ก็จะส่งกลับ " Operation not supported" ในอูบุนตูudevระบบแฟ้มติดตั้งอยู่บน/devช่วยให้คุณสามารถสร้างไฟล์ปกติ )
voretaq7

2
@ voretaq7: ใช่การใช้/tmpเป็นแผ่นกระโดดนั้นสนุกมากเพราะมันอยู่ที่นั่นเสมอและแทบไม่เคยล็อคเลย
Scott Pack

ขอบคุณสำหรับคำแนะนำเหล่านี้ ฉันจะตรวจสอบ noexec เพื่อเพิ่มความปลอดภัย!
Buzut

12

เพิกเฉยอาเรย์ RAID ที่แฝงอยู่ ( ดูคำถามนี้สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับระดับอาเรย์ RAID และเมื่อคุณต้องการใช้งาน ) ให้เราตั้งคำถามหลักที่คุณถาม:
"ฉันจะวางระบบไฟล์ของเซิร์ฟเวอร์ Unix ได้อย่างไร"


เกิดอะไรขึ้นกับ/พาร์ติชั่นยักษ์หนึ่งอัน

ในขณะที่คุณตั้งข้อสังเกตในคำถามของคุณจำนวนมากของลินุกซ์ (โดยเฉพาะอย่างยิ่ง "ตั้งโต๊ะ" การกระจายเช่น Ubuntu) ใช้รูปแบบระบบแฟ้มง่ายมาก: และ/[swap]

แบบแผนนี้มีข้อดีของความเรียบง่าย - เหมาะสำหรับผู้ใช้ DOS / Windows ที่คุ้นเคยกับพีซีในบ้านของพวกเขาด้วย "ฮาร์ดไดรฟ์" เป็นคอนเทนเนอร์ขนาดใหญ่ก้อนเดียว ( C:\) ที่คุณถ่ายโอนข้อมูลและคุณไม่ต้องกังวล เกี่ยวกับพื้นที่ว่างในระบบไฟล์ - เพียงแค่ตรวจสอบให้แน่ใจว่าคุณอยู่ภายใต้ความจุของดิสก์และทุกอย่างก็ดี

โครงการเดียวระบบแฟ้มมีข้อเสียหลายแม้ว่า - ข้อเสียส่วนใหญ่มักจะอ้างว่าระบบปฏิบัติการ Unix มีแนวโน้มที่จะตอบสนองแย่มากเมื่อระบบแฟ้มรากเติมขึ้น (ยังจุดปฏิเสธที่จะบูต) และถ้าทุกอย่างจะถูกเขียนไป/(ราก) โปรแกรมหรือผู้ใช้ที่เอาแต่ใจตัวเดียวสามารถทำลายระบบทั้งหมดได้
ระบบไฟล์ขนาดใหญ่ระบบเดียวก็มีแนวโน้มที่จะสูญเสียทั้งหมดในกรณีที่ระบบขัดข้องและระบบไฟล์เสียหายตามมา

ปัญหาข้างต้นรวมถึงความแข็งแกร่งขององค์กรคือสาเหตุที่เซิร์ฟเวอร์ Unix มีระบบไฟล์หลายระบบ


คุณแตกระบบไฟล์ Unix ได้อย่างไร?

ดังนั้นหวังว่าคุณจะมั่นใจว่าการมีระบบไฟล์หลายระบบเหมาะสม คำถามในตอนนี้คือคุณจะแบ่งระบบออกเป็นชิ้นส่วนแบบลอจิคัลได้อย่างไรและคุณตัดสินใจได้อย่างไรว่าแต่ละพื้นที่มีจำนวนเท่าใด
คำตอบคือคุณรู้จักและเข้าใจว่าระบบปฏิบัติการของคุณกำลังจะวางที่ไหน จุดเริ่มต้นสำหรับความเข้าใจนั้นคือhierหน้าคน ระบบ Unix ส่วนใหญ่มาพร้อมกับ ( man hierจากระบบ linuxและman hierจากระบบ BSD ) และนั่นรวมถึงความรู้ในท้องถิ่นของคุณเกี่ยวกับสิ่งที่รหัสที่คุณกำลังติดตั้งจะทำจะแนะนำคุณในการสร้างรูปแบบการแบ่งพาร์ติชันที่มีเหตุผล

ฉันจะอธิบายรูปแบบการแบ่งพาร์ติชันทั่วไปที่นี่ แต่รูปแบบนี้ควรได้รับการแก้ไขเพื่อตอบสนองความต้องการเฉพาะของคุณ

โครงการแบ่งพาร์ติชันยูนิกซ์ทั่วไป

/
    The "root partition", /, does not usually need to be very large.
    It holds the basic items needed to boot the system, mount other filesystems
    and get you to a running, usable, multi-user environment.  It's also what
    is available to you when you bring up the system in single-user ("recovery")
    mode.  
    The contents of / should not change or grow substantially over time.

    NOTE: Anything that doesn't go on one of the other partitions described
          below will wind up taking space on the root partition (/).

/var
    The /var filesystem holds variable data -- log files, email, and on some
    systems databases (like MySQL or Postgres) store their data files here.  
    `/var` should be "Big Enough" to hold all the data you intend to cram into
    it.  I generally advise 10GB for systems that won't have a database or email
    server (just logs).  If you are building a database or mail server you
    should obviously make `/var` larger, or carve out separate filesystems for
    the database/mail data.

/usr
    The /usr filesystem holds "userland" programs, data, manual pages, etc.
    This is where things like the Firefox browser binary live.  On systems that
    will have a lot of large user applications this filesystem may be very large
    (100GB or more), and on stripped-down servers it may be relatively small.  
    A good rule of thumb is that the /usr filesystem should be twice as large
    as you need it to be in order to fit your initial installation of programs.

/home
    The /home filesystem holds user home directories, and on desktop systems is
    the largest and most prone to filling up.  When you download files from the
    internet, create spreadsheets, store a music library, etc. that data is
    stored in your home directory, and it adds up fast.
    It's important to allow enough room under /home for the "accumulated junk"
    you will gather over time, even on servers -- ad-hoc tarball backups, 
    package files you copied over to install, and the like.

ระบบไฟล์พิเศษ

/tmp and /var/tmp
    The temporary scratch space (/tmp) is "special" -- on most Unix systems
    the contents of /tmp are cleared on reboot, and on many modern systems
    /tmp is a special "tmpfs" (RAM) filesystem for better performance.
    /var/tmp is usually "persistent temporary files" (like vi recovery
    files), and is not cleared on reboot
    The same general rule applies as for all other filesystems: Make sure
    your temporary scratch filesystems are big enough to hold the stuff you
    want to put in them.

[swap]
    Swap Space is used by the kernel when you are running low on RAM --
    The old general rule of thumb was to have at least twice as much swap
    as you did RAM, however on modern systems it's usually sufficient to
    have "enough" swap -- 2GB is a practical lower limit, and an amount
    between half the installed RAM and the total installed RAM is usually
    adequate.
    On modern systems with relatively huge RAM pools (12G and up) it is
    probably not practical to use the system if it's swapping heavily
    enough to warrant the old "Twice the installed RAM" rule.

2
เหตุผลสองข้อที่คุณระบุไว้ส่วนใหญ่ล้าสมัยในวันนี้ ขยาย [234] สงวนพื้นที่สำหรับรูทและไม่อนุญาตให้โปรแกรมผู้ใช้ใช้งานทั้งหมดเพื่อให้ระบบไม่ประสบปัญหาเรื่องพื้นที่ว่างและระบบไฟล์ที่ทันสมัยทั้งหมดใช้การทำเจอร์นัลเพื่อไม่ให้เสียหาย ความผิดพลาด
psusi

2
@psusi พื้นที่ที่สงวนไว้สำหรับผู้ใช้รูท (ปกติ 5-10% ของขนาดระบบไฟล์) ไม่ได้ช่วยคุณถ้าผู้ใช้รูทเป็นผู้เขียนไฟล์ที่เติมดิสก์ (มักจะเป็นไฟล์บันทึก) นอกจากนี้ยังถือว่าไม่ถูกต้องที่จะคิดว่าเพียงเพราะระบบไฟล์ถูกทำเจอร์นัลอยู่เสมอจะปลอดภัยจากความเสียหาย - การทำเจอร์นัลเพิ่มความทนทาน แต่ก็ไม่รับประกันความปลอดภัย (โดยเฉพาะถ้าคุณสะดุดข้ามข้อผิดพลาดที่ยังไม่ได้เปิด - กลุ่ม ReiserFS สามารถบอกเล่าเรื่องราวที่ยอดเยี่ยมเกี่ยวกับเรื่องนั้นตั้งแต่วันแรก ๆ ของระบบไฟล์)
voretaq7

2
มีเหมือนเดิม/usrหรือ/varไม่ช่วยถ้า/เสียหาย ในทำนองเดียวกันการมีเหมือนเดิม/ไม่ได้ช่วย (มาก) ถ้า/homeเสียหาย ท้ายที่สุดคุณต้องกู้คืนจากการสำรองข้อมูลด้วยวิธีใดวิธีหนึ่ง ไม่ต้องพูดถึงความล้มเหลวดังกล่าวเป็นหนึ่งในล้านยกเว้นว่าคุณกำลังเรียกใช้ fs ใหม่ / ไม่เสถียร
psusi

4

การฝึกฝนการแกะสลักระบบไฟล์แบบนั้นมาจากสมัยที่ไม่มีการจู่โจมซอฟต์แวร์และดิสก์ไดรฟ์มีขนาดเล็กดังนั้นคุณต้องใช้หลาย ๆ ระบบดังนั้นวิธีเดียวที่จะทำเช่นนั้นคือการทำลายระบบไฟล์ และใส่ไดเร็กตอรี่ต่าง ๆ ลงในไดรฟ์ต่าง เหตุผลทางประวัติศาสตร์อื่น ๆ สำหรับมันเพื่อให้คุณสามารถเลิกเมานท์พาร์ติชันได้อย่างง่ายดายและdumpสำหรับการสำรองข้อมูลซึ่งคุณไม่สามารถทำได้กับรูท เครื่องมือนี้ได้รับความนิยมอย่างล้นหลามในทุกวันนี้และสามารถนำไปใช้กับภาพรวมของ LVM ได้แม้บนราก

ไม่มีเหตุผลที่จะทำเช่นนี้อีกต่อไป เกี่ยวกับเหตุผลเดียวที่เหลือให้ทำเช่นถ้าคุณต้องการป้องกัน/tmpจากการเติมดิสก์ทั้งหมด

เหตุผลนี้ส่วนใหญ่ไม่เกี่ยวข้องในวันนี้เนื่องจากการพิสูจน์ผู้ใช้ที่มีการเข้าถึงเชลล์ทั่วไปได้หายไปแล้วและเซิร์ฟเวอร์ในปัจจุบันใช้บริการเฉพาะเช่นเว็บหรือเซิร์ฟเวอร์เมล เนื่องจากคุณไม่มีผู้ใช้แบบสุ่มที่สามารถเรียกใช้คำสั่งโดยพลการคุณจึงไม่จำเป็นต้องกังวลเกี่ยวกับพวกเขาที่พยายามเติมระบบไฟล์ของคุณ (และแม้ว่าคุณจะทำก็ตามคุณก็มีโควต้าดิสก์เพื่อหยุด)

สำหรับระดับการจู่โจมที่จะใช้คุณต้องจำไว้ว่าจุดประสงค์หลักของการจู่โจมนั้นไม่ได้เป็นการปกป้องข้อมูล (นั่นคือการสำรองข้อมูล) หากคุณ/tmpทำการโจมตี 0 เซิร์ฟเวอร์ของคุณจะยังคงทำงานต่อไปและคุณจะต้องทำการซ่อมแซมหากดิสก์ตัวใดตัวหนึ่งล้มเหลว คุณอาจต้องการใช้ raid10 แทน raid1 เพื่อให้ได้ประสิทธิภาพที่ดีขึ้นเช่นกัน

เหตุผลที่ดีที่จะไม่แยกระบบไฟล์ก็คือถ้าคุณได้รับการจัดสรรผิดคุณสามารถลงเอยด้วยส่วนหนึ่งของระบบแฟ้มที่เต็มแม้ว่าจะมีพื้นที่ว่างมากมาย การแก้ไขสิ่งนี้อาจทำได้ยากเว้นแต่คุณจะใช้ LVM และเว้นพื้นที่ที่ไม่ได้กำหนดไว้


4
มีเหตุผลมากมายที่จะทำการแกะสลักระบบไฟล์ยูนิกซ์ต่อไปในแบบดั้งเดิม หากไม่มีเหตุผลในการทำเช่นนี้เราก็คงจะหยุดยั้งในตอนนี้ - ไม่ใช่ sysadminsที่แนบมากับประเพณีความลับ :)
voretaq7

1
@ voretaq7 จากนั้นตั้งชื่อบางอย่าง หากคุณทำไม่ได้การคาดคะเนว่าคนตาบอดนั้นต้องเป็นคนโง่
psusi

1
มันจะต้องปฏิบัติตามการ downvoting เหล่านั้นจริง ๆ แล้วให้อาร์กิวเมนต์โต้มากกว่าภูมิปัญญาดั้งเดิมนกแก้วสุ่มสี่สุ่มห้า
psusi

2
เก็บ / var / log จากการทำทุกอย่างโดยการเติม จำกัดความเสียหายของระบบไฟล์ ลดความยุ่งยากในการสำรองข้อมูล - ไม่ว่าจะเป็นสแน็ปช็อตหรือเมานต์กฎการแวะผ่านซึ่งมักจะต้องการสำรองข้อมูลตามกำหนดเวลาที่แตกต่างกัน ลดความซับซ้อนของการถ่ายภาพ / การอัพเกรด อนุญาตให้เลือกประสิทธิภาพการทำงานของระบบไฟล์ที่เกี่ยวข้องกับงาน
Jeff Ferland

1
@JeffFerland ที่ดีที่สุดนั่นคือเหตุผลที่อ่อนแอในการใส่ / var / log บนพาร์ติชั่นของตัวเอง แต่ไม่ใช่สำหรับพาร์ติชั่นอื่น ๆ หากคุณยังคงใช้dumpงานอยู่การสำรองข้อมูลส่วนต่าง ๆ ของ fs นั้นไม่จำเป็นต้องใช้ชิ้นส่วนเหล่านั้นในพาร์ติชันต่าง ๆ การอัปเกรดไม่สนใจวิธีใดวิธีหนึ่ง การถ่ายภาพไม่ใช่วิธีที่ดีในการทำสิ่งต่าง ๆ เช่นกัน
psusi

3

ข้อมูลการแบ่งพาร์ติชันจำนวนมากถูกสร้างขึ้นเมื่อพื้นที่ดิสก์ของฉันขาดแคลน เป็นผลให้คุณจะเห็นพาร์ติชันที่ค่อนข้างเล็กสำหรับบางกรณี ขนาดพาร์ติชันที่ต้องการแตกต่างกันไปขึ้นอยู่กับการใช้งานเซิร์ฟเวอร์ ตัวแปรส่วนใหญ่มักจะเป็น/tmp , /var, home, และ /opt มีแนวโน้มที่จะมีขนาดที่เหมาะสมและมั่นคง พื้นที่สำหรับสามารถรวมพาร์ติชันอื่น ๆ หรือทั้งหมดและความต้องการพื้นที่ การปรับขนาดนั้นขึ้นอยู่กับสิ่งที่คุณกำลังทำระบบจริงๆ/srv/usr/

ฉันจะเพิ่มswapและภูเขาบน/tmp จากนั้นtmpfsคุณ/tmpจะใช้ swap เป็นที่เก็บข้อมูลสำรอง แต่ใช้หน่วยความจำเท่าที่มี ขนาดของ/tmpรูปลักษณ์ของคุณสูงมาก แต่จะจัดการการอัปโหลดที่ยกเลิกซึ่งไม่ได้ล้างออก

ฉันจะพิจารณาการย้ายไฟล์ MySQL /srvไป นี่เป็นระดับที่ค่อนข้างใหม่ในลำดับชั้นของดิสก์

หากคุณไม่ทราบความต้องการขั้นสูงสุดของคุณให้พิจารณาใช้ LVM และขยายพาร์ติชันของคุณให้เต็ม


ระวังการเพิ่ม swap - เป็นการดีที่จะมีการสลับที่ "พอ" แต่ถ้าคุณมีมากเกินไปคุณจะไม่เคยใช้มัน (เพราะเมื่อถึงเวลาที่คุณทำการสลับที่ประสิทธิภาพของระบบจะเจ็บปวดมาก) ฉันจะบอกว่า 4G ที่เสนอในคำถามน่าจะ "เพียงพอ" สำหรับสแต็ก LAMP - ถ้าคุณใช้ 4G ของการแลกเปลี่ยน (และการเพจข้อมูลนั้นเข้าและออกจริง ๆ ) คุณอาจกำลังโทรศัพท์อยู่เพราะ เว็บไซต์ช้า :)
voretaq7

1
@ voretaq7 ไม่สำคัญว่าการสลับขนาดคืออะไรถ้าคุณใช้สำหรับโปรแกรมที่ใช้งานอยู่ ใช้สำหรับ tmpfs ที่ไฟล์ขนาดใหญ่เขียนลงดิสก์ แต่ไฟล์ขนาดเล็กยังคงอยู่ในหน่วยความจำคือการใช้ swap อย่างสมเหตุสมผล มันช่วยประหยัดในการเขียนทุกไฟล์ลงในดิสก์เมื่อเจตนาจะนำไปไว้ที่อื่น ฉันแนะนำให้เพิ่มพื้นที่สว็อปเพราะดูเหมือนว่าจะมี/tmpพื้นที่ขนาดใหญ่
BillThor

ทำไมไม่ใช้ไฟล์ปกติเพื่อสลับ? พวกเขาไม่ได้เร็วเท่าพาร์ติชั่นสว็อปพิเศษมาเป็นเวลานานเหรอ?
Chris Smith

@ChrisSmith ไฟล์ปกติควรจะเกือบเร็วพอ ๆ กับพาร์ติชันเฉพาะ แต่อาจไม่ต่อเนื่องกันบนดิสก์ที่นำไปสู่การแยกคำขอ I / O สิ่งนี้อาจถูกสร้างขึ้นโดยการสตริป นอกจากนี้มันค่อนข้างง่ายที่จะลบไฟล์สลับโดยไม่ตั้งใจ ไฟล์ที่ถูกลบจะไม่ปรากฏจนกว่าระบบจะรีบูตเมื่อไม่มีพื้นที่สว็อปอีกต่อไป
BillThor

@BillThor นี่เป็นความจริง - หากคุณกำลังใช้งานtmpfsและคาดว่าจะมีการแลกเปลี่ยนเป็นที่เก็บสำรองคุณควรมีการสลับ "พอ" เพื่อให้เป็นไปตามความต้องการของ tmpfs ของคุณรวมถึงการสำรองที่เหมาะสมสำหรับระบบเช่นกัน (นี่ไม่ใช่สิ่งที่ฉันคิดตามปกติเนื่องจากระบบเดียวที่ฉันใช้tmpfsมีการกำหนดค่าที่จะไม่แลกเปลี่ยน swap เนื่องจากมี RAM ส่วนเกินและฉันใช้พื้นที่ชั่วคราวสำหรับไฟล์เล็ก ๆ ที่สร้าง / ลบอย่างรวดเร็ว :)
voretaq7

2

ขึ้นอยู่กับสถาปัตยกรรมของคุณ - คุณอาจไม่ต้องการใช้ / tmp จริง ๆ เนื่องจากจะถูกล้างออกหลังจากการรีบูตทุกครั้ง หากไซต์ของคุณเกี่ยวข้องกับการประมวลผลการอัปโหลดในที่สุดการเปลี่ยนเป็นตำแหน่งอื่น (ผ่าน php.ini) อาจเป็นแนวคิด ซึ่งคุณสามารถทำให้เป็นจุดยึดใด ๆ

ตามที่แนะนำไว้ก่อนหน้านี้ขอแนะนำให้ใช้ LVM และเพิ่มตามความจำเป็น

ฉันขอแนะนำพาร์ติชันเฉพาะสำหรับข้อมูล MySQL (คุณยังสามารถติดตั้งภายใต้ / var / lib / mysql)


เป็นความคิดที่ดีที่จะสมมติว่าไฟล์ที่อยู่ใน/tmpนั้นอาจไม่มีอยู่ในภายหลัง - ช่วยให้คุณประหยัดจากความประหลาดใจอันไม่พึงประสงค์ในภายหลัง :-)
voretaq7
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.