ฉันจะสร้างและปรับพาร์ติชัน ext4 จากบรรทัดคำสั่งได้อย่างไร


41

การจัด พาร์ทิชัน(เช่นfdisk)
คำสั่งที่มีประโยชน์สำหรับการแบ่งพาร์ติชันฮาร์ดไดรฟ์เพิ่มเติมจากบรรทัดคำสั่งมีอะไรบ้าง เนื่องจากไกด์ที่ตีพิมพ์ส่วนใหญ่นำไปสู่ ​​GParted และยูทิลิตี้กราฟิกอื่น ๆ การสรุปลำดับของบรรทัดคำสั่งบางอย่างจะมีประโยชน์

TUNING - RESERVED SPACE, WRITE-BACK & ACCESS TIMES
วิธีการลบพื้นที่ว่างในดิสก์ที่สงวนไว้ (โดยค่าเริ่มต้น) ในกรณีที่ไดรฟ์เต็ม 100% เนื่องจากฉันเป็นไดรฟ์สำรองสำหรับ 'ข้อมูล' การลบพื้นที่สงวนทำให้มั่นใจได้ว่าไดรฟ์ทั้งหมดพร้อมใช้งาน

ฉันยังอยากรู้เกี่ยวกับการเขียนผ่านและเขียนกลับและข้ามการปรับปรุงเวลาเข้าถึง (ในไฟล์และไดเรกทอรี) เพื่อปรับปรุงประสิทธิภาพ

คำตอบ:


64

ก่อนอื่น:

!! คำเตือน !!

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


หากต้องการตั้งค่าไดรฟ์อย่างรวดเร็วเป็นพาร์ติชัน ext4 เดียว ...

  1. ดูอุปกรณ์ที่ตรวจพบของคลาส "DISK"

    lshw -C disk
    
  2. ดูตารางพาร์ติชันที่มีอยู่

    fdisk -l
    
  3. แก้ไขตารางพาร์ติชั่นสำหรับอุปกรณ์ที่ฉันเลือก (ในกรณีนี้คือ "sdx")

    fdisk /dev/sdx
    

    ภายใน FDISK ให้กด:

    • d... เพื่อdหนึ่งคำพาร์ทิชันปัจจุบัน

    • n... เพื่อสร้างพาร์ติชันn ew

    • p... เพื่อระบุว่าเป็นพาร์ติชันP RIMARY

    • 1... เพื่อตั้งเป็นพาร์ติชันหลักที่1

    • w... เพื่อWพิธีเปลี่ยนแปลง

  4. แสดงตารางพาร์ติชันใหม่:

    fdisk -l
    
  5. จัดรูปแบบระบบไฟล์ของพาร์ติชันใหม่เป็นประเภท ext4

    mkfs -t ext4 /dev/sdx1
    
  6. สร้างไดเรกทอรีใหม่ที่จะติดตั้งไดรฟ์ใหม่:

    mkdir /storage
    mount /dev/sdx1 /storage
    

TUNING

  1. ลบบล็อกที่สงวนไว้ (เช่นตั้งค่าเป็น 0%) เนื่องจากไดรฟ์นี้มีไว้สำหรับข้อมูลผู้ใช้เท่านั้น

    tune2fs -m 0 /dev/sdx1
    
  2. เนื่องจากเซิร์ฟเวอร์อยู่บน UPS ให้ตั้งค่าการเขียนกลับเพื่อให้แอปไม่ต้องรอการเขียนดิสก์จริง

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. เมานต์เมื่อบูตเครื่องโดยใช้/etc/fstabและตั้งค่านโยบายการเขียนกลับ

    vi /etc/fstab
    
  4. ค้นหา (หรือเพิ่ม) บรรทัดที่เกี่ยวข้องในfstabไดรฟ์ของคุณ พารามิเตอร์ใน fstab ถูกคั่นด้วย white space เช่นไดรฟ์ที่อธิบายข้างต้นอาจปรากฏเป็น:

    /dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1
    
    • พารามิเตอร์แรกระบุพาร์ติชัน (โดย / dev / หรือ UUID ยาว);
    • พารามิเตอร์ที่สองคือพา ธ ที่พาร์ติชันจะถูกเมาต์
    • ที่สามคือประเภทของระบบไฟล์
    • พารามิเตอร์ที่สี่ประกอบด้วยตัวเลือก
    • ประการที่ห้าคือdumpกำหนดการสำรองข้อมูล; และ,
    • พารามิเตอร์ตัวที่หกคือรหัสผ่าน (ใช้เพื่อควบคุมfsckลำดับ)

