151
submitted 3 months ago* (last edited 3 months ago) by t0mri@lemmy.ml to c/linux@lemmy.ml

I was editing my disk and when i wrote the changes and exited cfdisk, no cli command worked. Thats when i realized that im f-ed up.

This what happened: I have 3 partitions, 512M efi, a 100G root partition and some free (unallocated) space. I had 84G worth data in the root patition. I totally forgot that and shrinked the root partition to 32G to extend the free space. I was using cfdisk tool for this. I wrote the changes and rebooted my machine, by long pressing power button coz no cli commands worked after writing those chrnges, to see this.

So is it possible to recover my machine now?

:_ )

SOLUTION Thanks to @dgriffith@aussie.zone. cfdisk just updates the partition table. So no worry about data damage . To fix this, live boot -> resize the partition back its original size -> fsck that partition. For more explanation, refer @dgriffith@aussie.zone comment

you are viewing a single comment's thread
view the rest of the comments
[-] toni_bmw@lemmy.world 10 points 3 months ago* (last edited 3 months ago)

I always love working with partitions because of the knowledge it gives you, but it is also certainly dangerous and from time to time it is unnevitable to suffer an accident. In any case I always try to do this type of operations with parted and if possible with GUI (gparted).

Being in the photo situation, can't you make a fsck as the error messages tell you?

fsck /dev/nvme0n1p2

If not, the most practical would be, IMHO, to boot from a rescue live, e.g. https://www.system-rescue.org/Download/ Once booted, you can lift the graphical interface with startx and do with gparted the operations you need on these partitions.

[-] t0mri@lemmy.ml 9 points 3 months ago

For sure.

For fsck /dev/nvme0n1p2:

[-] dgriffith@aussie.zone 30 points 3 months ago* (last edited 3 months ago)

The filesystem driver knows the size of the filesystem is larger than the physical size of the partition it is on. Because of that it refuses to do anything with it until that discrepancy is sorted.

Boot to a USB/ISO, run cfdisk, extend the partition size back to original or larger, then run fsck on the partition again.

[-] t0mri@lemmy.ml 26 points 3 months ago* (last edited 3 months ago)

😭😭😭🤧 THANKS!!

im saved. My machines saved. Thanks a lot!!

Whrt happened anyway? Why cfdisk didnt wipe the data? I thought it would everything after 32g, but all my data is un touched. What happened?

[-] dgriffith@aussie.zone 16 points 3 months ago

The partition table is just a set of pointers to various places on the physical disk where partitions should be, inside those partitions are filesystems with all your data. It's like the table of contents in a book. You can mess around with the table of contents and make the page numbers for chapters different, but all the words in the book are still there.

Now you're lucky that filesystem drivers are fairly smart these days. They sanity check things all the time. When you write the partition table to disk all the active filesystem drivers get notified of the changes, so they can keep track of things. When the driver noticed that the size of your filesystem exceeded the size of your partition, it basically was like "Hold it right there, I'm not touching any of this!". At that point the filesystem would have been forcibly unmounted and disconnected, which is why none of your commands worked after running cfdisk, they were on that filesystem.

Note that your approach was almost the right way to do it. To make your filesystem bigger you can expand the partition using cfdisk ( as long as there is physical room on the disk!) and then run a program called resize2fs , and it will expand the filesystem to suit.

Similarly, you can shrink the filesystem in the same kind of way, except you run resize2fs first and command it to shrink the filesystem to a particular size. It will do that (assuming there's enough free space in your filesystem to do so) then you shrink the corresponding partition with cfdisk to match.

Of course, as you've learned, resizing partitions is moderately risky so backups are a good idea. Having said that I routinely expand filesystems in VMs like this without backups - I make the VMs disk larger in its settings, then run cfdisk and expand the partition, then run resize2fs.

[-] t0mri@lemmy.ml 2 points 3 months ago

I sincerely appreciate your consideration to help and explain

Its funny that i tried resize partitions without knowing how to do that. I thought i should format new partitions after editing partition table coz thats what i did when installing linux, but im wrong again ig.

[-] kolorafa@lemmy.world 9 points 3 months ago

cfdisk only changes the partition table, this table like a small paper that you store at the front (or back) of drive where you put information, it's just a list of coordinates like from this point to this point is your home, from this to this is your yard, from this to this is your neighbor. Just because you changed the values on your paper doesn't actually make your neighbor closer or further.

System read this list to figure out where are the "borders" between different sections that you defined to load and use them logically for multiple file systems.

[-] onlinepersona@programming.dev 7 points 3 months ago

we would all like to thank @dgriffith@aussie.zone for his amazing, non-meme contribution 👏

Anti Commercial AI thingyCC BY-NC-SA 4.0

[-] toni_bmw@lemmy.world 5 points 3 months ago

It's a marvellous feeling, right?

We thank Dave for his decisive contribution. For future occasions try to backup everything before doing operations of this type. This small script works very well for me:

https://github.com/cleverwise/cya

That allows you to backup even hot systems. Just mount an external disc in /home/cya and run the script with sudo...

load more comments (1 replies)
load more comments (2 replies)
load more comments (2 replies)
this post was submitted on 06 Apr 2024
151 points (92.7% liked)

Linux

45567 readers
827 users here now

From Wikipedia, the free encyclopedia

Linux is a family of open source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991 by Linus Torvalds. Linux is typically packaged in a Linux distribution (or distro for short).

Distributions include the Linux kernel and supporting system software and libraries, many of which are provided by the GNU Project. Many Linux distributions use the word "Linux" in their name, but the Free Software Foundation uses the name GNU/Linux to emphasize the importance of GNU software, causing some controversy.

Rules

Related Communities

Community icon by Alpár-Etele Méder, licensed under CC BY 3.0

founded 5 years ago
MODERATORS