當前位置: 首頁>>技術教程>>正文


如何從命令行創建和調整ext4分區?

, , , , ,

問題描述

分區(例如fdisk)用於從命令行分區額外硬盤驅動器的一些有用命令是什麽?由於大多數出版的指南都指向GParted和其他圖形工具,因此一些命令行序列的摘要會很有幫助。

TUNING – 保留空間,WRITE-BACK&訪問時間如果驅動器100%已滿,則如何刪除預留的磁盤空間(默認情況下)。由於我是’data’的輔助驅動器,因此移除保留區域可確保整個驅動器可供使用。

我也很好奇write-through與write-back和跳過更新訪問時間(在文件和目錄上)以提高性能。

最佳解決辦法

首要的是:

!警告 !!

這些命令是示例。刪除分區,修改和格式化文件係統會破壞數據和/或可能會阻止您的計算機啟動。進行備份。使用風險自負。試試你不介意丟失所有數據的機器。警告管理員。


要快速將驅動器設置為單個ext4分區……

  1. 查看”DISK”類的檢測到的設備

    lshw -C disk
    
  2. 查看現有分區表

    fdisk -l
    
  3. 編輯所選設備的分區表(在本例中為”sdx”)fdisk /dev/sdx
    在FDISK中,按:

    • d …刪除當前分區

    • n …創建一個新分區

    • p …將其指定為PRIMARY分區

    • 1 …將其設置為1ST主分區

    • 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上,因此設置write-back,因此應用程序不會等待實際的磁盤寫入

    tune2fs -o journal_data_writeback /dev/sdx1
    
  3. 使用/etc/fstab在啟動時掛載並設置write-back策略

    vi /etc/fstab
    
  4. fstab中查找(或添加)驅動器的相關行。 fstab中的參數由空格分隔,例如上麵描述的驅動器可能顯示為:/dev/sdx1 /storage ext4 relatime,errors=remount-ro 0 1

    • 第一個參數標識分區(通過/dev /或長UUID);

    • 第二個參數是分區將安裝到的路徑;

    • 第三是文件係統類型;

    • 第四個參數包含選項;

    • 第五是dump備份計劃;和,

    • 第六個參數是pass-number(用於控製fsck順序)。

將選項(第4個參數)更改為:

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

重新啟動以檢查一切進展順利。記住這些命令具有破壞性!有備份,小心!

次佳解決辦法

使用parted

下麵的說明是在parted(在Ubuntu 14.04.4 LTS x64上測試)的新硬盤上創建新的ext4分區。與fdisk不同,parted支持GUID Partition Table (GPT),隨後可用於2TB以上的分區。

使用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 

(如果您想知道我們使用--align optimal的原因,請參閱https://unix.stackexchange.com/a/49274/16704)

使用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中,您可以使用UUID代替使用/dev/sdb1,您可以使用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):

The advantage of using the UUID is that it is independent from the actual device number the operating system gives your hard disk. Image you add another hard disk to the system, and for some reason the OS decides that your old disk is now sdb instead of sba. Your boot process would be screwed up if fstab would point to the device name. However, in case of the UUIDs, it would be fine.


摘要:

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

參考資料

本文由Ubuntu問答整理, 博文地址: https://ubuntuqa.com/zh-tw/article/7013.html,未經允許,請勿轉載。