เปลี่ยนตัวเลือก (พารามิเตอร์ที่ 4) เป็น:

noatime,nodiratime,data=writeback,barrier=0,nobh,errors=remount-ro

รีบูตเพื่อตรวจสอบว่าทุกอย่างเป็นไปด้วยดี
จำคำสั่งเหล่านี้จะทำลายล้าง! มีการสำรองข้อมูลและระวัง!


3
ควรมีช่องว่างระหว่างที่เก็บข้อมูลและ ext4 ดังนั้นคำสั่งจึงเหมือน / dev / sdx1 / พื้นที่เก็บข้อมูล ext4 relatime ข้อผิดพลาด = remount-ro 0 1
Ganesh Krishnan

สุดยอดคู่มือ! มันจะดีที่จะมีการอ้างอิงบางอย่างที่นี่เกี่ยวกับวิธีการตรวจสอบตัวเลือกที่เหมาะสม fstab (เพียงการเชื่อมโยงไปยังรายการบางอย่างจะดี)
ซานเดอร์

13

การใช้ parted

ด้านล่างคำแนะนำในการสร้างพาร์ติชัน ext4 ใหม่บนฮาร์ดไดรฟ์ใหม่ด้วยparted(ทดสอบบน Ubuntu 14.04.4 LTS x64) partedสนับสนุนตารางพาร์ทิชัน GUID (GPT)และต่อมาสามารถนำมาใช้สำหรับพาร์ทิชันดังกล่าวข้างต้น 2TB fdiskซึ่งแตกต่างจาก

ใช้sudo lshw -C disk *-diskเพื่อดูชื่อโลจิคัลของฮาร์ดไดรฟ์ใหม่ของคุณ:

   description: ATA Disk
   product: ST6000NM0024-1HT
   vendor: Seagate
   physical id: 0.0.0
   bus info: scsi@1:0.0.0
   logical name: /dev/sdb
   version: SN05
   serial: Z4D30T30
   size: 5589GiB (6001GB)
   configuration: ansiversion=5 sectorsize=4096

/dev/sdbชื่อตรรกะ เราสามารถเริ่มต้น:

sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)

ด้วยsudo parted /dev/sdb print, เราสามารถเห็น GPT ได้ถูกสร้างขึ้น:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start  End  Size  File system  Name  Flags

เราจำเป็นต้องทราบขนาดของดิสก์ (เราจะใช้ MB เป็นหน่วย):

sudo parted /dev/sdb print unit MB print free

ซึ่งบ่งชี้:

Disk /dev/sdb: 6001175MB

ตอนนี้เราสามารถสร้างพาร์ติชันหลักเพื่อให้ใช้พื้นที่ฮาร์ดไดรฟ์ทั้งหมด ในการตั้งฉลากพาร์ติชัน:

sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB 

