ไดรฟ์รากมีพื้นที่ดิสก์ไม่เพียงพอ ฉันจะเพิ่มพื้นที่ว่างได้อย่างไร


35

ฉันใช้ Ubuntu 11.04 และฉันต้องการเพิ่มพื้นที่ว่างในไดเรกทอรีรากของฉันซึ่งมีการใช้งานมากเกินไป โดยเฉพาะอย่างยิ่งฉันต้องการเปลี่ยนพา ธ ที่ใช้สำหรับการติดตั้งแอพพลิเคชั่น

สิ่งที่ควรพิจารณาอีกประการหนึ่งคือฉันกำลังทำงานกับเซิร์ฟเวอร์ฐานข้อมูล MySQL เซิร์ฟเวอร์ถูกติดตั้งในไดเรกทอรีรากเองดังนั้นฉันไม่ต้องการเสี่ยงที่จะสูญเสียข้อมูลใด ๆ

โปรดให้คำแนะนำแก่ฉันเพื่อช่วยแก้ไขปัญหานี้

คำตอบ:


36

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

  1. ล้างแคช apt-get คำสั่งดังต่อไปนี้จะลบไฟล์ deb ทั้งหมดที่ดาวน์โหลดมาจาก apt-get cache directory

    เรียกใช้คำสั่งนี้: sudo apt-get clean

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

  3. เพิ่มขนาดพาร์ติชั่นรูทฉันรู้ว่ามันเป็นคำตอบที่ชัดเจนมาก แต่เชื่อฉันข้อมูลของเราต้องเปลี่ยนแปลงตลอดเวลา ฉันคิดว่าการติดตั้งรูท 20 GB จะพอเพียง แต่ภายในหนึ่งปีฉันได้ทำการเมาท์รูทของฉันอีกครั้งและเพิ่มขึ้นเป็น 50 GB


8
sudo apt-get clean เพิ่มพื้นที่ว่างมากกว่าที่คาดไว้ +1
btk

ระวังapt-get cleanเอาแพ็คเกจที่ติดตั้งออก คุณอาจต้องการเก็บไว้ในกรณีที่การอัพเกรดล้มเหลว
timss

ฉันทำความสะอาดแคชของฉันและมันล้าง 10 Gb! +1
Numeri พูดว่า Reinstate Monica

28

ฉันล้างข้อมูลเรียบร้อยแล้ว 3.5 GB โดยการลบส่วนหัวและรูปภาพเก่าโดยใช้คำสั่งต่อไปนี้:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge

คุณสามารถตรวจสอบแพ็คเกจที่จะลบการดำเนินการส่วนแรกของคำสั่ง:

dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d'

การอ้างอิง


เคล็ดลับอื่น ๆ ไม่ได้ช่วย แต่สิ่งนี้ช่วยฉันได้ประมาณ 5G ขอบคุณ
baltasvejas

ตัวเลือก-yในคำสั่ง apt-get นั้นไม่จำเป็นจริงๆ หากคุณไม่ได้รับ apt-get จะถามคุณ (เพียงครั้งเดียว) หากแพ็กเกจ piped ทั้งหมดควรถูกลบออก Imho ดีกว่าที่จะไม่ใช้-yมันให้ความเป็นไปได้มากกว่าหนึ่งในการตรวจสอบ (นอกเหนือจากคำสั่งที่สองที่กล่าวถึงข้างต้น) สำหรับฉันนี่เป็นอิสระ 15GB บนพาร์ทิชันราก!
Boris Däppen

2
คำสั่งdpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs sudo apt-get -y purge พยายามลบเวอร์ชันเคอร์เนลที่ติดตั้งในปัจจุบันในระบบของฉัน ระวังอย่าให้ระบบของคุณไม่สามารถบูตได้
แอนโทนี

@Antony yaikes! ฉันกำลังจะลองสิ่งนี้ ฉันจะตรวจสอบว่าจะลบอะไรได้บ้าง
Sonic Soul

