Toplu modda ayrılmış olarak tüm ayrılmamış alanı kullanmak için son bölümü otomatik olarak genişlet


20

Uzun lafın kısası, tüm bunları otomatik olarak önyüklemede (gömülü sistem) gerçekleştirmem gerekiyor.

Mühendislerimiz görüntüleri üretim cihazlarına flaşlayacaktır. Bu görüntüler küçük bir bölüm tablosu içerecektir. Önyükleme sırasında, diskteki tüm kullanılabilir alanı kullanmak için son bölümü (# 3) otomatik olarak genişletmem gerekiyor.

İşte diskimdeki boş alana baktığımda elde ettiğim şey.

> parted /dev/sda print free
Model: Lexar JumpDrive (scsi)
Disk /dev/sda: 32.0GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name     Flags
        17.4kB  1049kB  1031kB  Free Space
 1      1049kB  25.3MB  24.2MB  fat16        primary  legacy_boot
        25.3MB  26.2MB  922kB   Free Space
 2      26.2MB  475MB   449MB   ext4         primary
 3      475MB   1549MB  1074MB  ext4         primary
        1549MB  32.0GB  30.5GB  Free Space

3. bölümü N (30.5 GB) bayt sayısına genişletmem gerekiyor

Bu adımı istem olmadan otomatik olarak nasıl yapabilirim? Bunun 3. bölümden sonra kullanılabilen dinamik bir alanla çalışması gerekir.


Dont denemek için hazır bir senaryo almak için bekliyoruz! Bize şu ana kadar ne denediniz? Yeniden boyutlandırdığınız bölüm başka bir şey işlem sırasında monte edilmemelidir ....
Luciano Andress Martini

resizepartKomutu denedim ve işe yarıyor, ancak tam bir boyut gerektiriyor. Dinamik olması lazım.
Paul Knopf

resize2fsaradığım şey olabilir. linux.die.net/man/8/resize2fs
Paul Knopf

Yanıtlar:


22

Güncel sürümlerinde parted, resizepartbölme (için çalışması gerektiğini partedanlar 100%ya da benzeri şeyler -1sikincisi de ihtiyaçları, --cmdline seçenekleri ayrıştırma durdurmak için). Kullanabileceğiniz tam değeri belirlemek için unit s, print free. resize2fsdaha sonra dosya sistemi için gelir.


Eski sürümlerinde hem bölüm hem de dosya sistemini tek seferde yeniden boyutlandıracak partedbir resizekomut vardı , hatta işe yaradı vfat.

Bir Kobo ereader modifikasyonunda bunu dahili belleğin 3. bölümünü maksimuma yeniden boyutlandırmak için kullandım:

start=$(cat /sys/block/mmcblk0/mmcblk0p3/start)
end=$(($start+$(cat /sys/block/mmcblk0/mmcblk0p3/size)))
newend=$(($(cat /sys/block/mmcblk0/size)-8))

if [ "$newend" -gt "$end" ]
then
    parted -s /dev/mmcblk0 unit s resize 3 $start $newend
fi

Böylece /sys/block/.../, çekirdeği destekliyorsa değerleri de alabilirsiniz . Ama partedkaldırıldı resizesen, şimdi iki adım yapmak zorunda komutu resizepartbölümü büyümeye ve ne olursa olsun araç dosya sistemi gibi, o büyümeye sağlar resize2fsiçin ext*.


Tam da aradığım şey buydu. Yardımın için teşekkürler!
Paul Knopf

Yan soru, sonunda 8 bayt ne var?
Paul Knopf

Tek bir sektörle yeniden boyutlandırmaktan kaçının ... bunu -40 ya da başka bir şeyle değiştirmeniz gerekir (disk sonunda GPT yedekleme başlığı).
frostschutz

partedKomut satırından otomatik uzantıyı desteklemiyor mu ? Çünkü, bu mu etkileşimli bunu destekleyecek. Etkileşimli olarak çalıştırılırsa, GPT bölüm tablosunu diskin boyutuna (türüne fix) uyacak şekilde düzeltmek isteyip istemediğinizi sorar ve sonra çalıştırabilirsiniz resizepart 3 -1. Bunu komut satırından nasıl alacağımı anlamaya çalışıyordum.
Harvey

Çok hızlı değil: Yeniden boyutlandırma komutu, ayrıştırılmış 3.0'da kaldırıldı. Sfdisk'i deneyin veya gparted edin.
GregD

16

Ayrıştırılmış komut dosyasını düzgün bir şekilde yazamadığım için (bölüm monte edildiğinden ve bulduğum diğer cevaplara aykırı olduğundan onay istenmedi ) -1sya da tam olarak bunu yapan yetiştirme aracını100% buldum .

Kullanımı basittir: growpart /dev/sda 3(ve sonra resize2fs /dev/sda3kullanılan dosya sistemi türü için uygun başka bir komut).

Debian ve Ubuntu'da bulut-konuk-araçları olarak paketlenmiştir .


1
Şu an için bulabildiğim en uygun yol bu. Harika çalıştı.
SebiF

Bu benim için bir çözümdü - parted dosya sistemi olarak ext4'ü beğenmedi ve dosya sistemini yeniden boyutlandırmayı
denemekten

Ubuntu 18.04
DreamFlasher

@DreamFlasher Neden işe yaramadığını söyleyemem. Görebildiğim kadarıyla sadece cloud-guest-utils paketini yükleyebilirsiniz ve bu, growpart tarafından sağlanan tek işlev olduğundan, bir hata olmadığı sürece çalışması gerekir, yanlış kullanılır veya kontrolünün dışında bir şey yanlış gidiyor. Son bağımsız değişkenin (örnekte 3) yeniden boyutlandırılacak bölüm olduğunu, 1'den itibaren olduğunu ve bölümün hemen ardından bu şekilde yeniden boyutlandırabilmesi için yeterli alanın olması gerektiğini unutmayın.
Ivo Smits

7

Bunu yapmanın doğru yolu, ayrıştırılanların yüzde nosyonu olduğu gerçeğini kullanmaktır. Yani

parted /dev/sda resize 3 100%

1
modası geçmiş, Ubuntu 18.04 ve üstü ile çalışmıyor
DreamFlasher

Yeniden boyutlandırma komutu ayrıştırılmış sürüm 3 ile biraz gitti, şimdi resizepart komutunu kullanmanız ve ardından kullandığınız dosya ise temel dosya sistemini veya PV'yi ayrı ayrı yeniden boyutlandırmanız gerekiyor. Ext4 için komut resize2fs veya XFS için xfs_growfs'dir. Her ikisi de normalde dosya sistemi monte edildiğinde yapılır ve argüman her iki durumda da bağlama noktasıdır.
Jonathan Buzzard

0

Ubuntu 18.04'te, bir komut dosyasında ayrılmamış alanı aşağıdakilerle doldurmak için yeniden boyutlandırabilirim:

sudo parted -s /dev/sdb "resizepart 2 -1" quit
sudo mount -av
sudo umount /dev/sdb2
sudo mount /dev/sdb2 /mnt
sudo resize2fs /dev/sdb2

Yeniden boyutlandırmadan önce monte etmek gerekli olmayabilir. Ben kullanıcı girişi için resize2fs bir sorgu bastırmak için yaptım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.