(ดูhttps://unix.stackexchange.com/a/49274/16704หากคุณต้องการรู้ว่าทำไมเราถึงใช้งาน--align optimal)

ด้วยsudo parted /dev/sdb printเราสามารถเห็นป้ายพาร์ติชันหลักสร้างขึ้น:

username@server:~$ sudo parted /dev/sdb print
Model: ATA ST6000NM0024-1HT (scsi)
Disk /dev/sdb: 6001GB
Sector size (logical/physical): 512B/4096B
Partition Table: gpt

Number  Start   End     Size    File system  Name     Flags
 1      1049kB  6001GB  6001GB  xfs          primary

จากนั้นเราต้องใช้mkfsเพื่อสร้างพาร์ติชัน:

sudo mkfs.ext4 /dev/sdb1

ตอนนี้มีการสร้างพาร์ติชันแล้วเราจำเป็นต้องติดตั้ง ในการทำเช่นนั้นsudo nano /etc/fstabและเพิ่มบรรทัดต่อไปนี้ ( /crimeaเป็นโฟลเดอร์ที่เราเลือกติดตั้งพาร์ติชันใหม่):

/dev/sdb1       /crimea ext4 defaults   0       0      

เราสร้างโฟลเดอร์และโหลดซ้ำ/etc/fstab:

sudo mkdir /crimea
sudo mount -a # Remount /etc/fstab without rebooting in Linux

คุณสามารถดูพาร์ติชันที่ติดตั้งใหม่โดยใช้df -h:

/dev/sdb1                      5.5T   58M  5.2T   1% /crimea

ในsudo nano /etc/fstabแทนที่จะใช้/dev/sdb1คุณสามารถใช้มันUUIDซึ่งคุณสามารถค้นหาด้วยsudo lshw -C volume:

*-volume
       description: EXT4 volume
       vendor: Linux
       physical id: 1
       bus info: scsi@1:0.0.0,1
       logical name: /dev/sdb1
       logical name: /crimea
       version: 1.0
       serial: c3559307-795b-66db-9844-8e974c88a1cf
       size: 200MiB
       capacity: 5589GiB
       capabilities: journaled extended_attributes huge_files dir_nlink extents ext4 ext2 initialized
       configuration: created=2016-06-24 14:56:55 filesystem=ext4 lastmountpoint=/boot modified=2016-07-01 17:15:55 mount.fstype=ext4 mount.options=rw,relatime,data=ordered mounted=2016-07-01 17:07:19 name=primary state=mounted

มิฉะนั้นคุณสามารถทำได้sudo blkid /dev/sdb1:

/dev/sdb1: UUID="c3559307-795b-66db-9844-8e974c88a1cf" TYPE="ext4"

บรรทัดใหม่/etc/fstabจะเป็น:

UUID=c3559307-795b-66db-9844-8e974c88a1cf          5.5T   58M  5.2T   1% /crimea

https://unix.stackexchange.com/a/137868/16704อธิบายว่าทำไมจึงเป็นการดีที่สุดที่จะใช้ UUID (liquidat, cc by-sa 3.0):

ข้อดีของการใช้ UUID คือมันไม่ขึ้นอยู่กับหมายเลขอุปกรณ์จริงที่ระบบปฏิบัติการมอบให้กับฮาร์ดดิสก์ของคุณ ภาพที่คุณเพิ่มฮาร์ดดิสก์อีกครั้งเพื่อให้ระบบและด้วยเหตุผลบางอย่างระบบปฏิบัติการตัดสินใจว่าดิสก์เก่าของคุณอยู่ในขณะนี้แทนsdb sbaกระบวนการบูทของคุณจะถูกทำให้เมาถ้า fstab จะชี้ไปที่ชื่ออุปกรณ์ อย่างไรก็ตามในกรณีของ UUIDs ก็น่าจะดี


สรุป:

sudo lshw -C disk                # Checking the location of the new drive. It is /dev/sdb.     
sudo parted /dev/sdb mklabel gpt # Creating the GUID Partition Table (GPT)
sudo parted /dev/sdb print       # Checking that the GPT has been created
sudo parted /dev/sdb print unit MB print free # see 6001175MB size
sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MB # Creating partition label
sudo mkfs.ext4 /dev/sdb1         # Creating the partition
sudo nano /etc/fstab             # Add line `/dev/sdb1 /crimea ext4 defaults 0 0`
sudo mount -a # Remount /etc/fstab without rebooting

แทนที่จะเป็นการบอกให้ทราบถึงจุดสิ้นสุด MB ที่sudo parted --align optimal /dev/sdb mkpart primary ext4 0% 6001175MBจะเป็นการดีกว่าที่ext4 0% 100%จะหลีกเลี่ยงคำเตือน: พาร์ติชันที่ได้นั้นไม่ได้รับการจัดตำแหน่งอย่างเหมาะสมเพื่อประสิทธิภาพที่ดีที่สุด
Pablo Marin-Garcia
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.