2
@SonicSoul ในที่สุดฉันก็ลงเอยทำในสิ่งที่หนึ่งในคำตอบด้านล่าง ( askubuntu.com/a/778442/333806 ) แนะนำ โดยพื้นฐานแล้ววิ่งuname -rไปหาเคอร์เนลปัจจุบันและระวังที่จะไม่ลบมัน หากคำสั่งที่เตรียมไว้homebrandเพื่อตรวจสอบว่าแพ็กเกจใดที่จะถูกลบจะไม่แสดงเคอร์เนลปัจจุบันคุณควรจะปลอดภัยในการรันคำสั่ง purge ที่เขากล่าวถึง
แอนโทนี

22

ใช้dpkg-queryเพื่อค้นหาแพ็คเกจที่ใหญ่ที่สุดและลบแพ็คเกจที่คุณไม่ต้องการอีกต่อไป (ที่มา ):

dpkg-query --show --showformat='${Package;-50}\t${Installed-Size}\n' | sort -k 2 -n | grep -v deinstall | awk '{printf "%.3f MB \t %s\n", $2/(1024), $1}'

1
ตอนนี้มันเป็นซับที่มีประโยชน์จริงๆ สมบูรณ์แบบสำหรับการสรุปอย่างรวดเร็วของแพ็คเกจการติดตั้งที่ใหญ่ที่สุด มาที่ dotfiles ของฉันสิ!
arainone

คุณสามารถรับสิ่งนี้ได้ด้วยwajig sizes
Pablo A

13
sudo apt autoclean  # clean /var/cache/apt/archives folder which save packages while install.
sudo apt autoremove # this command remove unused packages.

sudo shutdown -rf   # it will restart your PC immediately and check filesystem in next boot.

19
คุณไม่ได้ให้คำอธิบายใด ๆ หากมีใครสักคนที่จะคัดลอก / วางรหัสของคุณจากนั้นระบบจะปิดตัวลงโดยไม่มีการเตือนอาจทำให้ข้อมูลสูญหาย โปรดอย่าให้คำสั่งโดยไม่มีคำอธิบายเกี่ยวกับสิ่งที่พวกเขาทำ -1
Jo-Erlend Schinstad

9
ทำไมต้องตรวจสอบระบบไฟล์?
นาธานออสมัน

10

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

มีหลายวิธีในการลบเคอร์เนลเวอร์ชันเก่าและมีตัวเลือกต่าง ๆ มากมายในคำตอบที่โพสต์ไปที่: ฉันจะลบเคอร์เนลเวอร์ชันเก่าเพื่อล้างเมนูบู๊ตได้อย่างไร

วิธีการที่ฉันชอบส่วนใหญ่เป็นคำตอบจากpenreturnsซึ่งมันแบ่งออกเป็นขั้นตอนที่เข้าใจง่าย:

เปิดเทอร์มินัลและตรวจสอบเคอร์เนลปัจจุบันของคุณ:

uname -r

อย่าลบเคอร์เนลนี้!

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

dpkg --list | grep linux-image

ค้นหาเมล็ดทั้งหมดที่ต่ำกว่าเคอร์เนลปัจจุบันของคุณ เมื่อคุณทราบว่าจะลบเคอร์เนลใดให้ดำเนินการต่อด้านล่างเพื่อลบออก

เรียกใช้คำสั่งด้านล่างเพื่อลบเคอร์เนลที่คุณเลือก

sudo apt-get purge linux-image-x.x.x.x-generic

คำตอบนั้นบอกว่า 'update-grub2' เมื่อคุณล้างข้อมูลเสร็จซึ่งน่าจะล้าสมัยแล้ว: sudo update-grubควรจะเพียงพอสำหรับ Ubuntu 14.04 เป็นต้นไป จากนั้นพวกเขาก็พูดกับ 'รีบูตระบบของคุณ' (ซึ่งน่าจะเป็นเพื่อให้คุณสามารถดูเมนูการบู๊ตที่ล้างข้อมูลแล้ว) ดังนั้นในกรณีนี้จึงไม่จำเป็น

เมนู bootloader grub ใช้เพื่อแสดงเคอร์เนลรุ่นเก่าทั้งหมดในหน้าหลัก แต่ตอนนี้เมนูเหล่านี้ถูกวางไว้ด้านหลังเมนูย่อย มันค่อนข้างเร็ว แต่ผู้ใช้ใหม่สำหรับ Ubuntu / Linux อาจไม่ทราบว่าพวกเขากำลังใช้พื้นที่

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

มีวิธีที่เร็วกว่าในการทำเช่นนี้ แต่ฉันชอบความเรียบง่ายของวิธีการนี้เป็นส่วนใหญ่เพราะฉันสามารถเข้าใจแต่ละคำสั่งไปพร้อมกัน:

"สิ่งที่เคอร์เนลรุ่นฉันกำลังใช้อะไรเคอร์เนลรุ่นฉันต้องเอาล่ะล้างที่หนึ่ง."

ล้างซ้ำชื่นชมพื้นที่ที่คุณได้รับ

ค่อนข้างง่ายในการคัดลอกชื่อของเคอร์เนลเก่าที่คุณต้องการลบออกจากผลลัพธ์ที่dpkg --list | grep linux-imageให้คุณใน terminal จากนั้นใช้sudo apt-get purgeและวางชื่อที่คัดลอกมา

การลบเมล็ดเก่ากว่า 3 หรือ 4 เมล็ดมักจะทำให้มีพื้นที่ว่างประมาณ GB ในไดรฟ์รากของคุณ


1
นอกจาก linux-image แล้วคุณยังสามารถ grep for และกำจัด linux-headers ได้ด้วย
kdopen

8

เมื่อฉันต้องการเพิ่มพื้นที่ว่างบนเซิร์ฟเวอร์ฉันใช้คำสั่งนี้:

find / -type f -size +50M -exec du -h {} \; | sort -n

พบไฟล์ทั้งหมดที่มีขนาดใหญ่กว่า 50 MB และ " du -h" สร้างรายชื่อไฟล์ที่ดีกว่าและ"sort -n"" ไปป์ไลน์ทำรายการเรียงตามตัวเลขด้วยขนาดไฟล์


ขึ้นอยู่กับว่าระบบของคุณมีขนาดใหญ่เพียงใดอาจใช้เวลาสักครู่ เอาฉัน 15 นาทีประมาณ 500 gb บน HDD
Gabriel Fair

7

ทำตามคำแนะนำในเอกสารชุมชนของ Ubuntuฉันค้นพบไฟล์ขยะขนาดใหญ่ - ดูเหมือนว่าจะมีการสำรองข้อมูลของ /var/log/syslog.1 ดูเหมือนว่ามีบางสิ่งที่กำลังโหลดเอาต์พุตไปยัง syslog ...

คำสั่งที่พบมันคือ:

sudo find / -size +1G

แล้วไฟล์ขนาดใหญ่ในโฟลเดอร์ที่เรียกว่า.Trashน่าจะดี ...


5

นี่คือสคริปต์ที่ฉันรันเพื่อเพิ่มพื้นที่ว่างบนพาร์ติชันรูท

function myclean {
    ## Show free space
    df -Th | grep -v fs
    # Will need English output for processing
    LANG=en_GB.UTF-8

    ## Clean apt cache
    apt-get update
    apt-get -f install
    apt-get -y autoremove
    apt-get clean

    ## Remove old versions of snap packages
    snap list --all | while read snapname ver rev trk pub notes; do
        if [[ $notes = *disabled* ]]; then
            snap remove "$snapname" --revision="$rev"
        fi
    done
    ## Set snap versions retain settings
    if [[ $(snap get system refresh.retain) -ne 2 ]]; then snap set system refresh.retain=2; fi
    rm -f /var/lib/snapd/cache/*

    ## Remove old versions of Linux Kernel
    # This one-liner is deprecated since 18.04
    # dpkg -l 'linux-*' | sed '/^ii/!d;/'"$(uname -r | sed "s/\(.*\)-\([^0-9]\+\)/\1/")"'/d;s/^[^ ]* [^ ]* \([^ ]*\).*/\1/;/[0-9]/!d' | xargs apt-get -y purge
    # New 2 lines to remove old kernels
    dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge
    dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs apt-get -y purge

    ## Rotate and delete old logs
    /etc/cron.daily/logrotate
    find /var/log -type f -iname *.gz -delete
    sudo journalctl --rotate
    sudo journalctl --vacuum-time=1s

    ## Show free space
    df -Th | grep -v fs
}

แก้ไข: ใหม่เมล็ด
ข้าวเก่า

ขอบคุณ! "หมุนและลบบันทึกเก่า" ล้างข้อมูลหลายกิ๊กบนไดรฟ์ของฉัน
SaTa

ดี นักพัฒนาอาจต้องการลบภาพนักเทียบท่าที่ไม่ได้ใช้ของพวกเขา :docker system prune
Pablo A

@Pablo A พวกเขาอาจจะดู/var/crash/*.crashด้วย
cmak.fr

เนื่องจากคุณจำเป็นต้องsudoเรียกใช้ฟังก์ชันsudoภายในฟังก์ชันดูเหมือนซ้ำซ้อน นอกจากนี้ยังvacuum-time=1sอาจจะไม่เคยทำงาน แต่ผมไม่แน่ใจว่าเพราะผมใช้ขนาดสูญญากาศแทน: forum.manjaro.org/t/...
WinEunuuchs2Unix

2

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

แอปพลิเคชันไม่ได้รับการติดตั้งลงในโฟลเดอร์เฉพาะเช่นที่คุณแนะนำ ส่วนต่าง ๆ ของแอปพลิเคชันจะอยู่ในส่วนต่าง ๆ ของระบบไฟล์ โปรแกรมหลักมักจะอยู่ใน / usr / bin ในขณะที่ไฟล์การกำหนดค่าจะอยู่ใน / etc เป็นต้น ในกรณีของคุณ MySQL ฐานข้อมูลจะถูกวางไว้ในตำแหน่ง / var ฉันคิดว่า / var / mysql

เนื่องจาก / usr และ / var เป็นทั้งไดเร็กทอรีในระบบไฟล์รูทพวกเขาจะใช้พื้นที่ระบบไฟล์รูท แต่อย่างที่ฉันบอกไปคุณสามารถย้ายมันไปยังระบบไฟล์ต่าง ๆ ได้ ในกรณีของ MySQL คุณสามารถกำหนดค่าที่จัดเก็บฐานข้อมูล คุณสามารถย้ายฐานข้อมูลไปยัง /home/username/.mysql/database ได้อย่างง่ายดาย


1

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

จากความคิดเห็น:

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

  • วิธีที่ถูกต้องนี้คือการติดระบบแฟ้มใหม่ไป / usr mount --bindหรือการใช้งาน ยังไม่ชัดเจนว่า symlink ทำงานได้ดีเพียงใด


ระมัดระวังเกี่ยวกับการย้าย / usr ใช้คำสั่ง cp เพื่อคัดลอกโฟลเดอร์ usr ด้วยการอนุญาตเดียวกัน จากนั้นลบโฟลเดอร์ดั้งเดิม / usr และสร้างลิงค์ของโฟลเดอร์ usr บน /
shantanu

1
มันควรจะมีจุดต่อ ไม่ใช่ลิงก์
Jo-Erlend Schinstad

หมายเหตุ/optเล็กน้อย: แอปพลิเคชั่นจำนวนมากติดตั้งไบนารีและข้อมูลแอปพลิเคชันลงใน
นาธานออสมัน

@ george-edison เอาล่ะแอพพลิเคชั่นบางตัวติดตั้งสิ่งต่าง ๆ/optเพื่อต่อต้าน "กฏ"
ม.ค.

1

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

นอกจากนี้ยังสามารถช่วยคุณค้นหาไฟล์ที่ซ่อนอยู่ภายใต้การเมานต์อื่น



0

หากคุณมีเซิร์ฟเวอร์ฐานข้อมูล mssql ติดตั้งอยู่นั่นอาจทำให้หน่วยความจำของคุณหมดไป เรียกใช้NCurses การใช้ดิสก์

$ sudo ncdu / 

เพื่อตรวจสอบว่าโฟลเดอร์และไฟล์ใดมีพื้นที่เก็บข้อมูลสูงสุด ข้อมูล mssql มักจะถูกเก็บไว้ใน

/var/opt/mssql/backup/

คำถามระบุว่าฐานข้อมูลยังคงอยู่
สตีเฟ่น Rauch

คำถามที่กล่าวถึงฐานข้อมูล MySql ดังนั้นถ้าเขาจะลบข้อมูลฐานข้อมูล MsSQL แล้วฉันเดาว่าดูเหมือนว่าคำตอบที่ค่อนข้างยุติธรรม
Yogesh

อาจเป็นประโยชน์กับ-xตัวเลือก
Pablo A
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.